18#include "llvm/ADT/StringExtras.h"
19#include "llvm/ADT/StringSwitch.h"
27#define GET_BUILTIN_STR_TABLE
28#include "clang/Basic/BuiltinsSystemZ.inc"
29#undef GET_BUILTIN_STR_TABLE
32#define GET_BUILTIN_INFOS
33#include "clang/Basic/BuiltinsSystemZ.inc"
34#undef GET_BUILTIN_INFOS
38#define GET_BUILTIN_PREFIXED_INFOS
39#include "clang/Basic/BuiltinsSystemZ.inc"
40#undef GET_BUILTIN_PREFIXED_INFOS
45const char *
const SystemZTargetInfo::GCCRegNames[] = {
46 "r0",
"r1",
"r2",
"r3",
"r4",
"r5",
"r6",
"r7",
47 "r8",
"r9",
"r10",
"r11",
"r12",
"r13",
"r14",
"r15",
48 "f0",
"f2",
"f4",
"f6",
"f1",
"f3",
"f5",
"f7",
49 "f8",
"f10",
"f12",
"f14",
"f9",
"f11",
"f13",
"f15",
50 "",
"cc",
"",
"",
"a0",
"a1",
51 "v16",
"v18",
"v20",
"v22",
"v17",
"v19",
"v21",
"v23",
52 "v24",
"v26",
"v28",
"v30",
"v25",
"v27",
"v29",
"v31"
56 {{
"v0"}, 16}, {{
"v2"}, 17}, {{
"v4"}, 18}, {{
"v6"}, 19},
57 {{
"v1"}, 20}, {{
"v3"}, 21}, {{
"v5"}, 22}, {{
"v7"}, 23},
58 {{
"v8"}, 24}, {{
"v10"}, 25}, {{
"v12"}, 26}, {{
"v14"}, 27},
59 {{
"v9"}, 28}, {{
"v11"}, 29}, {{
"v13"}, 30}, {{
"v15"}, 31}
109 if (StringRef(Name) ==
"@cc") {
125 {{
"arch8"}, 8}, {{
"z10"}, 8},
126 {{
"arch9"}, 9}, {{
"z196"}, 9},
127 {{
"arch10"}, 10}, {{
"zEC12"}, 10},
128 {{
"arch11"}, 11}, {{
"z13"}, 11},
129 {{
"arch12"}, 12}, {{
"z14"}, 12},
130 {{
"arch13"}, 13}, {{
"z15"}, 13},
131 {{
"arch14"}, 14}, {{
"z16"}, 14},
132 {{
"arch15"}, 15}, {{
"z17"}, 15},
138 return CR.
Name == Name;
142 return Rev->ISARevisionID;
148 Values.push_back(Rev.Name);
152 return llvm::StringSwitch<bool>(
Feature)
153 .Case(
"systemz",
true)
154 .Case(
"arch8", ISARevision >= 8)
155 .Case(
"arch9", ISARevision >= 9)
156 .Case(
"arch10", ISARevision >= 10)
157 .Case(
"arch11", ISARevision >= 11)
158 .Case(
"arch12", ISARevision >= 12)
159 .Case(
"arch13", ISARevision >= 13)
160 .Case(
"arch14", ISARevision >= 14)
161 .Case(
"arch15", ISARevision >= 15)
162 .Case(
"htm", HasTransactionalExecution)
163 .Case(
"vx", HasVector)
168 bool HasNonWeakDef)
const {
171 if (UnalignedSymbols && !HasNonWeakDef)
180 Builder.defineMacro(
"__GCC_ASM_FLAG_OUTPUTS__");
182 Builder.defineMacro(
"__s390__");
183 Builder.defineMacro(
"__s390x__");
184 Builder.defineMacro(
"__zarch__");
185 Builder.defineMacro(
"__LONG_DOUBLE_128__");
187 Builder.defineMacro(
"__ARCH__", Twine(ISARevision));
189 Builder.defineMacro(
"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1");
190 Builder.defineMacro(
"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");
191 Builder.defineMacro(
"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
192 Builder.defineMacro(
"__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
194 if (HasTransactionalExecution)
195 Builder.defineMacro(
"__HTM__");
197 Builder.defineMacro(
"__VX__");
199 Builder.defineMacro(
"__VEC__",
"10305");
203 if (!
getTriple().getOSVersion().empty()) {
204 llvm::VersionTuple
V =
getTriple().getOSVersion();
206 std::string Str(
"0x");
207 unsigned int Librel = 0x40000000;
208 Librel |=
V.getMajor() << 24;
209 Librel |=
V.getMinor().value_or(1) << 16;
210 Librel |=
V.getSubminor().value_or(0);
211 Str += llvm::utohexstr(Librel);
213 Builder.defineMacro(
"__TARGET_LIB__", Str);
static constexpr llvm::StringTable BuiltinStrings
static constexpr Builtin::Info PrefixedBuiltinInfos[]
const TargetInfo::AddlRegName GCCAddlRegNames[]
static constexpr ISANameRevision ISARevisions[]
static constexpr Builtin::Info BuiltinInfos[]
static constexpr unsigned NumBuiltins
Defines enum values for all the target-independent builtin functions.
Defines the clang::LangOptions interface.
Defines the clang::MacroBuilder utility class.
Enumerates target-specific builtins in their own namespaces within namespace clang.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
const llvm::Triple & getTriple() const
Returns the target triple of the primary target.
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
===-— Other target property query methods -----------------------—===//
bool validateAsmConstraint(const char *&Name, TargetInfo::ConstraintInfo &info) const override
unsigned getMinGlobalAlign(uint64_t Size, bool HasNonWeakDef) const override
getMinGlobalAlign - Return the minimum alignment of a global variable, unless its alignment is explic...
llvm::SmallVector< Builtin::InfosShard > getTargetBuiltins() const override
Return information about target-specific builtins for the current primary target, and info about whic...
ArrayRef< TargetInfo::AddlRegName > getGCCAddlRegNames() const override
ArrayRef< const char * > getGCCRegNames() const override
bool hasFeature(StringRef Feature) const override
Determine whether the given target has the given feature.
int getISARevision(StringRef Name) const
void fillValidCPUList(SmallVectorImpl< StringRef > &Values) const override
Fill a SmallVectorImpl with the valid values to setCPU.
The JSON file list parser is used to communicate input to InstallAPI.
The info used to represent each builtin.
void setOutputOperandBounds(unsigned Min, unsigned Max)
unsigned char MinGlobalAlign