25 .
Cases({
"v6m",
"v6sm",
"v6s-m"},
"v6-m")
26 .Cases({
"v6z",
"v6zk"},
"v6kz")
27 .Cases({
"v7",
"v7a",
"v7hl",
"v7l"},
"v7-a")
30 .
Case(
"v7em",
"v7e-m")
31 .
Cases({
"v8",
"v8a",
"v8l",
"aarch64",
"arm64"},
"v8-a")
32 .Case(
"v8.1a",
"v8.1-a")
33 .
Case(
"v8.2a",
"v8.2-a")
34 .
Case(
"v8.3a",
"v8.3-a")
35 .
Case(
"v8.4a",
"v8.4-a")
36 .
Case(
"v8.5a",
"v8.5-a")
37 .
Case(
"v8.6a",
"v8.6-a")
38 .
Case(
"v8.7a",
"v8.7-a")
39 .
Case(
"v8.8a",
"v8.8-a")
40 .
Case(
"v8.9a",
"v8.9-a")
42 .
Cases({
"v9",
"v9a"},
"v9-a")
43 .Case(
"v9.1a",
"v9.1-a")
44 .
Case(
"v9.2a",
"v9.2-a")
45 .
Case(
"v9.3a",
"v9.3-a")
46 .
Case(
"v9.4a",
"v9.4-a")
47 .
Case(
"v9.5a",
"v9.5-a")
48 .
Case(
"v9.6a",
"v9.6-a")
49 .
Case(
"v9.7a",
"v9.7-a")
50 .
Case(
"v8m.base",
"v8-m.base")
51 .
Case(
"v8m.main",
"v8-m.main")
52 .
Case(
"v8.1m.main",
"v8.1-m.main")
62 if (
A.starts_with(
"arm64_32"))
64 else if (
A.starts_with(
"arm64e"))
66 else if (
A.starts_with(
"arm64"))
68 else if (
A.starts_with(
"aarch64_32"))
70 else if (
A.starts_with(
"arm"))
72 else if (
A.starts_with(
"thumb"))
74 else if (
A.starts_with(
"aarch64")) {
79 if (
A.substr(offset, 3) ==
"_be")
100 if (
A.size() >= 2 && (
A[0] !=
'v' || !std::isdigit(
A[1])))
103 if (
A.contains(
"eb"))
145 bool EnablePAuthLR) {
146 PBP = {
"none",
"a_key",
false,
false,
false};
150 if (
Spec ==
"standard") {
151 PBP.
Scope =
"non-leaf";
161 Spec.split(Opts,
"+");
162 for (
int I = 0, E = Opts.
size();
I != E; ++
I) {
168 if (Opt ==
"pac-ret") {
169 PBP.
Scope =
"non-leaf";
173 for (;
I + 1 != E; ++
I) {
175 if (PACOpt ==
"leaf")
177 else if (PACOpt ==
"b-key")
179 else if (PACOpt ==
"pc")
This file defines the SmallVector class.
This file implements the StringSwitch template, which mimics a switch() statement whose cases are str...
Lightweight error class with error context and mandatory checking.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Represent a constant reference to a string, i.e.
static constexpr size_t npos
bool starts_with(StringRef Prefix) const
Check if this string starts with the given Prefix.
bool ends_with(StringRef Suffix) const
Check if this string ends with the given Suffix.
A switch()-like statement whose cases are string literals.
StringSwitch & Case(StringLiteral S, T Value)
StringSwitch & StartsWith(StringLiteral S, T Value)
StringSwitch & Cases(std::initializer_list< StringLiteral > CaseStrings, T Value)
Triple - Helper class for working with autoconf configuration names.
bool isOSWindows() const
Tests whether the OS is Windows.
bool isAArch64() const
Tests whether the target is AArch64 (little and big endian).
LLVM_ABI StringRef getCanonicalArchName(StringRef Arch)
MArch is expected to be of the form (arm|thumb)?(eb)?(v.
LLVM_ABI ISAKind parseArchISA(StringRef Arch)
LLVM_ABI StringRef getArchSynonym(StringRef Arch)
Converts e.g. "armv8" -> "armv8-a".
LLVM_ABI EndianKind parseArchEndian(StringRef Arch)
LLVM_ABI bool parseBranchProtection(StringRef Spec, ParsedBranchProtection &PBP, StringRef &Err, const llvm::Triple &Triple, bool EnablePAuthLR=false)
This is an optimization pass for GlobalISel generic memory operations.
bool BranchTargetEnforcement
bool BranchProtectionPAuthLR