15 #ifndef LLVM_AARCH64_FRAMEINFO_H
16 #define LLVM_AARCH64_FRAMEINFO_H
22 class AArch64Subtarget;
30 struct LoadStoreMethod {
37 unsigned SingleOpcode;
56 uint64_t &Residual)
const;
59 unsigned &FrameReg,
int SPAdj,
60 bool IsCalleeSaveOp)
const;
67 const std::vector<CalleeSavedInfo> &CSI,
71 const std::vector<CalleeSavedInfo> &CSI,
91 const std::vector<CalleeSavedInfo> &CSI,
93 const LoadStoreMethod PossibleClasses[],
94 unsigned NumClasses)
const;
virtual bool hasReservedCallFrame(const MachineFunction &MF) const
On AA.
virtual void emitPrologue(MachineFunction &MF) const
virtual bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const std::vector< CalleeSavedInfo > &CSI, const TargetRegisterInfo *TRI) const
void emitFrameMemOps(bool isStore, MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const std::vector< CalleeSavedInfo > &CSI, const TargetRegisterInfo *TRI, const LoadStoreMethod PossibleClasses[], unsigned NumClasses) const
void splitSPAdjustments(uint64_t Total, uint64_t &Initial, uint64_t &Residual) const
virtual void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const
AArch64FrameLowering(const AArch64Subtarget &sti)
bool determinePrologueDeath(MachineBasicBlock &MBB, unsigned Reg) const
virtual bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const std::vector< CalleeSavedInfo > &CSI, const TargetRegisterInfo *TRI) const
void eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator MI) const
int64_t resolveFrameIndexReference(MachineFunction &MF, int FrameIndex, unsigned &FrameReg, int SPAdj, bool IsCalleeSaveOp) const
virtual bool useFPForAddressing(const MachineFunction &MF) const
virtual void processFunctionBeforeCalleeSavedScan(MachineFunction &MF, RegScavenger *RS) const
virtual bool hasFP(const MachineFunction &MF) const
const AArch64Subtarget & STI