aco/spill: Invert reloads map

So we can quickly look up if an operand was reloaded without having to
check renames.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29730>
This commit is contained in:
Natalie Vock 2024-07-04 19:06:22 +02:00 committed by Marge Bot
parent 39413ef78f
commit ca7ce1fb33

View file

@ -909,7 +909,7 @@ process_block(spill_ctx& ctx, unsigned block_idx, Block* block, RegisterDemand s
/* the Operand is spilled: add it to reloads */
Temp new_tmp = ctx.program->allocateTmp(op.regClass());
ctx.renames[block_idx][op.getTemp()] = new_tmp;
reloads[new_tmp] = std::make_pair(op.getTemp(), current_spills[op.getTemp()]);
reloads[op.getTemp()] = std::make_pair(new_tmp, current_spills[op.getTemp()]);
current_spills.erase(op.getTemp());
spilled_registers -= new_tmp;
}
@ -1007,7 +1007,7 @@ process_block(spill_ctx& ctx, unsigned block_idx, Block* block, RegisterDemand s
/* add reloads and instruction to new instructions */
for (std::pair<const Temp, std::pair<Temp, uint32_t>>& pair : reloads) {
aco_ptr<Instruction> reload =
do_reload(ctx, pair.second.first, pair.first, pair.second.second);
do_reload(ctx, pair.first, pair.second.first, pair.second.second);
instructions.emplace_back(std::move(reload));
}
instructions.emplace_back(std::move(instr));