Lines Matching refs:MF
119 bool AArch64FrameLowering::canUseRedZone(const MachineFunction &MF) const { in canUseRedZone()
124 if (MF.getFunction()->hasFnAttribute(Attribute::NoRedZone)) in canUseRedZone()
127 const MachineFrameInfo *MFI = MF.getFrameInfo(); in canUseRedZone()
128 const AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in canUseRedZone()
131 return !(MFI->hasCalls() || hasFP(MF) || NumBytes > 128); in canUseRedZone()
136 bool AArch64FrameLowering::hasFP(const MachineFunction &MF) const { in hasFP()
137 const MachineFrameInfo *MFI = MF.getFrameInfo(); in hasFP()
138 const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo(); in hasFP()
141 MF.getTarget().Options.DisableFramePointerElim(MF)) || in hasFP()
144 RegInfo->needsStackRealignment(MF); in hasFP()
153 AArch64FrameLowering::hasReservedCallFrame(const MachineFunction &MF) const { in hasReservedCallFrame()
154 return !MF.getFrameInfo()->hasVarSizedObjects(); in hasReservedCallFrame()
158 MachineFunction &MF, MachineBasicBlock &MBB, in eliminateCallFramePseudoInstr() argument
161 static_cast<const AArch64InstrInfo *>(MF.getSubtarget().getInstrInfo()); in eliminateCallFramePseudoInstr()
167 const TargetFrameLowering *TFI = MF.getSubtarget().getFrameLowering(); in eliminateCallFramePseudoInstr()
168 if (!TFI->hasReservedCallFrame(MF)) { in eliminateCallFramePseudoInstr()
205 MachineFunction &MF = *MBB.getParent(); in emitCalleeSavedFrameMoves() local
206 MachineFrameInfo *MFI = MF.getFrameInfo(); in emitCalleeSavedFrameMoves()
207 MachineModuleInfo &MMI = MF.getMMI(); in emitCalleeSavedFrameMoves()
209 const TargetInstrInfo *TII = MF.getSubtarget().getInstrInfo(); in emitCalleeSavedFrameMoves()
242 MachineFunction *MF = MBB->getParent(); in findScratchNonCalleeSaveRegister() local
245 if (&MF->front() == MBB) in findScratchNonCalleeSaveRegister()
248 const TargetRegisterInfo &TRI = *MF->getSubtarget().getRegisterInfo(); in findScratchNonCalleeSaveRegister()
253 const AArch64Subtarget &Subtarget = MF->getSubtarget<AArch64Subtarget>(); in findScratchNonCalleeSaveRegister()
255 const MCPhysReg *CSRegs = RegInfo->getCalleeSavedRegs(MF); in findScratchNonCalleeSaveRegister()
260 const MachineRegisterInfo &MRI = MF->getRegInfo(); in findScratchNonCalleeSaveRegister()
273 const MachineFunction *MF = MBB.getParent(); in canUseAsPrologue() local
275 const AArch64Subtarget &Subtarget = MF->getSubtarget<AArch64Subtarget>(); in canUseAsPrologue()
279 if (!RegInfo->needsStackRealignment(*MF)) in canUseAsPrologue()
287 MachineFunction &MF, unsigned StackBumpBytes) const { in shouldCombineCSRLocalStackBump() argument
288 AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in shouldCombineCSRLocalStackBump()
289 const MachineFrameInfo *MFI = MF.getFrameInfo(); in shouldCombineCSRLocalStackBump()
290 const AArch64Subtarget &Subtarget = MF.getSubtarget<AArch64Subtarget>(); in shouldCombineCSRLocalStackBump()
304 if (RegInfo->needsStackRealignment(MF)) in shouldCombineCSRLocalStackBump()
310 if (canUseRedZone(MF)) in shouldCombineCSRLocalStackBump()
407 void AArch64FrameLowering::emitPrologue(MachineFunction &MF, in emitPrologue() argument
410 const MachineFrameInfo *MFI = MF.getFrameInfo(); in emitPrologue()
411 const Function *Fn = MF.getFunction(); in emitPrologue()
412 const AArch64Subtarget &Subtarget = MF.getSubtarget<AArch64Subtarget>(); in emitPrologue()
415 MachineModuleInfo &MMI = MF.getMMI(); in emitPrologue()
416 AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in emitPrologue()
418 bool HasFP = hasFP(MF); in emitPrologue()
426 if (MF.getFunction()->getCallingConv() == CallingConv::GHC) in emitPrologue()
440 if (canUseRedZone(MF)) in emitPrologue()
462 bool CombineSPBump = shouldCombineCSRLocalStackBump(MF, NumBytes); in emitPrologue()
499 const bool NeedsRealignment = RegInfo->needsStackRealignment(MF); in emitPrologue()
508 if (!canUseRedZone(MF)) in emitPrologue()
546 if (RegInfo->hasBasePointer(MF)) { in emitPrologue()
552 const DataLayout &TD = MF.getDataLayout(); in emitPrologue()
554 unsigned FramePtr = RegInfo->getFrameRegister(MF); in emitPrologue()
644 void AArch64FrameLowering::emitEpilogue(MachineFunction &MF, in emitEpilogue() argument
647 MachineFrameInfo *MFI = MF.getFrameInfo(); in emitEpilogue()
648 const AArch64Subtarget &Subtarget = MF.getSubtarget<AArch64Subtarget>(); in emitEpilogue()
659 const AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in emitEpilogue()
663 if (MF.getFunction()->getCallingConv() == CallingConv::GHC) in emitEpilogue()
712 bool CombineSPBump = shouldCombineCSRLocalStackBump(MF, NumBytes); in emitEpilogue()
741 if (!hasFP(MF)) { in emitEpilogue()
742 bool RedZone = canUseRedZone(MF); in emitEpilogue()
784 int AArch64FrameLowering::getFrameIndexReference(const MachineFunction &MF, in getFrameIndexReference() argument
787 return resolveFrameIndexReference(MF, FI, FrameReg); in getFrameIndexReference()
790 int AArch64FrameLowering::resolveFrameIndexReference(const MachineFunction &MF, in resolveFrameIndexReference() argument
793 const MachineFrameInfo *MFI = MF.getFrameInfo(); in resolveFrameIndexReference()
795 MF.getSubtarget().getRegisterInfo()); in resolveFrameIndexReference()
796 const AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in resolveFrameIndexReference()
812 UseFP = hasFP(MF); in resolveFrameIndexReference()
813 } else if (hasFP(MF) && !RegInfo->hasBasePointer(MF) && in resolveFrameIndexReference()
814 !RegInfo->needsStackRealignment(MF)) { in resolveFrameIndexReference()
830 assert((isFixed || !RegInfo->needsStackRealignment(MF) || !UseFP) && in resolveFrameIndexReference()
835 FrameReg = RegInfo->getFrameRegister(MF); in resolveFrameIndexReference()
840 if (RegInfo->hasBasePointer(MF)) in resolveFrameIndexReference()
847 if (canUseRedZone(MF)) in resolveFrameIndexReference()
854 static unsigned getPrologueDeath(MachineFunction &MF, unsigned Reg) { in getPrologueDeath() argument
860 bool IsLiveIn = MF.getRegInfo().isLiveIn(Reg); in getPrologueDeath()
864 static bool produceCompactUnwindFrame(MachineFunction &MF) { in produceCompactUnwindFrame() argument
865 const AArch64Subtarget &Subtarget = MF.getSubtarget<AArch64Subtarget>(); in produceCompactUnwindFrame()
866 AttributeSet Attrs = MF.getFunction()->getAttributes(); in produceCompactUnwindFrame()
884 MachineFunction &MF, const std::vector<CalleeSavedInfo> &CSI, in computeCalleeSaveRegisterPairs() argument
890 AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in computeCalleeSaveRegisterPairs()
891 MachineFrameInfo *MFI = MF.getFrameInfo(); in computeCalleeSaveRegisterPairs()
892 CallingConv::ID CC = MF.getFunction()->getCallingConv(); in computeCalleeSaveRegisterPairs()
897 assert((!produceCompactUnwindFrame(MF) || in computeCalleeSaveRegisterPairs()
931 assert((!produceCompactUnwindFrame(MF) || in computeCalleeSaveRegisterPairs()
964 MachineFunction &MF = *MBB.getParent(); in spillCalleeSavedRegisters() local
965 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in spillCalleeSavedRegisters()
969 computeCalleeSaveRegisterPairs(MF, CSI, TRI, RegPairs); in spillCalleeSavedRegisters()
1004 MIB.addReg(Reg2, getPrologueDeath(MF, Reg2)); in spillCalleeSavedRegisters()
1005 MIB.addMemOperand(MF.getMachineMemOperand( in spillCalleeSavedRegisters()
1006 MachinePointerInfo::getFixedStack(MF, RPI.FrameIdx + 1), in spillCalleeSavedRegisters()
1009 MIB.addReg(Reg1, getPrologueDeath(MF, Reg1)) in spillCalleeSavedRegisters()
1013 MIB.addMemOperand(MF.getMachineMemOperand( in spillCalleeSavedRegisters()
1014 MachinePointerInfo::getFixedStack(MF, RPI.FrameIdx), in spillCalleeSavedRegisters()
1024 MachineFunction &MF = *MBB.getParent(); in restoreCalleeSavedRegisters() local
1025 const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo(); in restoreCalleeSavedRegisters()
1032 computeCalleeSaveRegisterPairs(MF, CSI, TRI, RegPairs); in restoreCalleeSavedRegisters()
1064 MIB.addMemOperand(MF.getMachineMemOperand( in restoreCalleeSavedRegisters()
1065 MachinePointerInfo::getFixedStack(MF, RPI.FrameIdx + 1), in restoreCalleeSavedRegisters()
1072 MIB.addMemOperand(MF.getMachineMemOperand( in restoreCalleeSavedRegisters()
1073 MachinePointerInfo::getFixedStack(MF, RPI.FrameIdx), in restoreCalleeSavedRegisters()
1079 void AArch64FrameLowering::determineCalleeSaves(MachineFunction &MF, in determineCalleeSaves() argument
1084 if (MF.getFunction()->getCallingConv() == CallingConv::GHC) in determineCalleeSaves()
1087 TargetFrameLowering::determineCalleeSaves(MF, SavedRegs, RS); in determineCalleeSaves()
1089 MF.getSubtarget().getRegisterInfo()); in determineCalleeSaves()
1090 AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in determineCalleeSaves()
1095 if (hasFP(MF)) { in determineCalleeSaves()
1101 if (RegInfo->hasBasePointer(MF)) in determineCalleeSaves()
1105 const MCPhysReg *CSRegs = RegInfo->getCalleeSavedRegs(&MF); in determineCalleeSaves()
1118 !RegInfo->isReservedReg(MF, Reg)) { in determineCalleeSaves()
1128 if (produceCompactUnwindFrame(MF) && !SavedRegs.test(PairedReg)) { in determineCalleeSaves()
1131 !RegInfo->isReservedReg(MF, PairedReg)) in determineCalleeSaves()
1152 MachineFrameInfo *MFI = MF.getFrameInfo(); in determineCalleeSaves()
1153 unsigned CFSize = MFI->estimateStackSize(MF) + 8 * NumRegsSpilled; in determineCalleeSaves()
1156 if (BigStack || !CanEliminateFrame || RegInfo->cannotEliminateFrame(MF)) in determineCalleeSaves()
1173 if (produceCompactUnwindFrame(MF)) in determineCalleeSaves()
1196 const MachineFunction &MF) const { in enableStackSlotScavenging()
1197 const AArch64FunctionInfo *AFI = MF.getInfo<AArch64FunctionInfo>(); in enableStackSlotScavenging()