From ebf7f7a1827006394fc6355ee245e45b6cfe2793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Mon, 17 Oct 2022 11:40:40 +0200 Subject: [PATCH] aco/spill: Fix spilling of Phi operands By adding the renamed variable, phi operands got spilled twice at the precessors. Fixes: dEQP-VK.ray_query.misc.dynamic_indexing Closes: #7493 Cc: mesa-stable Part-of: --- src/amd/ci/radv-navi21-aco-fails.txt | 3 --- src/amd/ci/radv-navi22-aco-fails.txt | 3 --- src/amd/ci/radv-vangogh-aco-fails.txt | 3 --- src/amd/compiler/aco_spill.cpp | 4 +++- 4 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/amd/ci/radv-navi21-aco-fails.txt b/src/amd/ci/radv-navi21-aco-fails.txt index 82433d0a57e..e5aa3bd5bd9 100644 --- a/src/amd/ci/radv-navi21-aco-fails.txt +++ b/src/amd/ci/radv-navi21-aco-fails.txt @@ -8,6 +8,3 @@ dEQP-VK.rasterization.rasterization_order_attachment_access.stencil.samples_8.mu dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.access_sbt_read,Crash dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.stage_all_transfer,Crash dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.stage_as_copy_bit,Crash - -# https://gitlab.freedesktop.org/mesa/mesa/-/issues/7493 -dEQP-VK.ray_query.misc.dynamic_indexing,Crash diff --git a/src/amd/ci/radv-navi22-aco-fails.txt b/src/amd/ci/radv-navi22-aco-fails.txt index 52f02907601..62642e476d8 100644 --- a/src/amd/ci/radv-navi22-aco-fails.txt +++ b/src/amd/ci/radv-navi22-aco-fails.txt @@ -9,6 +9,3 @@ dEQP-VK.rasterization.rasterization_order_attachment_access.stencil.samples_8.mu dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.access_sbt_read,Crash dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.stage_all_transfer,Crash dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.stage_as_copy_bit,Crash - -# https://gitlab.freedesktop.org/mesa/mesa/-/issues/7493 -dEQP-VK.ray_query.misc.dynamic_indexing,Crash diff --git a/src/amd/ci/radv-vangogh-aco-fails.txt b/src/amd/ci/radv-vangogh-aco-fails.txt index 82433d0a57e..e5aa3bd5bd9 100644 --- a/src/amd/ci/radv-vangogh-aco-fails.txt +++ b/src/amd/ci/radv-vangogh-aco-fails.txt @@ -8,6 +8,3 @@ dEQP-VK.rasterization.rasterization_order_attachment_access.stencil.samples_8.mu dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.access_sbt_read,Crash dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.stage_all_transfer,Crash dEQP-VK.ray_tracing_pipeline.acceleration_structures.copy_within_pipeline.gpu.stage_as_copy_bit,Crash - -# https://gitlab.freedesktop.org/mesa/mesa/-/issues/7493 -dEQP-VK.ray_query.misc.dynamic_indexing,Crash diff --git a/src/amd/compiler/aco_spill.cpp b/src/amd/compiler/aco_spill.cpp index e712920f53e..38a5cf8d475 100644 --- a/src/amd/compiler/aco_spill.cpp +++ b/src/amd/compiler/aco_spill.cpp @@ -920,8 +920,10 @@ add_coupling_code(spill_ctx& ctx, Block* block, unsigned block_idx) pred.instructions[idx]->opcode != aco_opcode::p_logical_end); std::vector>::iterator it = std::next(pred.instructions.begin(), idx); pred.instructions.insert(it, std::move(spill)); + + /* Add the original name to predecessor's spilled variables */ if (spill_op.isTemp()) - ctx.spills_exit[pred_idx][spill_op.getTemp()] = spill_id; + ctx.spills_exit[pred_idx][phi->operands[i].getTemp()] = spill_id; } /* remove phi from instructions */