16 #include "llvm/ADT/StringSwitch.h" 18 using namespace clang;
23 "x0",
"x1",
"x2",
"x3",
"x4",
"x5",
"x6",
"x7",
24 "x8",
"x9",
"x10",
"x11",
"x12",
"x13",
"x14",
"x15",
25 "x16",
"x17",
"x18",
"x19",
"x20",
"x21",
"x22",
"x23",
26 "x24",
"x25",
"x26",
"x27",
"x28",
"x29",
"x30",
"x31"};
27 return llvm::makeArrayRef(GCCRegNames);
32 {{
"zero"},
"x0"}, {{
"ra"},
"x1"}, {{
"sp"},
"x2"}, {{
"gp"},
"x3"},
33 {{
"tp"},
"x4"}, {{
"t0"},
"x5"}, {{
"t1"},
"x6"}, {{
"t2"},
"x7"},
34 {{
"s0"},
"x8"}, {{
"s1"},
"x9"}, {{
"a0"},
"x10"}, {{
"a1"},
"x11"},
35 {{
"a2"},
"x12"}, {{
"a3"},
"x13"}, {{
"a4"},
"x15"}, {{
"a5"},
"x15"},
36 {{
"a6"},
"x16"}, {{
"a7"},
"x17"}, {{
"s2"},
"x18"}, {{
"s3"},
"x19"},
37 {{
"s4"},
"x20"}, {{
"s5"},
"x21"}, {{
"s6"},
"x22"}, {{
"s7"},
"x23"},
38 {{
"s8"},
"x24"}, {{
"s9"},
"x25"}, {{
"s10"},
"x26"}, {{
"s11"},
"x27"},
39 {{
"t3"},
"x28"}, {{
"t4"},
"x29"}, {{
"t5"},
"x30"}, {{
"t6"},
"x31"}};
40 return llvm::makeArrayRef(GCCRegAliases);
47 bool Is64Bit =
getTriple().getArch() == llvm::Triple::riscv64;
48 Builder.
defineMacro(
"__riscv_xlen", Is64Bit ?
"64" :
"32");
74 bool Is64Bit =
getTriple().getArch() == llvm::Triple::riscv64;
75 return llvm::StringSwitch<bool>(Feature)
77 .Case(
"riscv32", !Is64Bit)
78 .Case(
"riscv64", Is64Bit)
90 for (
const auto &Feature : Features) {
93 else if (Feature ==
"+a")
95 else if (Feature ==
"+f")
97 else if (Feature ==
"+d")
99 else if (Feature ==
"+c")
Defines the clang::MacroBuilder utility class.
const llvm::Triple & getTriple() const
Returns the target triple of the primary target.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
Concrete class used by the front-end to report problems and issues.
bool handleTargetFeatures(std::vector< std::string > &Features, DiagnosticsEngine &Diags) override
Perform initialization based on the user configured set of features.
static const char *const GCCRegNames[]
ArrayRef< const char * > getGCCRegNames() const override
bool hasFeature(StringRef Feature) const override
Return true if has this feature, need to sync with handleTargetFeatures.
Dataflow Directional Tag Classes.
void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const override
===-— Other target property query methods --------------------——===//
void defineMacro(const Twine &Name, const Twine &Value="1")
Append a #define line for macro of the form "\#define Name Value\n".
ArrayRef< TargetInfo::GCCRegAlias > getGCCRegAliases() const override