From ca3f3318e47fd4326bcdb58d840d497b64f3afb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Thu, 28 Oct 2021 15:48:19 +0200 Subject: [PATCH] aco: Fix how p_is_helper interacts with optimizations. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit p_is_helper doesn't have any operands, so ACO's value numbering and/or the pre-RA optimizer could incorrectly recognize two such instructions as the same. This patch adds exec as an operand to p_is_helper in order to achieve correct behavior. Cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5570 Signed-off-by: Timur Kristóf Reviewed-by: Daniel Schürmann Part-of: (cherry picked from commit d80c7f3406b80ae684a709de57a9ef3d54a497b6) --- .pick_status.json | 2 +- src/amd/compiler/aco_instruction_selection.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 531e72e2900..1929e8e2220 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1138,7 +1138,7 @@ "description": "aco: Fix how p_is_helper interacts with optimizations.", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index ebc8555d40d..c64fa763905 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -8702,7 +8702,7 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr) /* load_helper() after demote() get lowered to is_helper(). * Otherwise, these two behave the same. */ Temp dst = get_ssa_temp(ctx, &instr->dest.ssa); - bld.pseudo(aco_opcode::p_is_helper, Definition(dst)); + bld.pseudo(aco_opcode::p_is_helper, Definition(dst), Operand(exec, bld.lm)); ctx->block->kind |= block_kind_needs_lowering; ctx->program->needs_exact = true; break;