LLVM 20.0.0git
|
SMEAttrs is a utility class to parse the SME ACLE attributes on functions. More...
#include "Target/AArch64/Utils/AArch64SMEAttributes.h"
Public Types | |
enum class | StateValue { None = 0 , In = 1 , Out = 2 , InOut = 3 , Preserved = 4 , New = 5 } |
enum | Mask { Normal = 0 , SM_Enabled = 1 << 0 , SM_Compatible = 1 << 1 , SM_Body = 1 << 2 , SME_ABI_Routine = 1 << 3 , ZA_State_Agnostic = 1 << 4 , ZA_Shift = 5 , ZA_Mask = 0b111 << ZA_Shift , ZT0_Shift = 8 , ZT0_Mask = 0b111 << ZT0_Shift } |
Static Public Member Functions | |
static StateValue | decodeZAState (unsigned Bitmask) |
static unsigned | encodeZAState (StateValue S) |
static StateValue | decodeZT0State (unsigned Bitmask) |
static unsigned | encodeZT0State (StateValue S) |
SMEAttrs is a utility class to parse the SME ACLE attributes on functions.
It helps determine a function's requirements for PSTATE.ZA and PSTATE.SM. It has interfaces to query whether a streaming mode change or lazy-save mechanism is required when going from one function to another (e.g. through a call).
Definition at line 25 of file AArch64SMEAttributes.h.
enum llvm::SMEAttrs::Mask |
Enumerator | |
---|---|
Normal | |
SM_Enabled | |
SM_Compatible | |
SM_Body | |
SME_ABI_Routine | |
ZA_State_Agnostic | |
ZA_Shift | |
ZA_Mask | |
ZT0_Shift | |
ZT0_Mask |
Definition at line 39 of file AArch64SMEAttributes.h.
|
strong |
Enumerator | |
---|---|
None | |
In | |
Out | |
InOut | |
Preserved | |
New |
Definition at line 29 of file AArch64SMEAttributes.h.
Definition at line 52 of file AArch64SMEAttributes.h.
References set().
Definition at line 53 of file AArch64SMEAttributes.h.
Definition at line 47 of file AArch64SMEAttributes.cpp.
References F, llvm::CallBase::getAttributes(), llvm::CallBase::getCalledFunction(), and set().
SMEAttrs::SMEAttrs | ( | const AttributeList & | L | ) |
Definition at line 68 of file AArch64SMEAttributes.cpp.
References encodeZAState(), encodeZT0State(), In, InOut, New, Out, Preserved, SM_Body, SM_Compatible, SM_Enabled, and ZA_State_Agnostic.
SMEAttrs::SMEAttrs | ( | StringRef | FuncName | ) |
Definition at line 54 of file AArch64SMEAttributes.cpp.
References encodeZAState(), In, SM_Compatible, and SME_ABI_Routine.
|
inlinestatic |
Definition at line 81 of file AArch64SMEAttributes.h.
References ZA_Mask, and ZA_Shift.
Referenced by isInOutZA(), isInZA(), isNewZA(), isOutZA(), isPreservesZA(), and sharesZA().
|
inlinestatic |
Definition at line 112 of file AArch64SMEAttributes.h.
References ZT0_Mask, and ZT0_Shift.
Referenced by isInOutZT0(), isInZT0(), isNewZT0(), isOutZT0(), isPreservesZT0(), and sharesZT0().
|
inlinestatic |
Definition at line 84 of file AArch64SMEAttributes.h.
References ZA_Shift.
Referenced by SMEAttrs().
|
inlinestatic |
Definition at line 115 of file AArch64SMEAttributes.h.
References ZT0_Shift.
Referenced by SMEAttrs().
|
inline |
Definition at line 100 of file AArch64SMEAttributes.h.
References ZA_State_Agnostic.
Referenced by llvm::AArch64::createFastISel(), hasPrivateZAInterface(), requiresPreservingAllZAState(), and set().
|
inline |
Definition at line 69 of file AArch64SMEAttributes.h.
References hasStreamingCompatibleInterface(), and hasStreamingInterface().
Referenced by getSMCondition(), and hasNonStreamingInterfaceAndBody().
|
inline |
Definition at line 72 of file AArch64SMEAttributes.h.
References hasNonStreamingInterface(), and hasStreamingBody().
Referenced by requiresSMChange().
|
inline |
Definition at line 102 of file AArch64SMEAttributes.h.
References hasAgnosticZAInterface(), and hasSharedZAInterface().
|
inline |
Definition at line 101 of file AArch64SMEAttributes.h.
References sharesZA(), and sharesZT0().
Referenced by hasPrivateZAInterface(), and set().
|
inline |
Definition at line 61 of file AArch64SMEAttributes.h.
References SM_Body.
Referenced by llvm::AArch64TTIImpl::areInlineCompatible(), emitVGSaveRestore(), enableMultiVectorSpillFill(), getSMCondition(), hasNonStreamingInterfaceAndBody(), and hasStreamingInterfaceOrBody().
|
inline |
Definition at line 66 of file AArch64SMEAttributes.h.
References SM_Compatible.
Referenced by llvm::AArch64::createFastISel(), getSMCondition(), hasNonStreamingInterface(), and set().
|
inline |
Definition at line 62 of file AArch64SMEAttributes.h.
References SM_Enabled.
Referenced by emitVGSaveRestore(), enableMultiVectorSpillFill(), getSMCondition(), hasNonStreamingInterface(), hasStreamingInterfaceOrBody(), and set().
|
inline |
Definition at line 63 of file AArch64SMEAttributes.h.
References hasStreamingBody(), and hasStreamingInterface().
Referenced by llvm::AArch64::createFastISel(), and requiresSMChange().
|
inline |
Definition at line 105 of file AArch64SMEAttributes.h.
References isNewZA(), and sharesZA().
Referenced by llvm::AArch64::createFastISel(), requiresDisablingZABeforeCall(), and requiresLazySave().
|
inline |
Definition at line 133 of file AArch64SMEAttributes.h.
References isNewZT0(), and sharesZT0().
Referenced by llvm::AArch64::createFastISel(), requiresDisablingZABeforeCall(), and requiresPreservingZT0().
|
inline |
Definition at line 91 of file AArch64SMEAttributes.h.
References decodeZAState(), and InOut.
Referenced by set().
|
inline |
Definition at line 122 of file AArch64SMEAttributes.h.
References decodeZT0State(), and InOut.
Referenced by set().
|
inline |
Definition at line 89 of file AArch64SMEAttributes.h.
References decodeZAState(), and In.
Referenced by set().
|
inline |
Definition at line 120 of file AArch64SMEAttributes.h.
References decodeZT0State(), and In.
Referenced by set().
|
inline |
Definition at line 88 of file AArch64SMEAttributes.h.
References decodeZAState(), and New.
Referenced by llvm::AArch64TTIImpl::areInlineCompatible(), hasZAState(), and set().
|
inline |
Definition at line 119 of file AArch64SMEAttributes.h.
References decodeZT0State(), and New.
Referenced by hasZT0State(), and set().
|
inline |
Definition at line 90 of file AArch64SMEAttributes.h.
References decodeZAState(), and Out.
Referenced by set().
|
inline |
Definition at line 121 of file AArch64SMEAttributes.h.
References decodeZT0State(), and Out.
Referenced by set().
|
inline |
Definition at line 92 of file AArch64SMEAttributes.h.
References decodeZAState(), and Preserved.
Referenced by set().
|
inline |
Definition at line 125 of file AArch64SMEAttributes.h.
References decodeZT0State(), and Preserved.
Referenced by set().
Definition at line 138 of file AArch64SMEAttributes.h.
References hasZAState(), hasZT0State(), and SME_ABI_Routine.
Referenced by requiresEnablingZAAfterCall().
Definition at line 142 of file AArch64SMEAttributes.h.
References requiresDisablingZABeforeCall(), and requiresLazySave().
Definition at line 106 of file AArch64SMEAttributes.h.
References hasZAState(), and SME_ABI_Routine.
Referenced by requiresEnablingZAAfterCall().
Definition at line 145 of file AArch64SMEAttributes.h.
References hasAgnosticZAInterface(), and SME_ABI_Routine.
Definition at line 134 of file AArch64SMEAttributes.h.
References hasZT0State().
Definition at line 100 of file AArch64SMEAttributes.cpp.
References hasNonStreamingInterfaceAndBody(), and hasStreamingInterfaceOrBody().
Referenced by llvm::AArch64TTIImpl::getInlineCallPenalty().
Definition at line 15 of file AArch64SMEAttributes.cpp.
References assert(), llvm::Enable, hasAgnosticZAInterface(), hasSharedZAInterface(), hasStreamingCompatibleInterface(), hasStreamingInterface(), isInOutZA(), isInOutZT0(), isInZA(), isInZT0(), isNewZA(), isNewZT0(), isOutZA(), isOutZT0(), isPreservesZA(), isPreservesZT0(), sharesZA(), sharesZT0(), and SME_ABI_Routine.
Referenced by llvm::AArch64TTIImpl::areInlineCompatible(), and SMEAttrs().
|
inline |
Definition at line 95 of file AArch64SMEAttributes.h.
References decodeZAState(), In, InOut, Out, and Preserved.
Referenced by hasSharedZAInterface(), hasZAState(), and set().
|
inline |
Definition at line 128 of file AArch64SMEAttributes.h.
References decodeZT0State(), In, InOut, Out, and Preserved.
Referenced by hasSharedZAInterface(), hasZT0State(), and set().