aco/ssa_elimination: check if pseudo scratch reg overwrittes regs used for v_cmpx opt

Cc: mesa-stable

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27855>
This commit is contained in:
Georg Lehmann
2024-02-28 18:01:07 +01:00
committed by Marge Bot
parent e7d6cd9216
commit 482137402a
+7
View File
@@ -398,6 +398,10 @@ try_optimize_branching_sequence(ssa_elimination_ctx& ctx, Block& block, const in
regs_intersect(Definition(exec, ctx.program->lane_mask), def);
}))
break;
if (instr->isPseudo() && instr->pseudo().needs_scratch_reg &&
regs_intersect(exec_copy_def, Definition(instr->pseudo().scratch_sgpr, s1)))
break;
}
}
@@ -437,6 +441,9 @@ try_optimize_branching_sequence(ssa_elimination_ctx& ctx, Block& block, const in
for (const Definition& def : instr->definitions)
if (regs_intersect(exec_copy_def, def))
return;
if (instr->isPseudo() && instr->pseudo().needs_scratch_reg &&
regs_intersect(exec_copy_def, Definition(instr->pseudo().scratch_sgpr, s1)))
return;
}
/* Check if the instruction may implicitly read VCC, eg. v_cndmask or add with carry.