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.