14#ifndef LLVM_TARGETPARSER_AARCH64TARGETPARSER_H
15#define LLVM_TARGETPARSER_AARCH64TARGETPARSER_H
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"
76 std::optional<ArchExtKind>
ID;
78 std::optional<ArchExtKind>
ID)
93#define EMIT_EXTENSION_DEPENDENCIES
94#include "llvm/TargetParser/AArch64TargetParserDef.inc"
108 return this->Name ==
Other.Name;
111 return this->Name !=
Other.Name;
125 if (this->Profile !=
Other.Profile)
128 return this->Version >
Other.Version;
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);
152#define EMIT_ARCHITECTURES
153#include "llvm/TargetParser/AArch64TargetParserDef.inc"
168#include "llvm/TargetParser/AArch64TargetParserDef.inc"
206 const bool AllowNoDashForm =
false);
214 std::vector<std::string> &NonExtensions);
220 Features.emplace_back(
T(
BaseArch->ArchFeature));
223 if (
E.PosTargetFeature.empty() || !
Touched.test(
E.ID))
226 Features.emplace_back(
T(
E.PosTargetFeature));
228 Features.emplace_back(
T(
E.NegTargetFeature));
241#define EMIT_CPU_ALIAS
242#include "llvm/TargetParser/AArch64TargetParserDef.inc"
247 std::vector<StringRef> &Features);
259LLVM_ABI std::optional<ExtensionInfo>
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.
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)
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
LLVM_ABI APInt getFMVPriority(ArrayRef< StringRef > Features)
LLVM_ABI void PrintSupportedExtensions()
LLVM_ABI std::optional< ExtensionInfo > targetFeatureToExtension(StringRef TargetFeature)
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.
bool is_superset(const ArchInfo &Other) const
StringRef getSubArch() const
bool implies(const ArchInfo &Other) const
AArch64::ExtensionBitset DefaultExts
static LLVM_ABI 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
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
LLVM_ABI void dump() const
const ArchInfo * BaseArch
LLVM_ABI void addArchDefaults(const ArchInfo &Arch)
LLVM_ABI void reconstructFromParsedFeatures(const std::vector< std::string > &Features, std::vector< std::string > &NonExtensions)
std::optional< ArchExtKind > ID
FMVInfo(StringRef Name, CPUFeatures FeatureBit, FeatPriorities PriorityBit, std::optional< ArchExtKind > ID)
FeatPriorities PriorityBit