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");
44static_assert(PRIOR_MAX < 120, "FeatPriorities is limited to 120 entries");
47#define EMIT_ARCHEXTKIND_ENUM
48#include "llvm/TargetParser/AArch64TargetParserDef.inc"
71#define EMIT_EXTENSIONS
72#include "llvm/TargetParser/AArch64TargetParserDef.inc"
76 std::optional
88
90
95
96#define EMIT_EXTENSION_DEPENDENCIES
97#include "llvm/TargetParser/AArch64TargetParserDef.inc"
98
100
101
109
111 return this->Name == Other.Name;
112 }
114 return this->Name != Other.Name;
115 }
116
117
118
119
120
121
122
123
124
125
126
128 if (this->Profile != Other.Profile)
129 return false;
130 if (this->Version.getMajor() == Other.Version.getMajor()) {
131 return this->Version > Other.Version;
132 }
133 if (this->Version.getMajor() == 9 && Other.Version.getMajor() == 8) {
135 "AArch64::ArchInfo should have a minor version.");
136 return this->Version.getMinor().value_or(0) + 5 >=
137 Other.Version.getMinor().value_or(0);
138 }
139 return false;
140 }
141
142
143
147
148
150
151
153};
154
155#define EMIT_ARCHITECTURES
156#include "llvm/TargetParser/AArch64TargetParserDef.inc"
157
158
169
170#define EMIT_CPU_INFO
171#include "llvm/TargetParser/AArch64TargetParserDef.inc"
172
174
176
177
179
180
182
184
185
186
187
189
190
191
192
193
195
196
197
199
200
201
203
204
205
206
207
209 const bool AllowNoDashForm = false);
210
211
212
213
214
217 std::vectorstd::string &NonExtensions);
218
219
220
221 template void toLLVMFeatureList(std::vector &Features) const {
223 Features.emplace_back(T(BaseArch->ArchFeature));
224
226 if (E.PosTargetFeature.empty() || .test(E.ID))
227 continue;
229 Features.emplace_back(T(E.PosTargetFeature));
230 else
231 Features.emplace_back(T(E.NegTargetFeature));
232 }
233 }
234
236};
237
238
243
244#define EMIT_CPU_ALIAS
245#include "llvm/TargetParser/AArch64TargetParserDef.inc"
246
248
250 std::vector &Features);
251
254
255
257
258
260
261
262LLVM_ABI std::optional
264
265
267
268
270
271
273
275
277
278
279
280
282
283
284
285
286
287
289
291
294
295}
296}
297
298#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
@ PRIOR_MAX
Definition AArch64TargetParser.h:64
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)
@ 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:50
LLVM_ABI APInt getFMVPriority(ArrayRef< StringRef > Features)
LLVM_ABI void PrintSupportedExtensions()
LLVM_ABI std::optional< ExtensionInfo > targetFeatureToExtension(StringRef TargetFeature)
ArchProfile
Definition AArch64TargetParser.h:99
@ InvalidProfile
Definition AArch64TargetParser.h:99
@ AProfile
Definition AArch64TargetParser.h:99
@ RProfile
Definition AArch64TargetParser.h:99
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:241
StringRef AltName
Definition AArch64TargetParser.h:240
VersionTuple Version
Definition AArch64TargetParser.h:103
bool is_superset(const ArchInfo &Other) const
Definition AArch64TargetParser.h:144
ArchProfile Profile
Definition AArch64TargetParser.h:104
StringRef getSubArch() const
Definition AArch64TargetParser.h:149
bool implies(const ArchInfo &Other) const
Definition AArch64TargetParser.h:127
AArch64::ExtensionBitset DefaultExts
Definition AArch64TargetParser.h:108
static LLVM_ABI std::optional< ArchInfo > findBySubArch(StringRef SubArch)
bool operator==(const ArchInfo &Other) const
Definition AArch64TargetParser.h:110
StringRef ArchFeature
Definition AArch64TargetParser.h:106
StringRef Name
Definition AArch64TargetParser.h:105
bool operator!=(const ArchInfo &Other) const
Definition AArch64TargetParser.h:113
AArch64::ExtensionBitset getImpliedExtensions() const
Definition AArch64TargetParser.h:165
StringRef Name
Definition AArch64TargetParser.h:160
AArch64::ExtensionBitset DefaultExtensions
Definition AArch64TargetParser.h:163
const ArchInfo & Arch
Definition AArch64TargetParser.h:161
ArchExtKind Earlier
Definition AArch64TargetParser.h:92
ArchExtKind Later
Definition AArch64TargetParser.h:93
StringRef Description
Definition AArch64TargetParser.h:64
ArchExtKind ID
Definition AArch64TargetParser.h:60
std::optional< StringRef > Alias
Definition AArch64TargetParser.h:59
StringRef UserVisibleName
Definition AArch64TargetParser.h:57
StringRef NegTargetFeature
Definition AArch64TargetParser.h:67
StringRef PosTargetFeature
Definition AArch64TargetParser.h:65
StringRef ArchFeatureName
Definition AArch64TargetParser.h:62
ExtensionBitset Touched
Definition AArch64TargetParser.h:178
ExtensionSet()
Definition AArch64TargetParser.h:183
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:221
LLVM_ABI void dump() const
const ArchInfo * BaseArch
Definition AArch64TargetParser.h:181
ExtensionBitset Enabled
Definition AArch64TargetParser.h:175
LLVM_ABI void addArchDefaults(const ArchInfo &Arch)
LLVM_ABI void reconstructFromParsedFeatures(const std::vector< std::string > &Features, std::vector< std::string > &NonExtensions)
std::optional< CPUFeatures > FeatureBit
Definition AArch64TargetParser.h:77
StringRef Name
Definition AArch64TargetParser.h:75
FMVInfo(StringRef Name, std::optional< CPUFeatures > FeatureBit, FeatPriorities PriorityBit, std::optional< ArchExtKind > ID)
Definition AArch64TargetParser.h:80
std::optional< ArchExtKind > ID
Definition AArch64TargetParser.h:79
FeatPriorities PriorityBit
Definition AArch64TargetParser.h:78