[PATCH] D64766: [AMDGPU] Enable merging m0 initializations.
Stanislav Mekhanoshin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 15 14:12:35 PDT 2019
rampitec added inline comments.
================
Comment at: llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp:458-459
+getFirstNonProlog(MachineBasicBlock *MBB, const TargetInstrInfo *TII) {
+ MachineBasicBlock::iterator I = MBB->getFirstNonPHI();
+ while (I != MBB->end() && TII->isBasicBlockPrologue(*I))
+ ++I;
----------------
arsenm wrote:
> rampitec wrote:
> > arsenm wrote:
> > > Why does this need to care about the prolog instructions? (FYI I'm planning on eliminating the rarely followed concept)
> > You actually cannot, it was created to prevent RA from insrting spills into endif/else block before we updated exec mask.
> Yes, I'm working on splitting the blocks to avoid this
I never found a way to properly split a block for that. Assume you split it and endif sequence is in the 1st block. What would prevent RA from inserting spill/restore there? You will need to mark a whole block as not suitable for spills and in addition prohibit RA from inserting any COPY instructions there.
Besides until there is another way m0 init must follow prologue anyway. If it is inserted before endif sequence that will break a contiguous sequence of prologue instructions and we will have bogus spilling again.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D64766/new/
https://reviews.llvm.org/D64766
More information about the llvm-commits
mailing list