aco: propagate temporaries into expanded vectors

Gives a very slight decrease in code size:
Totals from affected shaders:
Code Size: 1708488 -> 1702768 (-0.33 %) bytes
Max Waves: 2858 -> 2855 (-0.10 %)

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
This commit is contained in:
Daniel Schürmann 2019-12-05 19:27:16 +01:00
parent df3e674fb3
commit 8259c97b2d
1 changed files with 7 additions and 2 deletions

View File

@ -777,8 +777,13 @@ void label_instruction(opt_ctx &ctx, Block& block, aco_ptr<Instruction>& instr)
unsigned k = 0;
for (Operand& old_op : old_vec->operands) {
if (old_op.isTemp() && ctx.info[old_op.tempId()].is_vec()) {
for (unsigned j = 0; j < ctx.info[old_op.tempId()].instr->operands.size(); j++)
instr->operands[k++] = ctx.info[old_op.tempId()].instr->operands[j];
for (unsigned j = 0; j < ctx.info[old_op.tempId()].instr->operands.size(); j++) {
Operand op = ctx.info[old_op.tempId()].instr->operands[j];
if (op.isTemp() && ctx.info[op.tempId()].is_temp() &&
ctx.info[op.tempId()].temp.type() == instr->definitions[0].regClass().type())
op.setTemp(ctx.info[op.tempId()].temp);
instr->operands[k++] = op;
}
} else {
instr->operands[k++] = old_op;
}