From 7c995df9aaaeba6618666dc294b6b20efa3ff7bc Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Thu, 6 Jun 2024 18:10:15 +0100 Subject: [PATCH] aco: fix follow_operand with combined label_extract and label_split No fossil-db changes. Signed-off-by: Rhys Perry Reviewed-by: Georg Lehmann Part-of: --- src/amd/compiler/aco_optimizer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp index bb52d1cefd1..4e326f1f9e8 100644 --- a/src/amd/compiler/aco_optimizer.cpp +++ b/src/amd/compiler/aco_optimizer.cpp @@ -2135,8 +2135,9 @@ follow_operand(opt_ctx& ctx, Operand op, bool ignore_uses = false) Instruction* instr = ctx.info[op.tempId()].instr; if (instr->definitions.size() == 2) { - assert(instr->definitions[0].isTemp() && instr->definitions[0].tempId() == op.tempId()); - if (instr->definitions[1].isTemp() && ctx.uses[instr->definitions[1].tempId()]) + unsigned idx = ctx.info[op.tempId()].label & label_split ? 1 : 0; + assert(instr->definitions[idx].isTemp() && instr->definitions[idx].tempId() == op.tempId()); + if (instr->definitions[!idx].isTemp() && ctx.uses[instr->definitions[!idx].tempId()]) return nullptr; }