16#ifndef LLVM_LIB_TARGET_AARCH64_AARCH64PROLOGUEEPILOGUE_H
17#define LLVM_LIB_TARGET_AARCH64_AARCH64PROLOGUEEPILOGUE_H
65 int CFAOffset = 0)
const;
116 verifyPrologueClobbers();
124 bool FollowupAllocs);
132 void emitEmptyStackFramePrologue(int64_t NumBytes,
140 unsigned FixedObject)
const;
144 int64_t RealignmentPadding)
const;
149 void determineLocalsStackSize(
uint64_t StackSize,
uint64_t PrologueSaveSize);
157 void collectBlockLiveins();
158 void verifyPrologueClobbers()
const;
163 bool EmitAsyncCFI =
false;
164 bool CombineSPBump =
false;
182 bool shouldCombineCSRLocalStackBump(
uint64_t StackBumpBytes)
const;
198 emitCalleeSavedRestores(
MBBI,
false);
202 emitCalleeSavedRestores(
MBBI,
true);
205 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
SVEFrameSizes getSVEStackFrameSizes() const
bool isVGInstruction(MachineBasicBlock::iterator MBBI, const TargetLowering &TLI) const
AArch64PrologueEpilogueCommon(MachineFunction &MF, MachineBasicBlock &MBB, const AArch64FrameLowering &AFL)
const AArch64RegisterInfo & RegInfo
const AArch64FrameLowering & AFL
@ CalleeSavesAboveFrameRecord
void fixupCalleeSaveRestoreStackOffset(MachineInstr &MI, uint64_t LocalStackSize) const
bool shouldCombineCSRLocalStackBump(uint64_t StackBumpBytes) const
const AArch64Subtarget & Subtarget
SVEStackAllocations getSVEStackAllocations(SVEFrameSizes const &)
const AArch64InstrInfo * TII
bool requiresGetVGCall() const
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.
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.
struct llvm::SVEFrameSizes::@005032024062370221152241042070022264014337265150 PPR
struct llvm::SVEFrameSizes::@005032024062370221152241042070022264014337265150 ZPR
StackOffset CalleeSavesSize
StackOffset totalSize() const