16#ifndef LLVM_LIB_TARGET_AARCH64_AARCH64PROLOGUEEPILOGUE_H
17#define LLVM_LIB_TARGET_AARCH64_AARCH64PROLOGUEEPILOGUE_H
47 int CFAOffset = 0)
const;
94 verifyPrologueClobbers();
102 bool FollowupAllocs);
110 void emitEmptyStackFramePrologue(int64_t NumBytes,
118 unsigned FixedObject)
const;
122 int64_t RealignmentPadding)
const;
127 void determineLocalsStackSize(
uint64_t StackSize,
uint64_t PrologueSaveSize);
135 void collectBlockLiveins();
136 void verifyPrologueClobbers()
const;
141 bool EmitAsyncCFI =
false;
142 bool CombineSPBump =
false;
160 bool shouldCombineCSRLocalStackBump(
uint64_t StackBumpBytes)
const;
172 emitCalleeSavedRestores(
MBBI,
false);
176 emitCalleeSavedRestores(
MBBI,
true);
179 void finalizeEpilogue()
const;
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
MachineBasicBlock MachineBasicBlock::iterator MBBI
This file implements the LivePhysRegs utility for tracking liveness of physical registers.
void emitEpilogue()
Emit the epilogue.
~AArch64EpilogueEmitter()
AArch64EpilogueEmitter(MachineFunction &MF, MachineBasicBlock &MBB, const AArch64FrameLowering &AFL)
AArch64FunctionInfo - This class is derived from MachineFunctionInfo and contains private AArch64-spe...
void emitPrologue()
Emit the prologue.
AArch64PrologueEmitter(MachineFunction &MF, MachineBasicBlock &MBB, const AArch64FrameLowering &AFL)
~AArch64PrologueEmitter()
const MachineFrameInfo & MFI
AArch64FunctionInfo * AFI
MachineBasicBlock::iterator convertCalleeSaveRestoreToSPPrePostIncDec(MachineBasicBlock::iterator MBBI, const DebugLoc &DL, int CSStackSizeInc, bool EmitCFI, MachineInstr::MIFlag FrameFlag=MachineInstr::FrameSetup, int CFAOffset=0) const
bool isVGInstruction(MachineBasicBlock::iterator MBBI, const TargetLowering &TLI) const
AArch64PrologueEpilogueCommon(MachineFunction &MF, MachineBasicBlock &MBB, const AArch64FrameLowering &AFL)
const AArch64RegisterInfo & RegInfo
const AArch64FrameLowering & AFL
void fixupCalleeSaveRestoreStackOffset(MachineInstr &MI, uint64_t LocalStackSize) const
bool shouldCombineCSRLocalStackBump(uint64_t StackBumpBytes) const
const AArch64Subtarget & Subtarget
bool requiresGetVGCall() const
const TargetInstrInfo * TII
A set of physical registers with utility functions to track liveness when walking backward/forward th...
MachineInstrBundleIterator< MachineInstr > iterator
The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted.
Representation of each machine instruction.
StackOffset holds a fixed and a scalable offset in bytes.
TargetInstrInfo - Interface to description of machine instruction set.
This class defines information used to lower LLVM code to legal SelectionDAG operators that the targe...
This is an optimization pass for GlobalISel generic memory operations.