24 if (Arch.
size() >= 2 && Arch[0] ==
'v' && std::isdigit(Arch[1]))
25 return (Arch[1] - 48);
34 std::optional<CpuInfo> Cpu =
parseCpu(CPU);
42 if (
A->getSubArch() == SubArch)
49 for (
const StringRef &FeatureStr : FeatureStrs) {
51 if (FeatureStr ==
E.Name) {
52 FeaturesMask |= (1ULL <<
E.CPUFeature);
61 std::vector<StringRef> &Features) {
64 if (InputExts.
test(
E.ID) && !
E.Feature.empty())
65 Features.push_back(
E.Feature);
81 if (!AE.NegFeature.empty() && ArchExtBase == AE.Name)
87 if (!AE.Feature.empty() && ArchExt == AE.Name)
101 return TT.isAndroid() || TT.isOSDarwin() || TT.isOSFuchsia() ||
102 TT.isOSWindows() || TT.isOHOSFamily();
113 if (
A->Name.endswith(Syn))
121 if (ArchExt ==
A.Name)
140 outs() <<
"All available -march extensions for AArch64\n\n"
142 << (DescMap.
empty() ?
"\n" :
"Description\n");
145 if (!Ext.Feature.empty()) {
146 std::string Description = DescMap[Ext.Name].str();
148 <<
format(Description.empty() ?
"%s\n" :
"%-20s%s\n",
149 Ext.Name.str().c_str(), Description.c_str());
static unsigned checkArchVersion(llvm::StringRef Arch)
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
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...
void push_back(const T &Elt)
StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...
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 size_t size() const
size - Get the string size.
bool startswith(StringRef Prefix) const
Triple - Helper class for working with autoconf configuration names.
static constexpr std::array< const ArchInfo *, 16 > ArchInfos
void PrintSupportedExtensions(StringMap< StringRef > DescMap)
bool isX18ReservedByDefault(const Triple &TT)
StringRef getArchExtFeature(StringRef ArchExt)
std::optional< ExtensionInfo > parseArchExtension(StringRef Extension)
constexpr CpuInfo CpuInfos[]
std::optional< CpuInfo > parseCpu(StringRef Name)
uint64_t getCpuSupportsMask(ArrayRef< StringRef > FeatureStrs)
constexpr ArchInfo ARMV8A
void fillValidCPUArchList(SmallVectorImpl< StringRef > &Values)
std::optional< ArchInfo > parseArch(StringRef Arch)
constexpr CpuAlias CpuAliases[]
std::optional< ArchInfo > getArchForCpu(StringRef CPU)
StringRef resolveCPUAlias(StringRef CPU)
bool getExtensionFeatures(const AArch64::ExtensionBitset &Extensions, std::vector< StringRef > &Features)
constexpr ExtensionInfo Extensions[]
StringRef getCanonicalArchName(StringRef Arch)
MArch is expected to be of the form (arm|thumb)?(eb)?(v.
StringRef getArchSynonym(StringRef Arch)
Converts e.g. "armv8" -> "armv8-a".
@ C
The default llvm calling convention, compatible with C.
This is an optimization pass for GlobalISel generic memory operations.
raw_fd_ostream & outs()
This returns a reference to a raw_fd_ostream for standard output.
format_object< Ts... > format(const char *Fmt, const Ts &... Vals)
These are helper functions used to produce formatted output.
FormattedString left_justify(StringRef Str, unsigned Width)
left_justify - append spaces after string so total output is Width characters.
static std::optional< ArchInfo > findBySubArch(StringRef SubArch)