[PATCH] D95489: [AMDGPU] Do not reassign spilled registers
Stanislav Mekhanoshin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 27 13:07:07 PST 2021
rampitec updated this revision to Diff 319651.
rampitec edited the summary of this revision.
rampitec added a comment.
Refuse to reassign any registers which are result of an LI split.
I doubt I can create a proper test though.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D95489/new/
https://reviews.llvm.org/D95489
Files:
llvm/lib/Target/AMDGPU/GCNNSAReassign.cpp
llvm/lib/Target/AMDGPU/GCNRegBankReassign.cpp
Index: llvm/lib/Target/AMDGPU/GCNRegBankReassign.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/GCNRegBankReassign.cpp
+++ llvm/lib/Target/AMDGPU/GCNRegBankReassign.cpp
@@ -471,6 +471,12 @@
if (Reg.isPhysical() || !VRM->isAssignedReg(Reg))
return false;
+ // InlineSpiller does not call LRM::assign() after an LI split leaving it
+ // in an incosistent state, so we cannot call LRM::unassign(). Skip reassign
+ // if a register has originated from such split.
+ if (VRM->getPreSplitReg(Reg))
+ return false;
+
const MachineInstr *Def = MRI->getUniqueVRegDef(Reg);
Register PhysReg = VRM->getPhys(Reg);
Index: llvm/lib/Target/AMDGPU/GCNNSAReassign.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/GCNNSAReassign.cpp
+++ llvm/lib/Target/AMDGPU/GCNNSAReassign.cpp
@@ -190,6 +190,12 @@
if (MRI->getRegClass(Reg) != &AMDGPU::VGPR_32RegClass || Op.getSubReg())
return NSA_Status::FIXED;
+ // InlineSpiller does not call LRM::assign() after an LI split leaving
+ // it in an incosistent state, so we cannot call LRM::unassign().
+ // Skip reassign if a register has originated from such split.
+ if (VRM->getPreSplitReg(Reg))
+ return NSA_Status::FIXED;
+
const MachineInstr *Def = MRI->getUniqueVRegDef(Reg);
if (Def && Def->isCopy() && Def->getOperand(1).getReg() == PhysReg)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D95489.319651.patch
Type: text/x-patch
Size: 1459 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210127/8d7de552/attachment.bin>
More information about the llvm-commits
mailing list