Changeset View
Changeset View
Standalone View
Standalone View
clang/lib/Basic/Targets/RISCV.cpp
Show First 20 Lines • Show All 59 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
void RISCVTargetInfo::getTargetDefines(const LangOptions &Opts, | void RISCVTargetInfo::getTargetDefines(const LangOptions &Opts, | ||||
MacroBuilder &Builder) const { | MacroBuilder &Builder) const { | ||||
Builder.defineMacro("__ELF__"); | Builder.defineMacro("__ELF__"); | ||||
Builder.defineMacro("__riscv"); | Builder.defineMacro("__riscv"); | ||||
bool Is64Bit = getTriple().getArch() == llvm::Triple::riscv64; | bool Is64Bit = getTriple().getArch() == llvm::Triple::riscv64; | ||||
Builder.defineMacro("__riscv_xlen", Is64Bit ? "64" : "32"); | Builder.defineMacro("__riscv_xlen", Is64Bit ? "64" : "32"); | ||||
// TODO: modify when more code models and ABIs are supported. | // TODO: modify when more code models are supported. | ||||
Builder.defineMacro("__riscv_cmodel_medlow"); | Builder.defineMacro("__riscv_cmodel_medlow"); | ||||
StringRef ABIName = getABI(); | |||||
if (ABIName == "ilp32f" || ABIName == "lp64f") | |||||
Builder.defineMacro("__riscv_float_abi_single"); | |||||
else if (ABIName == "ilp32d" || ABIName == "lp64d") | |||||
Builder.defineMacro("__riscv_float_abi_double"); | |||||
else if (ABIName == "ilp32e") | |||||
Builder.defineMacro("__riscv_abi_rve"); | |||||
else | |||||
Builder.defineMacro("__riscv_float_abi_soft"); | Builder.defineMacro("__riscv_float_abi_soft"); | ||||
if (HasM) { | if (HasM) { | ||||
Builder.defineMacro("__riscv_mul"); | Builder.defineMacro("__riscv_mul"); | ||||
Builder.defineMacro("__riscv_div"); | Builder.defineMacro("__riscv_div"); | ||||
Builder.defineMacro("__riscv_muldiv"); | Builder.defineMacro("__riscv_muldiv"); | ||||
} | } | ||||
if (HasA) | if (HasA) | ||||
▲ Show 20 Lines • Show All 45 Lines • Show Last 20 Lines |