aco: always add sgprs to sgpr_ids when choosing literals
authorRhys Perry <pendingchaos02@gmail.com>
Thu, 23 Jan 2020 20:03:40 +0000 (20:03 +0000)
committerRhys Perry <pendingchaos02@gmail.com>
Mon, 27 Jan 2020 14:50:37 +0000 (14:50 +0000)
Even if it's a literal, we should add this to sgpr_ids.
No pipeline-db changes.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Fixes: 0be74090696 ('aco: rewrite literal combining')
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3541>

src/amd/compiler/aco_optimizer.cpp

index 73b9c653a640d264334138148529a9b301e0e03d..fbeb76df9902ceed8fe4e12e0b30a1cc49adfa10 100644 (file)
@@ -2682,13 +2682,15 @@ void select_instruction(opt_ctx &ctx, aco_ptr<Instruction>& instr)
    /* choose a literal to apply */
    for (unsigned i = 0; i < num_operands; i++) {
       Operand op = instr->operands[i];
+
+      if (instr->isVALU() && op.isTemp() && op.getTemp().type() == RegType::sgpr &&
+          op.tempId() != sgpr_ids[0])
+         sgpr_ids[!!sgpr_ids[0]] = op.tempId();
+
       if (op.isLiteral()) {
          current_literal = op;
          continue;
       } else if (!op.isTemp() || !ctx.info[op.tempId()].is_literal()) {
-         if (instr->isVALU() && op.isTemp() && op.getTemp().type() == RegType::sgpr &&
-             op.tempId() != sgpr_ids[0])
-            sgpr_ids[!!sgpr_ids[0]] = op.tempId();
          continue;
       }