Lines Matching refs:MF
40 void SparcFrameLowering::emitSPAdjustment(MachineFunction &MF, in emitSPAdjustment() argument
49 *static_cast<const SparcInstrInfo *>(MF.getSubtarget().getInstrInfo()); in emitSPAdjustment()
85 void SparcFrameLowering::emitPrologue(MachineFunction &MF, in emitPrologue() argument
87 SparcMachineFunctionInfo *FuncInfo = MF.getInfo<SparcMachineFunctionInfo>(); in emitPrologue()
89 assert(&MF.front() == &MBB && "Shrink-wrapping not yet supported"); in emitPrologue()
90 MachineFrameInfo &MFI = MF.getFrameInfo(); in emitPrologue()
91 const SparcSubtarget &Subtarget = MF.getSubtarget<SparcSubtarget>(); in emitPrologue()
100 bool NeedsStackRealignment = RegInfo.shouldRealignStack(MF); in emitPrologue()
102 if (NeedsStackRealignment && !RegInfo.canRealignStack(MF)) in emitPrologue()
103 report_fatal_error("Function \"" + Twine(MF.getName()) + "\" required " in emitPrologue()
135 if (MFI.adjustsStack() && hasReservedCallFrame(MF)) in emitPrologue()
149 emitSPAdjustment(MF, MBB, MBBI, -NumBytes, SAVErr, SAVEri); in emitPrologue()
155 MF.addFrameInst(MCCFIInstruction::createDefCfaRegister(nullptr, regFP)); in emitPrologue()
160 CFIIndex = MF.addFrameInst(MCCFIInstruction::createWindowSave(nullptr)); in emitPrologue()
167 CFIIndex = MF.addFrameInst( in emitPrologue()
199 eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, in eliminateCallFramePseudoInstr() argument
201 if (!hasReservedCallFrame(MF)) { in eliminateCallFramePseudoInstr()
208 emitSPAdjustment(MF, MBB, I, Size, SP::ADDrr, SP::ADDri); in eliminateCallFramePseudoInstr()
214 void SparcFrameLowering::emitEpilogue(MachineFunction &MF, in emitEpilogue() argument
216 SparcMachineFunctionInfo *FuncInfo = MF.getInfo<SparcMachineFunctionInfo>(); in emitEpilogue()
219 *static_cast<const SparcInstrInfo *>(MF.getSubtarget().getInstrInfo()); in emitEpilogue()
229 MachineFrameInfo &MFI = MF.getFrameInfo(); in emitEpilogue()
233 emitSPAdjustment(MF, MBB, MBBI, NumBytes, SP::ADDrr, SP::ADDri); in emitEpilogue()
247 bool SparcFrameLowering::hasReservedCallFrame(const MachineFunction &MF) const { in hasReservedCallFrame()
249 return !MF.getFrameInfo().hasVarSizedObjects(); in hasReservedCallFrame()
255 bool SparcFrameLowering::hasFP(const MachineFunction &MF) const { in hasFP()
256 const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo(); in hasFP()
258 const MachineFrameInfo &MFI = MF.getFrameInfo(); in hasFP()
259 return MF.getTarget().Options.DisableFramePointerElim(MF) || in hasFP()
260 RegInfo->hasStackRealignment(MF) || MFI.hasVarSizedObjects() || in hasFP()
265 SparcFrameLowering::getFrameIndexReference(const MachineFunction &MF, int FI, in getFrameIndexReference() argument
267 const SparcSubtarget &Subtarget = MF.getSubtarget<SparcSubtarget>(); in getFrameIndexReference()
268 const MachineFrameInfo &MFI = MF.getFrameInfo(); in getFrameIndexReference()
270 const SparcMachineFunctionInfo *FuncInfo = MF.getInfo<SparcMachineFunctionInfo>(); in getFrameIndexReference()
287 } else if (RegInfo->hasStackRealignment(MF)) { in getFrameIndexReference()
297 int64_t FrameOffset = MF.getFrameInfo().getObjectOffset(FI) + in getFrameIndexReference()
301 FrameReg = RegInfo->getFrameRegister(MF); in getFrameIndexReference()
305 return StackOffset::getFixed(FrameOffset + MF.getFrameInfo().getStackSize()); in getFrameIndexReference()
323 bool SparcFrameLowering::isLeafProc(MachineFunction &MF) const in isLeafProc()
326 MachineRegisterInfo &MRI = MF.getRegInfo(); in isLeafProc()
327 MachineFrameInfo &MFI = MF.getFrameInfo(); in isLeafProc()
332 || hasFP(MF) // need %fp in isLeafProc()
333 || MF.hasInlineAsm()); // has inline assembly in isLeafProc()
336 void SparcFrameLowering::remapRegsForLeafProc(MachineFunction &MF) const { in remapRegsForLeafProc()
337 MachineRegisterInfo &MRI = MF.getRegInfo(); in remapRegsForLeafProc()
357 for (MachineBasicBlock &MBB : MF) { in remapRegsForLeafProc()
374 MF.verify(0, "After LeafProc Remapping"); in remapRegsForLeafProc()
378 void SparcFrameLowering::determineCalleeSaves(MachineFunction &MF, in determineCalleeSaves() argument
381 TargetFrameLowering::determineCalleeSaves(MF, SavedRegs, RS); in determineCalleeSaves()
382 if (!DisableLeafProc && isLeafProc(MF)) { in determineCalleeSaves()
383 SparcMachineFunctionInfo *MFI = MF.getInfo<SparcMachineFunctionInfo>(); in determineCalleeSaves()
386 remapRegsForLeafProc(MF); in determineCalleeSaves()