@@ -1589,30 +1589,30 @@ static bool invalidateRegisterPairing(unsigned Reg1, unsigned Reg2,
15891589namespace {
15901590
15911591struct 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