14#ifndef LLVM_TARGETPARSER_AARCH64TARGETPARSER_H
15#define LLVM_TARGETPARSER_AARCH64TARGETPARSER_H
43 "Number of features in CPUFeatures are limited to 62 entries");
46#define EMIT_ARCHEXTKIND_ENUM
47#include "llvm/TargetParser/AArch64TargetParserDef.inc"
70#define EMIT_EXTENSIONS
71#include "llvm/TargetParser/AArch64TargetParserDef.inc"
77 std::optional<ArchExtKind>
ID;
79 std::optional<ArchExtKind>
ID)
94#define EMIT_EXTENSION_DEPENDENCIES
95#include "llvm/TargetParser/AArch64TargetParserDef.inc"
109 return this->Name ==
Other.Name;
112 return this->Name !=
Other.Name;
126 if (this->Profile !=
Other.Profile)
129 return this->Version >
Other.Version;
131 if (this->Version.
getMajor() == 9 &&
Other.Version.getMajor() == 8) {
133 "AArch64::ArchInfo should have a minor version.");
134 return this->Version.
getMinor().value_or(0) + 5 >=
135 Other.Version.getMinor().value_or(0);
153#define EMIT_ARCHITECTURES
154#include "llvm/TargetParser/AArch64TargetParserDef.inc"
169#include "llvm/TargetParser/AArch64TargetParserDef.inc"
207 const bool AllowNoDashForm =
false);
215 std::vector<std::string> &NonExtensions);
221 Features.emplace_back(
T(
BaseArch->ArchFeature));
224 if (
E.PosTargetFeature.empty() || !
Touched.test(
E.ID))
227 Features.emplace_back(
T(
E.PosTargetFeature));
229 Features.emplace_back(
T(
E.NegTargetFeature));
242#define EMIT_CPU_ALIAS
243#include "llvm/TargetParser/AArch64TargetParserDef.inc"
248 std::vector<StringRef> &Features);
260LLVM_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