@@ -2762,7 +2762,7 @@ struct RegPairInfo {
2762
2762
unsigned Reg2 = AArch64::NoRegister;
2763
2763
int FrameIdx;
2764
2764
int Offset;
2765
- enum RegType { GPR, FPR64, FPR128, ZPR, PPR } Type;
2765
+ enum RegType { GPR, FPR64, FPR128, PPR, ZPR } Type;
2766
2766
2767
2767
RegPairInfo () = default ;
2768
2768
@@ -2787,22 +2787,6 @@ struct RegPairInfo {
2787
2787
2788
2788
} // end anonymous namespace
2789
2789
2790
- static unsigned findFreePredicateAsCounterReg (MachineBasicBlock *MBB) {
2791
- MachineFunction *MF = MBB->getParent ();
2792
-
2793
- const AArch64Subtarget &Subtarget = MF->getSubtarget <AArch64Subtarget>();
2794
- const AArch64RegisterInfo &TRI = *Subtarget.getRegisterInfo ();
2795
- LivePhysRegs LiveRegs (TRI);
2796
- getLiveRegsForEntryMBB (LiveRegs, *MBB);
2797
-
2798
- for (MCRegister PReg :
2799
- {AArch64::PN8, AArch64::PN9, AArch64::PN10, AArch64::PN11, AArch64::PN12,
2800
- AArch64::PN13, AArch64::PN14, AArch64::PN15}){
2801
- return PReg;
2802
- }
2803
- llvm_unreachable (" No predicated register free" );
2804
- }
2805
-
2806
2790
static void computeCalleeSaveRegisterPairs (
2807
2791
MachineFunction &MF, ArrayRef<CalleeSavedInfo> CSI,
2808
2792
const TargetRegisterInfo *TRI, SmallVectorImpl<RegPairInfo> &RegPairs,
@@ -3097,7 +3081,9 @@ bool AArch64FrameLowering::spillCalleeSavedRegisters(
3097
3081
PairRegs = AArch64::Z0_Z1 + (RPI.Reg1 - AArch64::Z0);
3098
3082
if (!PtrueCreated) {
3099
3083
PtrueCreated = true ;
3100
- PnReg = findFreePredicateAsCounterReg (&MBB);
3084
+ // Any one of predicate-as-count will be free to use
3085
+ // This can be replaced in the future if needed
3086
+ PnReg = AArch64::PN8;
3101
3087
BuildMI (MBB, MI, DL, TII.get (AArch64::PTRUE_C_B), PnReg)
3102
3088
.setMIFlags (MachineInstr::FrameSetup);
3103
3089
}
@@ -3220,7 +3206,9 @@ bool AArch64FrameLowering::restoreCalleeSavedRegisters(
3220
3206
PairRegs = AArch64::Z0_Z1 + (RPI.Reg1 - AArch64::Z0);
3221
3207
if (!PtrueCreated) {
3222
3208
PtrueCreated = true ;
3223
- PnReg = findFreePredicateAsCounterReg (&MBB);
3209
+ // Any one of predicate-as-count will be free to use
3210
+ // This can be replaced in the future if needed
3211
+ PnReg = AArch64::PN8;
3224
3212
BuildMI (MBB, MBBI, DL, TII.get (AArch64::PTRUE_C_B), PnReg)
3225
3213
.setMIFlags (MachineInstr::FrameDestroy);
3226
3214
}
0 commit comments