diff --git a/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp b/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp index 89c16dadb4b41..39b060c7edda0 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPURewriteAGPRCopyMFMA.cpp @@ -302,6 +302,10 @@ bool AMDGPURewriteAGPRCopyMFMAImpl::attemptReassignmentsToAGPR( const TargetRegisterClass *EquivalentAGPRRegClass = TRI.getEquivalentAGPRClass(MRI.getRegClass(InterferingReg)); + // Do not reassign scale source operands + if (EquivalentAGPRRegClass == &AMDGPU::AGPR_32RegClass) + return false; + MCPhysReg Assignable = AMDGPU::NoRegister; if (EquivalentAGPRRegClass->contains(PrefPhysReg) && LRM.checkInterference(ReassignLI, PrefPhysReg) ==