[llvm] [AMDGPU] Convert SVS form scratch frame index fallback into SV form (PR #219239)
Lukas Sommer via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 28 00:28:48 PDT 2026
================
@@ -3285,12 +3287,31 @@ bool SIRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator MI,
auto [ImmOffset, RemainderOffset] =
TII->splitFlatOffset(FullOffset, AMDGPUAS::PRIVATE_ADDRESS,
AMDGPU::FlatAddrSpace::FlatScratch);
- BuildMI(*MBB, MI, DL, TII->get(AMDGPU::V_MOV_B32_e32), TmpVGPR)
- .addImm(RemainderOffset);
+
+ Register UsedVAddr;
+ if (MachineOperand *VAddr =
+ TII->getNamedOperand(*MI, AMDGPU::OpName::vaddr)) {
+ // SVS form: add RemainderOffset to vaddr.
+ Register Src = VAddr->getReg();
+ Register Dst = VAddr->isKill() ? Src
----------------
sommerlukas wrote:
I'm not sure how likely this is to happen, but if `vdata` and `vaddr` are the same register, the kill on `vaddr` still doesn't mean that we can use the `vaddr` register in-place for the addition, as we would overwrite `vdata` with the addition.
If this scenario is unlikely, we should at least assert or check if `vaddr` and `vdata` are the same register before using it for the in-place addition.
https://github.com/llvm/llvm-project/pull/219239
More information about the llvm-commits
mailing list