[llvm] [AMDGPU] Inplace FI elimination during PEI for scalar copy instruction (PR #99556)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 24 08:58:24 PDT 2024
================
@@ -2555,12 +2555,33 @@ bool SIRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator MI,
TmpResultReg)
.addImm(ST.getWavefrontSizeLog2())
.addReg(FrameReg);
- auto Add = BuildMI(*MBB, MI, DL, TII->get(AMDGPU::V_ADD_U32_e32),
- TmpResultReg);
- Add.addImm(Offset).addReg(TmpResultReg, RegState::Kill);
+
+ MachineInstrBuilder Add;
+ if ((Add = TII->getAddNoCarry(*MBB, MI, DL, TmpResultReg, *RS)) ==
+ nullptr) {
+ // VCC is live and no SGPR is free.
+ // since emergency stack slot is already used for spilling VGPR
+ // scavenged? This a way around to avoid carry, need follow-up.
+ BuildMI(*MBB, MI, DL, TII->get(AMDGPU::S_MOV_B32), ResultReg)
+ .addImm(Offset);
+ Add = BuildMI(*MBB, MI, DL, TII->get(AMDGPU::V_MAD_I32_I24_e64),
----------------
arsenm wrote:
We know we can use the unsigned version here. The offset will always be a small positive constant and the SP/FP will always be positive
https://github.com/llvm/llvm-project/pull/99556
More information about the llvm-commits
mailing list