[llvm] [AMDGPU] Include WWM register spill into BB Prolog (PR #111496)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 14 07:29:57 PDT 2024
alex-t wrote:
> > > > Adding any VGPR reload to the prologue will take us back to the SplitKit assert issue. Since WWM VGPR reload creates a new live interval in the VGPR it defines, we end up at the same point where we started.
> > >
> > >
> > > I think the register allocation split avoids this. The WWM spills and VGPR spills do not coexist anymore. The 3rd run of the allocator will see the lowered WWM spills
> >
> >
> > Not sure if I understand you correctly. Given that the VGPR reloads could be incorrectly inserted because the WWM reload does not belong to prologue, I conclude that the VGPRs are allocated AFTER the WWM. If so, during the VGPR allocation we may want to split virtual register in the BB where WWM reload has been inserted to the prologue during the WWM pass. The WWM reload creates live interval with a start point "inside" the prologue. So, the insertion point returned to the SplitKit will interfere.
>
> During per-lane VGPR regalloc pipeline (the 3rd allocation phase), all registers allocated during WWM regalloc stage become reserved. IIUC, RA won't compute any interference with a reserved physReg.
Sounds reasonable. Do you have a MIR test for that case?
https://github.com/llvm/llvm-project/pull/111496
More information about the llvm-commits
mailing list