HsiangKai created this revision. HsiangKai added reviewers: craig.topper, asb, luismarques, evandro. Herald added subscribers: frasercrmck, NickHung, apazos, sameer.abuasal, pzheng, s.egerton, lenary, Jim, benna, psnobl, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, shiva0217, kito-cheng, niosHD, sabuasal, simoncook, johnrusso, rbar. HsiangKai requested review of this revision. Herald added subscribers: cfe-commits, MaskRay. Herald added a project: clang.
Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D92650 Files: clang/lib/Basic/Targets/RISCV.cpp clang/lib/Basic/Targets/RISCV.h clang/test/Preprocessor/riscv-target-features.c Index: clang/test/Preprocessor/riscv-target-features.c =================================================================== --- clang/test/Preprocessor/riscv-target-features.c +++ clang/test/Preprocessor/riscv-target-features.c @@ -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 \ Index: clang/lib/Basic/Targets/RISCV.h =================================================================== --- clang/lib/Basic/Targets/RISCV.h +++ clang/lib/Basic/Targets/RISCV.h @@ -31,12 +31,13 @@ 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(); Index: clang/lib/Basic/Targets/RISCV.cpp =================================================================== --- clang/lib/Basic/Targets/RISCV.cpp +++ clang/lib/Basic/Targets/RISCV.cpp @@ -136,6 +136,9 @@ if (HasB) Builder.defineMacro("__riscv_bitmanip"); + if (HasV) + Builder.defineMacro("__riscv_vector"); + if (HasZfh) Builder.defineMacro("__riscv_zfh"); } @@ -153,6 +156,7 @@ .Case("d", HasD) .Case("c", HasC) .Case("experimental-b", HasB) + .Case("experimental-v", HasV) .Case("experimental-zfh", HasZfh) .Default(false); } @@ -173,6 +177,8 @@ HasC = true; else if (Feature == "+experimental-b") HasB = true; + else if (Feature == "+experimental-v") + HasV = true; else if (Feature == "+experimental-zfh") HasZfh = true; }
Index: clang/test/Preprocessor/riscv-target-features.c =================================================================== --- clang/test/Preprocessor/riscv-target-features.c +++ clang/test/Preprocessor/riscv-target-features.c @@ -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 \ Index: clang/lib/Basic/Targets/RISCV.h =================================================================== --- clang/lib/Basic/Targets/RISCV.h +++ clang/lib/Basic/Targets/RISCV.h @@ -31,12 +31,13 @@ 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(); Index: clang/lib/Basic/Targets/RISCV.cpp =================================================================== --- clang/lib/Basic/Targets/RISCV.cpp +++ clang/lib/Basic/Targets/RISCV.cpp @@ -136,6 +136,9 @@ if (HasB) Builder.defineMacro("__riscv_bitmanip"); + if (HasV) + Builder.defineMacro("__riscv_vector"); + if (HasZfh) Builder.defineMacro("__riscv_zfh"); } @@ -153,6 +156,7 @@ .Case("d", HasD) .Case("c", HasC) .Case("experimental-b", HasB) + .Case("experimental-v", HasV) .Case("experimental-zfh", HasZfh) .Default(false); } @@ -173,6 +177,8 @@ HasC = true; else if (Feature == "+experimental-b") HasB = true; + else if (Feature == "+experimental-v") + HasV = true; else if (Feature == "+experimental-zfh") HasZfh = true; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits