From 1a1d6aef562dedb1f10a87710c87884fd4221c72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Wed, 28 Feb 2024 10:41:12 +0100 Subject: [PATCH] aco/spill: don't allocate extra spill_id for phi operands in add_coupling_code() We can re-use the phi definition's spill_id. Part-of: --- src/amd/compiler/aco_spill.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/amd/compiler/aco_spill.cpp b/src/amd/compiler/aco_spill.cpp index d95f5062996..a5046993956 100644 --- a/src/amd/compiler/aco_spill.cpp +++ b/src/amd/compiler/aco_spill.cpp @@ -911,17 +911,14 @@ add_coupling_code(spill_ctx& ctx, Block* block, unsigned block_idx) } } - uint32_t spill_id = ctx.allocate_spill_id(phi->definitions[0].regClass()); - - /* add interferences and affinity */ + /* add interferences */ for (std::pair pair : ctx.spills_exit[pred_idx]) - ctx.add_interference(spill_id, pair.second); - ctx.add_affinity(def_spill_id, spill_id); + ctx.add_interference(def_spill_id, pair.second); aco_ptr spill{ create_instruction(aco_opcode::p_spill, Format::PSEUDO, 2, 0)}; spill->operands[0] = spill_op; - spill->operands[1] = Operand::c32(spill_id); + spill->operands[1] = Operand::c32(def_spill_id); Block& pred = ctx.program->blocks[pred_idx]; unsigned idx = pred.instructions.size(); do { @@ -934,7 +931,7 @@ add_coupling_code(spill_ctx& ctx, Block* block, unsigned block_idx) /* Add the original name to predecessor's spilled variables */ if (spill_op.isTemp()) - ctx.spills_exit[pred_idx][phi->operands[i].getTemp()] = spill_id; + ctx.spills_exit[pred_idx][phi->operands[i].getTemp()] = def_spill_id; } /* remove phi from instructions */