Lines Matching refs:RPI
2547 RegPairInfo RPI; in computeCalleeSaveRegisterPairs() local
2548 RPI.Reg1 = CSI[i].getReg(); in computeCalleeSaveRegisterPairs()
2550 if (AArch64::GPR64RegClass.contains(RPI.Reg1)) in computeCalleeSaveRegisterPairs()
2551 RPI.Type = RegPairInfo::GPR; in computeCalleeSaveRegisterPairs()
2552 else if (AArch64::FPR64RegClass.contains(RPI.Reg1)) in computeCalleeSaveRegisterPairs()
2553 RPI.Type = RegPairInfo::FPR64; in computeCalleeSaveRegisterPairs()
2554 else if (AArch64::FPR128RegClass.contains(RPI.Reg1)) in computeCalleeSaveRegisterPairs()
2555 RPI.Type = RegPairInfo::FPR128; in computeCalleeSaveRegisterPairs()
2556 else if (AArch64::ZPRRegClass.contains(RPI.Reg1)) in computeCalleeSaveRegisterPairs()
2557 RPI.Type = RegPairInfo::ZPR; in computeCalleeSaveRegisterPairs()
2558 else if (AArch64::PPRRegClass.contains(RPI.Reg1)) in computeCalleeSaveRegisterPairs()
2559 RPI.Type = RegPairInfo::PPR; in computeCalleeSaveRegisterPairs()
2567 switch (RPI.Type) { in computeCalleeSaveRegisterPairs()
2570 !invalidateRegisterPairing(RPI.Reg1, NextReg, IsWindows, in computeCalleeSaveRegisterPairs()
2572 RPI.Reg2 = NextReg; in computeCalleeSaveRegisterPairs()
2576 !invalidateWindowsRegisterPairing(RPI.Reg1, NextReg, NeedsWinCFI, in computeCalleeSaveRegisterPairs()
2578 RPI.Reg2 = NextReg; in computeCalleeSaveRegisterPairs()
2582 RPI.Reg2 = NextReg; in computeCalleeSaveRegisterPairs()
2596 assert((!RPI.isPaired() || in computeCalleeSaveRegisterPairs()
2600 assert((!RPI.isPaired() || !NeedsFrameRecord || RPI.Reg2 != AArch64::FP || in computeCalleeSaveRegisterPairs()
2601 RPI.Reg1 == AArch64::LR) && in computeCalleeSaveRegisterPairs()
2605 assert((!RPI.isPaired() || !NeedsFrameRecord || RPI.Reg1 != AArch64::FP || in computeCalleeSaveRegisterPairs()
2606 RPI.Reg2 == AArch64::LR) && in computeCalleeSaveRegisterPairs()
2613 (RPI.isPaired() && in computeCalleeSaveRegisterPairs()
2614 ((RPI.Reg1 == AArch64::LR && RPI.Reg2 == AArch64::FP) || in computeCalleeSaveRegisterPairs()
2615 RPI.Reg1 + 1 == RPI.Reg2))) && in computeCalleeSaveRegisterPairs()
2618 RPI.FrameIdx = CSI[i].getFrameIdx(); in computeCalleeSaveRegisterPairs()
2620 RPI.isPaired()) // RPI.FrameIdx must be the lower index of the pair in computeCalleeSaveRegisterPairs()
2621 RPI.FrameIdx = CSI[i + RegInc].getFrameIdx(); in computeCalleeSaveRegisterPairs()
2623 int Scale = RPI.getScale(); in computeCalleeSaveRegisterPairs()
2625 int OffsetPre = RPI.isScalable() ? ScalableByteOffset : ByteOffset; in computeCalleeSaveRegisterPairs()
2628 if (RPI.isScalable()) in computeCalleeSaveRegisterPairs()
2631 ByteOffset += StackFillDir * (RPI.isPaired() ? 2 * Scale : Scale); in computeCalleeSaveRegisterPairs()
2636 RPI.Reg2 == AArch64::FP) in computeCalleeSaveRegisterPairs()
2639 assert(!(RPI.isScalable() && RPI.isPaired()) && in computeCalleeSaveRegisterPairs()
2645 !RPI.isScalable() && RPI.Type != RegPairInfo::FPR128 && in computeCalleeSaveRegisterPairs()
2646 !RPI.isPaired() && ByteOffset % 16 != 0) { in computeCalleeSaveRegisterPairs()
2648 assert(MFI.getObjectAlign(RPI.FrameIdx) <= Align(16)); in computeCalleeSaveRegisterPairs()
2652 MFI.setObjectAlignment(RPI.FrameIdx, Align(16)); in computeCalleeSaveRegisterPairs()
2656 int OffsetPost = RPI.isScalable() ? ScalableByteOffset : ByteOffset; in computeCalleeSaveRegisterPairs()
2665 RPI.Reg2 == AArch64::FP) in computeCalleeSaveRegisterPairs()
2667 RPI.Offset = Offset / Scale; in computeCalleeSaveRegisterPairs()
2669 assert(((!RPI.isScalable() && RPI.Offset >= -64 && RPI.Offset <= 63) || in computeCalleeSaveRegisterPairs()
2670 (RPI.isScalable() && RPI.Offset >= -256 && RPI.Offset <= 255)) && in computeCalleeSaveRegisterPairs()
2675 if (NeedsFrameRecord && ((!IsWindows && RPI.Reg1 == AArch64::LR && in computeCalleeSaveRegisterPairs()
2676 RPI.Reg2 == AArch64::FP) || in computeCalleeSaveRegisterPairs()
2677 (IsWindows && RPI.Reg1 == AArch64::FP && in computeCalleeSaveRegisterPairs()
2678 RPI.Reg2 == AArch64::LR))) in computeCalleeSaveRegisterPairs()
2681 RegPairs.push_back(RPI); in computeCalleeSaveRegisterPairs()
2682 if (RPI.isPaired()) in computeCalleeSaveRegisterPairs()
2715 for (auto &RPI : RegPairs) { in spillCalleeSavedRegisters() local
2716 MIB.addReg(RPI.Reg1); in spillCalleeSavedRegisters()
2717 MIB.addReg(RPI.Reg2); in spillCalleeSavedRegisters()
2720 if (!MRI.isReserved(RPI.Reg1)) in spillCalleeSavedRegisters()
2721 MBB.addLiveIn(RPI.Reg1); in spillCalleeSavedRegisters()
2722 if (!MRI.isReserved(RPI.Reg2)) in spillCalleeSavedRegisters()
2723 MBB.addLiveIn(RPI.Reg2); in spillCalleeSavedRegisters()
2727 for (const RegPairInfo &RPI : llvm::reverse(RegPairs)) { in spillCalleeSavedRegisters() local
2728 unsigned Reg1 = RPI.Reg1; in spillCalleeSavedRegisters()
2729 unsigned Reg2 = RPI.Reg2; in spillCalleeSavedRegisters()
2744 switch (RPI.Type) { in spillCalleeSavedRegisters()
2746 StrOpc = RPI.isPaired() ? AArch64::STPXi : AArch64::STRXui; in spillCalleeSavedRegisters()
2751 StrOpc = RPI.isPaired() ? AArch64::STPDi : AArch64::STRDui; in spillCalleeSavedRegisters()
2756 StrOpc = RPI.isPaired() ? AArch64::STPQi : AArch64::STRQui; in spillCalleeSavedRegisters()
2772 if (RPI.isPaired()) dbgs() << ", " << printReg(Reg2, TRI); in spillCalleeSavedRegisters()
2773 dbgs() << ") -> fi#(" << RPI.FrameIdx; in spillCalleeSavedRegisters()
2774 if (RPI.isPaired()) dbgs() << ", " << RPI.FrameIdx + 1; in spillCalleeSavedRegisters()
2782 unsigned FrameIdxReg1 = RPI.FrameIdx; in spillCalleeSavedRegisters()
2783 unsigned FrameIdxReg2 = RPI.FrameIdx + 1; in spillCalleeSavedRegisters()
2784 if (NeedsWinCFI && RPI.isPaired()) { in spillCalleeSavedRegisters()
2791 if (RPI.isPaired()) { in spillCalleeSavedRegisters()
2801 .addImm(RPI.Offset) // [sp, #offset*scale], in spillCalleeSavedRegisters()
2812 if (RPI.Type == RegPairInfo::ZPR || RPI.Type == RegPairInfo::PPR) in spillCalleeSavedRegisters()
2813 MFI.setStackID(RPI.FrameIdx, TargetStackID::ScalableVector); in spillCalleeSavedRegisters()
2833 auto EmitMI = [&](const RegPairInfo &RPI) -> MachineBasicBlock::iterator { in restoreCalleeSavedRegisters() argument
2834 unsigned Reg1 = RPI.Reg1; in restoreCalleeSavedRegisters()
2835 unsigned Reg2 = RPI.Reg2; in restoreCalleeSavedRegisters()
2848 switch (RPI.Type) { in restoreCalleeSavedRegisters()
2850 LdrOpc = RPI.isPaired() ? AArch64::LDPXi : AArch64::LDRXui; in restoreCalleeSavedRegisters()
2855 LdrOpc = RPI.isPaired() ? AArch64::LDPDi : AArch64::LDRDui; in restoreCalleeSavedRegisters()
2860 LdrOpc = RPI.isPaired() ? AArch64::LDPQi : AArch64::LDRQui; in restoreCalleeSavedRegisters()
2876 if (RPI.isPaired()) dbgs() << ", " << printReg(Reg2, TRI); in restoreCalleeSavedRegisters()
2877 dbgs() << ") -> fi#(" << RPI.FrameIdx; in restoreCalleeSavedRegisters()
2878 if (RPI.isPaired()) dbgs() << ", " << RPI.FrameIdx + 1; in restoreCalleeSavedRegisters()
2884 unsigned FrameIdxReg1 = RPI.FrameIdx; in restoreCalleeSavedRegisters()
2885 unsigned FrameIdxReg2 = RPI.FrameIdx + 1; in restoreCalleeSavedRegisters()
2886 if (NeedsWinCFI && RPI.isPaired()) { in restoreCalleeSavedRegisters()
2891 if (RPI.isPaired()) { in restoreCalleeSavedRegisters()
2899 .addImm(RPI.Offset) // [sp, #offset*scale] in restoreCalleeSavedRegisters()
2912 for (const RegPairInfo &RPI : reverse(RegPairs)) in restoreCalleeSavedRegisters() local
2913 if (RPI.isScalable()) in restoreCalleeSavedRegisters()
2914 EmitMI(RPI); in restoreCalleeSavedRegisters()
2919 for (auto &RPI : RegPairs) { in restoreCalleeSavedRegisters() local
2920 MIB.addReg(RPI.Reg1, RegState::Define); in restoreCalleeSavedRegisters()
2921 MIB.addReg(RPI.Reg2, RegState::Define); in restoreCalleeSavedRegisters()
2928 for (const RegPairInfo &RPI : reverse(RegPairs)) { in restoreCalleeSavedRegisters() local
2929 if (RPI.isScalable()) in restoreCalleeSavedRegisters()
2931 MachineBasicBlock::iterator It = EmitMI(RPI); in restoreCalleeSavedRegisters()
2938 for (const RegPairInfo &RPI : RegPairs) { in restoreCalleeSavedRegisters() local
2939 if (RPI.isScalable()) in restoreCalleeSavedRegisters()
2941 (void)EmitMI(RPI); in restoreCalleeSavedRegisters()