aco: don't create vector affinities for operands which are not killed or are duplicates
[mesa.git] / src / amd / compiler / aco_register_allocation.cpp
index a6792679da1bf7115359aae7edaffaabb51c28de..a3e01b11c68359ea6b78a3b2f40edeaa968a68c8 100644 (file)
@@ -1410,7 +1410,7 @@ void register_allocation(Program *program, std::vector<TempSet>& live_out_per_bl
          /* add vector affinities */
          if (instr->opcode == aco_opcode::p_create_vector) {
             for (const Operand& op : instr->operands) {
-               if (op.isTemp() && op.getTemp().type() == instr->definitions[0].getTemp().type())
+               if (op.isTemp() && op.isFirstKill() && op.getTemp().type() == instr->definitions[0].getTemp().type())
                   ctx.vectors[op.tempId()] = instr.get();
             }
          }