LLVM 22.0.0git
llvm::AArch64EpilogueEmitter Class Referencefinal

A helper class for emitting the epilogue. More...

#include "Target/AArch64/AArch64PrologueEpilogue.h"

Inheritance diagram for llvm::AArch64EpilogueEmitter:
[legend]

Public Member Functions

 AArch64EpilogueEmitter (MachineFunction &MF, MachineBasicBlock &MBB, const AArch64FrameLowering &AFL)
void emitEpilogue ()
 Emit the epilogue.
 ~AArch64EpilogueEmitter ()
Public Member Functions inherited from llvm::AArch64PrologueEpilogueCommon
 AArch64PrologueEpilogueCommon (MachineFunction &MF, MachineBasicBlock &MBB, const AArch64FrameLowering &AFL)

Additional Inherited Members

Public Types inherited from llvm::AArch64PrologueEpilogueCommon
enum class  SVEStackLayout { Default , Split , CalleeSavesAboveFrameRecord }
Protected Member Functions inherited from llvm::AArch64PrologueEpilogueCommon
bool requiresGetVGCall () const
bool isVGInstruction (MachineBasicBlock::iterator MBBI, const TargetLowering &TLI) const
MachineBasicBlock::iterator convertCalleeSaveRestoreToSPPrePostIncDec (MachineBasicBlock::iterator MBBI, const DebugLoc &DL, int CSStackSizeInc, bool EmitCFI, MachineInstr::MIFlag FrameFlag=MachineInstr::FrameSetup, int CFAOffset=0) const
void fixupCalleeSaveRestoreStackOffset (MachineInstr &MI, uint64_t LocalStackSize) const
bool shouldCombineCSRLocalStackBump (uint64_t StackBumpBytes) const
SVEFrameSizes getSVEStackFrameSizes () const
SVEStackAllocations getSVEStackAllocations (SVEFrameSizes const &)
Protected Attributes inherited from llvm::AArch64PrologueEpilogueCommon
MachineFunctionMF
MachineBasicBlockMBB
const MachineFrameInfoMFI
const AArch64SubtargetSubtarget
const AArch64FrameLoweringAFL
const AArch64RegisterInfoRegInfo
bool HasFP = false
bool EmitCFI = false
bool IsFunclet = false
bool NeedsWinCFI = false
bool HomPrologEpilog = false
SVEStackLayout SVELayout = SVEStackLayout::Default
bool HasWinCFI = false
const TargetInstrInfoTII = nullptr
AArch64FunctionInfoAFI = nullptr

Detailed Description

A helper class for emitting the epilogue.

Substantial new functionality should be factored into a new method. Where possible "emit*" methods should be const, and any flags that change how the epilogue is emitted should be set in the constructor.

Definition at line 170 of file AArch64PrologueEpilogue.h.

Constructor & Destructor Documentation

◆ AArch64EpilogueEmitter()

◆ ~AArch64EpilogueEmitter()

llvm::AArch64EpilogueEmitter::~AArch64EpilogueEmitter ( )
inline

Definition at line 178 of file AArch64PrologueEpilogue.h.

Member Function Documentation

◆ emitEpilogue()

void llvm::AArch64EpilogueEmitter::emitEpilogue ( )

Emit the epilogue.

Definition at line 1321 of file AArch64PrologueEpilogue.cpp.

References llvm::AArch64PrologueEpilogueCommon::AFI, llvm::AArch64PrologueEpilogueCommon::AFL, llvm::SVEStackAllocations::AfterPPRs, llvm::SVEStackAllocations::AfterZPRs, assert(), llvm::SVEStackAllocations::BeforePPRs, llvm::CFIInstBuilder::buildDefCFA(), llvm::BuildMI(), llvm::AArch64PrologueEpilogueCommon::CalleeSavesAboveFrameRecord, llvm::AArch64PrologueEpilogueCommon::convertCalleeSaveRestoreToSPPrePostIncDec(), llvm::AArch64PrologueEpilogueCommon::EmitCFI, llvm::emitFrameOffset(), llvm::AArch64PrologueEpilogueCommon::fixupCalleeSaveRestoreStackOffset(), llvm::MachineInstr::FrameDestroy, llvm::StackOffset::getFixed(), llvm::StackOffset::getFixed(), llvm::AArch64PrologueEpilogueCommon::getSVEStackAllocations(), llvm::AArch64PrologueEpilogueCommon::getSVEStackFrameSizes(), llvm::CallingConv::GHC, llvm::AArch64PrologueEpilogueCommon::HasFP, llvm::AArch64PrologueEpilogueCommon::HasWinCFI, llvm::AArch64PrologueEpilogueCommon::HomPrologEpilog, llvm::AArch64PrologueEpilogueCommon::IsFunclet, llvm::isFuncletReturnInstr(), llvm::isPartOfSVECalleeSaves(), llvm::AArch64PrologueEpilogueCommon::MBB, llvm::AArch64PrologueEpilogueCommon::MF, llvm::AArch64PrologueEpilogueCommon::MFI, llvm::AArch64PrologueEpilogueCommon::NeedsWinCFI, llvm::partitionSVECS(), llvm::MachineInstrBuilder::setMIFlag(), llvm::AArch64PrologueEpilogueCommon::Split, llvm::AArch64PrologueEpilogueCommon::Subtarget, llvm::AArch64PrologueEpilogueCommon::SVELayout, llvm::AArch64PrologueEpilogueCommon::TII, and llvm::SVEStackAllocations::totalSize().

Referenced by llvm::AArch64FrameLowering::emitEpilogue().


The documentation for this class was generated from the following files: