Lines Matching defs:MF

34 bool LoongArchFrameLowering::hasFP(const MachineFunction &MF) const {
35 const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
37 const MachineFrameInfo &MFI = MF.getFrameInfo();
38 return MF.getTarget().Options.DisableFramePointerElim(MF) ||
39 RegInfo->hasStackRealignment(MF) || MFI.hasVarSizedObjects() ||
43 bool LoongArchFrameLowering::hasBP(const MachineFunction &MF) const {
44 const MachineFrameInfo &MFI = MF.getFrameInfo();
47 return MFI.hasVarSizedObjects() && TRI->hasStackRealignment(MF);
109 void LoongArchFrameLowering::determineFrameLayout(MachineFunction &MF) const {
110 MachineFrameInfo &MFI = MF.getFrameInfo();
123 const MachineFunction &MF) {
125 for (auto &MBB : MF)
131 static bool needScavSlotForCFR(MachineFunction &MF) {
132 if (!MF.getSubtarget<LoongArchSubtarget>().hasBasicF())
134 for (auto &MBB : MF)
142 MachineFunction &MF, RegScavenger *RS) const {
147 MF.getInfo<LoongArchMachineFunctionInfo>();
148 MachineFrameInfo &MFI = MF.getFrameInfo();
154 bool IsLargeFunction = !isInt<27>(estimateFunctionSizeInBytes(TII, MF));
161 if (!isInt<11>(MFI.estimateStackSize(MF)))
165 if (needScavSlotForCFR(MF))
180 void LoongArchFrameLowering::emitPrologue(MachineFunction &MF,
182 MachineFrameInfo &MFI = MF.getFrameInfo();
183 auto *LoongArchFI = MF.getInfo<LoongArchMachineFunctionInfo>();
197 if (MF.getFunction().getCallingConv() == CallingConv::GHC)
200 determineFrameLayout(MF);
210 uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount(MF);
219 MF.addFrameInst(MCCFIInstruction::cfiDefCfaOffset(nullptr, StackSize));
236 unsigned CFIIndex = MF.addFrameInst(MCCFIInstruction::createOffset(
244 if (hasFP(MF)) {
250 unsigned CFIIndex = MF.addFrameInst(
266 if (!hasFP(MF)) {
270 unsigned CFIIndex = MF.addFrameInst(
278 if (hasFP(MF)) {
280 if (RI->hasStackRealignment(MF)) {
294 if (hasBP(MF)) {
306 void LoongArchFrameLowering::emitEpilogue(MachineFunction &MF,
309 MachineFrameInfo &MFI = MF.getFrameInfo();
310 auto *LoongArchFI = MF.getInfo<LoongArchMachineFunctionInfo>();
314 if (MF.getFunction().getCallingConv() == CallingConv::GHC)
329 if (RI->hasStackRealignment(MF) || MFI.hasVarSizedObjects()) {
330 assert(hasFP(MF) && "frame pointer should not have been eliminated");
336 uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount(MF);
360 const MachineFunction &MF) const {
361 const MachineFrameInfo &MFI = MF.getFrameInfo();
377 void LoongArchFrameLowering::determineCalleeSaves(MachineFunction &MF,
380 TargetFrameLowering::determineCalleeSaves(MF, SavedRegs, RS);
383 if (hasFP(MF)) {
388 if (hasBP(MF))
396 const MachineFunction &MF) const {
397 return !MF.getFrameInfo().hasVarSizedObjects();
403 MachineFunction &MF, MachineBasicBlock &MBB,
408 if (!hasReservedCallFrame(MF)) {
436 MachineFunction *MF = MBB.getParent();
437 const TargetInstrInfo &TII = *MF->getSubtarget().getInstrInfo();
445 !(Reg == LoongArch::R1 && MF->getFrameInfo().isReturnAddressTaken());
455 const MachineFunction &MF, int FI, Register &FrameReg) const {
456 const MachineFrameInfo &MFI = MF.getFrameInfo();
457 const TargetRegisterInfo *RI = MF.getSubtarget().getRegisterInfo();
458 auto *LoongArchFI = MF.getInfo<LoongArchMachineFunctionInfo>();
460 uint64_t FirstSPAdjustAmount = getFirstSPAdjustAmount(MF);
483 } else if (RI->hasStackRealignment(MF) && !MFI.isFixedObjectIndex(FI)) {
487 FrameReg = hasBP(MF) ? LoongArchABI::getBPReg() : LoongArch::R3;
490 FrameReg = RI->getFrameRegister(MF);
491 if (hasFP(MF))
501 const MachineFunction &MF) const {
503 if (MF.getFunction().hasOptNone())