| 
    LLVM 22.0.0git
    
   | 
 
#include "Target/AArch64/AArch64PrologueEpilogue.h"
Public Types | |
| enum class | SVEStackLayout { Default , Split , CalleeSavesAboveFrameRecord } | 
Public Member Functions | |
| AArch64PrologueEpilogueCommon (MachineFunction &MF, MachineBasicBlock &MBB, const AArch64FrameLowering &AFL) | |
Protected Member Functions | |
| 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 | |
| MachineFunction & | MF | 
| MachineBasicBlock & | MBB | 
| const MachineFrameInfo & | MFI | 
| const AArch64Subtarget & | Subtarget | 
| const AArch64FrameLowering & | AFL | 
| const AArch64RegisterInfo & | RegInfo | 
| bool | HasFP = false | 
| bool | EmitCFI = false | 
| bool | IsFunclet = false | 
| bool | NeedsWinCFI = false | 
| bool | HomPrologEpilog = false | 
| SVEStackLayout | SVELayout = SVEStackLayout::Default | 
| bool | HasWinCFI = false | 
| const TargetInstrInfo * | TII = nullptr | 
| AArch64FunctionInfo * | AFI = nullptr | 
Definition at line 41 of file AArch64PrologueEpilogue.h.
      
  | 
  strong | 
| Enumerator | |
|---|---|
| Default | |
| Split | |
| CalleeSavesAboveFrameRecord | |
Definition at line 46 of file AArch64PrologueEpilogue.h.
| llvm::AArch64PrologueEpilogueCommon::AArch64PrologueEpilogueCommon | ( | MachineFunction & | MF, | 
| MachineBasicBlock & | MBB, | ||
| const AArch64FrameLowering & | AFL ) | 
Definition at line 87 of file AArch64PrologueEpilogue.cpp.
References AFI, AFL, HasFP, if(), MBB, MF, MFI, NeedsWinCFI, RegInfo, Subtarget, and TII.
Referenced by llvm::AArch64EpilogueEmitter::AArch64EpilogueEmitter(), and llvm::AArch64PrologueEmitter::AArch64PrologueEmitter().
      
  | 
  protected | 
Definition at line 121 of file AArch64PrologueEpilogue.cpp.
References llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), AFL, assert(), llvm::CFIInstBuilder::buildDefCFAOffset(), llvm::BuildMI(), llvm::RegState::Define, DL, EmitCFI, llvm::emitFrameOffset(), llvm::MachineInstr::FrameDestroy, llvm::StackOffset::getFixed(), llvm::TypeSize::getFixed(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), HasWinCFI, isVGInstruction(), llvm_unreachable, MBB, MBBI, MF, NeedsWinCFI, llvm::MachineInstrBuilder::setMemRefs(), llvm::MachineInstrBuilder::setMIFlags(), Subtarget, llvm::Success, and TII.
Referenced by llvm::AArch64EpilogueEmitter::emitEpilogue(), and llvm::AArch64PrologueEmitter::emitPrologue().
      
  | 
  protected | 
Definition at line 265 of file AArch64PrologueEpilogue.cpp.
References assert(), llvm::fixupSEHOpcode(), llvm::MachineOperand::getImm(), HasWinCFI, llvm_unreachable, MBBI, MI, NeedsWinCFI, Opc, and llvm::MachineOperand::setImm().
Referenced by llvm::AArch64EpilogueEmitter::emitEpilogue(), and llvm::AArch64PrologueEmitter::emitPrologue().
      
  | 
  protected | 
Definition at line 373 of file AArch64PrologueEpilogue.cpp.
References Split, llvm::SVE, and SVELayout.
Referenced by llvm::AArch64EpilogueEmitter::emitEpilogue(), and llvm::AArch64PrologueEmitter::emitPrologue().
      
  | 
  protected | 
Definition at line 358 of file AArch64PrologueEpilogue.cpp.
References AFI, AFL, llvm::StackOffset::getScalable(), MF, Split, and SVELayout.
Referenced by llvm::AArch64EpilogueEmitter::emitEpilogue(), and llvm::AArch64PrologueEmitter::emitPrologue().
      
  | 
  protected | 
Definition at line 36 of file AArch64PrologueEpilogue.cpp.
References llvm::matchLibcall(), MBBI, Opc, and requiresGetVGCall().
Referenced by convertCalleeSaveRestoreToSPPrePostIncDec(), and llvm::AArch64PrologueEmitter::emitPrologue().
      
  | 
  protected | 
Definition at line 31 of file AArch64PrologueEpilogue.cpp.
Referenced by isVGInstruction().
      
  | 
  protected | 
Definition at line 97 of file AArch64PrologueEpilogue.h.
Referenced by llvm::AArch64EpilogueEmitter::AArch64EpilogueEmitter(), llvm::AArch64PrologueEmitter::AArch64PrologueEmitter(), AArch64PrologueEpilogueCommon(), llvm::AArch64EpilogueEmitter::emitEpilogue(), llvm::AArch64PrologueEmitter::emitPrologue(), getSVEStackFrameSizes(), requiresGetVGCall(), and shouldCombineCSRLocalStackBump().
      
  | 
  protected | 
Definition at line 81 of file AArch64PrologueEpilogue.h.
Referenced by llvm::AArch64EpilogueEmitter::AArch64EpilogueEmitter(), llvm::AArch64PrologueEmitter::AArch64PrologueEmitter(), AArch64PrologueEpilogueCommon(), convertCalleeSaveRestoreToSPPrePostIncDec(), llvm::AArch64EpilogueEmitter::emitEpilogue(), llvm::AArch64PrologueEmitter::emitPrologue(), getSVEStackFrameSizes(), and shouldCombineCSRLocalStackBump().
      
  | 
  protected | 
Definition at line 87 of file AArch64PrologueEpilogue.h.
Referenced by llvm::AArch64EpilogueEmitter::AArch64EpilogueEmitter(), llvm::AArch64PrologueEmitter::AArch64PrologueEmitter(), convertCalleeSaveRestoreToSPPrePostIncDec(), llvm::AArch64EpilogueEmitter::emitEpilogue(), and llvm::AArch64PrologueEmitter::emitPrologue().
      
  | 
  protected | 
Definition at line 86 of file AArch64PrologueEpilogue.h.
Referenced by AArch64PrologueEpilogueCommon(), llvm::AArch64EpilogueEmitter::emitEpilogue(), and llvm::AArch64PrologueEmitter::emitPrologue().
      
  | 
  mutableprotected | 
Definition at line 94 of file AArch64PrologueEpilogue.h.
Referenced by convertCalleeSaveRestoreToSPPrePostIncDec(), llvm::AArch64EpilogueEmitter::emitEpilogue(), llvm::AArch64PrologueEmitter::emitPrologue(), fixupCalleeSaveRestoreStackOffset(), and llvm::AArch64PrologueEmitter::~AArch64PrologueEmitter().
      
  | 
  protected | 
      
  | 
  protected | 
Definition at line 88 of file AArch64PrologueEpilogue.h.
Referenced by llvm::AArch64PrologueEmitter::AArch64PrologueEmitter(), llvm::AArch64EpilogueEmitter::emitEpilogue(), and llvm::AArch64PrologueEmitter::emitPrologue().
      
  | 
  protected | 
Definition at line 77 of file AArch64PrologueEpilogue.h.
Referenced by llvm::AArch64EpilogueEmitter::AArch64EpilogueEmitter(), llvm::AArch64PrologueEmitter::AArch64PrologueEmitter(), AArch64PrologueEpilogueCommon(), convertCalleeSaveRestoreToSPPrePostIncDec(), llvm::AArch64EpilogueEmitter::emitEpilogue(), and llvm::AArch64PrologueEmitter::emitPrologue().
      
  | 
  protected | 
Definition at line 76 of file AArch64PrologueEpilogue.h.
Referenced by llvm::AArch64EpilogueEmitter::AArch64EpilogueEmitter(), llvm::AArch64PrologueEmitter::AArch64PrologueEmitter(), AArch64PrologueEpilogueCommon(), convertCalleeSaveRestoreToSPPrePostIncDec(), llvm::AArch64EpilogueEmitter::emitEpilogue(), llvm::AArch64PrologueEmitter::emitPrologue(), getSVEStackFrameSizes(), requiresGetVGCall(), shouldCombineCSRLocalStackBump(), and llvm::AArch64PrologueEmitter::~AArch64PrologueEmitter().
      
  | 
  protected | 
Definition at line 79 of file AArch64PrologueEpilogue.h.
Referenced by AArch64PrologueEpilogueCommon(), llvm::AArch64EpilogueEmitter::emitEpilogue(), llvm::AArch64PrologueEmitter::emitPrologue(), and shouldCombineCSRLocalStackBump().
      
  | 
  protected | 
Definition at line 89 of file AArch64PrologueEpilogue.h.
Referenced by AArch64PrologueEpilogueCommon(), convertCalleeSaveRestoreToSPPrePostIncDec(), llvm::AArch64EpilogueEmitter::emitEpilogue(), llvm::AArch64PrologueEmitter::emitPrologue(), and fixupCalleeSaveRestoreStackOffset().
      
  | 
  protected | 
Definition at line 82 of file AArch64PrologueEpilogue.h.
Referenced by AArch64PrologueEpilogueCommon(), llvm::AArch64PrologueEmitter::emitPrologue(), and shouldCombineCSRLocalStackBump().
      
  | 
  protected | 
Definition at line 80 of file AArch64PrologueEpilogue.h.
Referenced by AArch64PrologueEpilogueCommon(), convertCalleeSaveRestoreToSPPrePostIncDec(), llvm::AArch64EpilogueEmitter::emitEpilogue(), and llvm::AArch64PrologueEmitter::emitPrologue().
      
  | 
  protected | 
Definition at line 91 of file AArch64PrologueEpilogue.h.
Referenced by llvm::AArch64EpilogueEmitter::emitEpilogue(), llvm::AArch64PrologueEmitter::emitPrologue(), getSVEStackAllocations(), and getSVEStackFrameSizes().
      
  | 
  protected | 
Definition at line 96 of file AArch64PrologueEpilogue.h.
Referenced by AArch64PrologueEpilogueCommon(), convertCalleeSaveRestoreToSPPrePostIncDec(), llvm::AArch64EpilogueEmitter::emitEpilogue(), and llvm::AArch64PrologueEmitter::emitPrologue().