17 #include "llvm/ADT/StringSwitch.h" 19 using namespace clang;
22 const char *
const SparcTargetInfo::GCCRegNames[] = {
24 "r0",
"r1",
"r2",
"r3",
"r4",
"r5",
"r6",
"r7",
"r8",
"r9",
"r10",
25 "r11",
"r12",
"r13",
"r14",
"r15",
"r16",
"r17",
"r18",
"r19",
"r20",
"r21",
26 "r22",
"r23",
"r24",
"r25",
"r26",
"r27",
"r28",
"r29",
"r30",
"r31",
29 "f0",
"f1",
"f2",
"f3",
"f4",
"f5",
"f6",
"f7",
"f8",
"f9",
"f10",
30 "f11",
"f12",
"f13",
"f14",
"f15",
"f16",
"f17",
"f18",
"f19",
"f20",
"f21",
31 "f22",
"f23",
"f24",
"f25",
"f26",
"f27",
"f28",
"f29",
"f30",
"f31",
"f32",
32 "f34",
"f36",
"f38",
"f40",
"f42",
"f44",
"f46",
"f48",
"f50",
"f52",
"f54",
33 "f56",
"f58",
"f60",
"f62",
37 return llvm::makeArrayRef(GCCRegNames);
41 {{
"g0"},
"r0"}, {{
"g1"},
"r1"}, {{
"g2"},
"r2"}, {{
"g3"},
"r3"},
42 {{
"g4"},
"r4"}, {{
"g5"},
"r5"}, {{
"g6"},
"r6"}, {{
"g7"},
"r7"},
43 {{
"o0"},
"r8"}, {{
"o1"},
"r9"}, {{
"o2"},
"r10"}, {{
"o3"},
"r11"},
44 {{
"o4"},
"r12"}, {{
"o5"},
"r13"}, {{
"o6",
"sp"},
"r14"}, {{
"o7"},
"r15"},
45 {{
"l0"},
"r16"}, {{
"l1"},
"r17"}, {{
"l2"},
"r18"}, {{
"l3"},
"r19"},
46 {{
"l4"},
"r20"}, {{
"l5"},
"r21"}, {{
"l6"},
"r22"}, {{
"l7"},
"r23"},
47 {{
"i0"},
"r24"}, {{
"i1"},
"r25"}, {{
"i2"},
"r26"}, {{
"i3"},
"r27"},
48 {{
"i4"},
"r28"}, {{
"i5"},
"r29"}, {{
"i6",
"fp"},
"r30"}, {{
"i7"},
"r31"},
52 return llvm::makeArrayRef(GCCRegAliases);
56 return llvm::StringSwitch<bool>(Feature)
57 .Case(
"softfloat", SoftFloat)
76 SparcTargetInfo::CG_V8},
120 llvm_unreachable(
"Unexpected CPU kind");
136 Values.push_back(Info.Name);
154 if (
getTriple().getOS() != llvm::Triple::Solaris)
159 if (
getTriple().getOS() != llvm::Triple::Solaris) {
165 if (
getTriple().getVendor() == llvm::Triple::Myriad) {
166 std::string MyriadArchValue, Myriad2Value;
171 MyriadArchValue =
"__ma2100";
175 MyriadArchValue =
"__ma2150";
179 MyriadArchValue =
"__ma2155";
183 MyriadArchValue =
"__ma2450";
187 MyriadArchValue =
"__ma2455";
194 MyriadArchValue =
"__ma2080";
198 MyriadArchValue =
"__ma2085";
202 MyriadArchValue =
"__ma2480";
206 MyriadArchValue =
"__ma2485";
213 MyriadArchValue =
"__ma2100";
217 if (!MyriadArchValue.empty()) {
221 if (Myriad2Value ==
"2") {
224 }
else if (Myriad2Value ==
"3") {
239 if (
getTriple().getOS() != llvm::Triple::Solaris) {
249 if (Info.Generation ==
CG_V9)
250 Values.push_back(Info.Name);
void DefineStd(MacroBuilder &Builder, StringRef MacroName, const LangOptions &Opts)
DefineStd - Define a macro name and standard variants.
Defines the clang::MacroBuilder utility class.
void fillValidCPUList(SmallVectorImpl< StringRef > &Values) const override
Fill a SmallVectorImpl with the valid values to setCPU.
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 --------------------——===//
SparcTargetInfo::CPUGeneration Generation
void fillValidCPUList(SmallVectorImpl< StringRef > &Values) const override
Fill a SmallVectorImpl with the valid values to setCPU.
ArrayRef< TargetInfo::GCCRegAlias > getGCCRegAliases() const override
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
===-— Other target property query methods --------------------——===//
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
SparcTargetInfo::CPUKind Kind
static constexpr SparcCPUInfo CPUInfo[]
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
===-— Other target property query methods --------------------——===//
CPUGeneration getCPUGeneration(CPUKind Kind) const
Dataflow Directional Tag Classes.
enum clang::targets::SparcTargetInfo::CPUKind CPU
bool hasFeature(StringRef Feature) const override
Determine whether the given target has the given feature.
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".
CPUKind getCPUKind(StringRef Name) const