From 768a21a893ca6d9ce075e3dc8e62b03514108e9e Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Fri, 19 Jan 2024 19:53:28 +0000 Subject: [PATCH] aco: fix labelling of s_not with constant Fixes RADV compilation of a Cyberpunk 2077 RT pipeline with PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT. Signed-off-by: Rhys Perry Fixes: dfaa3c0af69a ("aco: Flip s_cbranch / s_cselect to optimize out an s_not if possible.") Part-of: (cherry picked from commit 6dc182b6b21520bfa68b647cae9fb303e286980a) --- .pick_status.json | 2 +- src/amd/compiler/aco_optimizer.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index d14e8e6158a..bf0a21a8031 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1994,7 +1994,7 @@ "description": "aco: fix labelling of s_not with constant", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "dfaa3c0af69ab035cb825943b1cee0f60272010e", "notes": null diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp index fa9c34a68b6..113927ea188 100644 --- a/src/amd/compiler/aco_optimizer.cpp +++ b/src/amd/compiler/aco_optimizer.cpp @@ -2003,7 +2003,8 @@ label_instruction(opt_ctx& ctx, aco_ptr& instr) break; case aco_opcode::s_not_b32: case aco_opcode::s_not_b64: - if (ctx.info[instr->operands[0].tempId()].is_uniform_bool()) { + if (!instr->operands[0].isTemp()) { + } else if (ctx.info[instr->operands[0].tempId()].is_uniform_bool()) { ctx.info[instr->definitions[0].tempId()].set_uniform_bitwise(); ctx.info[instr->definitions[1].tempId()].set_scc_invert( ctx.info[instr->operands[0].tempId()].temp);