[RISCV] Define preprocessor definitions for 'V' extension.

Differential Revision: https://reviews.llvm.org/D92650
This commit is contained in:
Hsiangkai Wang 2020-12-04 20:45:41 +08:00
parent db226cdf4c
commit 5e953a274b
3 changed files with 16 additions and 1 deletions

View File

@ -136,6 +136,9 @@ void RISCVTargetInfo::getTargetDefines(const LangOptions &Opts,
if (HasB)
Builder.defineMacro("__riscv_bitmanip");
if (HasV)
Builder.defineMacro("__riscv_vector");
if (HasZfh)
Builder.defineMacro("__riscv_zfh");
}
@ -153,6 +156,7 @@ bool RISCVTargetInfo::hasFeature(StringRef Feature) const {
.Case("d", HasD)
.Case("c", HasC)
.Case("experimental-b", HasB)
.Case("experimental-v", HasV)
.Case("experimental-zfh", HasZfh)
.Default(false);
}
@ -173,6 +177,8 @@ bool RISCVTargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
HasC = true;
else if (Feature == "+experimental-b")
HasB = true;
else if (Feature == "+experimental-v")
HasV = true;
else if (Feature == "+experimental-zfh")
HasZfh = true;
}

View File

@ -31,12 +31,13 @@ protected:
bool HasD;
bool HasC;
bool HasB;
bool HasV;
bool HasZfh;
public:
RISCVTargetInfo(const llvm::Triple &Triple, const TargetOptions &)
: TargetInfo(Triple), HasM(false), HasA(false), HasF(false), HasD(false),
HasC(false), HasB(false), HasZfh(false) {
HasC(false), HasB(false), HasV(false), HasZfh(false) {
LongDoubleWidth = 128;
LongDoubleAlign = 128;
LongDoubleFormat = &llvm::APFloat::IEEEquad();

View File

@ -79,6 +79,14 @@
// CHECK-DOUBLE-NOT: __riscv_float_abi_soft
// CHECK-DOUBLE-NOT: __riscv_float_abi_single
// RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \
// RUN: -march=rv32iv0p9 -x c -E -dM %s \
// RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s
// RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \
// RUN: -march=rv64iv0p9 -x c -E -dM %s \
// RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s
// CHECK-V-EXT: __riscv_vector 1
//
// RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions -march=rv32izfh0p1 -x c -E -dM %s \
// RUN: -o - | FileCheck --check-prefix=CHECK-ZFH-EXT %s
// RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions -march=rv64izfh0p1 -x c -E -dM %s \