LLVM 19.0.0git
Classes | Public Types | Public Member Functions | List of all members
llvm::AArch64FunctionInfo Class Referencefinal

AArch64FunctionInfo - This class is derived from MachineFunctionInfo and contains private AArch64-specific information for each MachineFunction. More...

#include "Target/AArch64/AArch64MachineFunctionInfo.h"

Inheritance diagram for llvm::AArch64FunctionInfo:
Inheritance graph
[legend]

Classes

class  MILOHDirective
 

Public Types

using SetOfInstructions = SmallPtrSet< const MachineInstr *, 16 >
 
using MILOHArgs = MILOHDirective::LOHArgs
 
using MILOHContainer = SmallVector< MILOHDirective, 32 >
 

Public Member Functions

 AArch64FunctionInfo (const Function &F, const AArch64Subtarget *STI)
 
MachineFunctionInfoclone (BumpPtrAllocator &Allocator, MachineFunction &DestMF, const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &Src2DstMBB) const override
 Make a functionally equivalent copy of this MachineFunctionInfo in MF.
 
Register getPStateSMReg () const
 
void setPStateSMReg (Register Reg)
 
bool isSVECC () const
 
void setIsSVECC (bool s)
 
unsigned getLazySaveTPIDR2Obj () const
 
void setLazySaveTPIDR2Obj (unsigned Reg)
 
void initializeBaseYamlFields (const yaml::AArch64FunctionInfo &YamlMFI)
 
unsigned getBytesInStackArgArea () const
 
void setBytesInStackArgArea (unsigned bytes)
 
unsigned getArgumentStackToRestore () const
 
void setArgumentStackToRestore (unsigned bytes)
 
unsigned getTailCallReservedStack () const
 
void setTailCallReservedStack (unsigned bytes)
 
bool hasCalculatedStackSizeSVE () const
 
void setStackSizeSVE (uint64_t S)
 
uint64_t getStackSizeSVE () const
 
bool hasStackFrame () const
 
void setHasStackFrame (bool s)
 
bool isStackRealigned () const
 
void setStackRealigned (bool s)
 
bool hasCalleeSaveStackFreeSpace () const
 
void setCalleeSaveStackHasFreeSpace (bool s)
 
bool isSplitCSR () const
 
void setIsSplitCSR (bool s)
 
void setLocalStackSize (uint64_t Size)
 
uint64_t getLocalStackSize () const
 
void setOutliningStyle (std::string Style)
 
std::optional< std::string > getOutliningStyle () const
 
void setCalleeSavedStackSize (unsigned Size)
 
unsigned getCalleeSavedStackSize (const MachineFrameInfo &MFI) const
 
unsigned getCalleeSavedStackSize () const
 
void setSVECalleeSavedStackSize (unsigned Size)
 
unsigned getSVECalleeSavedStackSize () const
 
void setMinMaxSVECSFrameIndex (int Min, int Max)
 
int getMinSVECSFrameIndex () const
 
int getMaxSVECSFrameIndex () const
 
void incNumLocalDynamicTLSAccesses ()
 
unsigned getNumLocalDynamicTLSAccesses () const
 
std::optional< boolhasRedZone () const
 
void setHasRedZone (bool s)
 
int getVarArgsStackIndex () const
 
void setVarArgsStackIndex (int Index)
 
unsigned getVarArgsStackOffset () const
 
void setVarArgsStackOffset (unsigned Offset)
 
int getVarArgsGPRIndex () const
 
void setVarArgsGPRIndex (int Index)
 
unsigned getVarArgsGPRSize () const
 
void setVarArgsGPRSize (unsigned Size)
 
int getVarArgsFPRIndex () const
 
void setVarArgsFPRIndex (int Index)
 
unsigned getVarArgsFPRSize () const
 
void setVarArgsFPRSize (unsigned Size)
 
unsigned getSRetReturnReg () const
 
void setSRetReturnReg (unsigned Reg)
 
unsigned getJumpTableEntrySize (int Idx) const
 
MCSymbolgetJumpTableEntryPCRelSymbol (int Idx) const
 
void setJumpTableEntryInfo (int Idx, unsigned Size, MCSymbol *PCRelSym)
 
const SetOfInstructionsgetLOHRelated () const
 
const MILOHContainergetLOHContainer () const
 
void addLOHDirective (MCLOHType Kind, MILOHArgs Args)
 Add a LOH directive of this Kind and this Args.
 
SmallVectorImpl< ForwardedRegister > & getForwardedMustTailRegParms ()
 
std::optional< int > getTaggedBasePointerIndex () const
 
void setTaggedBasePointerIndex (int Index)
 
unsigned getTaggedBasePointerOffset () const
 
void setTaggedBasePointerOffset (unsigned Offset)
 
int getCalleeSaveBaseToFrameRecordOffset () const
 
void setCalleeSaveBaseToFrameRecordOffset (int Offset)
 
bool shouldSignReturnAddress (const MachineFunction &MF) const
 
bool shouldSignReturnAddress (bool SpillsLR) const
 
bool needsShadowCallStackPrologueEpilogue (MachineFunction &MF) const
 
bool shouldSignWithBKey () const
 
MCSymbolgetSigningInstrLabel () const
 
void setSigningInstrLabel (MCSymbol *Label)
 
bool isMTETagged () const
 
bool branchTargetEnforcement () const
 
bool branchProtectionPAuthLR () const
 
void setHasSwiftAsyncContext (bool HasContext)
 
bool hasSwiftAsyncContext () const
 
void setSwiftAsyncContextFrameIdx (int FI)
 
int getSwiftAsyncContextFrameIdx () const
 
bool needsDwarfUnwindInfo (const MachineFunction &MF) const
 
bool needsAsyncDwarfUnwindInfo (const MachineFunction &MF) const
 
bool hasStreamingModeChanges () const
 
void setHasStreamingModeChanges (bool HasChanges)
 
bool hasStackProbing () const
 
int64_t getStackProbeSize () const
 
- Public Member Functions inherited from llvm::MachineFunctionInfo
virtual ~MachineFunctionInfo ()
 
virtual MachineFunctionInfoclone (BumpPtrAllocator &Allocator, MachineFunction &DestMF, const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &Src2DstMBB) const
 Make a functionally equivalent copy of this MachineFunctionInfo in MF.
 

Additional Inherited Members

- Static Public Member Functions inherited from llvm::MachineFunctionInfo
template<typename FuncInfoTy , typename SubtargetTy = TargetSubtargetInfo>
static FuncInfoTy * create (BumpPtrAllocator &Allocator, const Function &F, const SubtargetTy *STI)
 Factory function: default behavior is to call new using the supplied allocator.
 
template<typename Ty >
static Ty * create (BumpPtrAllocator &Allocator, const Ty &MFI)
 

Detailed Description

AArch64FunctionInfo - This class is derived from MachineFunctionInfo and contains private AArch64-specific information for each MachineFunction.

Definition at line 40 of file AArch64MachineFunctionInfo.h.

Member Typedef Documentation

◆ MILOHArgs

Definition at line 418 of file AArch64MachineFunctionInfo.h.

◆ MILOHContainer

Definition at line 419 of file AArch64MachineFunctionInfo.h.

◆ SetOfInstructions

Definition at line 395 of file AArch64MachineFunctionInfo.h.

Constructor & Destructor Documentation

◆ AArch64FunctionInfo()

AArch64FunctionInfo::AArch64FunctionInfo ( const Function F,
const AArch64Subtarget STI 
)

Member Function Documentation

◆ addLOHDirective()

void llvm::AArch64FunctionInfo::addLOHDirective ( MCLOHType  Kind,
MILOHArgs  Args 
)
inline

Add a LOH directive of this Kind and this Args.

Definition at line 424 of file AArch64MachineFunctionInfo.h.

References llvm::SmallPtrSetImpl< PtrType >::insert(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by handleADRP().

◆ branchProtectionPAuthLR()

bool llvm::AArch64FunctionInfo::branchProtectionPAuthLR ( ) const
inline

Definition at line 466 of file AArch64MachineFunctionInfo.h.

Referenced by getCallOpcode().

◆ branchTargetEnforcement()

bool llvm::AArch64FunctionInfo::branchTargetEnforcement ( ) const
inline

◆ clone()

MachineFunctionInfo * AArch64FunctionInfo::clone ( BumpPtrAllocator Allocator,
MachineFunction DestMF,
const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &  Src2DstMBB 
) const
overridevirtual

Make a functionally equivalent copy of this MachineFunctionInfo in MF.

This requires remapping MachineBasicBlock references from the original parent to values in the new function. Targets may assume that virtual register and frame index values are preserved in the new function.

Reimplemented from llvm::MachineFunctionInfo.

Definition at line 148 of file AArch64MachineFunctionInfo.cpp.

References llvm::MachineFunction::cloneInfo().

◆ getArgumentStackToRestore()

unsigned llvm::AArch64FunctionInfo::getArgumentStackToRestore ( ) const
inline

Definition at line 237 of file AArch64MachineFunctionInfo.h.

Referenced by getArgumentStackToRestore().

◆ getBytesInStackArgArea()

unsigned llvm::AArch64FunctionInfo::getBytesInStackArgArea ( ) const
inline

Definition at line 234 of file AArch64MachineFunctionInfo.h.

◆ getCalleeSaveBaseToFrameRecordOffset()

int llvm::AArch64FunctionInfo::getCalleeSaveBaseToFrameRecordOffset ( ) const
inline

◆ getCalleeSavedStackSize() [1/2]

unsigned llvm::AArch64FunctionInfo::getCalleeSavedStackSize ( ) const
inline

Definition at line 332 of file AArch64MachineFunctionInfo.h.

References assert().

Referenced by getCalleeSavedStackSize().

◆ getCalleeSavedStackSize() [2/2]

unsigned llvm::AArch64FunctionInfo::getCalleeSavedStackSize ( const MachineFrameInfo MFI) const
inline

◆ getForwardedMustTailRegParms()

SmallVectorImpl< ForwardedRegister > & llvm::AArch64FunctionInfo::getForwardedMustTailRegParms ( )
inline

Definition at line 429 of file AArch64MachineFunctionInfo.h.

Referenced by handleMustTailForwardedRegisters().

◆ getJumpTableEntryPCRelSymbol()

MCSymbol * llvm::AArch64FunctionInfo::getJumpTableEntryPCRelSymbol ( int  Idx) const
inline

Definition at line 386 of file AArch64MachineFunctionInfo.h.

References Idx.

◆ getJumpTableEntrySize()

unsigned llvm::AArch64FunctionInfo::getJumpTableEntrySize ( int  Idx) const
inline

Definition at line 383 of file AArch64MachineFunctionInfo.h.

References Idx.

◆ getLazySaveTPIDR2Obj()

unsigned llvm::AArch64FunctionInfo::getLazySaveTPIDR2Obj ( ) const
inline

Definition at line 229 of file AArch64MachineFunctionInfo.h.

◆ getLocalStackSize()

uint64_t llvm::AArch64FunctionInfo::getLocalStackSize ( ) const
inline

◆ getLOHContainer()

const MILOHContainer & llvm::AArch64FunctionInfo::getLOHContainer ( ) const
inline

Definition at line 421 of file AArch64MachineFunctionInfo.h.

◆ getLOHRelated()

const SetOfInstructions & llvm::AArch64FunctionInfo::getLOHRelated ( ) const
inline

◆ getMaxSVECSFrameIndex()

int llvm::AArch64FunctionInfo::getMaxSVECSFrameIndex ( ) const
inline

Definition at line 352 of file AArch64MachineFunctionInfo.h.

◆ getMinSVECSFrameIndex()

int llvm::AArch64FunctionInfo::getMinSVECSFrameIndex ( ) const
inline

Definition at line 351 of file AArch64MachineFunctionInfo.h.

◆ getNumLocalDynamicTLSAccesses()

unsigned llvm::AArch64FunctionInfo::getNumLocalDynamicTLSAccesses ( ) const
inline

Definition at line 355 of file AArch64MachineFunctionInfo.h.

◆ getOutliningStyle()

std::optional< std::string > llvm::AArch64FunctionInfo::getOutliningStyle ( ) const
inline

Definition at line 275 of file AArch64MachineFunctionInfo.h.

◆ getPStateSMReg()

Register llvm::AArch64FunctionInfo::getPStateSMReg ( ) const
inline

Definition at line 223 of file AArch64MachineFunctionInfo.h.

◆ getSigningInstrLabel()

MCSymbol * llvm::AArch64FunctionInfo::getSigningInstrLabel ( ) const
inline

Definition at line 459 of file AArch64MachineFunctionInfo.h.

◆ getSRetReturnReg()

unsigned llvm::AArch64FunctionInfo::getSRetReturnReg ( ) const
inline

Definition at line 380 of file AArch64MachineFunctionInfo.h.

◆ getStackProbeSize()

int64_t llvm::AArch64FunctionInfo::getStackProbeSize ( ) const
inline

Definition at line 488 of file AArch64MachineFunctionInfo.h.

◆ getStackSizeSVE()

uint64_t llvm::AArch64FunctionInfo::getStackSizeSVE ( ) const
inline

◆ getSVECalleeSavedStackSize()

unsigned llvm::AArch64FunctionInfo::getSVECalleeSavedStackSize ( ) const
inline

◆ getSwiftAsyncContextFrameIdx()

int llvm::AArch64FunctionInfo::getSwiftAsyncContextFrameIdx ( ) const
inline

Definition at line 476 of file AArch64MachineFunctionInfo.h.

Referenced by getCalleeSavedStackSize().

◆ getTaggedBasePointerIndex()

std::optional< int > llvm::AArch64FunctionInfo::getTaggedBasePointerIndex ( ) const
inline

◆ getTaggedBasePointerOffset()

unsigned llvm::AArch64FunctionInfo::getTaggedBasePointerOffset ( ) const
inline

◆ getTailCallReservedStack()

unsigned llvm::AArch64FunctionInfo::getTailCallReservedStack ( ) const
inline

Definition at line 242 of file AArch64MachineFunctionInfo.h.

Referenced by getFixedObjectSize().

◆ getVarArgsFPRIndex()

int llvm::AArch64FunctionInfo::getVarArgsFPRIndex ( ) const
inline

Definition at line 374 of file AArch64MachineFunctionInfo.h.

◆ getVarArgsFPRSize()

unsigned llvm::AArch64FunctionInfo::getVarArgsFPRSize ( ) const
inline

Definition at line 377 of file AArch64MachineFunctionInfo.h.

◆ getVarArgsGPRIndex()

int llvm::AArch64FunctionInfo::getVarArgsGPRIndex ( ) const
inline

Definition at line 368 of file AArch64MachineFunctionInfo.h.

◆ getVarArgsGPRSize()

unsigned llvm::AArch64FunctionInfo::getVarArgsGPRSize ( ) const
inline

Definition at line 371 of file AArch64MachineFunctionInfo.h.

Referenced by getFixedObjectSize().

◆ getVarArgsStackIndex()

int llvm::AArch64FunctionInfo::getVarArgsStackIndex ( ) const
inline

Definition at line 362 of file AArch64MachineFunctionInfo.h.

◆ getVarArgsStackOffset()

unsigned llvm::AArch64FunctionInfo::getVarArgsStackOffset ( ) const
inline

Definition at line 365 of file AArch64MachineFunctionInfo.h.

◆ hasCalculatedStackSizeSVE()

bool llvm::AArch64FunctionInfo::hasCalculatedStackSizeSVE ( ) const
inline

◆ hasCalleeSaveStackFreeSpace()

bool llvm::AArch64FunctionInfo::hasCalleeSaveStackFreeSpace ( ) const
inline

◆ hasRedZone()

std::optional< bool > llvm::AArch64FunctionInfo::hasRedZone ( ) const
inline

◆ hasStackFrame()

bool llvm::AArch64FunctionInfo::hasStackFrame ( ) const
inline

◆ hasStackProbing()

bool llvm::AArch64FunctionInfo::hasStackProbing ( ) const
inline

◆ hasStreamingModeChanges()

bool llvm::AArch64FunctionInfo::hasStreamingModeChanges ( ) const
inline

◆ hasSwiftAsyncContext()

bool llvm::AArch64FunctionInfo::hasSwiftAsyncContext ( ) const
inline

◆ incNumLocalDynamicTLSAccesses()

void llvm::AArch64FunctionInfo::incNumLocalDynamicTLSAccesses ( )
inline

Definition at line 354 of file AArch64MachineFunctionInfo.h.

◆ initializeBaseYamlFields()

void AArch64FunctionInfo::initializeBaseYamlFields ( const yaml::AArch64FunctionInfo YamlMFI)

◆ isMTETagged()

bool llvm::AArch64FunctionInfo::isMTETagged ( ) const
inline

Definition at line 462 of file AArch64MachineFunctionInfo.h.

◆ isSplitCSR()

bool llvm::AArch64FunctionInfo::isSplitCSR ( ) const
inline

◆ isStackRealigned()

bool llvm::AArch64FunctionInfo::isStackRealigned ( ) const
inline

◆ isSVECC()

bool llvm::AArch64FunctionInfo::isSVECC ( ) const
inline

◆ needsAsyncDwarfUnwindInfo()

bool AArch64FunctionInfo::needsAsyncDwarfUnwindInfo ( const MachineFunction MF) const

◆ needsDwarfUnwindInfo()

bool AArch64FunctionInfo::needsDwarfUnwindInfo ( const MachineFunction MF) const

◆ needsShadowCallStackPrologueEpilogue()

bool AArch64FunctionInfo::needsShadowCallStackPrologueEpilogue ( MachineFunction MF) const

◆ setArgumentStackToRestore()

void llvm::AArch64FunctionInfo::setArgumentStackToRestore ( unsigned  bytes)
inline

◆ setBytesInStackArgArea()

void llvm::AArch64FunctionInfo::setBytesInStackArgArea ( unsigned  bytes)
inline

◆ setCalleeSaveBaseToFrameRecordOffset()

void llvm::AArch64FunctionInfo::setCalleeSaveBaseToFrameRecordOffset ( int  Offset)
inline

Definition at line 448 of file AArch64MachineFunctionInfo.h.

References llvm::Offset.

Referenced by computeCalleeSaveRegisterPairs().

◆ setCalleeSavedStackSize()

void llvm::AArch64FunctionInfo::setCalleeSavedStackSize ( unsigned  Size)
inline

Definition at line 279 of file AArch64MachineFunctionInfo.h.

References Size.

◆ setCalleeSaveStackHasFreeSpace()

void llvm::AArch64FunctionInfo::setCalleeSaveStackHasFreeSpace ( bool  s)
inline

Definition at line 265 of file AArch64MachineFunctionInfo.h.

◆ setHasRedZone()

void llvm::AArch64FunctionInfo::setHasRedZone ( bool  s)
inline

◆ setHasStackFrame()

void llvm::AArch64FunctionInfo::setHasStackFrame ( bool  s)
inline

Definition at line 257 of file AArch64MachineFunctionInfo.h.

◆ setHasStreamingModeChanges()

void llvm::AArch64FunctionInfo::setHasStreamingModeChanges ( bool  HasChanges)
inline

◆ setHasSwiftAsyncContext()

void llvm::AArch64FunctionInfo::setHasSwiftAsyncContext ( bool  HasContext)
inline

Definition at line 468 of file AArch64MachineFunctionInfo.h.

◆ setIsSplitCSR()

void llvm::AArch64FunctionInfo::setIsSplitCSR ( bool  s)
inline

◆ setIsSVECC()

void llvm::AArch64FunctionInfo::setIsSVECC ( bool  s)
inline

Definition at line 227 of file AArch64MachineFunctionInfo.h.

◆ setJumpTableEntryInfo()

void llvm::AArch64FunctionInfo::setJumpTableEntryInfo ( int  Idx,
unsigned  Size,
MCSymbol PCRelSym 
)
inline

Definition at line 389 of file AArch64MachineFunctionInfo.h.

References Idx, and Size.

◆ setLazySaveTPIDR2Obj()

void llvm::AArch64FunctionInfo::setLazySaveTPIDR2Obj ( unsigned  Reg)
inline

Definition at line 230 of file AArch64MachineFunctionInfo.h.

References Reg.

◆ setLocalStackSize()

void llvm::AArch64FunctionInfo::setLocalStackSize ( uint64_t  Size)
inline

◆ setMinMaxSVECSFrameIndex()

void llvm::AArch64FunctionInfo::setMinMaxSVECSFrameIndex ( int  Min,
int  Max 
)
inline

◆ setOutliningStyle()

void llvm::AArch64FunctionInfo::setOutliningStyle ( std::string  Style)
inline

◆ setPStateSMReg()

void llvm::AArch64FunctionInfo::setPStateSMReg ( Register  Reg)
inline

Definition at line 224 of file AArch64MachineFunctionInfo.h.

References Reg.

◆ setSigningInstrLabel()

void llvm::AArch64FunctionInfo::setSigningInstrLabel ( MCSymbol Label)
inline

Definition at line 460 of file AArch64MachineFunctionInfo.h.

◆ setSRetReturnReg()

void llvm::AArch64FunctionInfo::setSRetReturnReg ( unsigned  Reg)
inline

Definition at line 381 of file AArch64MachineFunctionInfo.h.

References Reg.

◆ setStackRealigned()

void llvm::AArch64FunctionInfo::setStackRealigned ( bool  s)
inline

◆ setStackSizeSVE()

void llvm::AArch64FunctionInfo::setStackSizeSVE ( uint64_t  S)
inline

◆ setSVECalleeSavedStackSize()

void llvm::AArch64FunctionInfo::setSVECalleeSavedStackSize ( unsigned  Size)
inline

Definition at line 339 of file AArch64MachineFunctionInfo.h.

References Size.

◆ setSwiftAsyncContextFrameIdx()

void llvm::AArch64FunctionInfo::setSwiftAsyncContextFrameIdx ( int  FI)
inline

◆ setTaggedBasePointerIndex()

void llvm::AArch64FunctionInfo::setTaggedBasePointerIndex ( int  Index)
inline

Definition at line 436 of file AArch64MachineFunctionInfo.h.

◆ setTaggedBasePointerOffset()

void llvm::AArch64FunctionInfo::setTaggedBasePointerOffset ( unsigned  Offset)
inline

Definition at line 441 of file AArch64MachineFunctionInfo.h.

References llvm::Offset.

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

◆ setTailCallReservedStack()

void llvm::AArch64FunctionInfo::setTailCallReservedStack ( unsigned  bytes)
inline

Definition at line 243 of file AArch64MachineFunctionInfo.h.

◆ setVarArgsFPRIndex()

void llvm::AArch64FunctionInfo::setVarArgsFPRIndex ( int  Index)
inline

Definition at line 375 of file AArch64MachineFunctionInfo.h.

◆ setVarArgsFPRSize()

void llvm::AArch64FunctionInfo::setVarArgsFPRSize ( unsigned  Size)
inline

Definition at line 378 of file AArch64MachineFunctionInfo.h.

References Size.

◆ setVarArgsGPRIndex()

void llvm::AArch64FunctionInfo::setVarArgsGPRIndex ( int  Index)
inline

Definition at line 369 of file AArch64MachineFunctionInfo.h.

◆ setVarArgsGPRSize()

void llvm::AArch64FunctionInfo::setVarArgsGPRSize ( unsigned  Size)
inline

Definition at line 372 of file AArch64MachineFunctionInfo.h.

References Size.

◆ setVarArgsStackIndex()

void llvm::AArch64FunctionInfo::setVarArgsStackIndex ( int  Index)
inline

◆ setVarArgsStackOffset()

void llvm::AArch64FunctionInfo::setVarArgsStackOffset ( unsigned  Offset)
inline

Definition at line 366 of file AArch64MachineFunctionInfo.h.

References llvm::Offset.

◆ shouldSignReturnAddress() [1/2]

bool AArch64FunctionInfo::shouldSignReturnAddress ( bool  SpillsLR) const

Definition at line 155 of file AArch64MachineFunctionInfo.cpp.

◆ shouldSignReturnAddress() [2/2]

bool AArch64FunctionInfo::shouldSignReturnAddress ( const MachineFunction MF) const

◆ shouldSignWithBKey()

bool llvm::AArch64FunctionInfo::shouldSignWithBKey ( ) const
inline

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