14#ifndef LLVM_TARGETPARSER_AARCH64TARGETPARSER_H
15#define LLVM_TARGETPARSER_AARCH64TARGETPARSER_H
40static_assert(FEAT_MAX < 62,
41 "Number of features in CPUFeatures are limited to 62 entries");
44#define EMIT_ARCHEXTKIND_ENUM
45#include "llvm/TargetParser/AArch64TargetParserDef.inc"
68#define EMIT_EXTENSIONS
69#include "llvm/TargetParser/AArch64TargetParserDef.inc"
74 std::optional<ArchExtKind>
ID;
92#define EMIT_EXTENSION_DEPENDENCIES
93#include "llvm/TargetParser/AArch64TargetParserDef.inc"
107 return this->Name ==
Other.Name;
110 return this->Name !=
Other.Name;
124 if (this->Profile !=
Other.Profile)
127 return this->Version >
Other.Version;
129 if (this->Version.
getMajor() == 9 &&
Other.Version.getMajor() == 8) {
131 "AArch64::ArchInfo should have a minor version.");
132 return this->Version.
getMinor().value_or(0) + 5 >=
133 Other.Version.getMinor().value_or(0);
151#define EMIT_ARCHITECTURES
152#include "llvm/TargetParser/AArch64TargetParserDef.inc"
167#include "llvm/TargetParser/AArch64TargetParserDef.inc"
211 std::vector<std::string> &NonExtensions);
223 Features.emplace_back(
T(
E.PosTargetFeature));
225 Features.emplace_back(
T(
E.NegTargetFeature));
238#define EMIT_CPU_ALIAS
239#include "llvm/TargetParser/AArch64TargetParserDef.inc"
245 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...
StringRef - Represent a constant reference to a string, i.e.
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)
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)
unsigned getFMVPriority(ArrayRef< StringRef > Features)
uint64_t getCpuSupportsMask(ArrayRef< 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)
std::optional< ArchExtKind > ID
FMVInfo(StringRef Name, CPUFeatures Bit, std::optional< ArchExtKind > ID, unsigned Priority)