The riscv builtins are defined via DIRECT_BUILTIN and DIRECT_NO_TARGET_BUILTIN,
which distinguish as to whether the builtin returns a result or not. But that
can be directly determined from the builtin's function type (whether it returns
void or not).
This patch removes the NO_TARGET macros and adjusts all the .def files
appropriately. The riscv_builtin_description structure is adjusted to have a
bool indicating it has no target, and this is computed during builtin
initialization. The fields are reordered for better packing on a 64-bit host.
nathan
--
Nathan Sidwell
From b56403412a53f7ca4c49fdc759fc6e0ad9b7205f Mon Sep 17 00:00:00 2001
From: Nathan Sidwell <[email protected]>
Date: Tue, 10 Feb 2026 11:39:36 -0500
Subject: [PATCH] [riscv] Simplify builtin definitions
gcc/
* config/riscv/riscv-builtins.cc (enum riscv_builtin_type): Delete.
(struct riscv_builtin_description): Replace builtin_type by bool.
Reorder fields for better packing.
(RISCV_BUILTIN_NO_PREFIX): Remove BUILTIN_TYPE arg.
(RISCV_BUILTIN): Likewise, call RISCV_BUILTIN_NO_PREFIX.
(DIRECT_BUILTIN): Adjust RISCV_BUILTIN invocation.
(DIRECT_NO_TARGET_BUILTIN): Delete.
(riscv_builtins): Make non-constant. Adjust initializers.
(riscv_init_builtins): Compute no_target from function type.
(riscv_expand_builtin): Simplify.
* config/riscv/andes.def: Adjust.
* config/riscv/corev.def: Adjust.
* config/riscv/riscv-cmo.def: Adjust.
* config/riscv/riscv-scalar-crypto.def: Adjust.
---
gcc/config/riscv/andes.def | 20 +-
gcc/config/riscv/corev.def | 374 +++++++++++------------
gcc/config/riscv/riscv-builtins.cc | 87 ++----
gcc/config/riscv/riscv-cmo.def | 32 +-
gcc/config/riscv/riscv-scalar-crypto.def | 66 ++--
5 files changed, 274 insertions(+), 305 deletions(-)
diff --git a/gcc/config/riscv/andes.def b/gcc/config/riscv/andes.def
index 8345ef6c13b..685892d0003 100644
--- a/gcc/config/riscv/andes.def
+++ b/gcc/config/riscv/andes.def
@@ -1,14 +1,14 @@
// XANDESPERF
/* Andes Performance Extension */
-RISCV_BUILTIN (nds_ffbsi, "nds_ffb_32", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_USI_USI, andesperf32),
-RISCV_BUILTIN (nds_ffbdi, "nds_ffb_64", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_UDI_UDI, andesperf64),
-RISCV_BUILTIN (nds_ffzmismsi, "nds_ffzmism_32", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_USI_USI, andesperf32),
-RISCV_BUILTIN (nds_ffzmismdi, "nds_ffzmism_64", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_UDI_UDI, andesperf64),
-RISCV_BUILTIN (nds_ffmismsi, "nds_ffmism_32", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_USI_USI, andesperf32),
-RISCV_BUILTIN (nds_ffmismdi, "nds_ffmism_64", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_UDI_UDI, andesperf64),
-RISCV_BUILTIN (nds_flmismsi, "nds_flmism_32", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_USI_USI, andesperf32),
-RISCV_BUILTIN (nds_flmismdi, "nds_flmism_64", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_UDI_UDI, andesperf64),
+RISCV_BUILTIN (nds_ffbsi, "nds_ffb_32", RISCV_SI_FTYPE_USI_USI, andesperf32),
+RISCV_BUILTIN (nds_ffbdi, "nds_ffb_64", RISCV_DI_FTYPE_UDI_UDI, andesperf64),
+RISCV_BUILTIN (nds_ffzmismsi, "nds_ffzmism_32", RISCV_SI_FTYPE_USI_USI, andesperf32),
+RISCV_BUILTIN (nds_ffzmismdi, "nds_ffzmism_64", RISCV_DI_FTYPE_UDI_UDI, andesperf64),
+RISCV_BUILTIN (nds_ffmismsi, "nds_ffmism_32", RISCV_SI_FTYPE_USI_USI, andesperf32),
+RISCV_BUILTIN (nds_ffmismdi, "nds_ffmism_64", RISCV_DI_FTYPE_UDI_UDI, andesperf64),
+RISCV_BUILTIN (nds_flmismsi, "nds_flmism_32", RISCV_SI_FTYPE_USI_USI, andesperf32),
+RISCV_BUILTIN (nds_flmismdi, "nds_flmism_64", RISCV_DI_FTYPE_UDI_UDI, andesperf64),
/* Andes Scalar BFLOAT16 Conversion Extension */
-RISCV_BUILTIN_NO_PREFIX (extendbfsf2, "nds_fcvt_s_bf16", RISCV_BUILTIN_DIRECT, RISCV_SF_FTYPE_BF, andesbfhcvt),
-RISCV_BUILTIN_NO_PREFIX (truncsfbf2, "nds_fcvt_bf16_s", RISCV_BUILTIN_DIRECT, RISCV_BF_FTYPE_SF, andesbfhcvt),
+RISCV_BUILTIN_NO_PREFIX (extendbfsf2, "nds_fcvt_s_bf16", RISCV_SF_FTYPE_BF, andesbfhcvt),
+RISCV_BUILTIN_NO_PREFIX (truncsfbf2, "nds_fcvt_bf16_s", RISCV_BF_FTYPE_SF, andesbfhcvt),
diff --git a/gcc/config/riscv/corev.def b/gcc/config/riscv/corev.def
index 9157529fd4c..1ddb7a3f01c 100644
--- a/gcc/config/riscv/corev.def
+++ b/gcc/config/riscv/corev.def
@@ -1,202 +1,202 @@
// XCVMAC
-RISCV_BUILTIN (cv_mac_mac, "cv_mac_mac", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_SI, cvmac),
-RISCV_BUILTIN (cv_mac_msu, "cv_mac_msu", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_SI, cvmac),
-RISCV_BUILTIN (cv_mac_muluN, "cv_mac_muluN", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_mulhhuN, "cv_mac_mulhhuN", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_mulsN, "cv_mac_mulsN", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_mulhhsN, "cv_mac_mulhhsN", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_muluRN, "cv_mac_muluRN", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_mulhhuRN, "cv_mac_mulhhuRN", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_mulsRN, "cv_mac_mulsRN", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_mulhhsRN, "cv_mac_mulhhsRN", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_macuN, "cv_mac_macuN", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_machhuN, "cv_mac_machhuN", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_macsN, "cv_mac_macsN", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_SI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_machhsN, "cv_mac_machhsN", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_SI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_macuRN, "cv_mac_macuRN", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_machhuRN, "cv_mac_machhuRN", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_macsRN, "cv_mac_macsRN", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_SI_UQI, cvmac),
-RISCV_BUILTIN (cv_mac_machhsRN, "cv_mac_machhsRN", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_SI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_mac, "cv_mac_mac", RISCV_SI_FTYPE_SI_SI_SI, cvmac),
+RISCV_BUILTIN (cv_mac_msu, "cv_mac_msu", RISCV_SI_FTYPE_SI_SI_SI, cvmac),
+RISCV_BUILTIN (cv_mac_muluN, "cv_mac_muluN", RISCV_USI_FTYPE_USI_USI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_mulhhuN, "cv_mac_mulhhuN", RISCV_USI_FTYPE_USI_USI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_mulsN, "cv_mac_mulsN", RISCV_SI_FTYPE_SI_SI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_mulhhsN, "cv_mac_mulhhsN", RISCV_SI_FTYPE_SI_SI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_muluRN, "cv_mac_muluRN", RISCV_USI_FTYPE_USI_USI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_mulhhuRN, "cv_mac_mulhhuRN", RISCV_USI_FTYPE_USI_USI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_mulsRN, "cv_mac_mulsRN", RISCV_SI_FTYPE_SI_SI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_mulhhsRN, "cv_mac_mulhhsRN", RISCV_SI_FTYPE_SI_SI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_macuN, "cv_mac_macuN", RISCV_USI_FTYPE_USI_USI_USI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_machhuN, "cv_mac_machhuN", RISCV_USI_FTYPE_USI_USI_USI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_macsN, "cv_mac_macsN", RISCV_SI_FTYPE_SI_SI_SI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_machhsN, "cv_mac_machhsN", RISCV_SI_FTYPE_SI_SI_SI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_macuRN, "cv_mac_macuRN", RISCV_USI_FTYPE_USI_USI_USI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_machhuRN, "cv_mac_machhuRN", RISCV_USI_FTYPE_USI_USI_USI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_macsRN, "cv_mac_macsRN", RISCV_SI_FTYPE_SI_SI_SI_UQI, cvmac),
+RISCV_BUILTIN (cv_mac_machhsRN, "cv_mac_machhsRN", RISCV_SI_FTYPE_SI_SI_SI_UQI, cvmac),
// XCVALU
-RISCV_BUILTIN (cv_alu_slet, "cv_alu_slet", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI, cvalu),
-RISCV_BUILTIN (cv_alu_sletu, "cv_alu_sletu", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_USI_USI, cvalu),
-RISCV_BUILTIN (cv_alu_min, "cv_alu_min", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI, cvalu),
-RISCV_BUILTIN (cv_alu_minu, "cv_alu_minu", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvalu),
-RISCV_BUILTIN (cv_alu_max, "cv_alu_max", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI, cvalu),
-RISCV_BUILTIN (cv_alu_maxu, "cv_alu_maxu", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvalu),
+RISCV_BUILTIN (cv_alu_slet, "cv_alu_slet", RISCV_SI_FTYPE_SI_SI, cvalu),
+RISCV_BUILTIN (cv_alu_sletu, "cv_alu_sletu", RISCV_SI_FTYPE_USI_USI, cvalu),
+RISCV_BUILTIN (cv_alu_min, "cv_alu_min", RISCV_SI_FTYPE_SI_SI, cvalu),
+RISCV_BUILTIN (cv_alu_minu, "cv_alu_minu", RISCV_USI_FTYPE_USI_USI, cvalu),
+RISCV_BUILTIN (cv_alu_max, "cv_alu_max", RISCV_SI_FTYPE_SI_SI, cvalu),
+RISCV_BUILTIN (cv_alu_maxu, "cv_alu_maxu", RISCV_USI_FTYPE_USI_USI, cvalu),
-RISCV_BUILTIN (cv_alu_exths, "cv_alu_exths", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_HI, cvalu),
-RISCV_BUILTIN (cv_alu_exthz, "cv_alu_exthz", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_UHI, cvalu),
-RISCV_BUILTIN (cv_alu_extbs, "cv_alu_extbs", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_QI, cvalu),
-RISCV_BUILTIN (cv_alu_extbz, "cv_alu_extbz", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_UQI, cvalu),
+RISCV_BUILTIN (cv_alu_exths, "cv_alu_exths", RISCV_SI_FTYPE_HI, cvalu),
+RISCV_BUILTIN (cv_alu_exthz, "cv_alu_exthz", RISCV_USI_FTYPE_UHI, cvalu),
+RISCV_BUILTIN (cv_alu_extbs, "cv_alu_extbs", RISCV_SI_FTYPE_QI, cvalu),
+RISCV_BUILTIN (cv_alu_extbz, "cv_alu_extbz", RISCV_USI_FTYPE_UQI, cvalu),
-RISCV_BUILTIN (cv_alu_clip, "cv_alu_clip", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI, cvalu),
-RISCV_BUILTIN (cv_alu_clipu, "cv_alu_clipu", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvalu),
-RISCV_BUILTIN (cv_alu_addN, "cv_alu_addN", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_UQI, cvalu),
-RISCV_BUILTIN (cv_alu_adduN, "cv_alu_adduN", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvalu),
-RISCV_BUILTIN (cv_alu_addRN, "cv_alu_addRN", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_UQI, cvalu),
-RISCV_BUILTIN (cv_alu_adduRN, "cv_alu_adduRN",RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvalu),
-RISCV_BUILTIN (cv_alu_subN, "cv_alu_subN", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_UQI, cvalu),
-RISCV_BUILTIN (cv_alu_subuN, "cv_alu_subuN", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvalu),
-RISCV_BUILTIN (cv_alu_subRN, "cv_alu_subRN", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_UQI, cvalu),
-RISCV_BUILTIN (cv_alu_subuRN, "cv_alu_subuRN",RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvalu),
+RISCV_BUILTIN (cv_alu_clip, "cv_alu_clip", RISCV_SI_FTYPE_SI_SI, cvalu),
+RISCV_BUILTIN (cv_alu_clipu, "cv_alu_clipu", RISCV_USI_FTYPE_USI_USI, cvalu),
+RISCV_BUILTIN (cv_alu_addN, "cv_alu_addN", RISCV_SI_FTYPE_SI_SI_UQI, cvalu),
+RISCV_BUILTIN (cv_alu_adduN, "cv_alu_adduN", RISCV_USI_FTYPE_USI_USI_UQI, cvalu),
+RISCV_BUILTIN (cv_alu_addRN, "cv_alu_addRN", RISCV_SI_FTYPE_SI_SI_UQI, cvalu),
+RISCV_BUILTIN (cv_alu_adduRN, "cv_alu_adduRN",RISCV_USI_FTYPE_USI_USI_UQI, cvalu),
+RISCV_BUILTIN (cv_alu_subN, "cv_alu_subN", RISCV_SI_FTYPE_SI_SI_UQI, cvalu),
+RISCV_BUILTIN (cv_alu_subuN, "cv_alu_subuN", RISCV_USI_FTYPE_USI_USI_UQI, cvalu),
+RISCV_BUILTIN (cv_alu_subRN, "cv_alu_subRN", RISCV_SI_FTYPE_SI_SI_UQI, cvalu),
+RISCV_BUILTIN (cv_alu_subuRN, "cv_alu_subuRN",RISCV_USI_FTYPE_USI_USI_UQI, cvalu),
// XCVELW
-RISCV_BUILTIN (cv_elw_elw_si, "cv_elw_elw", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_VOID_PTR, cvelw),
+RISCV_BUILTIN (cv_elw_elw_si, "cv_elw_elw", RISCV_USI_FTYPE_VOID_PTR, cvelw),
// XCVSIMD
//ALU Operations
-RISCV_BUILTIN (cv_simd_add_h_si, "cv_simd_add_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_add_b_si, "cv_simd_add_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_add_sc_h_si, "cv_simd_add_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_add_sc_b_si, "cv_simd_add_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_sub_h_si, "cv_simd_sub_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_sub_b_si, "cv_simd_sub_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sub_sc_h_si, "cv_simd_sub_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_sub_sc_b_si, "cv_simd_sub_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_avg_h_si, "cv_simd_avg_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_avg_b_si, "cv_simd_avg_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_avg_sc_h_si, "cv_simd_avg_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_avg_sc_b_si, "cv_simd_avg_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_avgu_h_si, "cv_simd_avgu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_avgu_b_si, "cv_simd_avgu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_avgu_sc_h_si, "cv_simd_avgu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
-RISCV_BUILTIN (cv_simd_avgu_sc_b_si, "cv_simd_avgu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_min_h_si, "cv_simd_min_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_min_b_si, "cv_simd_min_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_min_sc_h_si, "cv_simd_min_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_min_sc_b_si, "cv_simd_min_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_minu_h_si, "cv_simd_minu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_minu_b_si, "cv_simd_minu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_minu_sc_h_si, "cv_simd_minu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
-RISCV_BUILTIN (cv_simd_minu_sc_b_si, "cv_simd_minu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_max_h_si, "cv_simd_max_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_max_b_si, "cv_simd_max_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_max_sc_h_si, "cv_simd_max_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_max_sc_b_si, "cv_simd_max_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_maxu_h_si, "cv_simd_maxu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_maxu_b_si, "cv_simd_maxu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_maxu_sc_h_si, "cv_simd_maxu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
-RISCV_BUILTIN (cv_simd_maxu_sc_b_si, "cv_simd_maxu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_srl_h_si, "cv_simd_srl_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_srl_b_si, "cv_simd_srl_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_srl_sc_h_si, "cv_simd_srl_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_srl_sc_b_si, "cv_simd_srl_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_sra_h_si, "cv_simd_sra_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sra_b_si, "cv_simd_sra_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sra_sc_h_si, "cv_simd_sra_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_sra_sc_b_si, "cv_simd_sra_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_sll_h_si, "cv_simd_sll_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sll_b_si, "cv_simd_sll_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sll_sc_h_si, "cv_simd_sll_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_sll_sc_b_si, "cv_simd_sll_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_or_h_si, "cv_simd_or_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_or_b_si, "cv_simd_or_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_or_sc_h_si, "cv_simd_or_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_or_sc_b_si, "cv_simd_or_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_xor_h_si, "cv_simd_xor_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_xor_b_si, "cv_simd_xor_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_xor_sc_h_si, "cv_simd_xor_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_xor_sc_b_si, "cv_simd_xor_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_and_h_si, "cv_simd_and_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_and_b_si, "cv_simd_and_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_and_sc_h_si, "cv_simd_and_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_and_sc_b_si, "cv_simd_and_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_abs_h_si, "cv_simd_abs_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_abs_b_si, "cv_simd_abs_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_neg_h_si, "cv_simd_neg_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_neg_b_si, "cv_simd_neg_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_add_h_si, "cv_simd_add_h", RISCV_USI_FTYPE_USI_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_add_b_si, "cv_simd_add_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_add_sc_h_si, "cv_simd_add_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_add_sc_b_si, "cv_simd_add_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_sub_h_si, "cv_simd_sub_h", RISCV_USI_FTYPE_USI_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_sub_b_si, "cv_simd_sub_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sub_sc_h_si, "cv_simd_sub_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_sub_sc_b_si, "cv_simd_sub_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_avg_h_si, "cv_simd_avg_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_avg_b_si, "cv_simd_avg_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_avg_sc_h_si, "cv_simd_avg_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_avg_sc_b_si, "cv_simd_avg_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_avgu_h_si, "cv_simd_avgu_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_avgu_b_si, "cv_simd_avgu_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_avgu_sc_h_si, "cv_simd_avgu_sc_h", RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_avgu_sc_b_si, "cv_simd_avgu_sc_b", RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_min_h_si, "cv_simd_min_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_min_b_si, "cv_simd_min_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_min_sc_h_si, "cv_simd_min_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_min_sc_b_si, "cv_simd_min_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_minu_h_si, "cv_simd_minu_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_minu_b_si, "cv_simd_minu_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_minu_sc_h_si, "cv_simd_minu_sc_h", RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_minu_sc_b_si, "cv_simd_minu_sc_b", RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_max_h_si, "cv_simd_max_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_max_b_si, "cv_simd_max_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_max_sc_h_si, "cv_simd_max_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_max_sc_b_si, "cv_simd_max_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_maxu_h_si, "cv_simd_maxu_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_maxu_b_si, "cv_simd_maxu_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_maxu_sc_h_si, "cv_simd_maxu_sc_h", RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_maxu_sc_b_si, "cv_simd_maxu_sc_b", RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_srl_h_si, "cv_simd_srl_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_srl_b_si, "cv_simd_srl_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_srl_sc_h_si, "cv_simd_srl_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_srl_sc_b_si, "cv_simd_srl_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_sra_h_si, "cv_simd_sra_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sra_b_si, "cv_simd_sra_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sra_sc_h_si, "cv_simd_sra_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_sra_sc_b_si, "cv_simd_sra_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_sll_h_si, "cv_simd_sll_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sll_b_si, "cv_simd_sll_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sll_sc_h_si, "cv_simd_sll_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_sll_sc_b_si, "cv_simd_sll_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_or_h_si, "cv_simd_or_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_or_b_si, "cv_simd_or_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_or_sc_h_si, "cv_simd_or_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_or_sc_b_si, "cv_simd_or_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_xor_h_si, "cv_simd_xor_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_xor_b_si, "cv_simd_xor_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_xor_sc_h_si, "cv_simd_xor_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_xor_sc_b_si, "cv_simd_xor_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_and_h_si, "cv_simd_and_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_and_b_si, "cv_simd_and_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_and_sc_h_si, "cv_simd_and_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_and_sc_b_si, "cv_simd_and_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_abs_h_si, "cv_simd_abs_h", RISCV_USI_FTYPE_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_abs_b_si, "cv_simd_abs_b", RISCV_USI_FTYPE_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_neg_h_si, "cv_simd_neg_h", RISCV_USI_FTYPE_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_neg_b_si, "cv_simd_neg_b", RISCV_USI_FTYPE_USI, cvsimd),
//BIT MANIPULATION
-RISCV_BUILTIN (cv_simd_extract_h_si, "cv_simd_extract_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_extract_b_si, "cv_simd_extract_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_extractu_h_si, "cv_simd_extractu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_extractu_b_si, "cv_simd_extractu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_insert_h_si, "cv_simd_insert_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_insert_b_si, "cv_simd_insert_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_extract_h_si, "cv_simd_extract_h", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_extract_b_si, "cv_simd_extract_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_extractu_h_si, "cv_simd_extractu_h", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_extractu_b_si, "cv_simd_extractu_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_insert_h_si, "cv_simd_insert_h", RISCV_USI_FTYPE_USI_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_insert_b_si, "cv_simd_insert_b", RISCV_USI_FTYPE_USI_USI_QI, cvsimd),
//DOT PRODUCT
-RISCV_BUILTIN (cv_simd_dotup_h_si, "cv_simd_dotup_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_dotup_b_si, "cv_simd_dotup_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_dotup_sc_h_si, "cv_simd_dotup_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
-RISCV_BUILTIN (cv_simd_dotup_sc_b_si, "cv_simd_dotup_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_dotusp_h_si, "cv_simd_dotusp_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_dotusp_b_si, "cv_simd_dotusp_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_dotusp_sc_h_si, "cv_simd_dotusp_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_dotusp_sc_b_si, "cv_simd_dotusp_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_dotsp_h_si, "cv_simd_dotsp_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_dotsp_b_si, "cv_simd_dotsp_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_dotsp_sc_h_si, "cv_simd_dotsp_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_dotsp_sc_b_si, "cv_simd_dotsp_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_sdotup_h_si, "cv_simd_sdotup_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sdotup_b_si, "cv_simd_sdotup_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sdotup_sc_h_si, "cv_simd_sdotup_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sdotup_sc_b_si, "cv_simd_sdotup_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sdotusp_h_si, "cv_simd_sdotusp_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sdotusp_b_si, "cv_simd_sdotusp_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sdotusp_sc_h_si, "cv_simd_sdotusp_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sdotusp_sc_b_si, "cv_simd_sdotusp_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sdotsp_h_si, "cv_simd_sdotsp_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sdotsp_b_si, "cv_simd_sdotsp_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sdotsp_sc_h_si, "cv_simd_sdotsp_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_sdotsp_sc_b_si, "cv_simd_sdotsp_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotup_h_si, "cv_simd_dotup_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotup_b_si, "cv_simd_dotup_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotup_sc_h_si, "cv_simd_dotup_sc_h", RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotup_sc_b_si, "cv_simd_dotup_sc_b", RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotusp_h_si, "cv_simd_dotusp_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotusp_b_si, "cv_simd_dotusp_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotusp_sc_h_si, "cv_simd_dotusp_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotusp_sc_b_si, "cv_simd_dotusp_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotsp_h_si, "cv_simd_dotsp_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotsp_b_si, "cv_simd_dotsp_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotsp_sc_h_si, "cv_simd_dotsp_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_dotsp_sc_b_si, "cv_simd_dotsp_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotup_h_si, "cv_simd_sdotup_h", RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotup_b_si, "cv_simd_sdotup_b", RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotup_sc_h_si, "cv_simd_sdotup_sc_h", RISCV_USI_FTYPE_USI_UHI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotup_sc_b_si, "cv_simd_sdotup_sc_b", RISCV_USI_FTYPE_USI_UQI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotusp_h_si, "cv_simd_sdotusp_h", RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotusp_b_si, "cv_simd_sdotusp_b", RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotusp_sc_h_si, "cv_simd_sdotusp_sc_h", RISCV_USI_FTYPE_USI_HI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotusp_sc_b_si, "cv_simd_sdotusp_sc_b", RISCV_USI_FTYPE_USI_QI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotsp_h_si, "cv_simd_sdotsp_h", RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotsp_b_si, "cv_simd_sdotsp_b", RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotsp_sc_h_si, "cv_simd_sdotsp_sc_h", RISCV_USI_FTYPE_USI_HI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_sdotsp_sc_b_si, "cv_simd_sdotsp_sc_b", RISCV_USI_FTYPE_USI_QI_USI, cvsimd),
//SHUFFLE AND PACK
-RISCV_BUILTIN (cv_simd_shuffle_h_si, "cv_simd_shuffle_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_shuffle_sci_h_si, "cv_simd_shuffle_sci_h",RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_shuffle_b_si, "cv_simd_shuffle_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_shuffle_sci_b_si, "cv_simd_shuffle_sci_b",RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_shuffle2_h_si, "cv_simd_shuffle2_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_shuffle2_b_si, "cv_simd_shuffle2_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_packhi_h_si, "cv_simd_packhi_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_packlo_h_si, "cv_simd_packlo_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_packhi_b_si, "cv_simd_packhi_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_packlo_b_si, "cv_simd_packlo_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
-//RISCV_BUILTIN (cv_simd_pack_si, "cv_simd_pack", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-//RISCV_BUILTIN (cv_simd_pack_h_si, "cv_simd_pack_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-//RISCV_BUILTIN (cv_simd_packhi_b_si, "cv_simd_packhi_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
-//RISCV_BUILTIN (cv_simd_packlo_b_si, "cv_simd_packlo_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_shuffle_h_si, "cv_simd_shuffle_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_shuffle_sci_h_si, "cv_simd_shuffle_sci_h",RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_shuffle_b_si, "cv_simd_shuffle_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_shuffle_sci_b_si, "cv_simd_shuffle_sci_b",RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_shuffle2_h_si, "cv_simd_shuffle2_h", RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_shuffle2_b_si, "cv_simd_shuffle2_b", RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_packhi_h_si, "cv_simd_packhi_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_packlo_h_si, "cv_simd_packlo_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_packhi_b_si, "cv_simd_packhi_b", RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_packlo_b_si, "cv_simd_packlo_b", RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+//RISCV_BUILTIN (cv_simd_pack_si, "cv_simd_pack", RISCV_USI_FTYPE_USI_USI, cvsimd),
+//RISCV_BUILTIN (cv_simd_pack_h_si, "cv_simd_pack_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+//RISCV_BUILTIN (cv_simd_packhi_b_si, "cv_simd_packhi_b", RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
+//RISCV_BUILTIN (cv_simd_packlo_b_si, "cv_simd_packlo_b", RISCV_USI_FTYPE_USI_USI_USI, cvsimd),
//COMPARISON OPERATIONS
-RISCV_BUILTIN (cv_simd_cmpeq_h_si, "cv_simd_cmpeq_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpeq_b_si, "cv_simd_cmpeq_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpeq_sc_h_si, "cv_simd_cmpeq_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpeq_sc_b_si, "cv_simd_cmpeq_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpne_h_si, "cv_simd_cmpne_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpne_b_si, "cv_simd_cmpne_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpne_sc_h_si, "cv_simd_cmpne_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpne_sc_b_si, "cv_simd_cmpne_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpgt_h_si, "cv_simd_cmpgt_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpgt_b_si, "cv_simd_cmpgt_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpgt_sc_h_si, "cv_simd_cmpgt_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpgt_sc_b_si, "cv_simd_cmpgt_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpge_h_si, "cv_simd_cmpge_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpge_b_si, "cv_simd_cmpge_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpge_sc_h_si, "cv_simd_cmpge_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpge_sc_b_si, "cv_simd_cmpge_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmplt_h_si, "cv_simd_cmplt_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmplt_b_si, "cv_simd_cmplt_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmplt_sc_h_si, "cv_simd_cmplt_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmplt_sc_b_si, "cv_simd_cmplt_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmple_h_si, "cv_simd_cmple_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmple_b_si, "cv_simd_cmple_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmple_sc_h_si, "cv_simd_cmple_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_HI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmple_sc_b_si, "cv_simd_cmple_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_QI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpgtu_h_si, "cv_simd_cmpgtu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpgtu_b_si, "cv_simd_cmpgtu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpgtu_sc_h_si, "cv_simd_cmpgtu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpgtu_sc_b_si, "cv_simd_cmpgtu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpgeu_h_si, "cv_simd_cmpgeu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpgeu_b_si, "cv_simd_cmpgeu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpgeu_sc_h_si, "cv_simd_cmpgeu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpgeu_sc_b_si, "cv_simd_cmpgeu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpltu_h_si, "cv_simd_cmpltu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpltu_b_si, "cv_simd_cmpltu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpltu_sc_h_si, "cv_simd_cmpltu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpltu_sc_b_si, "cv_simd_cmpltu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpleu_h_si, "cv_simd_cmpleu_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpleu_b_si, "cv_simd_cmpleu_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpleu_sc_h_si, "cv_simd_cmpleu_sc_h", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UHI, cvsimd),
-RISCV_BUILTIN (cv_simd_cmpleu_sc_b_si, "cv_simd_cmpleu_sc_b", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpeq_h_si, "cv_simd_cmpeq_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpeq_b_si, "cv_simd_cmpeq_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpeq_sc_h_si, "cv_simd_cmpeq_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpeq_sc_b_si, "cv_simd_cmpeq_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpne_h_si, "cv_simd_cmpne_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpne_b_si, "cv_simd_cmpne_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpne_sc_h_si, "cv_simd_cmpne_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpne_sc_b_si, "cv_simd_cmpne_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgt_h_si, "cv_simd_cmpgt_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgt_b_si, "cv_simd_cmpgt_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgt_sc_h_si, "cv_simd_cmpgt_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgt_sc_b_si, "cv_simd_cmpgt_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpge_h_si, "cv_simd_cmpge_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpge_b_si, "cv_simd_cmpge_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpge_sc_h_si, "cv_simd_cmpge_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpge_sc_b_si, "cv_simd_cmpge_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmplt_h_si, "cv_simd_cmplt_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmplt_b_si, "cv_simd_cmplt_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmplt_sc_h_si, "cv_simd_cmplt_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmplt_sc_b_si, "cv_simd_cmplt_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmple_h_si, "cv_simd_cmple_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmple_b_si, "cv_simd_cmple_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmple_sc_h_si, "cv_simd_cmple_sc_h", RISCV_USI_FTYPE_USI_HI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmple_sc_b_si, "cv_simd_cmple_sc_b", RISCV_USI_FTYPE_USI_QI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgtu_h_si, "cv_simd_cmpgtu_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgtu_b_si, "cv_simd_cmpgtu_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgtu_sc_h_si, "cv_simd_cmpgtu_sc_h", RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgtu_sc_b_si, "cv_simd_cmpgtu_sc_b", RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgeu_h_si, "cv_simd_cmpgeu_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgeu_b_si, "cv_simd_cmpgeu_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgeu_sc_h_si, "cv_simd_cmpgeu_sc_h", RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpgeu_sc_b_si, "cv_simd_cmpgeu_sc_b", RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpltu_h_si, "cv_simd_cmpltu_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpltu_b_si, "cv_simd_cmpltu_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpltu_sc_h_si, "cv_simd_cmpltu_sc_h", RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpltu_sc_b_si, "cv_simd_cmpltu_sc_b", RISCV_USI_FTYPE_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpleu_h_si, "cv_simd_cmpleu_h", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpleu_b_si, "cv_simd_cmpleu_b", RISCV_USI_FTYPE_USI_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpleu_sc_h_si, "cv_simd_cmpleu_sc_h", RISCV_USI_FTYPE_USI_UHI, cvsimd),
+RISCV_BUILTIN (cv_simd_cmpleu_sc_b_si, "cv_simd_cmpleu_sc_b", RISCV_USI_FTYPE_USI_UQI, cvsimd),
//COMPLEX NUMBER
-RISCV_BUILTIN (cv_simd_cplxmul_r_si, "cv_simd_cplxmul_r", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_cplxmul_i_si, "cv_simd_cplxmul_i", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI_UQI, cvsimd),
-RISCV_BUILTIN (cv_simd_cplxconj_si, "cv_simd_cplxconj", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, cvsimd),
-RISCV_BUILTIN (cv_simd_subrotmj_si, "cv_simd_subrotmj", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_cplxmul_r_si, "cv_simd_cplxmul_r", RISCV_USI_FTYPE_USI_USI_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_cplxmul_i_si, "cv_simd_cplxmul_i", RISCV_USI_FTYPE_USI_USI_USI_UQI, cvsimd),
+RISCV_BUILTIN (cv_simd_cplxconj_si, "cv_simd_cplxconj", RISCV_USI_FTYPE_USI, cvsimd),
+RISCV_BUILTIN (cv_simd_subrotmj_si, "cv_simd_subrotmj", RISCV_USI_FTYPE_USI_USI_UQI, cvsimd),
diff --git a/gcc/config/riscv/riscv-builtins.cc b/gcc/config/riscv/riscv-builtins.cc
index 8c57fbb1aaa..997e637be91 100644
--- a/gcc/config/riscv/riscv-builtins.cc
+++ b/gcc/config/riscv/riscv-builtins.cc
@@ -58,15 +58,6 @@ enum riscv_function_type {
RISCV_MAX_FTYPE_MAX
};
-/* Specifies how a built-in function should be converted into rtl. */
-enum riscv_builtin_type {
- /* The function corresponds directly to an .md pattern. */
- RISCV_BUILTIN_DIRECT,
-
- /* Likewise, but with return type VOID. */
- RISCV_BUILTIN_DIRECT_NO_TARGET
-};
-
/* Declare an availability predicate for built-in functions. */
#define AVAIL(NAME, COND) \
static unsigned int \
@@ -77,18 +68,18 @@ enum riscv_builtin_type {
/* This structure describes a single built-in function. */
struct riscv_builtin_description {
+ /* The name of the built-in function. */
+ const char *name;
+
/* The code of the main .md file instruction. See riscv_builtin_type
for more information. */
enum insn_code icode;
- /* The name of the built-in function. */
- const char *name;
-
- /* Specifies how the function should be expanded. */
- enum riscv_builtin_type builtin_type;
-
/* The function's prototype. */
- enum riscv_function_type prototype;
+ enum riscv_function_type prototype : 24;
+
+ /* True, if the function returns void (and so expansion has no target RTL). */
+ bool no_target : 8;
/* Whether the function is available. */
unsigned int (*avail) (void);
@@ -142,50 +133,33 @@ AVAIL (andesperf32, !TARGET_64BIT && TARGET_XANDESPERF)
AVAIL (andesperf64, TARGET_64BIT && TARGET_XANDESPERF)
AVAIL (andesbfhcvt, TARGET_XANDESBFHCVT)
-/* Construct a riscv_builtin_description from the given arguments.
-
- INSN is the name of the associated instruction pattern, without the
- leading CODE_FOR_riscv_.
+/* Construct a riscv_builtin_description from the given arguments like RISCV_BUILTIN.
NAME is the name of the function itself, without the leading
"__builtin_riscv_".
- BUILTIN_TYPE and FUNCTION_TYPE are riscv_builtin_description fields.
-
- AVAIL is the name of the availability predicate, without the leading
- riscv_builtin_avail_. */
-#define RISCV_BUILTIN(INSN, NAME, BUILTIN_TYPE, FUNCTION_TYPE, AVAIL) \
- { CODE_FOR_riscv_ ## INSN, "__builtin_riscv_" NAME, \
- BUILTIN_TYPE, FUNCTION_TYPE, riscv_builtin_avail_ ## AVAIL }
-
-/* Construct a riscv_builtin_description from the given arguments like RISCV_BUILTIN.
-
INSN is the name of the associated instruction pattern, without the
leading CODE_FOR_.
- NAME is the name of the function itself, without the leading
- "__builtin_riscv_".
-
- BUILTIN_TYPE and FUNCTION_TYPE are riscv_builtin_description fields.
+ FUNCTION_TYPE is the builtin type enumerator.
AVAIL is the name of the availability predicate, without the leading
riscv_builtin_avail_. */
-#define RISCV_BUILTIN_NO_PREFIX(INSN, NAME, BUILTIN_TYPE, FUNCTION_TYPE, AVAIL) \
- { CODE_FOR_ ## INSN, "__builtin_riscv_" NAME, \
- BUILTIN_TYPE, FUNCTION_TYPE, riscv_builtin_avail_ ## AVAIL }
+#define RISCV_BUILTIN_NO_PREFIX(INSN, NAME, FUNCTION_TYPE, AVAIL) \
+ { "__builtin_riscv_" NAME, CODE_FOR_ ## INSN, \
+ FUNCTION_TYPE, false, riscv_builtin_avail_ ## AVAIL }
-/* Define __builtin_riscv_<INSN>, which is a RISCV_BUILTIN_DIRECT function
- mapped to instruction CODE_FOR_riscv_<INSN>, FUNCTION_TYPE and AVAIL
- are as for RISCV_BUILTIN. */
+/* Like RISCV_BUiLTIN_NO_PREFIX but with a 'riscv_' prefix added to the
+ instruction code. */
+#define RISCV_BUILTIN(INSN, NAME, FUNCTION_TYPE, AVAIL) \
+ RISCV_BUILTIN_NO_PREFIX (riscv_ ## INSN, NAME, FUNCTION_TYPE, AVAIL)
+
+/* Define __builtin_riscv_<INSN>, which is builtin function mapped to
+ instruction CODE_FOR_riscv_<INSN>, FUNCTION_TYPE and AVAIL are as for
+ RISCV_BUILTIN. */
#define DIRECT_BUILTIN(INSN, FUNCTION_TYPE, AVAIL) \
- RISCV_BUILTIN (INSN, #INSN, RISCV_BUILTIN_DIRECT, FUNCTION_TYPE, AVAIL)
+ RISCV_BUILTIN (INSN, #INSN, FUNCTION_TYPE, AVAIL)
-/* Define __builtin_riscv_<INSN>, which is a RISCV_BUILTIN_DIRECT_NO_TARGET
- function mapped to instruction CODE_FOR_riscv_<INSN>, FUNCTION_TYPE
- and AVAIL are as for RISCV_BUILTIN. */
-#define DIRECT_NO_TARGET_BUILTIN(INSN, FUNCTION_TYPE, AVAIL) \
- RISCV_BUILTIN (INSN, #INSN, RISCV_BUILTIN_DIRECT_NO_TARGET, \
- FUNCTION_TYPE, AVAIL)
/* Argument types. */
#define RISCV_ATYPE_VOID void_type_node
@@ -216,15 +190,15 @@ AVAIL (andesbfhcvt, TARGET_XANDESBFHCVT)
RISCV_ATYPE_##A, RISCV_ATYPE_##B, RISCV_ATYPE_##C, RISCV_ATYPE_##D, \
RISCV_ATYPE_##E
-static const struct riscv_builtin_description riscv_builtins[] = {
+static struct riscv_builtin_description riscv_builtins[] = {
#include "riscv-cmo.def"
#include "riscv-scalar-crypto.def"
#include "corev.def"
#include "andes.def"
DIRECT_BUILTIN (frflags, RISCV_USI_FTYPE, hard_float),
- DIRECT_NO_TARGET_BUILTIN (fsflags, RISCV_VOID_FTYPE_USI, hard_float),
- RISCV_BUILTIN (pause, "pause", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE, hint_pause),
+ DIRECT_BUILTIN (fsflags, RISCV_VOID_FTYPE_USI, hard_float),
+ RISCV_BUILTIN (pause, "pause", RISCV_VOID_FTYPE, hint_pause),
};
/* Index I is the function declaration for riscv_builtins[I], or null if the
@@ -310,10 +284,12 @@ riscv_init_builtins (void)
for (size_t i = 0; i < ARRAY_SIZE (riscv_builtins); i++)
{
- const struct riscv_builtin_description *d = &riscv_builtins[i];
+ struct riscv_builtin_description *d = &riscv_builtins[i];
if (d->avail ())
{
tree type = riscv_build_function_type (d->prototype);
+ if (VOID_TYPE_P (TREE_TYPE (type)))
+ d->no_target = true;
riscv_builtin_decls[i]
= add_builtin_function (d->name, type,
(i << RISCV_BUILTIN_SHIFT)
@@ -443,14 +419,7 @@ riscv_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
case RISCV_BUILTIN_GENERAL: {
const struct riscv_builtin_description *d = &riscv_builtins[subcode];
- switch (d->builtin_type)
- {
- case RISCV_BUILTIN_DIRECT:
- return riscv_expand_builtin_direct (d->icode, target, exp, true);
-
- case RISCV_BUILTIN_DIRECT_NO_TARGET:
- return riscv_expand_builtin_direct (d->icode, target, exp, false);
- }
+ return riscv_expand_builtin_direct (d->icode, target, exp, !d->no_target);
}
}
diff --git a/gcc/config/riscv/riscv-cmo.def b/gcc/config/riscv/riscv-cmo.def
index 78cf1d84070..f3c7fbd72e3 100644
--- a/gcc/config/riscv/riscv-cmo.def
+++ b/gcc/config/riscv/riscv-cmo.def
@@ -1,27 +1,27 @@
// zicbom
-RISCV_BUILTIN (clean_si, "zicbom_cbo_clean", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, clean32),
-RISCV_BUILTIN (clean_di, "zicbom_cbo_clean", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, clean64),
+RISCV_BUILTIN (clean_si, "zicbom_cbo_clean", RISCV_VOID_FTYPE_VOID_PTR, clean32),
+RISCV_BUILTIN (clean_di, "zicbom_cbo_clean", RISCV_VOID_FTYPE_VOID_PTR, clean64),
-RISCV_BUILTIN (flush_si, "zicbom_cbo_flush", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, flush32),
-RISCV_BUILTIN (flush_di, "zicbom_cbo_flush", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, flush64),
+RISCV_BUILTIN (flush_si, "zicbom_cbo_flush", RISCV_VOID_FTYPE_VOID_PTR, flush32),
+RISCV_BUILTIN (flush_di, "zicbom_cbo_flush", RISCV_VOID_FTYPE_VOID_PTR, flush64),
-RISCV_BUILTIN (inval_si, "zicbom_cbo_inval", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, inval32),
-RISCV_BUILTIN (inval_di, "zicbom_cbo_inval", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, inval64),
+RISCV_BUILTIN (inval_si, "zicbom_cbo_inval", RISCV_VOID_FTYPE_VOID_PTR, inval32),
+RISCV_BUILTIN (inval_di, "zicbom_cbo_inval", RISCV_VOID_FTYPE_VOID_PTR, inval64),
// zicboz
-RISCV_BUILTIN (zero_si, "zicboz_cbo_zero", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, zero32),
-RISCV_BUILTIN (zero_di, "zicboz_cbo_zero", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, zero64),
+RISCV_BUILTIN (zero_si, "zicboz_cbo_zero", RISCV_VOID_FTYPE_VOID_PTR, zero32),
+RISCV_BUILTIN (zero_di, "zicboz_cbo_zero", RISCV_VOID_FTYPE_VOID_PTR, zero64),
// zicbop
-RISCV_BUILTIN (prefetchi_si, "zicbop_cbo_prefetchi", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, prefetchi32),
-RISCV_BUILTIN (prefetchi_di, "zicbop_cbo_prefetchi", RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI, prefetchi64),
+RISCV_BUILTIN (prefetchi_si, "zicbop_cbo_prefetchi", RISCV_USI_FTYPE_USI, prefetchi32),
+RISCV_BUILTIN (prefetchi_di, "zicbop_cbo_prefetchi", RISCV_UDI_FTYPE_UDI, prefetchi64),
// zbkc or zbc
-RISCV_BUILTIN (clmul_si, "clmul_32", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, clmul_zbkc_or_zbc),
-RISCV_BUILTIN (clmul_di, "clmul_64", RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI_UDI, clmul_zbkc64_or_zbc64),
-RISCV_BUILTIN (clmulh_si, "clmulh_32", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, clmul_zbkc32_or_zbc32),
-RISCV_BUILTIN (clmulh_di, "clmulh_64", RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI_UDI, clmul_zbkc64_or_zbc64),
+RISCV_BUILTIN (clmul_si, "clmul_32", RISCV_USI_FTYPE_USI_USI, clmul_zbkc_or_zbc),
+RISCV_BUILTIN (clmul_di, "clmul_64", RISCV_UDI_FTYPE_UDI_UDI, clmul_zbkc64_or_zbc64),
+RISCV_BUILTIN (clmulh_si, "clmulh_32", RISCV_USI_FTYPE_USI_USI, clmul_zbkc32_or_zbc32),
+RISCV_BUILTIN (clmulh_di, "clmulh_64", RISCV_UDI_FTYPE_UDI_UDI, clmul_zbkc64_or_zbc64),
// zbc
-RISCV_BUILTIN (clmulr_si, "clmulr_32", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, clmulr_zbc32),
-RISCV_BUILTIN (clmulr_di, "clmulr_64", RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI_UDI, clmulr_zbc64),
+RISCV_BUILTIN (clmulr_si, "clmulr_32", RISCV_USI_FTYPE_USI_USI, clmulr_zbc32),
+RISCV_BUILTIN (clmulr_di, "clmulr_64", RISCV_UDI_FTYPE_UDI_UDI, clmulr_zbc64),
diff --git a/gcc/config/riscv/riscv-scalar-crypto.def b/gcc/config/riscv/riscv-scalar-crypto.def
index 28b3408fcd4..a0781dcb6bb 100644
--- a/gcc/config/riscv/riscv-scalar-crypto.def
+++ b/gcc/config/riscv/riscv-scalar-crypto.def
@@ -18,25 +18,25 @@ along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
// ZBKB
-RISCV_BUILTIN (pack_sihi, "pack", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_UHI_UHI, crypto_zbkb32),
-RISCV_BUILTIN (pack_disi, "pack", RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_USI_USI, crypto_zbkb64),
+RISCV_BUILTIN (pack_sihi, "pack", RISCV_USI_FTYPE_UHI_UHI, crypto_zbkb32),
+RISCV_BUILTIN (pack_disi, "pack", RISCV_UDI_FTYPE_USI_USI, crypto_zbkb64),
-RISCV_BUILTIN (packh_si, "packh", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_UQI_UQI, crypto_zbkb32),
-RISCV_BUILTIN (packh_di, "packh", RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UQI_UQI, crypto_zbkb64),
+RISCV_BUILTIN (packh_si, "packh", RISCV_USI_FTYPE_UQI_UQI, crypto_zbkb32),
+RISCV_BUILTIN (packh_di, "packh", RISCV_UDI_FTYPE_UQI_UQI, crypto_zbkb64),
-RISCV_BUILTIN (packw, "packw", RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UHI_UHI, crypto_zbkb64),
+RISCV_BUILTIN (packw, "packw", RISCV_UDI_FTYPE_UHI_UHI, crypto_zbkb64),
-RISCV_BUILTIN (zip, "zip", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, crypto_zbkb32),
-RISCV_BUILTIN (unzip, "unzip", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, crypto_zbkb32),
+RISCV_BUILTIN (zip, "zip", RISCV_USI_FTYPE_USI, crypto_zbkb32),
+RISCV_BUILTIN (unzip, "unzip", RISCV_USI_FTYPE_USI, crypto_zbkb32),
-RISCV_BUILTIN (brev8_si, "brev8_32", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, crypto_zbkb),
-RISCV_BUILTIN (brev8_di, "brev8_64", RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI, crypto_zbkb64),
+RISCV_BUILTIN (brev8_si, "brev8_32", RISCV_USI_FTYPE_USI, crypto_zbkb),
+RISCV_BUILTIN (brev8_di, "brev8_64", RISCV_UDI_FTYPE_UDI, crypto_zbkb64),
// ZBKX
-RISCV_BUILTIN (xperm4_si, "xperm4", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, crypto_zbkx32),
-RISCV_BUILTIN (xperm4_di, "xperm4", RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI_UDI, crypto_zbkx64),
-RISCV_BUILTIN (xperm8_si, "xperm8", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI, crypto_zbkx32),
-RISCV_BUILTIN (xperm8_di, "xperm8", RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI_UDI, crypto_zbkx64),
+RISCV_BUILTIN (xperm4_si, "xperm4", RISCV_USI_FTYPE_USI_USI, crypto_zbkx32),
+RISCV_BUILTIN (xperm4_di, "xperm4", RISCV_UDI_FTYPE_UDI_UDI, crypto_zbkx64),
+RISCV_BUILTIN (xperm8_si, "xperm8", RISCV_USI_FTYPE_USI_USI, crypto_zbkx32),
+RISCV_BUILTIN (xperm8_di, "xperm8", RISCV_UDI_FTYPE_UDI_UDI, crypto_zbkx64),
// ZKND
DIRECT_BUILTIN (aes32dsi, RISCV_USI_FTYPE_USI_USI_USI, crypto_zknd32),
@@ -54,10 +54,10 @@ DIRECT_BUILTIN (aes64es, RISCV_UDI_FTYPE_UDI_UDI, crypto_zkne64),
DIRECT_BUILTIN (aes64esm, RISCV_UDI_FTYPE_UDI_UDI, crypto_zkne64),
// ZKNH
-RISCV_BUILTIN (sha256sig0_si, "sha256sig0", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, crypto_zknh),
-RISCV_BUILTIN (sha256sig1_si, "sha256sig1", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, crypto_zknh),
-RISCV_BUILTIN (sha256sum0_si, "sha256sum0", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, crypto_zknh),
-RISCV_BUILTIN (sha256sum1_si, "sha256sum1", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, crypto_zknh),
+RISCV_BUILTIN (sha256sig0_si, "sha256sig0", RISCV_USI_FTYPE_USI, crypto_zknh),
+RISCV_BUILTIN (sha256sig1_si, "sha256sig1", RISCV_USI_FTYPE_USI, crypto_zknh),
+RISCV_BUILTIN (sha256sum0_si, "sha256sum0", RISCV_USI_FTYPE_USI, crypto_zknh),
+RISCV_BUILTIN (sha256sum1_si, "sha256sum1", RISCV_USI_FTYPE_USI, crypto_zknh),
DIRECT_BUILTIN (sha512sig0h, RISCV_USI_FTYPE_USI_USI, crypto_zknh32),
DIRECT_BUILTIN (sha512sig0l, RISCV_USI_FTYPE_USI_USI, crypto_zknh32),
@@ -72,27 +72,27 @@ DIRECT_BUILTIN (sha512sum0, RISCV_UDI_FTYPE_UDI, crypto_zknh64),
DIRECT_BUILTIN (sha512sum1, RISCV_UDI_FTYPE_UDI, crypto_zknh64),
// ZKSH
-RISCV_BUILTIN (sm3p0_si, "sm3p0", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, crypto_zksh),
-RISCV_BUILTIN (sm3p1_si, "sm3p1", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI, crypto_zksh),
+RISCV_BUILTIN (sm3p0_si, "sm3p0", RISCV_USI_FTYPE_USI, crypto_zksh),
+RISCV_BUILTIN (sm3p1_si, "sm3p1", RISCV_USI_FTYPE_USI, crypto_zksh),
// ZKSED
-RISCV_BUILTIN (sm4ed_si, "sm4ed", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, crypto_zksed),
-RISCV_BUILTIN (sm4ks_si, "sm4ks", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_USI_USI, crypto_zksed),
+RISCV_BUILTIN (sm4ed_si, "sm4ed", RISCV_USI_FTYPE_USI_USI_USI, crypto_zksed),
+RISCV_BUILTIN (sm4ks_si, "sm4ks", RISCV_USI_FTYPE_USI_USI_USI, crypto_zksed),
// ZBB
-RISCV_BUILTIN_NO_PREFIX (clzsi2,"clz_32",RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI,zbb),
-RISCV_BUILTIN_NO_PREFIX (clzdi2,"clz_64",RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI,zbb64),
-RISCV_BUILTIN_NO_PREFIX (ctzsi2,"ctz_32",RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI,zbb),
-RISCV_BUILTIN_NO_PREFIX (ctzdi2,"ctz_64",RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI,zbb64),
-RISCV_BUILTIN_NO_PREFIX (popcountsi2,"popcount_32",RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI,zbb),
-RISCV_BUILTIN_NO_PREFIX (popcountdi2,"popcount_64",RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI,zbb64),
-RISCV_BUILTIN_NO_PREFIX (orcbsi2,"orc_b_32", RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI,zbb),
-RISCV_BUILTIN_NO_PREFIX (orcbdi2,"orc_b_64",RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI,zbb64),
+RISCV_BUILTIN_NO_PREFIX (clzsi2,"clz_32",RISCV_USI_FTYPE_USI,zbb),
+RISCV_BUILTIN_NO_PREFIX (clzdi2,"clz_64",RISCV_UDI_FTYPE_UDI,zbb64),
+RISCV_BUILTIN_NO_PREFIX (ctzsi2,"ctz_32",RISCV_USI_FTYPE_USI,zbb),
+RISCV_BUILTIN_NO_PREFIX (ctzdi2,"ctz_64",RISCV_UDI_FTYPE_UDI,zbb64),
+RISCV_BUILTIN_NO_PREFIX (popcountsi2,"popcount_32",RISCV_USI_FTYPE_USI,zbb),
+RISCV_BUILTIN_NO_PREFIX (popcountdi2,"popcount_64",RISCV_UDI_FTYPE_UDI,zbb64),
+RISCV_BUILTIN_NO_PREFIX (orcbsi2,"orc_b_32", RISCV_USI_FTYPE_USI,zbb),
+RISCV_BUILTIN_NO_PREFIX (orcbdi2,"orc_b_64",RISCV_UDI_FTYPE_UDI,zbb64),
// ZBKB
-RISCV_BUILTIN_NO_PREFIX (rotrsi3,"ror_32",RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI,zbb_or_zbkb),
-RISCV_BUILTIN_NO_PREFIX (rotlsi3,"rol_32",RISCV_BUILTIN_DIRECT, RISCV_USI_FTYPE_USI_UQI,zbb_or_zbkb),
-RISCV_BUILTIN_NO_PREFIX (rotrdi3,"ror_64",RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI_UQI,zbb64_or_zbkb64),
-RISCV_BUILTIN_NO_PREFIX (rotldi3,"rol_64",RISCV_BUILTIN_DIRECT, RISCV_UDI_FTYPE_UDI_UQI,zbb64_or_zbkb64),
+RISCV_BUILTIN_NO_PREFIX (rotrsi3,"ror_32",RISCV_USI_FTYPE_USI_UQI,zbb_or_zbkb),
+RISCV_BUILTIN_NO_PREFIX (rotlsi3,"rol_32",RISCV_USI_FTYPE_USI_UQI,zbb_or_zbkb),
+RISCV_BUILTIN_NO_PREFIX (rotrdi3,"ror_64",RISCV_UDI_FTYPE_UDI_UQI,zbb64_or_zbkb64),
+RISCV_BUILTIN_NO_PREFIX (rotldi3,"rol_64",RISCV_UDI_FTYPE_UDI_UQI,zbb64_or_zbkb64),
--
2.53.0