LLVM: lib/Target/AArch64/AArch64SMEAttributes.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_LIB_TARGET_AARCH64_UTILS_AARCH64SMEATTRIBUTES_H
10#define LLVM_LIB_TARGET_AARCH64_UTILS_AARCH64SMEATTRIBUTES_H
11
13
14namespace llvm {
17}
18
21class AttributeList;
22
23
24
26 unsigned Bitmask = Normal;
27
28public:
37
38
53
58 if (RTLCI)
59 addKnownFunctionAttrs(F.getName(), *RTLCI);
60 }
61 SMEAttrs(const AttributeList &L);
63 addKnownFunctionAttrs(FuncName, RTLCI);
64 };
65
66 void set(unsigned M, bool Enable = true) {
68 Bitmask |= M;
69 else
70 Bitmask &= ~M;
71#ifndef NDEBUG
72 validate();
73#endif
74 }
75
76
91
92
97 return static_cast<unsigned>(S) << ZA_Shift;
98 }
99
119
120
125 return static_cast<unsigned>(S) << ZT0_Shift;
126 }
127
144
150
154
156 return Bitmask == Other.Bitmask;
157 }
158
159private:
160 void addKnownFunctionAttrs(StringRef FuncName,
162 void validate() const;
163};
164
165
166
167
172 bool IsIndirect = false;
173
174public:
177 : CallerFn(Caller), CalledFn(Callee), Callsite(Callsite) {}
178
180
189
190
191
193
198
203
208
212
217};
218
219}
220
221#endif
Base class for all callable instructions (InvokeInst and CallInst) Holds everything related to callin...
SMEAttrs is a utility class to parse the SME ACLE attributes on functions.
Definition AArch64SMEAttributes.h:25
bool isPreservesZT0() const
Definition AArch64SMEAttributes.h:134
bool sharesZT0() const
Definition AArch64SMEAttributes.h:138
bool hasStreamingInterface() const
Definition AArch64SMEAttributes.h:78
static unsigned encodeZAState(StateValue S)
Definition AArch64SMEAttributes.h:96
bool hasNonStreamingInterfaceAndBody() const
Definition AArch64SMEAttributes.h:88
bool isInZA() const
Definition AArch64SMEAttributes.h:101
SMEAttrs(unsigned Mask)
Definition AArch64SMEAttributes.h:55
bool hasStreamingCompatibleInterface() const
Definition AArch64SMEAttributes.h:82
SMEAttrs(StringRef FuncName, const RTLIB::RuntimeLibcallsInfo &RTLCI)
Definition AArch64SMEAttributes.h:62
SMEAttrs operator|(SMEAttrs Other) const
Definition AArch64SMEAttributes.h:145
bool hasAgnosticZAInterface() const
Definition AArch64SMEAttributes.h:112
bool isInZT0() const
Definition AArch64SMEAttributes.h:129
bool isOutZT0() const
Definition AArch64SMEAttributes.h:130
bool isNewZT0() const
Definition AArch64SMEAttributes.h:128
bool isOutZA() const
Definition AArch64SMEAttributes.h:102
bool isInOutZT0() const
Definition AArch64SMEAttributes.h:131
bool hasStreamingInterfaceOrBody() const
Definition AArch64SMEAttributes.h:79
StateValue
Definition AArch64SMEAttributes.h:29
@ New
Definition AArch64SMEAttributes.h:35
@ InOut
Definition AArch64SMEAttributes.h:33
@ Preserved
Definition AArch64SMEAttributes.h:34
@ None
Definition AArch64SMEAttributes.h:30
@ Out
Definition AArch64SMEAttributes.h:32
@ In
Definition AArch64SMEAttributes.h:31
static StateValue decodeZAState(unsigned Bitmask)
Definition AArch64SMEAttributes.h:93
bool hasNonStreamingInterface() const
Definition AArch64SMEAttributes.h:85
bool isSMEABIRoutine() const
Definition AArch64SMEAttributes.h:118
bool operator==(SMEAttrs const &Other) const
Definition AArch64SMEAttributes.h:155
static StateValue decodeZT0State(unsigned Bitmask)
Definition AArch64SMEAttributes.h:121
bool hasStreamingBody() const
Definition AArch64SMEAttributes.h:77
bool sharesZA() const
Definition AArch64SMEAttributes.h:107
bool hasUndefZT0() const
Definition AArch64SMEAttributes.h:137
SMEAttrs(const Function &F, const RTLIB::RuntimeLibcallsInfo *RTLCI=nullptr)
Definition AArch64SMEAttributes.h:56
bool isInOutZA() const
Definition AArch64SMEAttributes.h:103
bool isPreservesZA() const
Definition AArch64SMEAttributes.h:104
SMEAttrs withoutPerCallsiteFlags() const
Definition AArch64SMEAttributes.h:151
bool hasPrivateZAInterface() const
Definition AArch64SMEAttributes.h:114
Mask
Definition AArch64SMEAttributes.h:39
@ ZA_Shift
Definition AArch64SMEAttributes.h:47
@ ZA_Mask
Definition AArch64SMEAttributes.h:48
@ ZT0_Undef
Definition AArch64SMEAttributes.h:46
@ ZT0_Mask
Definition AArch64SMEAttributes.h:50
@ SM_Body
Definition AArch64SMEAttributes.h:43
@ SME_ABI_Routine
Definition AArch64SMEAttributes.h:44
@ SM_Compatible
Definition AArch64SMEAttributes.h:42
@ ZA_State_Agnostic
Definition AArch64SMEAttributes.h:45
@ Normal
Definition AArch64SMEAttributes.h:40
@ SM_Enabled
Definition AArch64SMEAttributes.h:41
@ CallSiteFlags_Mask
Definition AArch64SMEAttributes.h:51
@ ZT0_Shift
Definition AArch64SMEAttributes.h:49
bool isNewZA() const
Definition AArch64SMEAttributes.h:100
bool hasZAState() const
Definition AArch64SMEAttributes.h:117
bool hasZT0State() const
Definition AArch64SMEAttributes.h:143
void set(unsigned M, bool Enable=true)
Definition AArch64SMEAttributes.h:66
bool hasSharedZAInterface() const
Definition AArch64SMEAttributes.h:113
static unsigned encodeZT0State(StateValue S)
Definition AArch64SMEAttributes.h:124
SMEAttrs & callee()
Definition AArch64SMEAttributes.h:182
bool requiresEnablingZAAfterCall() const
Definition AArch64SMEAttributes.h:209
SMEAttrs & caller()
Definition AArch64SMEAttributes.h:181
bool requiresPreservingZT0() const
Definition AArch64SMEAttributes.h:199
SMEAttrs const & callsite() const
Definition AArch64SMEAttributes.h:188
bool requiresSMChange() const
SMEAttrs & callsite()
Definition AArch64SMEAttributes.h:183
SMECallAttrs(SMEAttrs Caller, SMEAttrs Callee, SMEAttrs Callsite=SMEAttrs::Normal)
Definition AArch64SMEAttributes.h:175
bool requiresLazySave() const
Definition AArch64SMEAttributes.h:194
bool requiresDisablingZABeforeCall() const
Definition AArch64SMEAttributes.h:204
SMEAttrs const & caller() const
Definition AArch64SMEAttributes.h:184
SMEAttrs const & callee() const
Definition AArch64SMEAttributes.h:185
bool requiresPreservingAllZAState() const
Definition AArch64SMEAttributes.h:213
StringRef - Represent a constant reference to a string, i.e.
This is an optimization pass for GlobalISel generic memory operations.
A simple container for information about the supported runtime calls.