aco: fix WQM coalescing
get_reg_specified() doesn't handle special registers like SCC.
Fixes: a5fc96b533
('aco: coalesce parallelcopies during register allocation')
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5036>
This commit is contained in:
parent
4151bddab5
commit
66e3c74f9c
|
@ -1864,7 +1864,9 @@ void register_allocation(Program *program, std::vector<TempSet>& live_out_per_bl
|
|||
definition.setFixed(reg);
|
||||
} else if (instr->opcode == aco_opcode::p_wqm || instr->opcode == aco_opcode::p_parallelcopy) {
|
||||
PhysReg reg = instr->operands[i].physReg();
|
||||
if (get_reg_specified(ctx, register_file, definition.regClass(), parallelcopy, instr, reg))
|
||||
if (instr->operands[i].isTemp() &&
|
||||
instr->operands[i].getTemp().type() == definition.getTemp().type() &&
|
||||
!register_file.test(reg, definition.bytes()))
|
||||
definition.setFixed(reg);
|
||||
} else if (instr->opcode == aco_opcode::p_extract_vector) {
|
||||
PhysReg reg;
|
||||
|
|
Loading…
Reference in New Issue