Skip to content

Commit 493f101

Browse files
[AArch64] Remove unused ReverseCSRRestoreSeq option. (#82326)
This patch removes the `-reverse-csr-restore-seq` option from AArch64FrameLowering, since this is no longer used.
1 parent 26db845 commit 493f101

File tree

2 files changed

+21
-146
lines changed

2 files changed

+21
-146
lines changed

llvm/lib/Target/AArch64/AArch64FrameLowering.cpp

Lines changed: 21 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -239,11 +239,6 @@ static cl::opt<bool> EnableRedZone("aarch64-redzone",
239239
cl::desc("enable use of redzone on AArch64"),
240240
cl::init(false), cl::Hidden);
241241

242-
static cl::opt<bool>
243-
ReverseCSRRestoreSeq("reverse-csr-restore-seq",
244-
cl::desc("reverse the CSR restore sequence"),
245-
cl::init(false), cl::Hidden);
246-
247242
static cl::opt<bool> StackTaggingMergeSetTag(
248243
"stack-tagging-merge-settag",
249244
cl::desc("merge settag instruction in function epilog"), cl::init(true),
@@ -307,8 +302,6 @@ bool AArch64FrameLowering::homogeneousPrologEpilog(
307302
return false;
308303
if (!EnableHomogeneousPrologEpilog)
309304
return false;
310-
if (ReverseCSRRestoreSeq)
311-
return false;
312305
if (EnableRedZone)
313306
return false;
314307

@@ -3111,7 +3104,27 @@ bool AArch64FrameLowering::restoreCalleeSavedRegisters(
31113104

31123105
computeCalleeSaveRegisterPairs(MF, CSI, TRI, RegPairs, hasFP(MF));
31133106

3114-
auto EmitMI = [&](const RegPairInfo &RPI) -> MachineBasicBlock::iterator {
3107+
if (homogeneousPrologEpilog(MF, &MBB)) {
3108+
auto MIB = BuildMI(MBB, MBBI, DL, TII.get(AArch64::HOM_Epilog))
3109+
.setMIFlag(MachineInstr::FrameDestroy);
3110+
for (auto &RPI : RegPairs) {
3111+
MIB.addReg(RPI.Reg1, RegState::Define);
3112+
MIB.addReg(RPI.Reg2, RegState::Define);
3113+
}
3114+
return true;
3115+
}
3116+
3117+
// For performance reasons restore SVE register in increasing order
3118+
auto IsPPR = [](const RegPairInfo &c) { return c.Type == RegPairInfo::PPR; };
3119+
auto PPRBegin = std::find_if(RegPairs.begin(), RegPairs.end(), IsPPR);
3120+
auto PPREnd = std::find_if(RegPairs.rbegin(), RegPairs.rend(), IsPPR);
3121+
std::reverse(PPRBegin, PPREnd.base());
3122+
auto IsZPR = [](const RegPairInfo &c) { return c.Type == RegPairInfo::ZPR; };
3123+
auto ZPRBegin = std::find_if(RegPairs.begin(), RegPairs.end(), IsZPR);
3124+
auto ZPREnd = std::find_if(RegPairs.rbegin(), RegPairs.rend(), IsZPR);
3125+
std::reverse(ZPRBegin, ZPREnd.base());
3126+
3127+
for (const RegPairInfo &RPI : RegPairs) {
31153128
unsigned Reg1 = RPI.Reg1;
31163129
unsigned Reg2 = RPI.Reg2;
31173130

@@ -3185,43 +3198,6 @@ bool AArch64FrameLowering::restoreCalleeSavedRegisters(
31853198
MachineMemOperand::MOLoad, Size, Alignment));
31863199
if (NeedsWinCFI)
31873200
InsertSEH(MIB, TII, MachineInstr::FrameDestroy);
3188-
3189-
return MIB->getIterator();
3190-
};
3191-
3192-
if (homogeneousPrologEpilog(MF, &MBB)) {
3193-
auto MIB = BuildMI(MBB, MBBI, DL, TII.get(AArch64::HOM_Epilog))
3194-
.setMIFlag(MachineInstr::FrameDestroy);
3195-
for (auto &RPI : RegPairs) {
3196-
MIB.addReg(RPI.Reg1, RegState::Define);
3197-
MIB.addReg(RPI.Reg2, RegState::Define);
3198-
}
3199-
return true;
3200-
}
3201-
3202-
// For performance reasons restore SVE register in increasing order
3203-
auto IsPPR = [](const RegPairInfo &c) { return c.Type == RegPairInfo::PPR; };
3204-
auto PPRBegin = std::find_if(RegPairs.begin(), RegPairs.end(), IsPPR);
3205-
auto PPREnd = std::find_if(RegPairs.rbegin(), RegPairs.rend(), IsPPR);
3206-
std::reverse(PPRBegin, PPREnd.base());
3207-
auto IsZPR = [](const RegPairInfo &c) { return c.Type == RegPairInfo::ZPR; };
3208-
auto ZPRBegin = std::find_if(RegPairs.begin(), RegPairs.end(), IsZPR);
3209-
auto ZPREnd = std::find_if(RegPairs.rbegin(), RegPairs.rend(), IsZPR);
3210-
std::reverse(ZPRBegin, ZPREnd.base());
3211-
3212-
if (ReverseCSRRestoreSeq) {
3213-
MachineBasicBlock::iterator First = MBB.end();
3214-
for (const RegPairInfo &RPI : reverse(RegPairs)) {
3215-
MachineBasicBlock::iterator It = EmitMI(RPI);
3216-
if (First == MBB.end())
3217-
First = It;
3218-
}
3219-
if (First != MBB.end())
3220-
MBB.splice(MBBI, &MBB, First);
3221-
} else {
3222-
for (const RegPairInfo &RPI : RegPairs) {
3223-
(void)EmitMI(RPI);
3224-
}
32253201
}
32263202

32273203
return true;

llvm/test/CodeGen/AArch64/reverse-csr-restore-seq.mir

Lines changed: 0 additions & 101 deletions
This file was deleted.

0 commit comments

Comments
 (0)