Skip to content

Commit 8b747ed

Browse files
committed
AArch64: Use Register in FrameLowering
1 parent 279a81e commit 8b747ed

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

llvm/lib/Target/AArch64/AArch64FrameLowering.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1589,30 +1589,30 @@ static bool invalidateRegisterPairing(unsigned Reg1, unsigned Reg2,
15891589
namespace {
15901590

15911591
struct RegPairInfo {
1592-
unsigned Reg1 = AArch64::NoRegister;
1593-
unsigned Reg2 = AArch64::NoRegister;
1592+
Register Reg1;
1593+
Register Reg2;
15941594
int FrameIdx;
15951595
int Offset;
15961596
enum RegType { GPR, FPR64, FPR128, PPR, ZPR, VG } Type;
15971597
const TargetRegisterClass *RC;
15981598

15991599
RegPairInfo() = default;
16001600

1601-
bool isPaired() const { return Reg2 != AArch64::NoRegister; }
1601+
bool isPaired() const { return Reg2.isValid(); }
16021602

16031603
bool isScalable() const { return Type == PPR || Type == ZPR; }
16041604
};
16051605

16061606
} // end anonymous namespace
16071607

1608-
unsigned findFreePredicateReg(BitVector &SavedRegs) {
1608+
MCRegister findFreePredicateReg(BitVector &SavedRegs) {
16091609
for (unsigned PReg = AArch64::P8; PReg <= AArch64::P15; ++PReg) {
16101610
if (SavedRegs.test(PReg)) {
16111611
unsigned PNReg = PReg - AArch64::P0 + AArch64::PN0;
1612-
return PNReg;
1612+
return MCRegister(PNReg);
16131613
}
16141614
}
1615-
return AArch64::NoRegister;
1615+
return MCRegister();
16161616
}
16171617

16181618
// The multivector LD/ST are available only for SME or SVE2p1 targets
@@ -1930,8 +1930,8 @@ bool AArch64FrameLowering::spillCalleeSavedRegisters(
19301930
}
19311931
bool PTrueCreated = false;
19321932
for (const RegPairInfo &RPI : llvm::reverse(RegPairs)) {
1933-
unsigned Reg1 = RPI.Reg1;
1934-
unsigned Reg2 = RPI.Reg2;
1933+
Register Reg1 = RPI.Reg1;
1934+
Register Reg2 = RPI.Reg2;
19351935
unsigned StrOpc;
19361936

19371937
// Issue sequence of spills for cs regs. The first spill may be converted
@@ -1967,7 +1967,7 @@ bool AArch64FrameLowering::spillCalleeSavedRegisters(
19671967
break;
19681968
}
19691969

1970-
unsigned X0Scratch = AArch64::NoRegister;
1970+
Register X0Scratch;
19711971
auto RestoreX0 = make_scope_exit([&] {
19721972
if (X0Scratch != AArch64::NoRegister)
19731973
BuildMI(MBB, MI, DL, TII.get(TargetOpcode::COPY), AArch64::X0)
@@ -2530,8 +2530,8 @@ void AArch64FrameLowering::determineCalleeSaves(MachineFunction &MF,
25302530
AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>();
25312531
// Find a suitable predicate register for the multi-vector spill/fill
25322532
// instructions.
2533-
unsigned PnReg = findFreePredicateReg(SavedRegs);
2534-
if (PnReg != AArch64::NoRegister)
2533+
MCRegister PnReg = findFreePredicateReg(SavedRegs);
2534+
if (PnReg.isValid())
25352535
AFI->setPredicateRegForFillSpill(PnReg);
25362536
// If no free callee-save has been found assign one.
25372537
if (!AFI->getPredicateRegForFillSpill() &&

0 commit comments

Comments
 (0)