14#ifndef LLVM_TARGETPARSER_AARCH64TARGETPARSER_H
15#define LLVM_TARGETPARSER_AARCH64TARGETPARSER_H
39static_assert(FEAT_MAX < 62,
40 "Number of features in CPUFeatures are limited to 62 entries");
43#define EMIT_ARCHEXTKIND_ENUM
44#include "llvm/TargetParser/AArch64TargetParserDef.inc"
67#define EMIT_EXTENSIONS
68#include "llvm/TargetParser/AArch64TargetParserDef.inc"
97#define EMIT_EXTENSION_DEPENDENCIES
98#include "llvm/TargetParser/AArch64TargetParserDef.inc"
112 return this->Name ==
Other.Name;
115 return this->Name !=
Other.Name;
129 if (this->Profile !=
Other.Profile)
132 return this->Version >
Other.Version;
134 if (this->Version.
getMajor() == 9 &&
Other.Version.getMajor() == 8) {
136 "AArch64::ArchInfo should have a minor version.");
137 return this->Version.
getMinor().value_or(0) + 5 >=
138 Other.Version.getMinor().value_or(0);
156#define EMIT_ARCHITECTURES
157#include "llvm/TargetParser/AArch64TargetParserDef.inc"
172#include "llvm/TargetParser/AArch64TargetParserDef.inc"
216 std::vector<std::string> &NonExtensions);
228 Features.emplace_back(
T(
E.PosTargetFeature));
230 Features.emplace_back(
T(
E.NegTargetFeature));
243#define EMIT_CPU_ALIAS
244#include "llvm/TargetParser/AArch64TargetParserDef.inc"
250 std::vector<StringRef> &Features);
This file defines the StringMap class.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
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[....
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
constexpr bool test(unsigned I) const
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
std::pair< StringRef, StringRef > split(char Separator) const
Split into two substrings around the first occurrence of a separator character.
constexpr StringRef substr(size_t Start, size_t N=npos) const
Return a reference to the substring from [Start, Start + N).
constexpr bool empty() const
empty - Check if the string is empty.
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.
bool isX18ReservedByDefault(const Triple &TT)
StringRef getArchExtFeature(StringRef ArchExt)
std::optional< ExtensionInfo > parseArchExtension(StringRef Extension)
std::optional< CpuInfo > parseCpu(StringRef Name)
uint64_t getCpuSupportsMask(ArrayRef< StringRef > FeatureStrs)
const ArchInfo * parseArch(StringRef Arch)
const ArchInfo * getArchForCpu(StringRef CPU)
void fillValidCPUArchList(SmallVectorImpl< StringRef > &Values)
const ExtensionInfo & getExtensionByID(ArchExtKind(ExtID))
void printEnabledExtensions(const std::set< StringRef > &EnabledFeatureNames)
std::optional< FMVInfo > parseFMVExtension(StringRef Extension)
const std::vector< FMVInfo > & getFMVInfo()
void PrintSupportedExtensions()
std::optional< ExtensionInfo > targetFeatureToExtension(StringRef TargetFeature)
StringRef resolveCPUAlias(StringRef CPU)
bool getExtensionFeatures(const AArch64::ExtensionBitset &Extensions, std::vector< StringRef > &Features)
This is an optimization pass for GlobalISel generic memory operations.
bool is_superset(const ArchInfo &Other) const
StringRef getSubArch() const
bool implies(const ArchInfo &Other) const
AArch64::ExtensionBitset DefaultExts
static std::optional< ArchInfo > findBySubArch(StringRef SubArch)
bool operator==(const ArchInfo &Other) const
bool operator!=(const ArchInfo &Other) const
AArch64::ExtensionBitset getImpliedExtensions() const
AArch64::ExtensionBitset DefaultExtensions
std::optional< StringRef > Alias
StringRef UserVisibleName
StringRef NegTargetFeature
StringRef PosTargetFeature
StringRef ArchFeatureName
bool parseModifier(StringRef Modifier, const bool AllowNoDashForm=false)
void addCPUDefaults(const CpuInfo &CPU)
void enable(ArchExtKind E)
void disable(ArchExtKind E)
void toLLVMFeatureList(std::vector< T > &Features) const
const ArchInfo * BaseArch
void addArchDefaults(const ArchInfo &Arch)
void reconstructFromParsedFeatures(const std::vector< std::string > &Features, std::vector< std::string > &NonExtensions)
FMVInfo(StringRef Name, CPUFeatures Bit, StringRef Features, unsigned Priority)
SmallVector< StringRef, 8 > getImpliedFeatures()