https://gcc.gnu.org/g:8f606245e96ee370d6aed593dea350dd0502be94

commit r17-5464-g8f606245e96ee370d6aed593dea350dd0502be94
Author: Nathan Sidwell <[email protected]>
Date:   Mon Oct 19 16:12:19 2026 -0400

    [RiscV] Add ECF flags to builtins
    
            gcc/
            * config/riscv/riscv-builtins.cc (riscv_builtin_description): Repack
            fields to add ecf_flags member.
            (RISCV_BUILTIN_NO_PREFIX, RISCV_BUILTIN, DIRECT_BUILTIN): Add ECF 
arg.
            (riscv_builtins): Adjust DIRECT_BUILTINs.
            (riscv_init_builtins): Set the ECF flags.
            * config/riscv/andes.def: Add ECF flags.
            * config/riscv/corev.def: Likewise.
            * config/riscv/riscv-cmo.def: Likewise.
            * config/riscv/riscv-scalar-crypto.def: Likewise.
    
            gcc/testsuite/
            * gcc.target/riscv/builtin-ecf.c: New.

Diff:
---
 gcc/config/riscv/andes.def                   |  20 +-
 gcc/config/riscv/corev.def                   | 374 +++++++++++++--------------
 gcc/config/riscv/riscv-builtins.cc           |  27 +-
 gcc/config/riscv/riscv-cmo.def               |  32 +--
 gcc/config/riscv/riscv-scalar-crypto.def     | 112 ++++----
 gcc/testsuite/gcc.target/riscv/builtin-ecf.c |  13 +
 6 files changed, 298 insertions(+), 280 deletions(-)

diff --git a/gcc/config/riscv/andes.def b/gcc/config/riscv/andes.def
index 685892d00030..d8da918a387a 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_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),
+RISCV_BUILTIN (nds_ffbsi, "nds_ffb_32", RISCV_SI_FTYPE_USI_USI, andesperf32, 
ECF_PURE),
+RISCV_BUILTIN (nds_ffbdi, "nds_ffb_64", RISCV_DI_FTYPE_UDI_UDI, andesperf64, 
ECF_PURE),
+RISCV_BUILTIN (nds_ffzmismsi, "nds_ffzmism_32", RISCV_SI_FTYPE_USI_USI, 
andesperf32, ECF_PURE),
+RISCV_BUILTIN (nds_ffzmismdi, "nds_ffzmism_64", RISCV_DI_FTYPE_UDI_UDI, 
andesperf64, ECF_PURE),
+RISCV_BUILTIN (nds_ffmismsi, "nds_ffmism_32", RISCV_SI_FTYPE_USI_USI, 
andesperf32, ECF_PURE),
+RISCV_BUILTIN (nds_ffmismdi, "nds_ffmism_64", RISCV_DI_FTYPE_UDI_UDI, 
andesperf64, ECF_PURE),
+RISCV_BUILTIN (nds_flmismsi, "nds_flmism_32", RISCV_SI_FTYPE_USI_USI, 
andesperf32, ECF_PURE),
+RISCV_BUILTIN (nds_flmismdi, "nds_flmism_64", RISCV_DI_FTYPE_UDI_UDI, 
andesperf64, ECF_PURE),
 
 /* Andes Scalar BFLOAT16 Conversion Extension */
-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),
+RISCV_BUILTIN_NO_PREFIX (extendbfsf2, "nds_fcvt_s_bf16", RISCV_SF_FTYPE_BF, 
andesbfhcvt, ECF_PURE),
+RISCV_BUILTIN_NO_PREFIX (truncsfbf2, "nds_fcvt_bf16_s", RISCV_BF_FTYPE_SF, 
andesbfhcvt, ECF_PURE),
diff --git a/gcc/config/riscv/corev.def b/gcc/config/riscv/corev.def
index 1ddb7a3f01c6..02e490fe0f91 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_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),
+RISCV_BUILTIN (cv_mac_mac,       "cv_mac_mac",    RISCV_SI_FTYPE_SI_SI_SI,     
 cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_msu,       "cv_mac_msu",    RISCV_SI_FTYPE_SI_SI_SI,     
 cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_muluN,     "cv_mac_muluN",      
RISCV_USI_FTYPE_USI_USI_UQI,  cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_mulhhuN,   "cv_mac_mulhhuN",    
RISCV_USI_FTYPE_USI_USI_UQI,  cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_mulsN,     "cv_mac_mulsN",      
RISCV_SI_FTYPE_SI_SI_UQI,     cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_mulhhsN,   "cv_mac_mulhhsN",    
RISCV_SI_FTYPE_SI_SI_UQI,     cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_muluRN,    "cv_mac_muluRN",     
RISCV_USI_FTYPE_USI_USI_UQI,  cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_mulhhuRN,  "cv_mac_mulhhuRN",   
RISCV_USI_FTYPE_USI_USI_UQI,  cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_mulsRN,    "cv_mac_mulsRN",     
RISCV_SI_FTYPE_SI_SI_UQI,     cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_mulhhsRN,  "cv_mac_mulhhsRN",   
RISCV_SI_FTYPE_SI_SI_UQI,     cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_macuN,     "cv_mac_macuN",      
RISCV_USI_FTYPE_USI_USI_USI_UQI,  cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_machhuN,   "cv_mac_machhuN",    
RISCV_USI_FTYPE_USI_USI_USI_UQI,  cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_macsN,     "cv_mac_macsN",      
RISCV_SI_FTYPE_SI_SI_SI_UQI,      cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_machhsN,   "cv_mac_machhsN",    
RISCV_SI_FTYPE_SI_SI_SI_UQI,      cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_macuRN,    "cv_mac_macuRN",     
RISCV_USI_FTYPE_USI_USI_USI_UQI,  cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_machhuRN,  "cv_mac_machhuRN",   
RISCV_USI_FTYPE_USI_USI_USI_UQI,  cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_macsRN,    "cv_mac_macsRN",     
RISCV_SI_FTYPE_SI_SI_SI_UQI,      cvmac, ECF_PURE),
+RISCV_BUILTIN (cv_mac_machhsRN,  "cv_mac_machhsRN",   
RISCV_SI_FTYPE_SI_SI_SI_UQI,      cvmac, ECF_PURE),
 
 // XCVALU
-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_slet,     "cv_alu_slet",  RISCV_SI_FTYPE_SI_SI,     
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_sletu,    "cv_alu_sletu", RISCV_SI_FTYPE_USI_USI,   
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_min,      "cv_alu_min",   RISCV_SI_FTYPE_SI_SI,     
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_minu,     "cv_alu_minu",  RISCV_USI_FTYPE_USI_USI,  
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_max,      "cv_alu_max",   RISCV_SI_FTYPE_SI_SI,     
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_maxu,     "cv_alu_maxu",  RISCV_USI_FTYPE_USI_USI,  
cvalu, ECF_PURE),
 
-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_exths,    "cv_alu_exths", RISCV_SI_FTYPE_HI,        
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_exthz,    "cv_alu_exthz", RISCV_USI_FTYPE_UHI,      
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_extbs,    "cv_alu_extbs", RISCV_SI_FTYPE_QI,        
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_extbz,    "cv_alu_extbz", RISCV_USI_FTYPE_UQI,      
cvalu, ECF_PURE),
 
-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),
+RISCV_BUILTIN (cv_alu_clip,     "cv_alu_clip",  RISCV_SI_FTYPE_SI_SI,     
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_clipu,    "cv_alu_clipu", RISCV_USI_FTYPE_USI_USI,  
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_addN,     "cv_alu_addN",  RISCV_SI_FTYPE_SI_SI_UQI, 
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_adduN,    "cv_alu_adduN", RISCV_USI_FTYPE_USI_USI_UQI,  
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_addRN,    "cv_alu_addRN", RISCV_SI_FTYPE_SI_SI_UQI, 
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_adduRN,   "cv_alu_adduRN",RISCV_USI_FTYPE_USI_USI_UQI,  
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_subN,     "cv_alu_subN", RISCV_SI_FTYPE_SI_SI_UQI, 
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_subuN,    "cv_alu_subuN", RISCV_USI_FTYPE_USI_USI_UQI,  
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_subRN,    "cv_alu_subRN", RISCV_SI_FTYPE_SI_SI_UQI, 
cvalu, ECF_PURE),
+RISCV_BUILTIN (cv_alu_subuRN,   "cv_alu_subuRN",RISCV_USI_FTYPE_USI_USI_UQI,  
cvalu, ECF_PURE),
 
 // XCVELW
-RISCV_BUILTIN (cv_elw_elw_si, "cv_elw_elw", RISCV_USI_FTYPE_VOID_PTR, cvelw),
+RISCV_BUILTIN (cv_elw_elw_si, "cv_elw_elw", RISCV_USI_FTYPE_VOID_PTR, cvelw, 
0),
 
 // XCVSIMD
 //ALU Operations
-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),
+RISCV_BUILTIN (cv_simd_add_h_si,               "cv_simd_add_h",        
RISCV_USI_FTYPE_USI_USI_UQI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_add_b_si,               "cv_simd_add_b",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_add_sc_h_si,            "cv_simd_add_sc_h",     
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_add_sc_b_si,            "cv_simd_add_sc_b",     
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sub_h_si,               "cv_simd_sub_h",        
RISCV_USI_FTYPE_USI_USI_UQI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sub_b_si,               "cv_simd_sub_b",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sub_sc_h_si,            "cv_simd_sub_sc_h",     
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sub_sc_b_si,            "cv_simd_sub_sc_b",     
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_avg_h_si,               "cv_simd_avg_h",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_avg_b_si,               "cv_simd_avg_b",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_avg_sc_h_si,            "cv_simd_avg_sc_h",     
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_avg_sc_b_si,            "cv_simd_avg_sc_b",     
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_avgu_h_si,              "cv_simd_avgu_h",       
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_avgu_b_si,              "cv_simd_avgu_b",       
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_avgu_sc_h_si,           "cv_simd_avgu_sc_h",    
RISCV_USI_FTYPE_USI_UHI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_avgu_sc_b_si,           "cv_simd_avgu_sc_b",    
RISCV_USI_FTYPE_USI_UQI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_min_h_si,               "cv_simd_min_h",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_min_b_si,               "cv_simd_min_b",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_min_sc_h_si,            "cv_simd_min_sc_h",     
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_min_sc_b_si,            "cv_simd_min_sc_b",     
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_minu_h_si,              "cv_simd_minu_h",       
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_minu_b_si,              "cv_simd_minu_b",       
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_minu_sc_h_si,           "cv_simd_minu_sc_h",    
RISCV_USI_FTYPE_USI_UHI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_minu_sc_b_si,           "cv_simd_minu_sc_b",    
RISCV_USI_FTYPE_USI_UQI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_max_h_si,               "cv_simd_max_h",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_max_b_si,               "cv_simd_max_b",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_max_sc_h_si,            "cv_simd_max_sc_h",     
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_max_sc_b_si,            "cv_simd_max_sc_b",     
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_maxu_h_si,              "cv_simd_maxu_h",       
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_maxu_b_si,              "cv_simd_maxu_b",       
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_maxu_sc_h_si,           "cv_simd_maxu_sc_h",    
RISCV_USI_FTYPE_USI_UHI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_maxu_sc_b_si,           "cv_simd_maxu_sc_b",    
RISCV_USI_FTYPE_USI_UQI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_srl_h_si,               "cv_simd_srl_h",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_srl_b_si,               "cv_simd_srl_b",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_srl_sc_h_si,            "cv_simd_srl_sc_h",     
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_srl_sc_b_si,            "cv_simd_srl_sc_b",     
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sra_h_si,               "cv_simd_sra_h",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sra_b_si,               "cv_simd_sra_b",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sra_sc_h_si,            "cv_simd_sra_sc_h",     
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sra_sc_b_si,            "cv_simd_sra_sc_b",     
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sll_h_si,               "cv_simd_sll_h",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sll_b_si,               "cv_simd_sll_b",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sll_sc_h_si,            "cv_simd_sll_sc_h",     
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sll_sc_b_si,            "cv_simd_sll_sc_b",     
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_or_h_si,                        "cv_simd_or_h",         
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_or_b_si,                        "cv_simd_or_b",         
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_or_sc_h_si,             "cv_simd_or_sc_h",      
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_or_sc_b_si,             "cv_simd_or_sc_b",      
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_xor_h_si,               "cv_simd_xor_h",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_xor_b_si,               "cv_simd_xor_b",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_xor_sc_h_si,            "cv_simd_xor_sc_h",     
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_xor_sc_b_si,            "cv_simd_xor_sc_b",     
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_and_h_si,               "cv_simd_and_h",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_and_b_si,               "cv_simd_and_b",        
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_and_sc_h_si,            "cv_simd_and_sc_h",     
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_and_sc_b_si,            "cv_simd_and_sc_b",     
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_abs_h_si,               "cv_simd_abs_h",        
RISCV_USI_FTYPE_USI,            cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_abs_b_si,               "cv_simd_abs_b",        
RISCV_USI_FTYPE_USI,            cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_neg_h_si,                "cv_simd_neg_h",        
RISCV_USI_FTYPE_USI,              cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_neg_b_si,                "cv_simd_neg_b",        
RISCV_USI_FTYPE_USI,              cvsimd, ECF_PURE),
 //BIT MANIPULATION
-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),
+RISCV_BUILTIN (cv_simd_extract_h_si,           "cv_simd_extract_h",    
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_extract_b_si,           "cv_simd_extract_b",    
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_extractu_h_si,          "cv_simd_extractu_h",   
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_extractu_b_si,          "cv_simd_extractu_b",   
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_insert_h_si,            "cv_simd_insert_h",     
RISCV_USI_FTYPE_USI_USI_QI,     cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_insert_b_si,            "cv_simd_insert_b",     
RISCV_USI_FTYPE_USI_USI_QI,     cvsimd, ECF_PURE),
 //DOT PRODUCT
-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),
+RISCV_BUILTIN (cv_simd_dotup_h_si,             "cv_simd_dotup_h",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_dotup_b_si,             "cv_simd_dotup_b",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_dotup_sc_h_si,          "cv_simd_dotup_sc_h",   
RISCV_USI_FTYPE_USI_UHI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_dotup_sc_b_si,          "cv_simd_dotup_sc_b",   
RISCV_USI_FTYPE_USI_UQI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_dotusp_h_si,            "cv_simd_dotusp_h",     
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_dotusp_b_si,            "cv_simd_dotusp_b",     
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_dotusp_sc_h_si,         "cv_simd_dotusp_sc_h",  
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_dotusp_sc_b_si,         "cv_simd_dotusp_sc_b",  
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_dotsp_h_si,             "cv_simd_dotsp_h",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_dotsp_b_si,             "cv_simd_dotsp_b",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_dotsp_sc_h_si,          "cv_simd_dotsp_sc_h",   
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_dotsp_sc_b_si,          "cv_simd_dotsp_sc_b",   
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sdotup_h_si,            "cv_simd_sdotup_h",     
RISCV_USI_FTYPE_USI_USI_USI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sdotup_b_si,            "cv_simd_sdotup_b",     
RISCV_USI_FTYPE_USI_USI_USI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sdotup_sc_h_si,         "cv_simd_sdotup_sc_h",  
RISCV_USI_FTYPE_USI_UHI_USI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sdotup_sc_b_si,         "cv_simd_sdotup_sc_b",  
RISCV_USI_FTYPE_USI_UQI_USI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sdotusp_h_si,           "cv_simd_sdotusp_h",    
RISCV_USI_FTYPE_USI_USI_USI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sdotusp_b_si,           "cv_simd_sdotusp_b",    
RISCV_USI_FTYPE_USI_USI_USI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sdotusp_sc_h_si,                "cv_simd_sdotusp_sc_h", 
RISCV_USI_FTYPE_USI_HI_USI,     cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sdotusp_sc_b_si,                "cv_simd_sdotusp_sc_b", 
RISCV_USI_FTYPE_USI_QI_USI,     cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sdotsp_h_si,            "cv_simd_sdotsp_h",     
RISCV_USI_FTYPE_USI_USI_USI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sdotsp_b_si,            "cv_simd_sdotsp_b",     
RISCV_USI_FTYPE_USI_USI_USI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sdotsp_sc_h_si,         "cv_simd_sdotsp_sc_h",  
RISCV_USI_FTYPE_USI_HI_USI,     cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_sdotsp_sc_b_si,         "cv_simd_sdotsp_sc_b",  
RISCV_USI_FTYPE_USI_QI_USI,     cvsimd, ECF_PURE),
 //SHUFFLE AND PACK
-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),
+RISCV_BUILTIN (cv_simd_shuffle_h_si,           "cv_simd_shuffle_h",    
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_shuffle_sci_h_si,       
"cv_simd_shuffle_sci_h",RISCV_USI_FTYPE_USI_UQI,                cvsimd, 
ECF_PURE),
+RISCV_BUILTIN (cv_simd_shuffle_b_si,           "cv_simd_shuffle_b",    
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_shuffle_sci_b_si,       
"cv_simd_shuffle_sci_b",RISCV_USI_FTYPE_USI_UQI,                cvsimd, 
ECF_PURE),
+RISCV_BUILTIN (cv_simd_shuffle2_h_si,          "cv_simd_shuffle2_h",   
RISCV_USI_FTYPE_USI_USI_USI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_shuffle2_b_si,          "cv_simd_shuffle2_b",   
RISCV_USI_FTYPE_USI_USI_USI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_packhi_h_si,            "cv_simd_packhi_h",     
RISCV_USI_FTYPE_USI_USI,        cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_packlo_h_si,            "cv_simd_packlo_h",     
RISCV_USI_FTYPE_USI_USI,        cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_packhi_b_si,            "cv_simd_packhi_b",     
RISCV_USI_FTYPE_USI_USI_USI,    cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_packlo_b_si,            "cv_simd_packlo_b",     
RISCV_USI_FTYPE_USI_USI_USI,    cvsimd, ECF_PURE),
+//RISCV_BUILTIN (cv_simd_pack_si,              "cv_simd_pack",         
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+//RISCV_BUILTIN (cv_simd_pack_h_si,            "cv_simd_pack_h",       
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+//RISCV_BUILTIN (cv_simd_packhi_b_si,          "cv_simd_packhi_b",     
RISCV_USI_FTYPE_USI_USI_USI,    cvsimd, ECF_PURE),
+//RISCV_BUILTIN (cv_simd_packlo_b_si,          "cv_simd_packlo_b",     
RISCV_USI_FTYPE_USI_USI_USI,    cvsimd, ECF_PURE),
 //COMPARISON OPERATIONS
-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),
+RISCV_BUILTIN (cv_simd_cmpeq_h_si,             "cv_simd_cmpeq_h",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpeq_b_si,             "cv_simd_cmpeq_b",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpeq_sc_h_si,          "cv_simd_cmpeq_sc_h",   
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpeq_sc_b_si,          "cv_simd_cmpeq_sc_b",   
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpne_h_si,             "cv_simd_cmpne_h",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpne_b_si,             "cv_simd_cmpne_b",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpne_sc_h_si,          "cv_simd_cmpne_sc_h",   
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpne_sc_b_si,          "cv_simd_cmpne_sc_b",   
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpgt_h_si,             "cv_simd_cmpgt_h",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpgt_b_si,             "cv_simd_cmpgt_b",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpgt_sc_h_si,          "cv_simd_cmpgt_sc_h",   
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpgt_sc_b_si,          "cv_simd_cmpgt_sc_b",   
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpge_h_si,             "cv_simd_cmpge_h",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpge_b_si,             "cv_simd_cmpge_b",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpge_sc_h_si,          "cv_simd_cmpge_sc_h",   
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpge_sc_b_si,          "cv_simd_cmpge_sc_b",   
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmplt_h_si,             "cv_simd_cmplt_h",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmplt_b_si,             "cv_simd_cmplt_b",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmplt_sc_h_si,          "cv_simd_cmplt_sc_h",   
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmplt_sc_b_si,          "cv_simd_cmplt_sc_b",   
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmple_h_si,             "cv_simd_cmple_h",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmple_b_si,             "cv_simd_cmple_b",      
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmple_sc_h_si,          "cv_simd_cmple_sc_h",   
RISCV_USI_FTYPE_USI_HI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmple_sc_b_si,          "cv_simd_cmple_sc_b",   
RISCV_USI_FTYPE_USI_QI,                 cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpgtu_h_si,            "cv_simd_cmpgtu_h",     
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpgtu_b_si,            "cv_simd_cmpgtu_b",     
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpgtu_sc_h_si,         "cv_simd_cmpgtu_sc_h",  
RISCV_USI_FTYPE_USI_UHI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpgtu_sc_b_si,         "cv_simd_cmpgtu_sc_b",  
RISCV_USI_FTYPE_USI_UQI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpgeu_h_si,            "cv_simd_cmpgeu_h",     
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpgeu_b_si,            "cv_simd_cmpgeu_b",     
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpgeu_sc_h_si,         "cv_simd_cmpgeu_sc_h",  
RISCV_USI_FTYPE_USI_UHI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpgeu_sc_b_si,         "cv_simd_cmpgeu_sc_b",  
RISCV_USI_FTYPE_USI_UQI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpltu_h_si,            "cv_simd_cmpltu_h",     
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpltu_b_si,            "cv_simd_cmpltu_b",     
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpltu_sc_h_si,         "cv_simd_cmpltu_sc_h",  
RISCV_USI_FTYPE_USI_UHI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpltu_sc_b_si,         "cv_simd_cmpltu_sc_b",  
RISCV_USI_FTYPE_USI_UQI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpleu_h_si,            "cv_simd_cmpleu_h",     
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpleu_b_si,            "cv_simd_cmpleu_b",     
RISCV_USI_FTYPE_USI_USI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpleu_sc_h_si,         "cv_simd_cmpleu_sc_h",  
RISCV_USI_FTYPE_USI_UHI,                cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cmpleu_sc_b_si,         "cv_simd_cmpleu_sc_b",  
RISCV_USI_FTYPE_USI_UQI,                cvsimd, ECF_PURE),
 //COMPLEX NUMBER
-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),
+RISCV_BUILTIN (cv_simd_cplxmul_r_si,           "cv_simd_cplxmul_r",    
RISCV_USI_FTYPE_USI_USI_USI_UQI,        cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cplxmul_i_si,           "cv_simd_cplxmul_i",    
RISCV_USI_FTYPE_USI_USI_USI_UQI,        cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_cplxconj_si,            "cv_simd_cplxconj",     
RISCV_USI_FTYPE_USI,            cvsimd, ECF_PURE),
+RISCV_BUILTIN (cv_simd_subrotmj_si,            "cv_simd_subrotmj",     
RISCV_USI_FTYPE_USI_USI_UQI,    cvsimd, ECF_PURE),
diff --git a/gcc/config/riscv/riscv-builtins.cc 
b/gcc/config/riscv/riscv-builtins.cc
index 997e637be915..2084cc242323 100644
--- a/gcc/config/riscv/riscv-builtins.cc
+++ b/gcc/config/riscv/riscv-builtins.cc
@@ -73,14 +73,17 @@ struct riscv_builtin_description {
 
   /* The code of the main .md file instruction.  See riscv_builtin_type
      for more information.  */
-  enum insn_code icode;
+  enum insn_code icode : 20;
 
   /* The function's prototype.  */
-  enum riscv_function_type prototype : 24;
+  enum riscv_function_type prototype : 12;
 
   /* True, if the function returns void (and so expansion has no target RTL).  
*/
   bool no_target : 8;
 
+  /* ECF flags */
+  unsigned ecf_flags : 24;
+
   /* Whether the function is available.  */
   unsigned int (*avail) (void);
 };
@@ -145,20 +148,20 @@ AVAIL (andesbfhcvt, TARGET_XANDESBFHCVT)
 
    AVAIL is the name of the availability predicate, without the leading
    riscv_builtin_avail_.  */
-#define RISCV_BUILTIN_NO_PREFIX(INSN, NAME, FUNCTION_TYPE, AVAIL)      \
+#define RISCV_BUILTIN_NO_PREFIX(INSN, NAME, FUNCTION_TYPE, AVAIL, ECF) \
   { "__builtin_riscv_" NAME, CODE_FOR_ ## INSN,                                
\
-      FUNCTION_TYPE, false, riscv_builtin_avail_ ## AVAIL }
+      FUNCTION_TYPE, false, ECF, riscv_builtin_avail_ ## AVAIL }
 
 /* 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 RISCV_BUILTIN(INSN, NAME, FUNCTION_TYPE, AVAIL, ECF)           \
+  RISCV_BUILTIN_NO_PREFIX (riscv_ ## INSN, NAME, FUNCTION_TYPE, AVAIL, ECF)
 
 /* 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, FUNCTION_TYPE, AVAIL)
+#define DIRECT_BUILTIN(INSN, FUNCTION_TYPE, AVAIL, ECF)        \
+  RISCV_BUILTIN (INSN, #INSN, FUNCTION_TYPE, AVAIL, ECF)
 
 
 /* Argument types.  */
@@ -196,9 +199,9 @@ static struct riscv_builtin_description riscv_builtins[] = {
   #include "corev.def"
   #include "andes.def"
 
-  DIRECT_BUILTIN (frflags, RISCV_USI_FTYPE, hard_float),
-  DIRECT_BUILTIN (fsflags, RISCV_VOID_FTYPE_USI, hard_float),
-  RISCV_BUILTIN (pause, "pause", RISCV_VOID_FTYPE, hint_pause),
+  DIRECT_BUILTIN (frflags, RISCV_USI_FTYPE, hard_float, 0),
+  DIRECT_BUILTIN (fsflags, RISCV_VOID_FTYPE_USI, hard_float, 0),
+  RISCV_BUILTIN (pause, "pause", RISCV_VOID_FTYPE, hint_pause, 0),
 };
 
 /* Index I is the function declaration for riscv_builtins[I], or null if the
@@ -296,6 +299,8 @@ riscv_init_builtins (void)
                                      + RISCV_BUILTIN_GENERAL,
                                    BUILT_IN_MD, NULL, NULL);
          riscv_builtin_decl_index[d->icode] = i;
+         set_call_expr_flags (riscv_builtin_decls[i],
+                              d->ecf_flags | ECF_NOTHROW);
        }
     }
 }
diff --git a/gcc/config/riscv/riscv-cmo.def b/gcc/config/riscv/riscv-cmo.def
index f3c7fbd72e32..7e7767c0404c 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_VOID_FTYPE_VOID_PTR, 
clean32),
-RISCV_BUILTIN (clean_di, "zicbom_cbo_clean", RISCV_VOID_FTYPE_VOID_PTR, 
clean64),
+RISCV_BUILTIN (clean_si, "zicbom_cbo_clean", RISCV_VOID_FTYPE_VOID_PTR, 
clean32, 0),
+RISCV_BUILTIN (clean_di, "zicbom_cbo_clean", RISCV_VOID_FTYPE_VOID_PTR, 
clean64, 0),
 
-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 (flush_si, "zicbom_cbo_flush", RISCV_VOID_FTYPE_VOID_PTR, 
flush32, 0),
+RISCV_BUILTIN (flush_di, "zicbom_cbo_flush", RISCV_VOID_FTYPE_VOID_PTR, 
flush64, 0),
 
-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),
+RISCV_BUILTIN (inval_si, "zicbom_cbo_inval", RISCV_VOID_FTYPE_VOID_PTR, 
inval32, 0),
+RISCV_BUILTIN (inval_di, "zicbom_cbo_inval", RISCV_VOID_FTYPE_VOID_PTR, 
inval64, 0),
 
 // zicboz
-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),
+RISCV_BUILTIN (zero_si, "zicboz_cbo_zero", RISCV_VOID_FTYPE_VOID_PTR, zero32, 
0),
+RISCV_BUILTIN (zero_di, "zicboz_cbo_zero", RISCV_VOID_FTYPE_VOID_PTR, zero64, 
0),
 
 // zicbop
-RISCV_BUILTIN (prefetchi_si, "zicbop_cbo_prefetchi", RISCV_USI_FTYPE_USI, 
prefetchi32),
-RISCV_BUILTIN (prefetchi_di, "zicbop_cbo_prefetchi", RISCV_UDI_FTYPE_UDI, 
prefetchi64),
+RISCV_BUILTIN (prefetchi_si, "zicbop_cbo_prefetchi", RISCV_USI_FTYPE_USI, 
prefetchi32, 0),
+RISCV_BUILTIN (prefetchi_di, "zicbop_cbo_prefetchi", RISCV_UDI_FTYPE_UDI, 
prefetchi64, 0),
 
 // zbkc or zbc
-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),
+RISCV_BUILTIN (clmul_si, "clmul_32", RISCV_USI_FTYPE_USI_USI, 
clmul_zbkc_or_zbc, 0),
+RISCV_BUILTIN (clmul_di, "clmul_64", RISCV_UDI_FTYPE_UDI_UDI, 
clmul_zbkc64_or_zbc64, 0),
+RISCV_BUILTIN (clmulh_si, "clmulh_32", RISCV_USI_FTYPE_USI_USI, 
clmul_zbkc32_or_zbc32, 0),
+RISCV_BUILTIN (clmulh_di, "clmulh_64", RISCV_UDI_FTYPE_UDI_UDI, 
clmul_zbkc64_or_zbc64, 0),
 
 // zbc
-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),
+RISCV_BUILTIN (clmulr_si, "clmulr_32", RISCV_USI_FTYPE_USI_USI, clmulr_zbc32, 
0),
+RISCV_BUILTIN (clmulr_di, "clmulr_64", RISCV_UDI_FTYPE_UDI_UDI, clmulr_zbc64, 
0),
diff --git a/gcc/config/riscv/riscv-scalar-crypto.def 
b/gcc/config/riscv/riscv-scalar-crypto.def
index a0781dcb6bbc..384451ffa282 100644
--- a/gcc/config/riscv/riscv-scalar-crypto.def
+++ b/gcc/config/riscv/riscv-scalar-crypto.def
@@ -18,81 +18,81 @@ along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
 // ZBKB
-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 (pack_sihi, "pack", RISCV_USI_FTYPE_UHI_UHI, crypto_zbkb32, 
ECF_PURE),
+RISCV_BUILTIN (pack_disi, "pack", RISCV_UDI_FTYPE_USI_USI, crypto_zbkb64, 
ECF_PURE),
 
-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 (packh_si, "packh", RISCV_USI_FTYPE_UQI_UQI, crypto_zbkb32, 
ECF_PURE),
+RISCV_BUILTIN (packh_di, "packh", RISCV_UDI_FTYPE_UQI_UQI, crypto_zbkb64, 
ECF_PURE),
 
-RISCV_BUILTIN (packw, "packw", RISCV_UDI_FTYPE_UHI_UHI, crypto_zbkb64),
+RISCV_BUILTIN (packw, "packw", RISCV_UDI_FTYPE_UHI_UHI, crypto_zbkb64, 
ECF_PURE),
 
-RISCV_BUILTIN (zip, "zip", RISCV_USI_FTYPE_USI, crypto_zbkb32),
-RISCV_BUILTIN (unzip, "unzip", RISCV_USI_FTYPE_USI, crypto_zbkb32),
+RISCV_BUILTIN (zip, "zip", RISCV_USI_FTYPE_USI, crypto_zbkb32, ECF_PURE),
+RISCV_BUILTIN (unzip, "unzip", RISCV_USI_FTYPE_USI, crypto_zbkb32, ECF_PURE),
 
-RISCV_BUILTIN (brev8_si, "brev8_32", RISCV_USI_FTYPE_USI, crypto_zbkb),
-RISCV_BUILTIN (brev8_di, "brev8_64", RISCV_UDI_FTYPE_UDI, crypto_zbkb64),
+RISCV_BUILTIN (brev8_si, "brev8_32", RISCV_USI_FTYPE_USI, crypto_zbkb, 
ECF_PURE),
+RISCV_BUILTIN (brev8_di, "brev8_64", RISCV_UDI_FTYPE_UDI, crypto_zbkb64, 
ECF_PURE),
 
 // ZBKX
-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),
+RISCV_BUILTIN (xperm4_si, "xperm4", RISCV_USI_FTYPE_USI_USI, crypto_zbkx32, 
ECF_PURE),
+RISCV_BUILTIN (xperm4_di, "xperm4", RISCV_UDI_FTYPE_UDI_UDI, crypto_zbkx64, 
ECF_PURE),
+RISCV_BUILTIN (xperm8_si, "xperm8", RISCV_USI_FTYPE_USI_USI, crypto_zbkx32, 
ECF_PURE),
+RISCV_BUILTIN (xperm8_di, "xperm8", RISCV_UDI_FTYPE_UDI_UDI, crypto_zbkx64, 
ECF_PURE),
 
 // ZKND
-DIRECT_BUILTIN (aes32dsi, RISCV_USI_FTYPE_USI_USI_USI, crypto_zknd32),
-DIRECT_BUILTIN (aes32dsmi, RISCV_USI_FTYPE_USI_USI_USI, crypto_zknd32),
-DIRECT_BUILTIN (aes64ds, RISCV_UDI_FTYPE_UDI_UDI, crypto_zknd64),
-DIRECT_BUILTIN (aes64dsm, RISCV_UDI_FTYPE_UDI_UDI, crypto_zknd64),
-DIRECT_BUILTIN (aes64im, RISCV_UDI_FTYPE_UDI, crypto_zknd64),
-DIRECT_BUILTIN (aes64ks1i, RISCV_UDI_FTYPE_UDI_USI, crypto_zkne_or_zknd),
-DIRECT_BUILTIN (aes64ks2, RISCV_UDI_FTYPE_UDI_UDI, crypto_zkne_or_zknd),
+DIRECT_BUILTIN (aes32dsi, RISCV_USI_FTYPE_USI_USI_USI, crypto_zknd32, 
ECF_PURE),
+DIRECT_BUILTIN (aes32dsmi, RISCV_USI_FTYPE_USI_USI_USI, crypto_zknd32, 
ECF_PURE),
+DIRECT_BUILTIN (aes64ds, RISCV_UDI_FTYPE_UDI_UDI, crypto_zknd64, ECF_PURE),
+DIRECT_BUILTIN (aes64dsm, RISCV_UDI_FTYPE_UDI_UDI, crypto_zknd64, ECF_PURE),
+DIRECT_BUILTIN (aes64im, RISCV_UDI_FTYPE_UDI, crypto_zknd64, ECF_PURE),
+DIRECT_BUILTIN (aes64ks1i, RISCV_UDI_FTYPE_UDI_USI, crypto_zkne_or_zknd, 
ECF_PURE),
+DIRECT_BUILTIN (aes64ks2, RISCV_UDI_FTYPE_UDI_UDI, crypto_zkne_or_zknd, 
ECF_PURE),
 
 // ZKNE
-DIRECT_BUILTIN (aes32esi, RISCV_USI_FTYPE_USI_USI_USI, crypto_zkne32),
-DIRECT_BUILTIN (aes32esmi, RISCV_USI_FTYPE_USI_USI_USI, crypto_zkne32),
-DIRECT_BUILTIN (aes64es, RISCV_UDI_FTYPE_UDI_UDI, crypto_zkne64),
-DIRECT_BUILTIN (aes64esm, RISCV_UDI_FTYPE_UDI_UDI, crypto_zkne64),
+DIRECT_BUILTIN (aes32esi, RISCV_USI_FTYPE_USI_USI_USI, crypto_zkne32, 
ECF_PURE),
+DIRECT_BUILTIN (aes32esmi, RISCV_USI_FTYPE_USI_USI_USI, crypto_zkne32, 
ECF_PURE),
+DIRECT_BUILTIN (aes64es, RISCV_UDI_FTYPE_UDI_UDI, crypto_zkne64, ECF_PURE),
+DIRECT_BUILTIN (aes64esm, RISCV_UDI_FTYPE_UDI_UDI, crypto_zkne64, ECF_PURE),
 
 // 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),
-DIRECT_BUILTIN (sha512sig1h, RISCV_USI_FTYPE_USI_USI, crypto_zknh32),
-DIRECT_BUILTIN (sha512sig1l, RISCV_USI_FTYPE_USI_USI, crypto_zknh32),
-DIRECT_BUILTIN (sha512sum0r, RISCV_USI_FTYPE_USI_USI, crypto_zknh32),
-DIRECT_BUILTIN (sha512sum1r, RISCV_USI_FTYPE_USI_USI, crypto_zknh32),
-
-DIRECT_BUILTIN (sha512sig0, RISCV_UDI_FTYPE_UDI, crypto_zknh64),
-DIRECT_BUILTIN (sha512sig1, RISCV_UDI_FTYPE_UDI, crypto_zknh64),
-DIRECT_BUILTIN (sha512sum0, RISCV_UDI_FTYPE_UDI, crypto_zknh64),
-DIRECT_BUILTIN (sha512sum1, RISCV_UDI_FTYPE_UDI, crypto_zknh64),
+RISCV_BUILTIN (sha256sig0_si, "sha256sig0", RISCV_USI_FTYPE_USI, crypto_zknh, 
ECF_PURE),
+RISCV_BUILTIN (sha256sig1_si, "sha256sig1", RISCV_USI_FTYPE_USI, crypto_zknh, 
ECF_PURE),
+RISCV_BUILTIN (sha256sum0_si, "sha256sum0", RISCV_USI_FTYPE_USI, crypto_zknh, 
ECF_PURE),
+RISCV_BUILTIN (sha256sum1_si, "sha256sum1", RISCV_USI_FTYPE_USI, crypto_zknh, 
ECF_PURE),
+
+DIRECT_BUILTIN (sha512sig0h, RISCV_USI_FTYPE_USI_USI, crypto_zknh32, ECF_PURE),
+DIRECT_BUILTIN (sha512sig0l, RISCV_USI_FTYPE_USI_USI, crypto_zknh32, ECF_PURE),
+DIRECT_BUILTIN (sha512sig1h, RISCV_USI_FTYPE_USI_USI, crypto_zknh32, ECF_PURE),
+DIRECT_BUILTIN (sha512sig1l, RISCV_USI_FTYPE_USI_USI, crypto_zknh32, ECF_PURE),
+DIRECT_BUILTIN (sha512sum0r, RISCV_USI_FTYPE_USI_USI, crypto_zknh32, ECF_PURE),
+DIRECT_BUILTIN (sha512sum1r, RISCV_USI_FTYPE_USI_USI, crypto_zknh32, ECF_PURE),
+
+DIRECT_BUILTIN (sha512sig0, RISCV_UDI_FTYPE_UDI, crypto_zknh64, ECF_PURE),
+DIRECT_BUILTIN (sha512sig1, RISCV_UDI_FTYPE_UDI, crypto_zknh64, ECF_PURE),
+DIRECT_BUILTIN (sha512sum0, RISCV_UDI_FTYPE_UDI, crypto_zknh64, ECF_PURE),
+DIRECT_BUILTIN (sha512sum1, RISCV_UDI_FTYPE_UDI, crypto_zknh64, ECF_PURE),
 
 // ZKSH
-RISCV_BUILTIN (sm3p0_si, "sm3p0", RISCV_USI_FTYPE_USI, crypto_zksh),
-RISCV_BUILTIN (sm3p1_si, "sm3p1", RISCV_USI_FTYPE_USI, crypto_zksh),
+RISCV_BUILTIN (sm3p0_si, "sm3p0", RISCV_USI_FTYPE_USI, crypto_zksh, ECF_PURE),
+RISCV_BUILTIN (sm3p1_si, "sm3p1", RISCV_USI_FTYPE_USI, crypto_zksh, ECF_PURE),
 
 // 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),
+RISCV_BUILTIN (sm4ed_si, "sm4ed", RISCV_USI_FTYPE_USI_USI_USI, crypto_zksed, 
ECF_PURE),
+RISCV_BUILTIN (sm4ks_si, "sm4ks", RISCV_USI_FTYPE_USI_USI_USI, crypto_zksed, 
ECF_PURE),
 
 
 // ZBB
 
-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),
+RISCV_BUILTIN_NO_PREFIX (clzsi2,"clz_32",RISCV_USI_FTYPE_USI,zbb, ECF_PURE),
+RISCV_BUILTIN_NO_PREFIX (clzdi2,"clz_64",RISCV_UDI_FTYPE_UDI,zbb64, ECF_PURE),
+RISCV_BUILTIN_NO_PREFIX (ctzsi2,"ctz_32",RISCV_USI_FTYPE_USI,zbb, ECF_PURE),
+RISCV_BUILTIN_NO_PREFIX (ctzdi2,"ctz_64",RISCV_UDI_FTYPE_UDI,zbb64, ECF_PURE),
+RISCV_BUILTIN_NO_PREFIX (popcountsi2,"popcount_32",RISCV_USI_FTYPE_USI,zbb, 
ECF_PURE),
+RISCV_BUILTIN_NO_PREFIX (popcountdi2,"popcount_64",RISCV_UDI_FTYPE_UDI,zbb64, 
ECF_PURE),
+RISCV_BUILTIN_NO_PREFIX (orcbsi2,"orc_b_32", RISCV_USI_FTYPE_USI,zbb, 
ECF_PURE),
+RISCV_BUILTIN_NO_PREFIX (orcbdi2,"orc_b_64",RISCV_UDI_FTYPE_UDI,zbb64, 
ECF_PURE),
 
 // ZBKB
-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),
+RISCV_BUILTIN_NO_PREFIX (rotrsi3,"ror_32",RISCV_USI_FTYPE_USI_UQI,zbb_or_zbkb, 
ECF_PURE),
+RISCV_BUILTIN_NO_PREFIX (rotlsi3,"rol_32",RISCV_USI_FTYPE_USI_UQI,zbb_or_zbkb, 
ECF_PURE),
+RISCV_BUILTIN_NO_PREFIX 
(rotrdi3,"ror_64",RISCV_UDI_FTYPE_UDI_UQI,zbb64_or_zbkb64, ECF_PURE),
+RISCV_BUILTIN_NO_PREFIX 
(rotldi3,"rol_64",RISCV_UDI_FTYPE_UDI_UQI,zbb64_or_zbkb64, ECF_PURE),
diff --git a/gcc/testsuite/gcc.target/riscv/builtin-ecf.c 
b/gcc/testsuite/gcc.target/riscv/builtin-ecf.c
new file mode 100644
index 000000000000..0f6a2899e8c8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/riscv/builtin-ecf.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-march=rv32i_xcvalu -mabi=ilp32 -O2 -fdump-tree-optimized" } 
*/
+
+/* (most) builtins are pure, so do not mutate memory, hence allow moving 
loads/stores across them */
+int foo (int *ptr, int a, int b)
+{
+  int r = *ptr;
+  int s = __builtin_riscv_cv_alu_min (a, b);
+  r += *ptr;
+  return s + r;
+}
+/* The loads should be merged  */
+/* { dg-final { scan-tree-dump-times { = \*ptr} 1 "optimized" } } */

Reply via email to