diff --git a/.pick_status.json b/.pick_status.json index 2cb6b52a1c8..152c704a1fe 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1831,7 +1831,7 @@ "description": "aco/ra: don't swap p_create_vector operand with definition blocker for scc", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "9476986e6f6fe49ef8bc511f4ebeca4232263888" }, diff --git a/src/amd/compiler/aco_register_allocation.cpp b/src/amd/compiler/aco_register_allocation.cpp index eef4ff06fbb..c59c6353815 100644 --- a/src/amd/compiler/aco_register_allocation.cpp +++ b/src/amd/compiler/aco_register_allocation.cpp @@ -1091,7 +1091,7 @@ get_reg_for_create_vector_copy(ra_ctx& ctx, RegisterFile& reg_file, assignment& op = ctx.assignments[instr->operands[i].tempId()]; /* if everything matches, create parallelcopy for the killed operand */ if (!intersects(def_reg, PhysRegInterval{op.reg, op.rc.size()}) && - reg_file.get_id(op.reg) == instr->operands[i].tempId()) { + op.reg != scc && reg_file.get_id(op.reg) == instr->operands[i].tempId()) { Definition pc_def = Definition(reg, info.rc); parallelcopies.emplace_back(instr->operands[i], pc_def); return {op.reg, true};