Lines Matching refs:MF
118 bool AArch64FrameLowering::canUseRedZone(const MachineFunction &MF) const { in canUseRedZone()
123 if (MF.getFunction()->hasFnAttribute(Attribute::NoRedZone)) in canUseRedZone()
126 const MachineFrameInfo *MFI = MF.getFrameInfo(); in canUseRedZone()
127 const AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in canUseRedZone()
133 if (MFI->hasCalls() || hasFP(MF) || NumBytes > 128) in canUseRedZone()
140 bool AArch64FrameLowering::hasFP(const MachineFunction &MF) const { in hasFP()
141 const MachineFrameInfo *MFI = MF.getFrameInfo(); in hasFP()
142 const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo(); in hasFP()
145 MFI->hasPatchPoint() || RegInfo->needsStackRealignment(MF)); in hasFP()
154 AArch64FrameLowering::hasReservedCallFrame(const MachineFunction &MF) const { in hasReservedCallFrame()
155 return !MF.getFrameInfo()->hasVarSizedObjects(); in hasReservedCallFrame()
159 MachineFunction &MF, MachineBasicBlock &MBB, in eliminateCallFramePseudoInstr() argument
162 static_cast<const AArch64InstrInfo *>(MF.getSubtarget().getInstrInfo()); in eliminateCallFramePseudoInstr()
168 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in eliminateCallFramePseudoInstr()
169 if (!TFI->hasReservedCallFrame(MF)) { in eliminateCallFramePseudoInstr()
207 MachineFunction &MF = *MBB.getParent(); in emitCalleeSavedFrameMoves() local
208 MachineFrameInfo *MFI = MF.getFrameInfo(); in emitCalleeSavedFrameMoves()
209 MachineModuleInfo &MMI = MF.getMMI(); in emitCalleeSavedFrameMoves()
211 const TargetInstrInfo *TII = MF.getSubtarget().getInstrInfo(); in emitCalleeSavedFrameMoves()
219 const DataLayout &TD = MF.getDataLayout(); in emitCalleeSavedFrameMoves()
220 bool HasFP = hasFP(MF); in emitCalleeSavedFrameMoves()
278 void AArch64FrameLowering::emitPrologue(MachineFunction &MF, in emitPrologue() argument
281 const MachineFrameInfo *MFI = MF.getFrameInfo(); in emitPrologue()
282 const Function *Fn = MF.getFunction(); in emitPrologue()
283 const AArch64Subtarget &Subtarget = MF.getSubtarget<AArch64Subtarget>(); in emitPrologue()
286 MachineModuleInfo &MMI = MF.getMMI(); in emitPrologue()
287 AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in emitPrologue()
289 bool HasFP = hasFP(MF); in emitPrologue()
297 if (MF.getFunction()->getCallingConv() == CallingConv::GHC) in emitPrologue()
312 if (NumBytes && !canUseRedZone(MF)) { in emitPrologue()
355 const bool NeedsRealignment = RegInfo->needsStackRealignment(MF); in emitPrologue()
363 if (NumBytes && !canUseRedZone(MF)) in emitPrologue()
399 if (RegInfo->hasBasePointer(MF)) { in emitPrologue()
405 const DataLayout &TD = MF.getDataLayout(); in emitPrologue()
407 unsigned FramePtr = RegInfo->getFrameRegister(MF); in emitPrologue()
538 void AArch64FrameLowering::emitEpilogue(MachineFunction &MF, in emitEpilogue() argument
541 MachineFrameInfo *MFI = MF.getFrameInfo(); in emitEpilogue()
542 const AArch64Subtarget &Subtarget = MF.getSubtarget<AArch64Subtarget>(); in emitEpilogue()
554 const AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in emitEpilogue()
558 if (MF.getFunction()->getCallingConv() == CallingConv::GHC) in emitEpilogue()
610 const MCPhysReg *CSRegs = RegInfo->getCalleeSavedRegs(&MF); in emitEpilogue()
624 if (!hasFP(MF)) { in emitEpilogue()
627 if (!canUseRedZone(MF)) in emitEpilogue()
646 int AArch64FrameLowering::getFrameIndexReference(const MachineFunction &MF, in getFrameIndexReference() argument
649 return resolveFrameIndexReference(MF, FI, FrameReg); in getFrameIndexReference()
652 int AArch64FrameLowering::resolveFrameIndexReference(const MachineFunction &MF, in resolveFrameIndexReference() argument
655 const MachineFrameInfo *MFI = MF.getFrameInfo(); in resolveFrameIndexReference()
657 MF.getSubtarget().getRegisterInfo()); in resolveFrameIndexReference()
658 const AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in resolveFrameIndexReference()
674 UseFP = hasFP(MF); in resolveFrameIndexReference()
675 } else if (hasFP(MF) && !RegInfo->hasBasePointer(MF) && in resolveFrameIndexReference()
676 !RegInfo->needsStackRealignment(MF)) { in resolveFrameIndexReference()
692 assert((isFixed || !RegInfo->needsStackRealignment(MF) || !UseFP) && in resolveFrameIndexReference()
697 FrameReg = RegInfo->getFrameRegister(MF); in resolveFrameIndexReference()
702 if (RegInfo->hasBasePointer(MF)) in resolveFrameIndexReference()
709 if (canUseRedZone(MF)) in resolveFrameIndexReference()
716 static unsigned getPrologueDeath(MachineFunction &MF, unsigned Reg) { in getPrologueDeath() argument
721 bool LRLiveIn = MF.getRegInfo().isLiveIn(AArch64::LR); in getPrologueDeath()
722 bool LRKill = !(LRLiveIn && MF.getFrameInfo()->isReturnAddressTaken()); in getPrologueDeath()
730 MachineFunction &MF = *MBB.getParent(); in spillCalleeSavedRegisters() local
731 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in spillCalleeSavedRegisters()
792 MIB.addReg(Reg2, getPrologueDeath(MF, Reg2)) in spillCalleeSavedRegisters()
793 .addReg(Reg1, getPrologueDeath(MF, Reg1)) in spillCalleeSavedRegisters()
805 MachineFunction &MF = *MBB.getParent(); in restoreCalleeSavedRegisters() local
806 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in restoreCalleeSavedRegisters()
871 void AArch64FrameLowering::determineCalleeSaves(MachineFunction &MF, in determineCalleeSaves() argument
876 if (MF.getFunction()->getCallingConv() == CallingConv::GHC) in determineCalleeSaves()
879 TargetFrameLowering::determineCalleeSaves(MF, SavedRegs, RS); in determineCalleeSaves()
881 MF.getSubtarget().getRegisterInfo()); in determineCalleeSaves()
882 AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in determineCalleeSaves()
887 if (hasFP(MF)) { in determineCalleeSaves()
894 if (RegInfo->hasBasePointer(MF)) in determineCalleeSaves()
897 if (RegInfo->needsStackRealignment(MF) && !RegInfo->hasBasePointer(MF)) in determineCalleeSaves()
906 const MCPhysReg *CSRegs = RegInfo->getCalleeSavedRegs(&MF); in determineCalleeSaves()
958 if (Reg != AArch64::NoRegister && !RegInfo->isReservedReg(MF, Reg)) in determineCalleeSaves()
972 MachineFrameInfo *MFI = MF.getFrameInfo(); in determineCalleeSaves()
974 MFI->estimateStackSize(MF) + 8 * (NumGPRSpilled + NumFPRSpilled); in determineCalleeSaves()
977 if (BigStack || !CanEliminateFrame || RegInfo->cannotEliminateFrame(MF)) in determineCalleeSaves()