18 #include "llvm/ADT/StringSwitch.h" 20 using namespace clang;
24 #define BUILTIN(ID, TYPE, ATTRS) \ 25 {#ID, TYPE, ATTRS, nullptr, ALL_LANGUAGES, nullptr}, 26 #define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) \ 27 {#ID, TYPE, ATTRS, nullptr, ALL_LANGUAGES, FEATURE}, 28 #include "clang/Basic/BuiltinsSystemZ.def" 31 const char *
const SystemZTargetInfo::GCCRegNames[] = {
32 "r0",
"r1",
"r2",
"r3",
"r4",
"r5",
"r6",
"r7",
33 "r8",
"r9",
"r10",
"r11",
"r12",
"r13",
"r14",
"r15",
34 "f0",
"f2",
"f4",
"f6",
"f1",
"f3",
"f5",
"f7",
35 "f8",
"f10",
"f12",
"f14",
"f9",
"f11",
"f13",
"f15",
36 "",
"cc",
"",
"",
"a0",
"a1",
37 "v16",
"v18",
"v20",
"v22",
"v17",
"v19",
"v21",
"v23",
38 "v24",
"v26",
"v28",
"v30",
"v25",
"v27",
"v29",
"v31" 42 {{
"v0"}, 16}, {{
"v2"}, 17}, {{
"v4"}, 18}, {{
"v6"}, 19},
43 {{
"v1"}, 20}, {{
"v3"}, 21}, {{
"v5"}, 22}, {{
"v7"}, 23},
44 {{
"v8"}, 24}, {{
"v10"}, 25}, {{
"v12"}, 26}, {{
"v14"}, 27},
45 {{
"v9"}, 28}, {{
"v11"}, 29}, {{
"v13"}, 30}, {{
"v15"}, 31}
49 return llvm::makeArrayRef(GCCRegNames);
53 return llvm::makeArrayRef(GCCAddlRegNames);
90 {{
"arch8"}, 8}, {{
"z10"}, 8},
91 {{
"arch9"}, 9}, {{
"z196"}, 9},
92 {{
"arch10"}, 10}, {{
"zEC12"}, 10},
93 {{
"arch11"}, 11}, {{
"z13"}, 11},
94 {{
"arch12"}, 12}, {{
"z14"}, 12},
95 {{
"arch13"}, 13}, {{
"z15"}, 13}
101 return CR.
Name == Name;
105 return Rev->ISARevisionID;
111 Values.push_back(Rev.Name);
115 return llvm::StringSwitch<bool>(Feature)
116 .Case(
"systemz",
true)
117 .Case(
"arch8", ISARevision >= 8)
118 .Case(
"arch9", ISARevision >= 9)
119 .Case(
"arch10", ISARevision >= 10)
120 .Case(
"arch11", ISARevision >= 11)
121 .Case(
"arch12", ISARevision >= 12)
122 .Case(
"arch13", ISARevision >= 13)
123 .Case(
"htm", HasTransactionalExecution)
124 .Case(
"vx", HasVector)
135 Builder.
defineMacro(
"__ARCH__", Twine(ISARevision));
137 Builder.
defineMacro(
"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1");
138 Builder.
defineMacro(
"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");
139 Builder.
defineMacro(
"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
140 Builder.
defineMacro(
"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
142 if (HasTransactionalExecution)
Defines the clang::MacroBuilder utility class.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
void fillValidCPUList(SmallVectorImpl< StringRef > &Values) const override
Fill a SmallVectorImpl with the valid values to setCPU.
static constexpr ISANameRevision ISARevisions[]
ArrayRef< Builtin::Info > getTargetBuiltins() const override
Return information about target-specific builtins for the current primary target, and info about whic...
Defines the clang::LangOptions interface.
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
===-— Other target property query methods --------------------——===//
Enumerates target-specific builtins in their own namespaces within namespace clang.
bool hasFeature(StringRef Feature) const override
Determine whether the given target has the given feature.
const TargetInfo::AddlRegName GCCAddlRegNames[]
Dataflow Directional Tag Classes.
bool validateAsmConstraint(const char *&Name, TargetInfo::ConstraintInfo &info) const override
ArrayRef< TargetInfo::AddlRegName > getGCCAddlRegNames() const override
ArrayRef< const char * > getGCCRegNames() const override
void defineMacro(const Twine &Name, const Twine &Value="1")
Append a #define line for macro of the form "\#define Name Value\n".
Defines enum values for all the target-independent builtin functions.
int getISARevision(StringRef Name) const