LLVM: include/llvm/TargetParser/AArch64TargetParser.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14#ifndef LLVM_TARGETPARSER_AARCH64TARGETPARSER_H
15#define LLVM_TARGETPARSER_AARCH64TARGETPARSER_H
16
26#include
27#include
42 "Number of features in CPUFeatures are limited to 62 entries");
45#define EMIT_ARCHEXTKIND_ENUM
46#include "llvm/TargetParser/AArch64TargetParserDef.inc"
69#define EMIT_EXTENSIONS
70#include "llvm/TargetParser/AArch64TargetParserDef.inc"
92
93#define EMIT_EXTENSION_DEPENDENCIES
94#include "llvm/TargetParser/AArch64TargetParserDef.inc"
95
97
98
106
108 return this->Name == Other.Name;
109 }
111 return this->Name != Other.Name;
112 }
113
114
115
116
117
118
119
120
121
122
123
125 if (this->Profile != Other.Profile)
126 return false;
127 if (this->Version.getMajor() == Other.Version.getMajor()) {
128 return this->Version > Other.Version;
129 }
130 if (this->Version.getMajor() == 9 && Other.Version.getMajor() == 8) {
132 "AArch64::ArchInfo should have a minor version.");
133 return this->Version.getMinor().value_or(0) + 5 >=
134 Other.Version.getMinor().value_or(0);
135 }
136 return false;
137 }
138
139
140
144
145
147
148
150};
151
152#define EMIT_ARCHITECTURES
153#include "llvm/TargetParser/AArch64TargetParserDef.inc"
154
155
166
167#define EMIT_CPU_INFO
168#include "llvm/TargetParser/AArch64TargetParserDef.inc"
169
171
173
174
176
177
179
181
182
183
184
186
187
188
189
190
192
193
194
196
197
198
200
201
202
203
204
206 const bool AllowNoDashForm = false);
207
208
209
210
211
214 std::vectorstd::string &NonExtensions);
215
216
217
218 template void toLLVMFeatureList(std::vector &Features) const {
220 Features.emplace_back(T(BaseArch->ArchFeature));
221
223 if (E.PosTargetFeature.empty() || .test(E.ID))
224 continue;
226 Features.emplace_back(T(E.PosTargetFeature));
227 else
228 Features.emplace_back(T(E.NegTargetFeature));
229 }
230 }
231
233};
234
235
240
241#define EMIT_CPU_ALIAS
242#include "llvm/TargetParser/AArch64TargetParserDef.inc"
243
245
247 std::vector &Features);
248
251
252
254
255
257
258
259LLVM_ABI std::optional
261
262
264
265
267
268
270
272
274
275
276
277
279
280
281
282
283
284
286
288
291
292}
293}
294
295#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file defines the StringMap class.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
static cl::opt< std::set< SPIRV::Extension::Extension >, false, SPIRVExtensionsParser > Extensions("spirv-ext", cl::desc("Specify list of enabled SPIR-V extensions"))
Defines the llvm::VersionTuple class, which represents a version in the form major[....
Class for arbitrary precision integers.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
This is a constexpr reimplementation of a subset of std::bitset.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
StringRef - Represent a constant reference to a string, i.e.
Triple - Helper class for working with autoconf configuration names.
Represents a version number in the form major[.minor[.subminor[.build]]].
unsigned getMajor() const
Retrieve the major version number.
std::optional< unsigned > getMinor() const
Retrieve the minor version number, if provided.
FeatPriorities
Definition AArch64TargetParser.h:18
LLVM_ABI bool isX18ReservedByDefault(const Triple &TT)
LLVM_ABI StringRef getArchExtFeature(StringRef ArchExt)
LLVM_ABI std::optional< ExtensionInfo > parseArchExtension(StringRef Extension)
LLVM_ABI std::optional< CpuInfo > parseCpu(StringRef Name)
CPUFeatures
Definition AArch64TargetParser.h:25
@ FEAT_MAX
Definition AArch64TargetParser.h:86
LLVM_ABI const std::vector< FMVInfo > & getFMVInfo()
LLVM_ABI const ArchInfo * parseArch(StringRef Arch)
LLVM_ABI const ArchInfo * getArchForCpu(StringRef CPU)
LLVM_ABI const ExtensionInfo & getExtensionByID(ArchExtKind(ExtID))
LLVM_ABI void fillValidCPUArchList(SmallVectorImpl< StringRef > &Values)
LLVM_ABI APInt getCpuSupportsMask(ArrayRef< StringRef > Features)
LLVM_ABI void printEnabledExtensions(const std::set< StringRef > &EnabledFeatureNames)
LLVM_ABI std::optional< FMVInfo > parseFMVExtension(StringRef Extension)
Bitset< AEK_NUM_EXTENSIONS > ExtensionBitset
Definition AArch64TargetParser.h:48
LLVM_ABI APInt getFMVPriority(ArrayRef< StringRef > Features)
LLVM_ABI void PrintSupportedExtensions()
LLVM_ABI std::optional< ExtensionInfo > targetFeatureToExtension(StringRef TargetFeature)
ArchProfile
Definition AArch64TargetParser.h:96
@ InvalidProfile
Definition AArch64TargetParser.h:96
@ AProfile
Definition AArch64TargetParser.h:96
@ RProfile
Definition AArch64TargetParser.h:96
LLVM_ABI StringRef resolveCPUAlias(StringRef CPU)
LLVM_ABI bool getExtensionFeatures(const AArch64::ExtensionBitset &Extensions, std::vector< StringRef > &Features)
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
This is an optimization pass for GlobalISel generic memory operations.
StringRef Name
Definition AArch64TargetParser.h:238
StringRef AltName
Definition AArch64TargetParser.h:237
VersionTuple Version
Definition AArch64TargetParser.h:100
bool is_superset(const ArchInfo &Other) const
Definition AArch64TargetParser.h:141
ArchProfile Profile
Definition AArch64TargetParser.h:101
StringRef getSubArch() const
Definition AArch64TargetParser.h:146
bool implies(const ArchInfo &Other) const
Definition AArch64TargetParser.h:124
AArch64::ExtensionBitset DefaultExts
Definition AArch64TargetParser.h:105
static LLVM_ABI std::optional< ArchInfo > findBySubArch(StringRef SubArch)
bool operator==(const ArchInfo &Other) const
Definition AArch64TargetParser.h:107
StringRef ArchFeature
Definition AArch64TargetParser.h:103
StringRef Name
Definition AArch64TargetParser.h:102
bool operator!=(const ArchInfo &Other) const
Definition AArch64TargetParser.h:110
AArch64::ExtensionBitset getImpliedExtensions() const
Definition AArch64TargetParser.h:162
StringRef Name
Definition AArch64TargetParser.h:157
AArch64::ExtensionBitset DefaultExtensions
Definition AArch64TargetParser.h:160
const ArchInfo & Arch
Definition AArch64TargetParser.h:158
ArchExtKind Earlier
Definition AArch64TargetParser.h:89
ArchExtKind Later
Definition AArch64TargetParser.h:90
StringRef Description
Definition AArch64TargetParser.h:62
ArchExtKind ID
Definition AArch64TargetParser.h:58
std::optional< StringRef > Alias
Definition AArch64TargetParser.h:57
StringRef UserVisibleName
Definition AArch64TargetParser.h:55
StringRef NegTargetFeature
Definition AArch64TargetParser.h:65
StringRef PosTargetFeature
Definition AArch64TargetParser.h:63
StringRef ArchFeatureName
Definition AArch64TargetParser.h:60
ExtensionBitset Touched
Definition AArch64TargetParser.h:175
ExtensionSet()
Definition AArch64TargetParser.h:180
LLVM_ABI bool parseModifier(StringRef Modifier, const bool AllowNoDashForm=false)
LLVM_ABI void addCPUDefaults(const CpuInfo &CPU)
LLVM_ABI void enable(ArchExtKind E)
LLVM_ABI void disable(ArchExtKind E)
void toLLVMFeatureList(std::vector< T > &Features) const
Definition AArch64TargetParser.h:218
LLVM_ABI void dump() const
const ArchInfo * BaseArch
Definition AArch64TargetParser.h:178
ExtensionBitset Enabled
Definition AArch64TargetParser.h:172
LLVM_ABI void addArchDefaults(const ArchInfo &Arch)
LLVM_ABI void reconstructFromParsedFeatures(const std::vector< std::string > &Features, std::vector< std::string > &NonExtensions)
StringRef Name
Definition AArch64TargetParser.h:73
CPUFeatures FeatureBit
Definition AArch64TargetParser.h:74
std::optional< ArchExtKind > ID
Definition AArch64TargetParser.h:76
FMVInfo(StringRef Name, CPUFeatures FeatureBit, FeatPriorities PriorityBit, std::optional< ArchExtKind > ID)
Definition AArch64TargetParser.h:77
FeatPriorities PriorityBit
Definition AArch64TargetParser.h:75