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_Shift = 4 , ZA_Mask = 0b111 << ZA_Shift , ZT0_Shift = 7 , 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_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 51 of file AArch64SMEAttributes.h.
References set().
Definition at line 52 of file AArch64SMEAttributes.h.
Definition at line 43 of file AArch64SMEAttributes.cpp.
References F, llvm::CallBase::getAttributes(), llvm::CallBase::getCalledFunction(), and set().
SMEAttrs::SMEAttrs | ( | const AttributeList & | L | ) |
Definition at line 61 of file AArch64SMEAttributes.cpp.
References encodeZAState(), encodeZT0State(), In, InOut, New, Out, Preserved, SM_Body, SM_Compatible, and SM_Enabled.
SMEAttrs::SMEAttrs | ( | StringRef | FuncName | ) |
Definition at line 50 of file AArch64SMEAttributes.cpp.
References encodeZAState(), In, SM_Compatible, and SME_ABI_Routine.
|
inlinestatic |
Definition at line 80 of file AArch64SMEAttributes.h.
References ZA_Mask, and ZA_Shift.
Referenced by isInOutZA(), isInZA(), isNewZA(), isOutZA(), isPreservesZA(), and sharesZA().
|
inlinestatic |
Definition at line 108 of file AArch64SMEAttributes.h.
References ZT0_Mask, and ZT0_Shift.
Referenced by isInOutZT0(), isInZT0(), isNewZT0(), isOutZT0(), isPreservesZT0(), and sharesZT0().
|
inlinestatic |
Definition at line 83 of file AArch64SMEAttributes.h.
References ZA_Shift.
Referenced by SMEAttrs().
|
inlinestatic |
Definition at line 111 of file AArch64SMEAttributes.h.
References ZT0_Shift.
Referenced by SMEAttrs().
|
inline |
Definition at line 68 of file AArch64SMEAttributes.h.
References hasStreamingCompatibleInterface(), and hasStreamingInterface().
Referenced by getSMCondition(), and hasNonStreamingInterfaceAndBody().
|
inline |
Definition at line 71 of file AArch64SMEAttributes.h.
References hasNonStreamingInterface(), and hasStreamingBody().
Referenced by requiresSMChange().
|
inline |
Definition at line 100 of file AArch64SMEAttributes.h.
References hasSharedZAInterface().
|
inline |
Definition at line 99 of file AArch64SMEAttributes.h.
References sharesZA(), and sharesZT0().
Referenced by hasPrivateZAInterface().
|
inline |
Definition at line 60 of file AArch64SMEAttributes.h.
References SM_Body.
Referenced by llvm::AArch64TTIImpl::areInlineCompatible(), emitVGSaveRestore(), enableMultiVectorSpillFill(), getSMCondition(), hasNonStreamingInterfaceAndBody(), and hasStreamingInterfaceOrBody().
|
inline |
Definition at line 65 of file AArch64SMEAttributes.h.
References SM_Compatible.
Referenced by llvm::AArch64::createFastISel(), getSMCondition(), hasNonStreamingInterface(), and set().
|
inline |
Definition at line 61 of file AArch64SMEAttributes.h.
References SM_Enabled.
Referenced by emitVGSaveRestore(), enableMultiVectorSpillFill(), getSMCondition(), hasNonStreamingInterface(), hasStreamingInterfaceOrBody(), and set().
|
inline |
Definition at line 62 of file AArch64SMEAttributes.h.
References hasStreamingBody(), and hasStreamingInterface().
Referenced by llvm::AArch64::createFastISel(), and requiresSMChange().
|
inline |
Definition at line 101 of file AArch64SMEAttributes.h.
References isNewZA(), and sharesZA().
Referenced by llvm::AArch64::createFastISel(), requiresDisablingZABeforeCall(), and requiresLazySave().
|
inline |
Definition at line 129 of file AArch64SMEAttributes.h.
References isNewZT0(), and sharesZT0().
Referenced by llvm::AArch64::createFastISel(), requiresDisablingZABeforeCall(), and requiresPreservingZT0().
|
inline |
Definition at line 90 of file AArch64SMEAttributes.h.
References decodeZAState(), and InOut.
Referenced by set().
|
inline |
Definition at line 118 of file AArch64SMEAttributes.h.
References decodeZT0State(), and InOut.
Referenced by set().
|
inline |
Definition at line 88 of file AArch64SMEAttributes.h.
References decodeZAState(), and In.
Referenced by set().
|
inline |
Definition at line 116 of file AArch64SMEAttributes.h.
References decodeZT0State(), and In.
Referenced by set().
|
inline |
Definition at line 87 of file AArch64SMEAttributes.h.
References decodeZAState(), and New.
Referenced by llvm::AArch64TTIImpl::areInlineCompatible(), hasZAState(), and set().
|
inline |
Definition at line 115 of file AArch64SMEAttributes.h.
References decodeZT0State(), and New.
Referenced by hasZT0State(), and set().
|
inline |
Definition at line 89 of file AArch64SMEAttributes.h.
References decodeZAState(), and Out.
Referenced by set().
|
inline |
Definition at line 117 of file AArch64SMEAttributes.h.
References decodeZT0State(), and Out.
Referenced by set().
|
inline |
Definition at line 91 of file AArch64SMEAttributes.h.
References decodeZAState(), and Preserved.
Referenced by set().
|
inline |
Definition at line 121 of file AArch64SMEAttributes.h.
References decodeZT0State(), and Preserved.
Referenced by set().
Definition at line 133 of file AArch64SMEAttributes.h.
References hasZAState(), hasZT0State(), and SME_ABI_Routine.
Referenced by requiresEnablingZAAfterCall().
Definition at line 137 of file AArch64SMEAttributes.h.
References requiresDisablingZABeforeCall(), and requiresLazySave().
Definition at line 102 of file AArch64SMEAttributes.h.
References hasZAState(), and SME_ABI_Routine.
Referenced by requiresEnablingZAAfterCall().
Definition at line 130 of file AArch64SMEAttributes.h.
References hasZT0State().
Definition at line 91 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, 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 94 of file AArch64SMEAttributes.h.
References decodeZAState(), In, InOut, Out, and Preserved.
Referenced by hasSharedZAInterface(), hasZAState(), and set().
|
inline |
Definition at line 124 of file AArch64SMEAttributes.h.
References decodeZT0State(), In, InOut, Out, and Preserved.
Referenced by hasSharedZAInterface(), hasZT0State(), and set().