Lines Matching refs:RPI

2287     RegPairInfo RPI;  in computeCalleeSaveRegisterPairs()  local
2288 RPI.Reg1 = CSI[i].getReg(); in computeCalleeSaveRegisterPairs()
2290 if (AArch64::GPR64RegClass.contains(RPI.Reg1)) in computeCalleeSaveRegisterPairs()
2291 RPI.Type = RegPairInfo::GPR; in computeCalleeSaveRegisterPairs()
2292 else if (AArch64::FPR64RegClass.contains(RPI.Reg1)) in computeCalleeSaveRegisterPairs()
2293 RPI.Type = RegPairInfo::FPR64; in computeCalleeSaveRegisterPairs()
2294 else if (AArch64::FPR128RegClass.contains(RPI.Reg1)) in computeCalleeSaveRegisterPairs()
2295 RPI.Type = RegPairInfo::FPR128; in computeCalleeSaveRegisterPairs()
2296 else if (AArch64::ZPRRegClass.contains(RPI.Reg1)) in computeCalleeSaveRegisterPairs()
2297 RPI.Type = RegPairInfo::ZPR; in computeCalleeSaveRegisterPairs()
2298 else if (AArch64::PPRRegClass.contains(RPI.Reg1)) in computeCalleeSaveRegisterPairs()
2299 RPI.Type = RegPairInfo::PPR; in computeCalleeSaveRegisterPairs()
2307 switch (RPI.Type) { in computeCalleeSaveRegisterPairs()
2310 !invalidateRegisterPairing(RPI.Reg1, NextReg, IsWindows, in computeCalleeSaveRegisterPairs()
2312 RPI.Reg2 = NextReg; in computeCalleeSaveRegisterPairs()
2316 !invalidateWindowsRegisterPairing(RPI.Reg1, NextReg, NeedsWinCFI, in computeCalleeSaveRegisterPairs()
2318 RPI.Reg2 = NextReg; in computeCalleeSaveRegisterPairs()
2322 RPI.Reg2 = NextReg; in computeCalleeSaveRegisterPairs()
2332 if ((RPI.Reg1 == AArch64::LR || RPI.Reg2 == AArch64::LR) && in computeCalleeSaveRegisterPairs()
2345 assert((!RPI.isPaired() || in computeCalleeSaveRegisterPairs()
2349 assert((!RPI.isPaired() || !NeedsFrameRecord || RPI.Reg2 != AArch64::FP || in computeCalleeSaveRegisterPairs()
2350 RPI.Reg1 == AArch64::LR) && in computeCalleeSaveRegisterPairs()
2354 assert((!RPI.isPaired() || !NeedsFrameRecord || RPI.Reg1 != AArch64::FP || in computeCalleeSaveRegisterPairs()
2355 RPI.Reg2 == AArch64::LR) && in computeCalleeSaveRegisterPairs()
2362 (RPI.isPaired() && in computeCalleeSaveRegisterPairs()
2363 ((RPI.Reg1 == AArch64::LR && RPI.Reg2 == AArch64::FP) || in computeCalleeSaveRegisterPairs()
2364 RPI.Reg1 + 1 == RPI.Reg2))) && in computeCalleeSaveRegisterPairs()
2367 RPI.FrameIdx = CSI[i].getFrameIdx(); in computeCalleeSaveRegisterPairs()
2369 RPI.isPaired()) // RPI.FrameIdx must be the lower index of the pair in computeCalleeSaveRegisterPairs()
2370 RPI.FrameIdx = CSI[i + RegInc].getFrameIdx(); in computeCalleeSaveRegisterPairs()
2372 int Scale = RPI.getScale(); in computeCalleeSaveRegisterPairs()
2374 int OffsetPre = RPI.isScalable() ? ScalableByteOffset : ByteOffset; in computeCalleeSaveRegisterPairs()
2377 if (RPI.isScalable()) in computeCalleeSaveRegisterPairs()
2380 ByteOffset += StackFillDir * (RPI.isPaired() ? 2 * Scale : Scale); in computeCalleeSaveRegisterPairs()
2385 RPI.Reg2 == AArch64::FP) in computeCalleeSaveRegisterPairs()
2388 assert(!(RPI.isScalable() && RPI.isPaired()) && in computeCalleeSaveRegisterPairs()
2394 !RPI.isScalable() && RPI.Type != RegPairInfo::FPR128 && in computeCalleeSaveRegisterPairs()
2395 !RPI.isPaired() && ByteOffset % 16 != 0) { in computeCalleeSaveRegisterPairs()
2397 assert(MFI.getObjectAlign(RPI.FrameIdx) <= Align(16)); in computeCalleeSaveRegisterPairs()
2401 MFI.setObjectAlignment(RPI.FrameIdx, Align(16)); in computeCalleeSaveRegisterPairs()
2405 int OffsetPost = RPI.isScalable() ? ScalableByteOffset : ByteOffset; in computeCalleeSaveRegisterPairs()
2414 RPI.Reg2 == AArch64::FP) in computeCalleeSaveRegisterPairs()
2416 RPI.Offset = Offset / Scale; in computeCalleeSaveRegisterPairs()
2418 assert(((!RPI.isScalable() && RPI.Offset >= -64 && RPI.Offset <= 63) || in computeCalleeSaveRegisterPairs()
2419 (RPI.isScalable() && RPI.Offset >= -256 && RPI.Offset <= 255)) && in computeCalleeSaveRegisterPairs()
2424 if (NeedsFrameRecord && ((!IsWindows && RPI.Reg1 == AArch64::LR && in computeCalleeSaveRegisterPairs()
2425 RPI.Reg2 == AArch64::FP) || in computeCalleeSaveRegisterPairs()
2426 (IsWindows && RPI.Reg1 == AArch64::FP && in computeCalleeSaveRegisterPairs()
2427 RPI.Reg2 == AArch64::LR))) in computeCalleeSaveRegisterPairs()
2430 RegPairs.push_back(RPI); in computeCalleeSaveRegisterPairs()
2431 if (RPI.isPaired()) in computeCalleeSaveRegisterPairs()
2500 for (auto &RPI : RegPairs) { in spillCalleeSavedRegisters() local
2501 MIB.addReg(RPI.Reg1); in spillCalleeSavedRegisters()
2502 MIB.addReg(RPI.Reg2); in spillCalleeSavedRegisters()
2505 if (!MRI.isReserved(RPI.Reg1)) in spillCalleeSavedRegisters()
2506 MBB.addLiveIn(RPI.Reg1); in spillCalleeSavedRegisters()
2507 if (!MRI.isReserved(RPI.Reg2)) in spillCalleeSavedRegisters()
2508 MBB.addLiveIn(RPI.Reg2); in spillCalleeSavedRegisters()
2514 RegPairInfo RPI = *RPII; in spillCalleeSavedRegisters() local
2515 unsigned Reg1 = RPI.Reg1; in spillCalleeSavedRegisters()
2516 unsigned Reg2 = RPI.Reg2; in spillCalleeSavedRegisters()
2531 switch (RPI.Type) { in spillCalleeSavedRegisters()
2533 StrOpc = RPI.isPaired() ? AArch64::STPXi : AArch64::STRXui; in spillCalleeSavedRegisters()
2538 StrOpc = RPI.isPaired() ? AArch64::STPDi : AArch64::STRDui; in spillCalleeSavedRegisters()
2543 StrOpc = RPI.isPaired() ? AArch64::STPQi : AArch64::STRQui; in spillCalleeSavedRegisters()
2559 if (RPI.isPaired()) dbgs() << ", " << printReg(Reg2, TRI); in spillCalleeSavedRegisters()
2560 dbgs() << ") -> fi#(" << RPI.FrameIdx; in spillCalleeSavedRegisters()
2561 if (RPI.isPaired()) dbgs() << ", " << RPI.FrameIdx + 1; in spillCalleeSavedRegisters()
2569 unsigned FrameIdxReg1 = RPI.FrameIdx; in spillCalleeSavedRegisters()
2570 unsigned FrameIdxReg2 = RPI.FrameIdx + 1; in spillCalleeSavedRegisters()
2571 if (NeedsWinCFI && RPI.isPaired()) { in spillCalleeSavedRegisters()
2578 if (RPI.isPaired()) { in spillCalleeSavedRegisters()
2588 .addImm(RPI.Offset) // [sp, #offset*scale], in spillCalleeSavedRegisters()
2599 if (RPI.Type == RegPairInfo::ZPR || RPI.Type == RegPairInfo::PPR) in spillCalleeSavedRegisters()
2600 MFI.setStackID(RPI.FrameIdx, TargetStackID::ScalableVector); in spillCalleeSavedRegisters()
2622 auto EmitMI = [&](const RegPairInfo &RPI) { in restoreCalleeSavedRegisters() argument
2623 unsigned Reg1 = RPI.Reg1; in restoreCalleeSavedRegisters()
2624 unsigned Reg2 = RPI.Reg2; in restoreCalleeSavedRegisters()
2637 switch (RPI.Type) { in restoreCalleeSavedRegisters()
2639 LdrOpc = RPI.isPaired() ? AArch64::LDPXi : AArch64::LDRXui; in restoreCalleeSavedRegisters()
2644 LdrOpc = RPI.isPaired() ? AArch64::LDPDi : AArch64::LDRDui; in restoreCalleeSavedRegisters()
2649 LdrOpc = RPI.isPaired() ? AArch64::LDPQi : AArch64::LDRQui; in restoreCalleeSavedRegisters()
2665 if (RPI.isPaired()) dbgs() << ", " << printReg(Reg2, TRI); in restoreCalleeSavedRegisters()
2666 dbgs() << ") -> fi#(" << RPI.FrameIdx; in restoreCalleeSavedRegisters()
2667 if (RPI.isPaired()) dbgs() << ", " << RPI.FrameIdx + 1; in restoreCalleeSavedRegisters()
2673 unsigned FrameIdxReg1 = RPI.FrameIdx; in restoreCalleeSavedRegisters()
2674 unsigned FrameIdxReg2 = RPI.FrameIdx + 1; in restoreCalleeSavedRegisters()
2675 if (NeedsWinCFI && RPI.isPaired()) { in restoreCalleeSavedRegisters()
2680 if (RPI.isPaired()) { in restoreCalleeSavedRegisters()
2688 .addImm(RPI.Offset) // [sp, #offset*scale] in restoreCalleeSavedRegisters()
2699 for (const RegPairInfo &RPI : reverse(RegPairs)) in restoreCalleeSavedRegisters() local
2700 if (RPI.isScalable()) in restoreCalleeSavedRegisters()
2701 EmitMI(RPI); in restoreCalleeSavedRegisters()
2704 for (const RegPairInfo &RPI : reverse(RegPairs)) in restoreCalleeSavedRegisters() local
2705 if (!RPI.isScalable()) in restoreCalleeSavedRegisters()
2706 EmitMI(RPI); in restoreCalleeSavedRegisters()
2710 for (auto &RPI : RegPairs) { in restoreCalleeSavedRegisters() local
2711 MIB.addReg(RPI.Reg1, RegState::Define); in restoreCalleeSavedRegisters()
2712 MIB.addReg(RPI.Reg2, RegState::Define); in restoreCalleeSavedRegisters()
2716 for (const RegPairInfo &RPI : RegPairs) in restoreCalleeSavedRegisters() local
2717 if (!RPI.isScalable()) in restoreCalleeSavedRegisters()
2718 EmitMI(RPI); in restoreCalleeSavedRegisters()