[llvm] [AMDGPU] Save/Restore SCC bit across waterfall loop. (PR #68363)
Sirish Pande via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 17 13:31:08 PDT 2023
================
@@ -1122,9 +1126,16 @@ void SIFixSGPRCopies::fixSCCCopies(MachineFunction &MF) {
continue;
}
if (DstReg == AMDGPU::SCC) {
- unsigned Opcode = IsWave32 ? AMDGPU::S_AND_B32 : AMDGPU::S_AND_B64;
- Register Exec = IsWave32 ? AMDGPU::EXEC_LO : AMDGPU::EXEC;
- Register Tmp = MRI->createVirtualRegister(TRI->getBoolRC());
+ const TargetRegisterClass *SrcRC =
+ TRI->getRegClassForOperandReg(*MRI, MI.getOperand(1));
+ unsigned SrcRegSize = TRI->getRegSizeInBits(*SrcRC);
+ assert((SrcRegSize == 64 || SrcRegSize == 32) &&
+ "Expected SCC src to be 64 or 32 bits");
+ bool IsSrc32Bit = SrcRegSize == 32;
+ unsigned Opcode = IsSrc32Bit ? AMDGPU::S_AND_B32 : AMDGPU::S_AND_B64;
+ Register Exec = IsSrc32Bit ? AMDGPU::EXEC_LO : AMDGPU::EXEC;
----------------
srpande wrote:
Since I am making changes in SIInstrInfo.cpp, I will not touch this. I will have a different ticket open to address overall lowering of COPY
https://github.com/llvm/llvm-project/pull/68363
More information about the llvm-commits
mailing list