Index: lib/Target/AMDGPU/AMDGPUISelLowering.cpp =================================================================== --- lib/Target/AMDGPU/AMDGPUISelLowering.cpp +++ lib/Target/AMDGPU/AMDGPUISelLowering.cpp @@ -797,6 +797,8 @@ } if (R) { + if (getTargetMachine().getTargetTriple().getArch() == Triple::r600) + return false; const MachineFunction * MF = FLI->MF; const SISubtarget &ST = MF->getSubtarget(); const MachineRegisterInfo &MRI = MF->getRegInfo(); @@ -808,10 +810,7 @@ if (MRI.isLiveIn(Reg)) { // workitem.id.x workitem.id.y workitem.id.z // Any VGPR formal argument is also considered divergent - if ((MRI.getLiveInPhysReg(Reg) == AMDGPU::T0_X) || - (MRI.getLiveInPhysReg(Reg) == AMDGPU::T0_Y) || - (MRI.getLiveInPhysReg(Reg) == AMDGPU::T0_Z) || - (TRI.isVGPR(MRI, Reg))) + if (TRI.isVGPR(MRI, Reg)) return true; // Formal arguments of non-entry functions // are conservatively considered divergent