aco: coalesce parallelcopies during register allocation
These are the result of lowering to CSSA, and should be removed if possible Totals from affected shaders: (VEGA) SGPRS: 544544 -> 544544 (0.00 %) VGPRS: 418224 -> 418224 (0.00 %) Spilled SGPRs: 141826 -> 141826 (0.00 %) Spilled VGPRs: 0 -> 0 (0.00 %) Private memory VGPRs: 0 -> 0 (0.00 %) Scratch size: 0 -> 0 (0.00 %) dwords per thread Code Size: 65853740 -> 64703380 (-1.75 %) bytes LDS: 0 -> 0 (0.00 %) blocks Max Waves: 13669 -> 13669 (0.00 %) Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4952>
This commit is contained in:
committed by
Marge Bot
parent
38cc649fcb
commit
a5fc96b533
@@ -1837,13 +1837,10 @@ void register_allocation(Program *program, std::vector<TempSet>& live_out_per_bl
|
||||
reg.reg_b += instr->definitions[j].bytes();
|
||||
if (get_reg_specified(ctx, register_file, definition.regClass(), parallelcopy, instr, reg))
|
||||
definition.setFixed(reg);
|
||||
} else if (instr->opcode == aco_opcode::p_wqm) {
|
||||
PhysReg reg;
|
||||
if (instr->operands[0].isKillBeforeDef() && instr->operands[0].getTemp().type() == definition.getTemp().type()) {
|
||||
reg = instr->operands[0].physReg();
|
||||
} 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))
|
||||
definition.setFixed(reg);
|
||||
assert(register_file[reg.reg()] == 0);
|
||||
}
|
||||
} else if (instr->opcode == aco_opcode::p_extract_vector) {
|
||||
PhysReg reg;
|
||||
if (instr->operands[0].isKillBeforeDef() &&
|
||||
|
||||
Reference in New Issue
Block a user