13 #ifndef POWERPC_FRAMEINFO_H
14 #define POWERPC_FRAMEINFO_H
31 (sti.hasQPX() || sti.isBGQ()) ? 32 : 16, 0),
37 bool UseEstimate =
false)
const;
56 const std::vector<CalleeSavedInfo> &CSI,
65 const std::vector<CalleeSavedInfo> &CSI,
77 return isPPC64 ? 16 : 8;
79 return isPPC64 ? 16 : 4;
91 return isPPC64 ? -8U : -4U;
94 return isPPC64 ? -8U : -4U;
101 return isPPC64 ? -16U : -8U;
104 return isPPC64 ? -16U : -8U;
110 if (isDarwinABI || isPPC64)
111 return 6 * (isPPC64 ? 8 : 4);
126 if (isDarwinABI || isPPC64)
127 return 8 * (isPPC64 ? 8 : 4);
148 static const SpillSlot darwin64Offsets = {PPC::X31, -8};
149 return &darwin64Offsets;
151 static const SpillSlot darwinOffsets = {PPC::R31, -4};
152 return &darwinOffsets;
void replaceFPWithRealFP(MachineFunction &MF) const
void eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const
bool targetHandlesStackFrameRounding() const
void processFunctionBeforeFrameFinalized(MachineFunction &MF, RegScavenger *RS=NULL) const
PPCFrameLowering(const PPCSubtarget &sti)
size_t array_lengthof(T(&)[N])
Find the length of an array.
static unsigned getLinkageSize(bool isPPC64, bool isDarwinABI)
void addScavengingSpillSlot(MachineFunction &MF, RegScavenger *RS) const
static unsigned getBasePointerSaveOffset(bool isPPC64, bool isDarwinABI)
static unsigned getMinCallFrameSize(bool isPPC64, bool isDarwinABI)
static unsigned getFramePointerSaveOffset(bool isPPC64, bool isDarwinABI)
unsigned determineFrameLayout(MachineFunction &MF, bool UpdateMF=true, bool UseEstimate=false) const
bool needsFP(const MachineFunction &MF) const
bool hasFP(const MachineFunction &MF) const
const SpillSlot * getCalleeSavedSpillSlots(unsigned &NumEntries) const
void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const
bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const std::vector< CalleeSavedInfo > &CSI, const TargetRegisterInfo *TRI) const
void emitPrologue(MachineFunction &MF) const
void processFunctionBeforeCalleeSavedScan(MachineFunction &MF, RegScavenger *RS=NULL) const
bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const std::vector< CalleeSavedInfo > &CSI, const TargetRegisterInfo *TRI) const
static unsigned getMinCallArgumentsSize(bool isPPC64, bool isDarwinABI)
static unsigned getReturnSaveOffset(bool isPPC64, bool isDarwinABI)