diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp index 8e4d4d6d9c0..e7a2da1bcb1 100644 --- a/src/amd/compiler/aco_optimizer.cpp +++ b/src/amd/compiler/aco_optimizer.cpp @@ -2301,6 +2301,10 @@ void select_instruction(opt_ctx &ctx, aco_ptr& instr) /* first, check profitability */ if (ctx.uses[info->mul_temp_id]) { ctx.uses[info->mul_temp_id]++; + if (instr->operands[0].isTemp()) + ctx.uses[instr->operands[0].tempId()]--; + if (instr->operands[1].isTemp()) + ctx.uses[instr->operands[1].tempId()]--; instr.swap(info->add_instr); /* second, check possible literals */ @@ -2333,7 +2337,6 @@ void select_instruction(opt_ctx &ctx, aco_ptr& instr) info->literal_idx = literal_idx; } } - return; } /* check for literals */