[PATCH] D138930: [RISCV] Add macro to imply compiler availability on RISC-V Vector intrinsics version
eopXD marked 2 inline comments as done. eopXD added inline comments. Comment at: clang/lib/Basic/Targets/RISCV.cpp:195 Builder.defineMacro("__riscv_vector"); +// Currently we support the v0.10 RISC-V V intrinsics +unsigned Version = (0 * 100) + (10 * 1000); jrtc27 wrote: > eopXD wrote: > > asb wrote: > > > Nit: comment should end with full stop. > > Sorry I just landed the commit and missed this comment. May I ask what do > > yo mean by full stop here? Do you mean a period? > Full stop is British English for what is period in US English, yes Done in https://reviews.llvm.org/rGd8a27ac0e27f Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138930/new/ https://reviews.llvm.org/D138930 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D138930: [RISCV] Add macro to imply compiler availability on RISC-V Vector intrinsics version
jrtc27 added inline comments. Comment at: clang/lib/Basic/Targets/RISCV.cpp:196 +// Currently we support the v0.10 RISC-V V intrinsics +unsigned Version = (0 * 100) + (10 * 1000); +Builder.defineMacro("__riscv_v_intrinsic", Twine(Version)); Do we not have a function to do these (major, minor) -> integer encodings? I guess not since currently the only other instance is in the loop above. Might be worth factoring that out if we're going to grow more of these. Comment at: clang/lib/Basic/Targets/RISCV.cpp:195 Builder.defineMacro("__riscv_vector"); +// Currently we support the v0.10 RISC-V V intrinsics +unsigned Version = (0 * 100) + (10 * 1000); eopXD wrote: > asb wrote: > > Nit: comment should end with full stop. > Sorry I just landed the commit and missed this comment. May I ask what do yo > mean by full stop here? Do you mean a period? Full stop is British English for what is period in US English, yes Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138930/new/ https://reviews.llvm.org/D138930 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D138930: [RISCV] Add macro to imply compiler availability on RISC-V Vector intrinsics version
eopXD added inline comments. Comment at: clang/lib/Basic/Targets/RISCV.cpp:195 Builder.defineMacro("__riscv_vector"); +// Currently we support the v0.10 RISC-V V intrinsics +unsigned Version = (0 * 100) + (10 * 1000); asb wrote: > Nit: comment should end with full stop. Sorry I just landed the commit and missed this comment. May I ask what do yo mean by full stop here? Do you mean a period? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138930/new/ https://reviews.llvm.org/D138930 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D138930: [RISCV] Add macro to imply compiler availability on RISC-V Vector intrinsics version
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG482b8b493be0: [RISCV] Add macro to imply compiler availability on RISC-V Vector intrinsics… (authored by eopXD). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138930/new/ https://reviews.llvm.org/D138930 Files: clang/lib/Basic/Targets/RISCV.cpp 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 @@ -26,6 +26,7 @@ // CHECK-NOT: __riscv_zfh // CHECK-NOT: __riscv_v // CHECK-NOT: __riscv_vector +// CHECK-NOT: __riscv_v_intrinsic // CHECK-NOT: __riscv_zbkc // CHECK-NOT: __riscv_zbkx // CHECK-NOT: __riscv_zbkb @@ -262,6 +263,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64D-EXT %s // CHECK-ZVE64D-EXT: __riscv_v_elen 64 // CHECK-ZVE64D-EXT: __riscv_v_elen_fp 64 +// CHECK-ZVE64D-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE64D-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64D-EXT: __riscv_vector 1 // CHECK-ZVE64D-EXT: __riscv_zve32f 100{{$}} @@ -275,6 +277,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64F-EXT %s // CHECK-ZVE64F-EXT: __riscv_v_elen 64 // CHECK-ZVE64F-EXT: __riscv_v_elen_fp 32 +// CHECK-ZVE64F-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE64F-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64F-EXT: __riscv_vector 1 // CHECK-ZVE64F-EXT: __riscv_zve32f 100{{$}} @@ -287,6 +290,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64X-EXT %s // CHECK-ZVE64X-EXT: __riscv_v_elen 64 // CHECK-ZVE64X-EXT: __riscv_v_elen_fp 0 +// CHECK-ZVE64X-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE64X-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64X-EXT: __riscv_vector 1 // CHECK-ZVE64X-EXT: __riscv_zve32x 100{{$}} @@ -297,6 +301,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE32F-EXT %s // CHECK-ZVE32F-EXT: __riscv_v_elen 32 // CHECK-ZVE32F-EXT: __riscv_v_elen_fp 32 +// CHECK-ZVE32F-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE32F-EXT: __riscv_v_min_vlen 32 // CHECK-ZVE32F-EXT: __riscv_vector 1 // CHECK-ZVE32F-EXT: __riscv_zve32f 100{{$}} @@ -307,6 +312,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE32X-EXT %s // CHECK-ZVE32X-EXT: __riscv_v_elen 32 // CHECK-ZVE32X-EXT: __riscv_v_elen_fp 0 +// CHECK-ZVE32X-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE32X-EXT: __riscv_v_min_vlen 32 // CHECK-ZVE32X-EXT: __riscv_vector 1 // CHECK-ZVE32X-EXT: __riscv_zve32x 100{{$}} Index: clang/lib/Basic/Targets/RISCV.cpp === --- clang/lib/Basic/Targets/RISCV.cpp +++ clang/lib/Basic/Targets/RISCV.cpp @@ -190,8 +190,12 @@ if (ISAInfo->hasExtension("c")) Builder.defineMacro("__riscv_compressed"); - if (ISAInfo->hasExtension("zve32x")) + if (ISAInfo->hasExtension("zve32x")) { Builder.defineMacro("__riscv_vector"); +// Currently we support the v0.10 RISC-V V intrinsics +unsigned Version = (0 * 100) + (10 * 1000); +Builder.defineMacro("__riscv_v_intrinsic", Twine(Version)); + } } const Builtin::Info RISCVTargetInfo::BuiltinInfo[] = { Index: clang/test/Preprocessor/riscv-target-features.c === --- clang/test/Preprocessor/riscv-target-features.c +++ clang/test/Preprocessor/riscv-target-features.c @@ -26,6 +26,7 @@ // CHECK-NOT: __riscv_zfh // CHECK-NOT: __riscv_v // CHECK-NOT: __riscv_vector +// CHECK-NOT: __riscv_v_intrinsic // CHECK-NOT: __riscv_zbkc // CHECK-NOT: __riscv_zbkx // CHECK-NOT: __riscv_zbkb @@ -262,6 +263,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64D-EXT %s // CHECK-ZVE64D-EXT: __riscv_v_elen 64 // CHECK-ZVE64D-EXT: __riscv_v_elen_fp 64 +// CHECK-ZVE64D-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE64D-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64D-EXT: __riscv_vector 1 // CHECK-ZVE64D-EXT: __riscv_zve32f 100{{$}} @@ -275,6 +277,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64F-EXT %s // CHECK-ZVE64F-EXT: __riscv_v_elen 64 // CHECK-ZVE64F-EXT: __riscv_v_elen_fp 32 +// CHECK-ZVE64F-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE64F-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64F-EXT: __riscv_vector 1 // CHECK-ZVE64F-EXT: __riscv_zve32f 100{{$}} @@ -287,6 +290,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64X-EXT %s // CHECK-ZVE64X-EXT: __riscv_v_elen 64 // CHECK-ZVE64X-EXT: __riscv_v_elen_fp 0 +// CHECK-ZVE64X-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE64X-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64X-EXT: __riscv_vector 1 // CHECK-ZVE64X-EXT: __riscv_zve32x 100{{$}} @@ -297,6 +301,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE32F-EXT %s // CHECK-ZVE32F-EXT: __riscv_v_elen 32 // CHECK-ZVE32F-EXT: __riscv_v_elen_fp 32 +// CHECK-ZVE32F-EXT: __riscv_
[PATCH] D138930: [RISCV] Add macro to imply compiler availability on RISC-V Vector intrinsics version
asb accepted this revision. asb added a comment. LGTM, thanks! Comment at: clang/lib/Basic/Targets/RISCV.cpp:195 Builder.defineMacro("__riscv_vector"); +// Currently we support the v0.10 RISC-V V intrinsics +unsigned Version = (0 * 100) + (10 * 1000); Nit: comment should end with full stop. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138930/new/ https://reviews.llvm.org/D138930 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D138930: [RISCV] Add macro to imply compiler availability on RISC-V Vector intrinsics version
kito-cheng accepted this revision. kito-cheng added a comment. This revision is now accepted and ready to land. LGTM. I am thinking that we should use same way to define both `__riscv_v_intrinsic_overloading`[1] and `__riscv_v_intrinsic`, `__riscv_v_intrinsic_overloading` is defined in `riscv_vector.h` now, maybe we should defined that here too. https://github.com/llvm/llvm-project/blob/main/clang/utils/TableGen/RISCVVEmitter.cpp#L401 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138930/new/ https://reviews.llvm.org/D138930 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D138930: [RISCV] Add macro to imply compiler availability on RISC-V Vector intrinsics version
eopXD updated this revision to Diff 478784. eopXD added a comment. Add check for end-line. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138930/new/ https://reviews.llvm.org/D138930 Files: clang/lib/Basic/Targets/RISCV.cpp 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 @@ -26,6 +26,7 @@ // CHECK-NOT: __riscv_zfh // CHECK-NOT: __riscv_v // CHECK-NOT: __riscv_vector +// CHECK-NOT: __riscv_v_intrinsic // CHECK-NOT: __riscv_zbkc // CHECK-NOT: __riscv_zbkx // CHECK-NOT: __riscv_zbkb @@ -262,6 +263,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64D-EXT %s // CHECK-ZVE64D-EXT: __riscv_v_elen 64 // CHECK-ZVE64D-EXT: __riscv_v_elen_fp 64 +// CHECK-ZVE64D-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE64D-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64D-EXT: __riscv_vector 1 // CHECK-ZVE64D-EXT: __riscv_zve32f 100{{$}} @@ -275,6 +277,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64F-EXT %s // CHECK-ZVE64F-EXT: __riscv_v_elen 64 // CHECK-ZVE64F-EXT: __riscv_v_elen_fp 32 +// CHECK-ZVE64F-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE64F-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64F-EXT: __riscv_vector 1 // CHECK-ZVE64F-EXT: __riscv_zve32f 100{{$}} @@ -287,6 +290,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64X-EXT %s // CHECK-ZVE64X-EXT: __riscv_v_elen 64 // CHECK-ZVE64X-EXT: __riscv_v_elen_fp 0 +// CHECK-ZVE64X-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE64X-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64X-EXT: __riscv_vector 1 // CHECK-ZVE64X-EXT: __riscv_zve32x 100{{$}} @@ -297,6 +301,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE32F-EXT %s // CHECK-ZVE32F-EXT: __riscv_v_elen 32 // CHECK-ZVE32F-EXT: __riscv_v_elen_fp 32 +// CHECK-ZVE32F-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE32F-EXT: __riscv_v_min_vlen 32 // CHECK-ZVE32F-EXT: __riscv_vector 1 // CHECK-ZVE32F-EXT: __riscv_zve32f 100{{$}} @@ -307,6 +312,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE32X-EXT %s // CHECK-ZVE32X-EXT: __riscv_v_elen 32 // CHECK-ZVE32X-EXT: __riscv_v_elen_fp 0 +// CHECK-ZVE32X-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE32X-EXT: __riscv_v_min_vlen 32 // CHECK-ZVE32X-EXT: __riscv_vector 1 // CHECK-ZVE32X-EXT: __riscv_zve32x 100{{$}} Index: clang/lib/Basic/Targets/RISCV.cpp === --- clang/lib/Basic/Targets/RISCV.cpp +++ clang/lib/Basic/Targets/RISCV.cpp @@ -190,8 +190,12 @@ if (ISAInfo->hasExtension("c")) Builder.defineMacro("__riscv_compressed"); - if (ISAInfo->hasExtension("zve32x")) + if (ISAInfo->hasExtension("zve32x")) { Builder.defineMacro("__riscv_vector"); +// Currently we support the v0.10 RISC-V V intrinsics +unsigned Version = (0 * 100) + (10 * 1000); +Builder.defineMacro("__riscv_v_intrinsic", Twine(Version)); + } } const Builtin::Info RISCVTargetInfo::BuiltinInfo[] = { Index: clang/test/Preprocessor/riscv-target-features.c === --- clang/test/Preprocessor/riscv-target-features.c +++ clang/test/Preprocessor/riscv-target-features.c @@ -26,6 +26,7 @@ // CHECK-NOT: __riscv_zfh // CHECK-NOT: __riscv_v // CHECK-NOT: __riscv_vector +// CHECK-NOT: __riscv_v_intrinsic // CHECK-NOT: __riscv_zbkc // CHECK-NOT: __riscv_zbkx // CHECK-NOT: __riscv_zbkb @@ -262,6 +263,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64D-EXT %s // CHECK-ZVE64D-EXT: __riscv_v_elen 64 // CHECK-ZVE64D-EXT: __riscv_v_elen_fp 64 +// CHECK-ZVE64D-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE64D-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64D-EXT: __riscv_vector 1 // CHECK-ZVE64D-EXT: __riscv_zve32f 100{{$}} @@ -275,6 +277,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64F-EXT %s // CHECK-ZVE64F-EXT: __riscv_v_elen 64 // CHECK-ZVE64F-EXT: __riscv_v_elen_fp 32 +// CHECK-ZVE64F-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE64F-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64F-EXT: __riscv_vector 1 // CHECK-ZVE64F-EXT: __riscv_zve32f 100{{$}} @@ -287,6 +290,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64X-EXT %s // CHECK-ZVE64X-EXT: __riscv_v_elen 64 // CHECK-ZVE64X-EXT: __riscv_v_elen_fp 0 +// CHECK-ZVE64X-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE64X-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64X-EXT: __riscv_vector 1 // CHECK-ZVE64X-EXT: __riscv_zve32x 100{{$}} @@ -297,6 +301,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE32F-EXT %s // CHECK-ZVE32F-EXT: __riscv_v_elen 32 // CHECK-ZVE32F-EXT: __riscv_v_elen_fp 32 +// CHECK-ZVE32F-EXT: __riscv_v_intrinsic 1{{$}} // CHECK-ZVE32F-EXT: __riscv_v_min_vlen 32 // CHECK-ZVE32F-EXT: __riscv_vector 1 // CHECK-ZVE32F-EXT: __riscv_zve32f 100{{$}} @@ -307,6 +312
[PATCH] D138930: [RISCV] Add macro to imply compiler availability on RISC-V Vector intrinsics version
craig.topper added inline comments. Comment at: clang/test/Preprocessor/riscv-target-features.c:266 // CHECK-ZVE64D-EXT: __riscv_v_elen_fp 64 +// CHECK-ZVE64D-EXT: __riscv_v_intrinsic 1 // CHECK-ZVE64D-EXT: __riscv_v_min_vlen 64 Check to end of line like the zve* versions Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138930/new/ https://reviews.llvm.org/D138930 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D138930: [RISCV] Add macro to imply compiler availability on RISC-V Vector intrinsics version
eopXD created this revision. eopXD added reviewers: craig.topper, kito-cheng, jrtc27, reames, asb. Herald added subscribers: sunshaoce, VincentWu, StephenFan, vkmr, frasercrmck, evandro, luismarques, apazos, sameer.abuasal, s.egerton, Jim, benna, psnobl, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, shiva0217, niosHD, sabuasal, simoncook, johnrusso, rbar, arichardson. Herald added a project: All. eopXD requested review of this revision. Herald added subscribers: cfe-commits, pcwang-thead, MaskRay. Herald added a project: clang. According to version_macro.adoc under rvv-intrinsic-doc, the compiler should have a macro to imply such availability. Link: https://github.com/riscv-non-isa/rvv-intrinsic-doc/blob/master/version_macro.adoc Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D138930 Files: clang/lib/Basic/Targets/RISCV.cpp 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 @@ -26,6 +26,7 @@ // CHECK-NOT: __riscv_zfh // CHECK-NOT: __riscv_v // CHECK-NOT: __riscv_vector +// CHECK-NOT: __riscv_v_intrinsic // CHECK-NOT: __riscv_zbkc // CHECK-NOT: __riscv_zbkx // CHECK-NOT: __riscv_zbkb @@ -262,6 +263,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64D-EXT %s // CHECK-ZVE64D-EXT: __riscv_v_elen 64 // CHECK-ZVE64D-EXT: __riscv_v_elen_fp 64 +// CHECK-ZVE64D-EXT: __riscv_v_intrinsic 1 // CHECK-ZVE64D-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64D-EXT: __riscv_vector 1 // CHECK-ZVE64D-EXT: __riscv_zve32f 100{{$}} @@ -275,6 +277,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64F-EXT %s // CHECK-ZVE64F-EXT: __riscv_v_elen 64 // CHECK-ZVE64F-EXT: __riscv_v_elen_fp 32 +// CHECK-ZVE64F-EXT: __riscv_v_intrinsic 1 // CHECK-ZVE64F-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64F-EXT: __riscv_vector 1 // CHECK-ZVE64F-EXT: __riscv_zve32f 100{{$}} @@ -287,6 +290,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64X-EXT %s // CHECK-ZVE64X-EXT: __riscv_v_elen 64 // CHECK-ZVE64X-EXT: __riscv_v_elen_fp 0 +// CHECK-ZVE64X-EXT: __riscv_v_intrinsic 1 // CHECK-ZVE64X-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64X-EXT: __riscv_vector 1 // CHECK-ZVE64X-EXT: __riscv_zve32x 100{{$}} @@ -297,6 +301,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE32F-EXT %s // CHECK-ZVE32F-EXT: __riscv_v_elen 32 // CHECK-ZVE32F-EXT: __riscv_v_elen_fp 32 +// CHECK-ZVE32F-EXT: __riscv_v_intrinsic 1 // CHECK-ZVE32F-EXT: __riscv_v_min_vlen 32 // CHECK-ZVE32F-EXT: __riscv_vector 1 // CHECK-ZVE32F-EXT: __riscv_zve32f 100{{$}} @@ -307,6 +312,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE32X-EXT %s // CHECK-ZVE32X-EXT: __riscv_v_elen 32 // CHECK-ZVE32X-EXT: __riscv_v_elen_fp 0 +// CHECK-ZVE32X-EXT: __riscv_v_intrinsic 1 // CHECK-ZVE32X-EXT: __riscv_v_min_vlen 32 // CHECK-ZVE32X-EXT: __riscv_vector 1 // CHECK-ZVE32X-EXT: __riscv_zve32x 100{{$}} Index: clang/lib/Basic/Targets/RISCV.cpp === --- clang/lib/Basic/Targets/RISCV.cpp +++ clang/lib/Basic/Targets/RISCV.cpp @@ -190,8 +190,12 @@ if (ISAInfo->hasExtension("c")) Builder.defineMacro("__riscv_compressed"); - if (ISAInfo->hasExtension("zve32x")) + if (ISAInfo->hasExtension("zve32x")) { Builder.defineMacro("__riscv_vector"); +// Currently we support the v0.10 RISC-V V intrinsics +unsigned Version = (0 * 100) + (10 * 1000); +Builder.defineMacro("__riscv_v_intrinsic", Twine(Version)); + } } const Builtin::Info RISCVTargetInfo::BuiltinInfo[] = { Index: clang/test/Preprocessor/riscv-target-features.c === --- clang/test/Preprocessor/riscv-target-features.c +++ clang/test/Preprocessor/riscv-target-features.c @@ -26,6 +26,7 @@ // CHECK-NOT: __riscv_zfh // CHECK-NOT: __riscv_v // CHECK-NOT: __riscv_vector +// CHECK-NOT: __riscv_v_intrinsic // CHECK-NOT: __riscv_zbkc // CHECK-NOT: __riscv_zbkx // CHECK-NOT: __riscv_zbkb @@ -262,6 +263,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64D-EXT %s // CHECK-ZVE64D-EXT: __riscv_v_elen 64 // CHECK-ZVE64D-EXT: __riscv_v_elen_fp 64 +// CHECK-ZVE64D-EXT: __riscv_v_intrinsic 1 // CHECK-ZVE64D-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64D-EXT: __riscv_vector 1 // CHECK-ZVE64D-EXT: __riscv_zve32f 100{{$}} @@ -275,6 +277,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64F-EXT %s // CHECK-ZVE64F-EXT: __riscv_v_elen 64 // CHECK-ZVE64F-EXT: __riscv_v_elen_fp 32 +// CHECK-ZVE64F-EXT: __riscv_v_intrinsic 1 // CHECK-ZVE64F-EXT: __riscv_v_min_vlen 64 // CHECK-ZVE64F-EXT: __riscv_vector 1 // CHECK-ZVE64F-EXT: __riscv_zve32f 100{{$}} @@ -287,6 +290,7 @@ // RUN: | FileCheck --check-prefix=CHECK-ZVE64X-EXT %s // CHECK-ZVE64X-EXT: __riscv_v_elen 64