[llvm] [clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/4vtomat closed https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[llvm] [clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/4vtomat updated https://github.com/llvm/llvm-project/pull/66860 >From a43d20450eef2d41e88ab867de2656e2fd9631b7 Mon Sep 17 00:00:00 2001 From: 4vtomat Date: Tue, 19 Sep 2023 23:06:01 -0700 Subject: [PATCH 1/3] [RISCV] Fix wrong implication for zvknhb. --- clang/include/clang/Basic/riscv_vector.td| 9 - .../include/clang/Support/RISCVVIntrinsicUtils.h | 5 +++-- clang/lib/Sema/SemaRISCVVectorLookup.cpp | 1 + clang/test/Sema/zvk-invalid-zvknha.c | 11 +++ clang/utils/TableGen/RISCVVEmitter.cpp | 1 + llvm/lib/Support/RISCVISAInfo.cpp| 2 -- llvm/lib/Target/RISCV/RISCVFeatures.td | 16 +++- llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td | 16 +++- llvm/test/CodeGen/RISCV/attributes.ll| 16 llvm/test/CodeGen/RISCV/rvv/vsha2ch.ll | 6 ++ llvm/test/CodeGen/RISCV/rvv/vsha2cl.ll | 6 ++ llvm/test/CodeGen/RISCV/rvv/vsha2ms.ll | 6 ++ llvm/test/MC/RISCV/attribute-arch.s | 8 llvm/test/MC/RISCV/rvv/zvknh.s | 6 +++--- 14 files changed, 79 insertions(+), 30 deletions(-) create mode 100644 clang/test/Sema/zvk-invalid-zvknha.c diff --git a/clang/include/clang/Basic/riscv_vector.td b/clang/include/clang/Basic/riscv_vector.td index 8bbfd1cef5106a5..1d24b4e75f9dd5f 100644 --- a/clang/include/clang/Basic/riscv_vector.td +++ b/clang/include/clang/Basic/riscv_vector.td @@ -2588,8 +2588,15 @@ let UnMaskedPolicyScheme = HasPolicyOperand, HasMasked = false in { defm vaesz : RVVOutBuiltinSetZvk; } - // zvknha or zvknhb + // zvknha let RequiredFeatures = ["Zvknha"] in { +defm vsha2ch : RVVOutOp2BuiltinSetVVZvk<"i">; +defm vsha2cl : RVVOutOp2BuiltinSetVVZvk<"i">; +defm vsha2ms : RVVOutOp2BuiltinSetVVZvk<"i">; + } + + // zvknhb + let RequiredFeatures = ["Zvknhb"] in { defm vsha2ch : RVVOutOp2BuiltinSetVVZvk<"il">; defm vsha2cl : RVVOutOp2BuiltinSetVVZvk<"il">; defm vsha2ms : RVVOutOp2BuiltinSetVVZvk<"il">; diff --git a/clang/include/clang/Support/RISCVVIntrinsicUtils.h b/clang/include/clang/Support/RISCVVIntrinsicUtils.h index 90d99b7efa8aff9..c455bb2c45889f3 100644 --- a/clang/include/clang/Support/RISCVVIntrinsicUtils.h +++ b/clang/include/clang/Support/RISCVVIntrinsicUtils.h @@ -493,8 +493,9 @@ enum RVVRequire : uint16_t { RVV_REQ_Zvkg = 1 << 8, RVV_REQ_Zvkned = 1 << 9, RVV_REQ_Zvknha = 1 << 10, - RVV_REQ_Zvksed = 1 << 11, - RVV_REQ_Zvksh = 1 << 12, + RVV_REQ_Zvknhb = 1 << 11, + RVV_REQ_Zvksed = 1 << 12, + RVV_REQ_Zvksh = 1 << 13, LLVM_MARK_AS_BITMASK_ENUM(RVV_REQ_Zvksh) }; diff --git a/clang/lib/Sema/SemaRISCVVectorLookup.cpp b/clang/lib/Sema/SemaRISCVVectorLookup.cpp index acdf3260007bc3a..1ba68f54b6db19c 100644 --- a/clang/lib/Sema/SemaRISCVVectorLookup.cpp +++ b/clang/lib/Sema/SemaRISCVVectorLookup.cpp @@ -213,6 +213,7 @@ void RISCVIntrinsicManagerImpl::ConstructRVVIntrinsics( {"experimental-zvkg", RVV_REQ_Zvkg}, {"experimental-zvkned", RVV_REQ_Zvkned}, {"experimental-zvknha", RVV_REQ_Zvknha}, + {"experimental-zvknhb", RVV_REQ_Zvknhb}, {"experimental-zvksed", RVV_REQ_Zvksed}, {"experimental-zvksh", RVV_REQ_Zvksh}}; diff --git a/clang/test/Sema/zvk-invalid-zvknha.c b/clang/test/Sema/zvk-invalid-zvknha.c new file mode 100644 index 000..0ce2e321a175f5f --- /dev/null +++ b/clang/test/Sema/zvk-invalid-zvknha.c @@ -0,0 +1,11 @@ +// REQUIRES: riscv-registered-target +// RUN: %clang_cc1 -triple riscv64 -target-feature +v -target-feature +experimental-zvknha %s -fsyntax-only -verify + +#include + +void test_zvk_features() { + // zvknhb + __riscv_vsha2ch_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2ch_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} + __riscv_vsha2cl_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2cl_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} + __riscv_vsha2ms_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2ms_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} +} diff --git a/clang/utils/TableGen/RISCVVEmitter.cpp b/clang/utils/TableGen/RISCVVEmitter.cpp index 07d31642188eafd..d697099e47733fa 100644 --- a/clang/utils/TableGen/RISCVVEmitter.cpp +++ b/clang/utils/TableGen/RISCVVEmitter.cpp @@ -664,6 +664,7 @@ void RVVEmitter::createRVVIntrinsics( .Case("Zvkg", RVV_REQ_Zvkg) .Case("Zvkned", RVV_REQ_Zvkned) .Case("Zvknha", RVV_REQ_Zvknha) + .Case("Zvknhb", RVV_REQ_Zvknhb) .Case("Zvksed", RVV_REQ_Zvksed) .Case("Zvksh", RVV_REQ_Zvksh)
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/topperc approved this pull request. LGTM https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
4vtomat wrote: ping https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/4vtomat updated https://github.com/llvm/llvm-project/pull/66860 >From 3c28f7bace91dc4edd5e87b9f1a36d100cf38318 Mon Sep 17 00:00:00 2001 From: 4vtomat Date: Tue, 19 Sep 2023 23:06:01 -0700 Subject: [PATCH 1/3] [RISCV] Fix wrong implication for zvknhb. --- clang/include/clang/Basic/riscv_vector.td| 9 - .../include/clang/Support/RISCVVIntrinsicUtils.h | 5 +++-- clang/lib/Sema/SemaRISCVVectorLookup.cpp | 1 + clang/test/Sema/zvk-invalid-zvknha.c | 11 +++ clang/utils/TableGen/RISCVVEmitter.cpp | 1 + llvm/lib/Support/RISCVISAInfo.cpp| 2 -- llvm/lib/Target/RISCV/RISCVFeatures.td | 16 +++- llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td | 16 +++- llvm/test/CodeGen/RISCV/attributes.ll| 16 llvm/test/CodeGen/RISCV/rvv/vsha2ch.ll | 6 ++ llvm/test/CodeGen/RISCV/rvv/vsha2cl.ll | 6 ++ llvm/test/CodeGen/RISCV/rvv/vsha2ms.ll | 6 ++ llvm/test/MC/RISCV/attribute-arch.s | 8 llvm/test/MC/RISCV/rvv/zvknh.s | 6 +++--- 14 files changed, 79 insertions(+), 30 deletions(-) create mode 100644 clang/test/Sema/zvk-invalid-zvknha.c diff --git a/clang/include/clang/Basic/riscv_vector.td b/clang/include/clang/Basic/riscv_vector.td index 60a1a2b2be6fb40..8d9c4237e59bf9f 100644 --- a/clang/include/clang/Basic/riscv_vector.td +++ b/clang/include/clang/Basic/riscv_vector.td @@ -2997,8 +2997,15 @@ let UnMaskedPolicyScheme = HasPolicyOperand, HasMasked = false in { defm vaesz : RVVOutBuiltinSetZvk; } - // zvknha or zvknhb + // zvknha let RequiredFeatures = ["Zvknha"] in { +defm vsha2ch : RVVOutOp2BuiltinSetVVZvk<"i">; +defm vsha2cl : RVVOutOp2BuiltinSetVVZvk<"i">; +defm vsha2ms : RVVOutOp2BuiltinSetVVZvk<"i">; + } + + // zvknhb + let RequiredFeatures = ["Zvknhb"] in { defm vsha2ch : RVVOutOp2BuiltinSetVVZvk<"il">; defm vsha2cl : RVVOutOp2BuiltinSetVVZvk<"il">; defm vsha2ms : RVVOutOp2BuiltinSetVVZvk<"il">; diff --git a/clang/include/clang/Support/RISCVVIntrinsicUtils.h b/clang/include/clang/Support/RISCVVIntrinsicUtils.h index 8ba57d77221dc52..b703259a777ec85 100644 --- a/clang/include/clang/Support/RISCVVIntrinsicUtils.h +++ b/clang/include/clang/Support/RISCVVIntrinsicUtils.h @@ -491,8 +491,9 @@ enum RVVRequire : uint16_t { RVV_REQ_Zvkg = 1 << 6, RVV_REQ_Zvkned = 1 << 7, RVV_REQ_Zvknha = 1 << 8, - RVV_REQ_Zvksed = 1 << 9, - RVV_REQ_Zvksh = 1 << 10, + RVV_REQ_Zvknhb = 1 << 9, + RVV_REQ_Zvksed = 1 << 10, + RVV_REQ_Zvksh = 1 << 11, LLVM_MARK_AS_BITMASK_ENUM(RVV_REQ_Zvksh) }; diff --git a/clang/lib/Sema/SemaRISCVVectorLookup.cpp b/clang/lib/Sema/SemaRISCVVectorLookup.cpp index ae584dc68719901..cf5c074761e017e 100644 --- a/clang/lib/Sema/SemaRISCVVectorLookup.cpp +++ b/clang/lib/Sema/SemaRISCVVectorLookup.cpp @@ -211,6 +211,7 @@ void RISCVIntrinsicManagerImpl::ConstructRVVIntrinsics( {"experimental-zvkg", RVV_REQ_Zvkg}, {"experimental-zvkned", RVV_REQ_Zvkned}, {"experimental-zvknha", RVV_REQ_Zvknha}, + {"experimental-zvknhb", RVV_REQ_Zvknhb}, {"experimental-zvksed", RVV_REQ_Zvksed}, {"experimental-zvksh", RVV_REQ_Zvksh}}; diff --git a/clang/test/Sema/zvk-invalid-zvknha.c b/clang/test/Sema/zvk-invalid-zvknha.c new file mode 100644 index 000..0ce2e321a175f5f --- /dev/null +++ b/clang/test/Sema/zvk-invalid-zvknha.c @@ -0,0 +1,11 @@ +// REQUIRES: riscv-registered-target +// RUN: %clang_cc1 -triple riscv64 -target-feature +v -target-feature +experimental-zvknha %s -fsyntax-only -verify + +#include + +void test_zvk_features() { + // zvknhb + __riscv_vsha2ch_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2ch_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} + __riscv_vsha2cl_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2cl_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} + __riscv_vsha2ms_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2ms_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} +} diff --git a/clang/utils/TableGen/RISCVVEmitter.cpp b/clang/utils/TableGen/RISCVVEmitter.cpp index 41025926058ed07..368136208d9a751 100644 --- a/clang/utils/TableGen/RISCVVEmitter.cpp +++ b/clang/utils/TableGen/RISCVVEmitter.cpp @@ -662,6 +662,7 @@ void RVVEmitter::createRVVIntrinsics( .Case("Zvkg", RVV_REQ_Zvkg) .Case("Zvkned", RVV_REQ_Zvkned) .Case("Zvknha", RVV_REQ_Zvknha) + .Case("Zvknhb", RVV_REQ_Zvknhb) .Case("Zvksed", RVV_REQ_Zvksed) .Case("Zvksh", RVV_REQ_Zvksh) .De
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
@@ -1013,7 +1013,6 @@ static const char *ImpliedExtsZvfhmin[] = {"zve32f"}; static const char *ImpliedExtsZvkn[] = {"zvkb", "zvkned", "zvknhb", "zvkt"}; static const char *ImpliedExtsZvknc[] = {"zvbc", "zvkn"}; static const char *ImpliedExtsZvkng[] = {"zvkg", "zvkn"}; -static const char *ImpliedExtsZvknhb[] = {"zvknha"}; 4vtomat wrote: Oh I missed it, thanks! https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/topperc requested changes to this pull request. https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
@@ -1013,7 +1013,6 @@ static const char *ImpliedExtsZvfhmin[] = {"zve32f"}; static const char *ImpliedExtsZvkn[] = {"zvkb", "zvkned", "zvknhb", "zvkt"}; static const char *ImpliedExtsZvknc[] = {"zvbc", "zvkn"}; static const char *ImpliedExtsZvkng[] = {"zvkg", "zvkn"}; -static const char *ImpliedExtsZvknhb[] = {"zvknha"}; topperc wrote: Do we need to change this to imply zve64x to match RISCV.td https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/topperc edited https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/topperc approved this pull request. LGTM https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
4vtomat wrote: ping https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
@@ -599,15 +599,21 @@ def HasStdExtZvkned : Predicate<"Subtarget->hasStdExtZvkned()">, def FeatureStdExtZvknha : SubtargetFeature<"experimental-zvknha", "HasStdExtZvknha", "true", "'Zvknha' (Vector SHA-2 (SHA-256 only))">; - -def FeatureStdExtZvknhb -: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", - "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))", - [FeatureStdExtZvknha]>; def HasStdExtZvknha : Predicate<"Subtarget->hasStdExtZvknha()">, AssemblerPredicate<(all_of FeatureStdExtZvknha), "'Zvknha' (Vector SHA-2 (SHA-256 only))">; +def FeatureStdExtZvknhb +: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", + "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))">; 4vtomat wrote: My colleague just show me the [spec](https://github.com/riscv/riscv-crypto/blob/main/doc/vector/riscv-crypto-spec-vector.adoc#1-extensions-overview) has mentioned: "The [Zvknhb](https://github.com/llvm/llvm-project/pull/66860#zvknh) and [[zvbc]](https://github.com/llvm/llvm-project/pull/66860#zvbc) Vector Crypto Extensions --and accordingly the composite extensions [[Zvkn]](https://github.com/llvm/llvm-project/pull/66860#Zvkn) and [[Zvks]](https://github.com/llvm/llvm-project/pull/66860#Zvks)-- require a Zve64x base, or application ("V") base Vector Extension." so I think those checks should be moved to **ImpliedExts***. https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/4vtomat resolved https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/4vtomat updated https://github.com/llvm/llvm-project/pull/66860 >From 3c28f7bace91dc4edd5e87b9f1a36d100cf38318 Mon Sep 17 00:00:00 2001 From: 4vtomat Date: Tue, 19 Sep 2023 23:06:01 -0700 Subject: [PATCH 1/2] [RISCV] Fix wrong implication for zvknhb. --- clang/include/clang/Basic/riscv_vector.td| 9 - .../include/clang/Support/RISCVVIntrinsicUtils.h | 5 +++-- clang/lib/Sema/SemaRISCVVectorLookup.cpp | 1 + clang/test/Sema/zvk-invalid-zvknha.c | 11 +++ clang/utils/TableGen/RISCVVEmitter.cpp | 1 + llvm/lib/Support/RISCVISAInfo.cpp| 2 -- llvm/lib/Target/RISCV/RISCVFeatures.td | 16 +++- llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td | 16 +++- llvm/test/CodeGen/RISCV/attributes.ll| 16 llvm/test/CodeGen/RISCV/rvv/vsha2ch.ll | 6 ++ llvm/test/CodeGen/RISCV/rvv/vsha2cl.ll | 6 ++ llvm/test/CodeGen/RISCV/rvv/vsha2ms.ll | 6 ++ llvm/test/MC/RISCV/attribute-arch.s | 8 llvm/test/MC/RISCV/rvv/zvknh.s | 6 +++--- 14 files changed, 79 insertions(+), 30 deletions(-) create mode 100644 clang/test/Sema/zvk-invalid-zvknha.c diff --git a/clang/include/clang/Basic/riscv_vector.td b/clang/include/clang/Basic/riscv_vector.td index 60a1a2b2be6fb40..8d9c4237e59bf9f 100644 --- a/clang/include/clang/Basic/riscv_vector.td +++ b/clang/include/clang/Basic/riscv_vector.td @@ -2997,8 +2997,15 @@ let UnMaskedPolicyScheme = HasPolicyOperand, HasMasked = false in { defm vaesz : RVVOutBuiltinSetZvk; } - // zvknha or zvknhb + // zvknha let RequiredFeatures = ["Zvknha"] in { +defm vsha2ch : RVVOutOp2BuiltinSetVVZvk<"i">; +defm vsha2cl : RVVOutOp2BuiltinSetVVZvk<"i">; +defm vsha2ms : RVVOutOp2BuiltinSetVVZvk<"i">; + } + + // zvknhb + let RequiredFeatures = ["Zvknhb"] in { defm vsha2ch : RVVOutOp2BuiltinSetVVZvk<"il">; defm vsha2cl : RVVOutOp2BuiltinSetVVZvk<"il">; defm vsha2ms : RVVOutOp2BuiltinSetVVZvk<"il">; diff --git a/clang/include/clang/Support/RISCVVIntrinsicUtils.h b/clang/include/clang/Support/RISCVVIntrinsicUtils.h index 8ba57d77221dc52..b703259a777ec85 100644 --- a/clang/include/clang/Support/RISCVVIntrinsicUtils.h +++ b/clang/include/clang/Support/RISCVVIntrinsicUtils.h @@ -491,8 +491,9 @@ enum RVVRequire : uint16_t { RVV_REQ_Zvkg = 1 << 6, RVV_REQ_Zvkned = 1 << 7, RVV_REQ_Zvknha = 1 << 8, - RVV_REQ_Zvksed = 1 << 9, - RVV_REQ_Zvksh = 1 << 10, + RVV_REQ_Zvknhb = 1 << 9, + RVV_REQ_Zvksed = 1 << 10, + RVV_REQ_Zvksh = 1 << 11, LLVM_MARK_AS_BITMASK_ENUM(RVV_REQ_Zvksh) }; diff --git a/clang/lib/Sema/SemaRISCVVectorLookup.cpp b/clang/lib/Sema/SemaRISCVVectorLookup.cpp index ae584dc68719901..cf5c074761e017e 100644 --- a/clang/lib/Sema/SemaRISCVVectorLookup.cpp +++ b/clang/lib/Sema/SemaRISCVVectorLookup.cpp @@ -211,6 +211,7 @@ void RISCVIntrinsicManagerImpl::ConstructRVVIntrinsics( {"experimental-zvkg", RVV_REQ_Zvkg}, {"experimental-zvkned", RVV_REQ_Zvkned}, {"experimental-zvknha", RVV_REQ_Zvknha}, + {"experimental-zvknhb", RVV_REQ_Zvknhb}, {"experimental-zvksed", RVV_REQ_Zvksed}, {"experimental-zvksh", RVV_REQ_Zvksh}}; diff --git a/clang/test/Sema/zvk-invalid-zvknha.c b/clang/test/Sema/zvk-invalid-zvknha.c new file mode 100644 index 000..0ce2e321a175f5f --- /dev/null +++ b/clang/test/Sema/zvk-invalid-zvknha.c @@ -0,0 +1,11 @@ +// REQUIRES: riscv-registered-target +// RUN: %clang_cc1 -triple riscv64 -target-feature +v -target-feature +experimental-zvknha %s -fsyntax-only -verify + +#include + +void test_zvk_features() { + // zvknhb + __riscv_vsha2ch_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2ch_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} + __riscv_vsha2cl_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2cl_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} + __riscv_vsha2ms_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2ms_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} +} diff --git a/clang/utils/TableGen/RISCVVEmitter.cpp b/clang/utils/TableGen/RISCVVEmitter.cpp index 41025926058ed07..368136208d9a751 100644 --- a/clang/utils/TableGen/RISCVVEmitter.cpp +++ b/clang/utils/TableGen/RISCVVEmitter.cpp @@ -662,6 +662,7 @@ void RVVEmitter::createRVVIntrinsics( .Case("Zvkg", RVV_REQ_Zvkg) .Case("Zvkned", RVV_REQ_Zvkned) .Case("Zvknha", RVV_REQ_Zvknha) + .Case("Zvknhb", RVV_REQ_Zvknhb) .Case("Zvksed", RVV_REQ_Zvksed) .Case("Zvksh", RVV_REQ_Zvksh) .De
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
@@ -599,15 +599,21 @@ def HasStdExtZvkned : Predicate<"Subtarget->hasStdExtZvkned()">, def FeatureStdExtZvknha : SubtargetFeature<"experimental-zvknha", "HasStdExtZvknha", "true", "'Zvknha' (Vector SHA-2 (SHA-256 only))">; - -def FeatureStdExtZvknhb -: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", - "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))", - [FeatureStdExtZvknha]>; def HasStdExtZvknha : Predicate<"Subtarget->hasStdExtZvknha()">, AssemblerPredicate<(all_of FeatureStdExtZvknha), "'Zvknha' (Vector SHA-2 (SHA-256 only))">; +def FeatureStdExtZvknhb +: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", + "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))">; 4vtomat wrote: Sure, maybe I can ask Nicolas directly, but maybe it should be handle in another patch. https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
@@ -599,15 +599,21 @@ def HasStdExtZvkned : Predicate<"Subtarget->hasStdExtZvkned()">, def FeatureStdExtZvknha : SubtargetFeature<"experimental-zvknha", "HasStdExtZvknha", "true", "'Zvknha' (Vector SHA-2 (SHA-256 only))">; - -def FeatureStdExtZvknhb -: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", - "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))", - [FeatureStdExtZvknha]>; def HasStdExtZvknha : Predicate<"Subtarget->hasStdExtZvknha()">, AssemblerPredicate<(all_of FeatureStdExtZvknha), "'Zvknha' (Vector SHA-2 (SHA-256 only))">; +def FeatureStdExtZvknhb +: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", + "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))">; topperc wrote: maybe we should ask for clarification in https://github.com/riscv/riscv-crypto https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
@@ -599,15 +599,21 @@ def HasStdExtZvkned : Predicate<"Subtarget->hasStdExtZvkned()">, def FeatureStdExtZvknha : SubtargetFeature<"experimental-zvknha", "HasStdExtZvknha", "true", "'Zvknha' (Vector SHA-2 (SHA-256 only))">; - -def FeatureStdExtZvknhb -: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", - "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))", - [FeatureStdExtZvknha]>; def HasStdExtZvknha : Predicate<"Subtarget->hasStdExtZvknha()">, AssemblerPredicate<(all_of FeatureStdExtZvknha), "'Zvknha' (Vector SHA-2 (SHA-256 only))">; +def FeatureStdExtZvknhb +: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", + "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))">; 4vtomat wrote: And I should also remove these [checks](https://github.com/llvm/llvm-project/blob/69074bf144c1bf54040d289584e3d1d54f883a37/llvm/lib/Support/RISCVISAInfo.cpp#L940C1-L940C1) and add them to **ImpliedExts***? https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
@@ -599,15 +599,21 @@ def HasStdExtZvkned : Predicate<"Subtarget->hasStdExtZvkned()">, def FeatureStdExtZvknha : SubtargetFeature<"experimental-zvknha", "HasStdExtZvknha", "true", "'Zvknha' (Vector SHA-2 (SHA-256 only))">; - -def FeatureStdExtZvknhb -: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", - "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))", - [FeatureStdExtZvknha]>; def HasStdExtZvknha : Predicate<"Subtarget->hasStdExtZvknha()">, AssemblerPredicate<(all_of FeatureStdExtZvknha), "'Zvknha' (Vector SHA-2 (SHA-256 only))">; +def FeatureStdExtZvknhb +: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", + "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))">; topperc wrote: > If so, why should the check like this exist? > > https://github.com/llvm/llvm-project/blob/69074bf144c1bf54040d289584e3d1d54f883a37/llvm/lib/Support/RISCVISAInfo.cpp#L935 That's a good question. That one is weird because Zve32x implies Zvl32b, but Zvl32b requires at least Zve32x. So they're mutually dependent. https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/4vtomat unresolved https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
@@ -599,15 +599,21 @@ def HasStdExtZvkned : Predicate<"Subtarget->hasStdExtZvkned()">, def FeatureStdExtZvknha : SubtargetFeature<"experimental-zvknha", "HasStdExtZvknha", "true", "'Zvknha' (Vector SHA-2 (SHA-256 only))">; - -def FeatureStdExtZvknhb -: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", - "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))", - [FeatureStdExtZvknha]>; def HasStdExtZvknha : Predicate<"Subtarget->hasStdExtZvknha()">, AssemblerPredicate<(all_of FeatureStdExtZvknha), "'Zvknha' (Vector SHA-2 (SHA-256 only))">; +def FeatureStdExtZvknhb +: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", + "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))">; 4vtomat wrote: If so, why should the check like this exist? https://github.com/llvm/llvm-project/blob/69074bf144c1bf54040d289584e3d1d54f883a37/llvm/lib/Support/RISCVISAInfo.cpp#L935 https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
@@ -599,15 +599,21 @@ def HasStdExtZvkned : Predicate<"Subtarget->hasStdExtZvkned()">, def FeatureStdExtZvknha : SubtargetFeature<"experimental-zvknha", "HasStdExtZvknha", "true", "'Zvknha' (Vector SHA-2 (SHA-256 only))">; - -def FeatureStdExtZvknhb -: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", - "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))", - [FeatureStdExtZvknha]>; def HasStdExtZvknha : Predicate<"Subtarget->hasStdExtZvknha()">, AssemblerPredicate<(all_of FeatureStdExtZvknha), "'Zvknha' (Vector SHA-2 (SHA-256 only))">; +def FeatureStdExtZvknhb +: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", + "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))">; topperc wrote: I think "requires" might mean "implies". This keeps happening with different extensions. Here's one example https://github.com/riscv/riscv-v-spec/issues/723#issuecomment-922153867 https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/4vtomat resolved https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
4vtomat wrote: no change, just to re-trigger checks. https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/4vtomat updated https://github.com/llvm/llvm-project/pull/66860 >From 3c28f7bace91dc4edd5e87b9f1a36d100cf38318 Mon Sep 17 00:00:00 2001 From: 4vtomat Date: Tue, 19 Sep 2023 23:06:01 -0700 Subject: [PATCH] [RISCV] Fix wrong implication for zvknhb. --- clang/include/clang/Basic/riscv_vector.td| 9 - .../include/clang/Support/RISCVVIntrinsicUtils.h | 5 +++-- clang/lib/Sema/SemaRISCVVectorLookup.cpp | 1 + clang/test/Sema/zvk-invalid-zvknha.c | 11 +++ clang/utils/TableGen/RISCVVEmitter.cpp | 1 + llvm/lib/Support/RISCVISAInfo.cpp| 2 -- llvm/lib/Target/RISCV/RISCVFeatures.td | 16 +++- llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td | 16 +++- llvm/test/CodeGen/RISCV/attributes.ll| 16 llvm/test/CodeGen/RISCV/rvv/vsha2ch.ll | 6 ++ llvm/test/CodeGen/RISCV/rvv/vsha2cl.ll | 6 ++ llvm/test/CodeGen/RISCV/rvv/vsha2ms.ll | 6 ++ llvm/test/MC/RISCV/attribute-arch.s | 8 llvm/test/MC/RISCV/rvv/zvknh.s | 6 +++--- 14 files changed, 79 insertions(+), 30 deletions(-) create mode 100644 clang/test/Sema/zvk-invalid-zvknha.c diff --git a/clang/include/clang/Basic/riscv_vector.td b/clang/include/clang/Basic/riscv_vector.td index 60a1a2b2be6fb40..8d9c4237e59bf9f 100644 --- a/clang/include/clang/Basic/riscv_vector.td +++ b/clang/include/clang/Basic/riscv_vector.td @@ -2997,8 +2997,15 @@ let UnMaskedPolicyScheme = HasPolicyOperand, HasMasked = false in { defm vaesz : RVVOutBuiltinSetZvk; } - // zvknha or zvknhb + // zvknha let RequiredFeatures = ["Zvknha"] in { +defm vsha2ch : RVVOutOp2BuiltinSetVVZvk<"i">; +defm vsha2cl : RVVOutOp2BuiltinSetVVZvk<"i">; +defm vsha2ms : RVVOutOp2BuiltinSetVVZvk<"i">; + } + + // zvknhb + let RequiredFeatures = ["Zvknhb"] in { defm vsha2ch : RVVOutOp2BuiltinSetVVZvk<"il">; defm vsha2cl : RVVOutOp2BuiltinSetVVZvk<"il">; defm vsha2ms : RVVOutOp2BuiltinSetVVZvk<"il">; diff --git a/clang/include/clang/Support/RISCVVIntrinsicUtils.h b/clang/include/clang/Support/RISCVVIntrinsicUtils.h index 8ba57d77221dc52..b703259a777ec85 100644 --- a/clang/include/clang/Support/RISCVVIntrinsicUtils.h +++ b/clang/include/clang/Support/RISCVVIntrinsicUtils.h @@ -491,8 +491,9 @@ enum RVVRequire : uint16_t { RVV_REQ_Zvkg = 1 << 6, RVV_REQ_Zvkned = 1 << 7, RVV_REQ_Zvknha = 1 << 8, - RVV_REQ_Zvksed = 1 << 9, - RVV_REQ_Zvksh = 1 << 10, + RVV_REQ_Zvknhb = 1 << 9, + RVV_REQ_Zvksed = 1 << 10, + RVV_REQ_Zvksh = 1 << 11, LLVM_MARK_AS_BITMASK_ENUM(RVV_REQ_Zvksh) }; diff --git a/clang/lib/Sema/SemaRISCVVectorLookup.cpp b/clang/lib/Sema/SemaRISCVVectorLookup.cpp index ae584dc68719901..cf5c074761e017e 100644 --- a/clang/lib/Sema/SemaRISCVVectorLookup.cpp +++ b/clang/lib/Sema/SemaRISCVVectorLookup.cpp @@ -211,6 +211,7 @@ void RISCVIntrinsicManagerImpl::ConstructRVVIntrinsics( {"experimental-zvkg", RVV_REQ_Zvkg}, {"experimental-zvkned", RVV_REQ_Zvkned}, {"experimental-zvknha", RVV_REQ_Zvknha}, + {"experimental-zvknhb", RVV_REQ_Zvknhb}, {"experimental-zvksed", RVV_REQ_Zvksed}, {"experimental-zvksh", RVV_REQ_Zvksh}}; diff --git a/clang/test/Sema/zvk-invalid-zvknha.c b/clang/test/Sema/zvk-invalid-zvknha.c new file mode 100644 index 000..0ce2e321a175f5f --- /dev/null +++ b/clang/test/Sema/zvk-invalid-zvknha.c @@ -0,0 +1,11 @@ +// REQUIRES: riscv-registered-target +// RUN: %clang_cc1 -triple riscv64 -target-feature +v -target-feature +experimental-zvknha %s -fsyntax-only -verify + +#include + +void test_zvk_features() { + // zvknhb + __riscv_vsha2ch_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2ch_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} + __riscv_vsha2cl_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2cl_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} + __riscv_vsha2ms_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2ms_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} +} diff --git a/clang/utils/TableGen/RISCVVEmitter.cpp b/clang/utils/TableGen/RISCVVEmitter.cpp index 41025926058ed07..368136208d9a751 100644 --- a/clang/utils/TableGen/RISCVVEmitter.cpp +++ b/clang/utils/TableGen/RISCVVEmitter.cpp @@ -662,6 +662,7 @@ void RVVEmitter::createRVVIntrinsics( .Case("Zvkg", RVV_REQ_Zvkg) .Case("Zvkned", RVV_REQ_Zvkned) .Case("Zvknha", RVV_REQ_Zvknha) + .Case("Zvknhb", RVV_REQ_Zvknhb) .Case("Zvksed", RVV_REQ_Zvksed) .Case("Zvksh", RVV_REQ_Zvksh) .Defaul
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
@@ -599,15 +599,21 @@ def HasStdExtZvkned : Predicate<"Subtarget->hasStdExtZvkned()">, def FeatureStdExtZvknha : SubtargetFeature<"experimental-zvknha", "HasStdExtZvknha", "true", "'Zvknha' (Vector SHA-2 (SHA-256 only))">; - -def FeatureStdExtZvknhb -: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", - "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))", - [FeatureStdExtZvknha]>; def HasStdExtZvknha : Predicate<"Subtarget->hasStdExtZvknha()">, AssemblerPredicate<(all_of FeatureStdExtZvknha), "'Zvknha' (Vector SHA-2 (SHA-256 only))">; +def FeatureStdExtZvknhb +: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", + "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))">; 4vtomat wrote: `Zvknhb` requires `Zve64x` but doesn't **imply** `Zvk64x lol~ https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
@@ -599,15 +599,21 @@ def HasStdExtZvkned : Predicate<"Subtarget->hasStdExtZvkned()">, def FeatureStdExtZvknha : SubtargetFeature<"experimental-zvknha", "HasStdExtZvknha", "true", "'Zvknha' (Vector SHA-2 (SHA-256 only))">; - -def FeatureStdExtZvknhb -: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", - "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))", - [FeatureStdExtZvknha]>; def HasStdExtZvknha : Predicate<"Subtarget->hasStdExtZvknha()">, AssemblerPredicate<(all_of FeatureStdExtZvknha), "'Zvknha' (Vector SHA-2 (SHA-256 only))">; +def FeatureStdExtZvknhb +: SubtargetFeature<"experimental-zvknhb", "HasStdExtZvknhb", "true", + "'Zvknhb' (Vector SHA-2 (SHA-256 and SHA-512))">; jacquesguan wrote: I think that Zvknhb requires Zve64x https://github.com/llvm/llvm-project/pull/66860 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [RISCV] Fix wrong implication for zvknhb. (PR #66860)
https://github.com/4vtomat created https://github.com/llvm/llvm-project/pull/66860 None >From 041da389550eeb7865a91b8b0e723a04ed2f84e1 Mon Sep 17 00:00:00 2001 From: 4vtomat Date: Tue, 19 Sep 2023 23:06:01 -0700 Subject: [PATCH] [RISCV] Fix wrong implication for zvknhb. --- clang/include/clang/Basic/riscv_vector.td| 9 - .../include/clang/Support/RISCVVIntrinsicUtils.h | 5 +++-- clang/lib/Sema/SemaRISCVVectorLookup.cpp | 1 + clang/test/Sema/zvk-invalid-zvknha.c | 11 +++ clang/utils/TableGen/RISCVVEmitter.cpp | 1 + llvm/lib/Support/RISCVISAInfo.cpp| 2 -- llvm/lib/Target/RISCV/RISCVFeatures.td | 16 +++- llvm/lib/Target/RISCV/RISCVInstrInfoZvk.td | 16 +++- llvm/test/CodeGen/RISCV/attributes.ll| 16 llvm/test/CodeGen/RISCV/rvv/vsha2ch.ll | 6 ++ llvm/test/CodeGen/RISCV/rvv/vsha2cl.ll | 6 ++ llvm/test/CodeGen/RISCV/rvv/vsha2ms.ll | 6 ++ llvm/test/MC/RISCV/attribute-arch.s | 8 llvm/test/MC/RISCV/rvv/zvknh.s | 6 +++--- 14 files changed, 79 insertions(+), 30 deletions(-) create mode 100644 clang/test/Sema/zvk-invalid-zvknha.c diff --git a/clang/include/clang/Basic/riscv_vector.td b/clang/include/clang/Basic/riscv_vector.td index 60a1a2b2be6fb40..8d9c4237e59bf9f 100644 --- a/clang/include/clang/Basic/riscv_vector.td +++ b/clang/include/clang/Basic/riscv_vector.td @@ -2997,8 +2997,15 @@ let UnMaskedPolicyScheme = HasPolicyOperand, HasMasked = false in { defm vaesz : RVVOutBuiltinSetZvk; } - // zvknha or zvknhb + // zvknha let RequiredFeatures = ["Zvknha"] in { +defm vsha2ch : RVVOutOp2BuiltinSetVVZvk<"i">; +defm vsha2cl : RVVOutOp2BuiltinSetVVZvk<"i">; +defm vsha2ms : RVVOutOp2BuiltinSetVVZvk<"i">; + } + + // zvknhb + let RequiredFeatures = ["Zvknhb"] in { defm vsha2ch : RVVOutOp2BuiltinSetVVZvk<"il">; defm vsha2cl : RVVOutOp2BuiltinSetVVZvk<"il">; defm vsha2ms : RVVOutOp2BuiltinSetVVZvk<"il">; diff --git a/clang/include/clang/Support/RISCVVIntrinsicUtils.h b/clang/include/clang/Support/RISCVVIntrinsicUtils.h index 8ba57d77221dc52..b703259a777ec85 100644 --- a/clang/include/clang/Support/RISCVVIntrinsicUtils.h +++ b/clang/include/clang/Support/RISCVVIntrinsicUtils.h @@ -491,8 +491,9 @@ enum RVVRequire : uint16_t { RVV_REQ_Zvkg = 1 << 6, RVV_REQ_Zvkned = 1 << 7, RVV_REQ_Zvknha = 1 << 8, - RVV_REQ_Zvksed = 1 << 9, - RVV_REQ_Zvksh = 1 << 10, + RVV_REQ_Zvknhb = 1 << 9, + RVV_REQ_Zvksed = 1 << 10, + RVV_REQ_Zvksh = 1 << 11, LLVM_MARK_AS_BITMASK_ENUM(RVV_REQ_Zvksh) }; diff --git a/clang/lib/Sema/SemaRISCVVectorLookup.cpp b/clang/lib/Sema/SemaRISCVVectorLookup.cpp index ae584dc68719901..cf5c074761e017e 100644 --- a/clang/lib/Sema/SemaRISCVVectorLookup.cpp +++ b/clang/lib/Sema/SemaRISCVVectorLookup.cpp @@ -211,6 +211,7 @@ void RISCVIntrinsicManagerImpl::ConstructRVVIntrinsics( {"experimental-zvkg", RVV_REQ_Zvkg}, {"experimental-zvkned", RVV_REQ_Zvkned}, {"experimental-zvknha", RVV_REQ_Zvknha}, + {"experimental-zvknhb", RVV_REQ_Zvknhb}, {"experimental-zvksed", RVV_REQ_Zvksed}, {"experimental-zvksh", RVV_REQ_Zvksh}}; diff --git a/clang/test/Sema/zvk-invalid-zvknha.c b/clang/test/Sema/zvk-invalid-zvknha.c new file mode 100644 index 000..0ce2e321a175f5f --- /dev/null +++ b/clang/test/Sema/zvk-invalid-zvknha.c @@ -0,0 +1,11 @@ +// REQUIRES: riscv-registered-target +// RUN: %clang_cc1 -triple riscv64 -target-feature +v -target-feature +experimental-zvknha %s -fsyntax-only -verify + +#include + +void test_zvk_features() { + // zvknhb + __riscv_vsha2ch_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2ch_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} + __riscv_vsha2cl_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2cl_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} + __riscv_vsha2ms_vv_u64m1(); // expected-error {{call to undeclared function '__riscv_vsha2ms_vv_u64m1'; ISO C99 and later do not support implicit function declarations}} +} diff --git a/clang/utils/TableGen/RISCVVEmitter.cpp b/clang/utils/TableGen/RISCVVEmitter.cpp index 41025926058ed07..368136208d9a751 100644 --- a/clang/utils/TableGen/RISCVVEmitter.cpp +++ b/clang/utils/TableGen/RISCVVEmitter.cpp @@ -662,6 +662,7 @@ void RVVEmitter::createRVVIntrinsics( .Case("Zvkg", RVV_REQ_Zvkg) .Case("Zvkned", RVV_REQ_Zvkned) .Case("Zvknha", RVV_REQ_Zvknha) + .Case("Zvknhb", RVV_REQ_Zvknhb) .Case("Zvksed", RVV_REQ_Zvksed) .Case("Zvksh", RVV_REQ_Zvksh) .