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(
"v9.8a",
"v9.8-a")
51 .
Case(
"v8m.base",
"v8-m.base")
52 .
Case(
"v8m.main",
"v8-m.main")
53 .
Case(
"v8.1m.main",
"v8.1-m.main")
63 if (
A.starts_with(
"arm64_32"))
65 else if (
A.starts_with(
"arm64e"))
67 else if (
A.starts_with(
"arm64"))
69 else if (
A.starts_with(
"aarch64_32"))
71 else if (
A.starts_with(
"arm"))
73 else if (
A.starts_with(
"thumb"))
75 else if (
A.starts_with(
"aarch64")) {
80 if (
A.substr(offset, 3) ==
"_be")
101 if (
A.size() >= 2 && (
A[0] !=
'v' || !std::isdigit(
A[1])))
104 if (
A.contains(
"eb"))
146 bool EnablePAuthLR) {
147 PBP = {
"none",
"a_key",
false,
false,
false};
151 if (
Spec ==
"standard") {
152 PBP.
Scope =
"non-leaf";
162 Spec.split(Opts,
"+");
163 for (
int I = 0, E = Opts.
size();
I != E; ++
I) {
169 if (Opt ==
"pac-ret") {
170 PBP.
Scope =
"non-leaf";
174 for (;
I + 1 != E; ++
I) {
176 if (PACOpt ==
"leaf")
178 else if (PACOpt ==
"b-key")
180 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