RISC-V: Add avail interface into function_group_info
Checks
Commit Message
In order to add other extension about vector,this patch add
unsigned int (*avail) (void) into function_group_info to determine
whether to register the intrinsic based on ISA info.
gcc/ChangeLog:
* config/riscv/riscv-vector-builtins-functions.def (DEF_RVV_FUNCTION): Add AVAIL def.
(read_vl): Add avail_always interface.
(vlenb): Ditto.
(vsetvl): Ditto.
(vsetvlmax): Ditto.
(vle): Ditto.
(vse): Ditto.
(vlm): Ditto.
(vsm): Ditto.
(vlse): Ditto.
(vsse): Ditto.
(vluxei8): Ditto.
(vluxei16): Ditto.
(vluxei32): Ditto.
(vluxei64): Ditto.
(vloxei8): Ditto.
(vloxei16): Ditto.
(vloxei32): Ditto.
(vloxei64): Ditto.
(vsuxei8): Ditto.
(vsuxei16): Ditto.
(vsuxei32): Ditto.
(vsuxei64): Ditto.
(vsoxei8): Ditto.
(vsoxei16): Ditto.
(vsoxei32): Ditto.
(vsoxei64):Ditto.
(vleff): Ditto.
(vadd): Ditto.
(vsub): Ditto.
(vrsub): Ditto.
(vneg): Ditto.
(vwaddu): Ditto.
(vwsubu): Ditto.
(vwadd): Ditto.
(vwsub): Ditto.
(vwcvt_x): Ditto.
(vwcvtu_x):Ditto.
(vzext): Ditto.
(vsext): Ditto.
(vadc): Ditto.
(vmadc): Ditto.
(vsbc): Ditto.
(vmsbc): Ditto.
(vand): Ditto.
(vor): Ditto.
(vxor): Ditto.
(vnot): Ditto.
(vsll): Ditto.
(vsra): Ditto.
(vsrl): Ditto.
(vnsrl): Ditto.
(vnsra): Ditto.
(vncvt_x): Ditto.
(vmseq): Ditto.
(vmsne): Ditto.
(vmsltu): Ditto.
(vmslt): Ditto.
(vmsleu): Ditto.
(vmsle): Ditto.
(vmsgtu): Ditto.
(vmsgt): Ditto.
(vmsgeu): Ditto.
(vmsge): Ditto.
(vminu): Ditto.
(vmin): Ditto.
(vmaxu): Ditto.
(vmax): Ditto.
(vmul): Ditto.
(vmulh): Ditto.
(vmulhu): Ditto.
(vmulhsu): Ditto.
(vdivu): Ditto.
(vdiv): Ditto.
(vremu): Ditto.
(vrem): Ditto.
(vwmul): Ditto.
(vwmulu): Ditto.
(vwmulsu): Ditto.
(vmacc): Ditto.
(vnmsac): Ditto.
(vmadd): Ditto.
(vnmsub): Ditto.
(vwmaccu): Ditto.
(vwmacc): Ditto.
(vwmaccsu): Ditto.
(vwmaccus): Ditto.
(vmerge): Ditto.
(vmv_v): Ditto.
(vsaddu): Ditto.
(vsadd): Ditto.
(vssubu): Ditto.
(vssub): Ditto.
(vaaddu): Ditto.
(vaadd): Ditto.
(vasubu): Ditto.
(vasub): Ditto.
(vsmul): Ditto.
(vssrl): Ditto.
(vssra): Ditto.
(vnclipu): Ditto.
(vnclip): Ditto.
(vfadd): Ditto.
(vfsub): Ditto.
(vfrsub): Ditto.
(vfadd_frm): Ditto.
(vfsub_frm): Ditto.
(vfrsub_frm): Ditto.
(vfwadd): Ditto.
(vfwsub): Ditto.
(vfwadd_frm): Ditto.
(vfwsub_frm): Ditto.
(vfmul): Ditto.
(vfdiv): Ditto.
(vfrdiv): Ditto.
(vfmul_frm): Ditto.
(vfdiv_frm): Ditto.
(vfrdiv_frm): Ditto.
(vfwmul): Ditto.
(vfwmul_frm): Ditto.
(vfmacc): Ditto.
(vfnmsac): Ditto.
(vfmadd): Ditto.
(vfnmsub): Ditto.
(vfnmacc): Ditto.
(vfmsac): Ditto.
(vfnmadd): Ditto.
(vfmsub): Ditto.
(vfmacc_frm): Ditto.
(vfnmacc_frm): Ditto.
(vfmsac_frm): Ditto.
(vfnmsac_frm): Ditto.
(vfmadd_frm): Ditto.
(vfnmadd_frm): Ditto.
(vfmsub_frm): Ditto.
(vfnmsub_frm): Ditto.
(vfwmacc): Ditto.
(vfwnmacc): Ditto.
(vfwmsac): Ditto.
(vfwnmsac): Ditto.
(vfwmacc_frm): Ditto.
(vfwnmacc_frm): Ditto.
(vfwmsac_frm): Ditto.
(vfwnmsac_frm): Ditto.
(vfsqrt): Ditto.
(vfsqrt_frm): Ditto.
(vfrsqrt7): Ditto.
(vfrec7): Ditto.
(vfrec7_frm): Ditto.
(vfmin): Ditto.
(vfmax): Ditto.
(vfsgnj): Ditto.
(vfsgnjn): Ditto.
(vfsgnjx): Ditto.
(vfneg): Ditto.
(vfabs): Ditto.
(vmfeq): Ditto.
(vmfne): Ditto.
(vmflt): Ditto.
(vmfle): Ditto.
(vmfgt): Ditto.
(vmfge): Ditto.
(vfclass): Ditto.
(vfmerge): Ditto.
(vfmv_v): Ditto.
(vfcvt_x): Ditto.
(vfcvt_xu): Ditto.
(vfcvt_rtz_x): Ditto.
(vfcvt_rtz_xu): Ditto.
(vfcvt_f): Ditto.
(vfcvt_x_frm): Ditto.
(vfcvt_xu_frm): Ditto.
(vfcvt_f_frm): Ditto.
(vfwcvt_x): Ditto.
(vfwcvt_xu): Ditto.
(vfwcvt_rtz_x): Ditto.
(vfwcvt_rtz_xu): Ditto.
(vfwcvt_f): Ditto.
(vfwcvt_x_frm): Ditto.
(vfwcvt_xu_frm): Ditto.
(vfncvt_x): Ditto.
(vfncvt_xu): Ditto.
(vfncvt_rtz_x): Ditto.
(vfncvt_rtz_xu): Ditto.
(vfncvt_f): Ditto.
(vfncvt_rod_f): Ditto.
(vfncvt_x_frm): Ditto.
(vfncvt_xu_frm): Ditto.
(vfncvt_f_frm): Ditto.
(vredsum): Ditto.
(vredmaxu): Ditto.
(vredmax): Ditto.
(vredminu): Ditto.
(vredmin): Ditto.
(vredand): Ditto.
(vredor): Ditto.
(vredxor): Ditto.
(vwredsum): Ditto.
(vwredsumu): Ditto.
(vfredusum): Ditto.
(vfredosum): Ditto.
(vfredmax): Ditto.
(vfredmin): Ditto.
(vfredusum_frm): Ditto.
(vfredosum_frm): Ditto.
(vfwredosum): Ditto.
(vfwredusum): Ditto.
(vfwredosum_frm): Ditto.
(vfwredusum_frm): Ditto.
(vmand): Ditto.
(vmnand): Ditto.
(vmandn): Ditto.
(vmxor): Ditto.
(vmor): Ditto.
(vmnor): Ditto.
(vmorn): Ditto.
(vmxnor): Ditto.
(vmmv): Ditto.
(vmclr): Ditto.
(vmset): Ditto.
(vmnot): Ditto.
(vcpop): Ditto.
(vfirst): Ditto.
(vmsbf): Ditto.
(vmsif): Ditto.
(vmsof): Ditto.
(viota): Ditto.
(vid): Ditto.
(vmv_x): Ditto.
(vmv_s): Ditto.
(vfmv_f): Ditto.
(vfmv_s): Ditto.
(vslideup): Ditto.
(vslidedown): Ditto.
(vslide1up): Ditto.
(vslide1down): Ditto.
(vfslide1up): Ditto.
(vfslide1down): Ditto.
(vrgather): Ditto.
(vrgatherei16): Ditto.
(vcompress): Ditto.
(vundefined): Ditto.
(vreinterpret): Ditto.
(vlmul_ext): Ditto.
(vlmul_trunc): Ditto.
(vset): Ditto.
(vget): Ditto.
(vcreate): Ditto.
(vlseg): Ditto.
(vsseg): Ditto.
(vlsseg): Ditto.
(vssseg): Ditto.
(vluxseg): Ditto.
(vloxseg): Ditto.
(vsuxseg): Ditto.
(vsoxseg): Ditto.
(vlsegff): Ditto.
* config/riscv/riscv-vector-builtins.cc (DEF_RVV_FUNCTION): Add AVAIL marco.
* config/riscv/riscv-vector-builtins.h (struct function_group_info):
Add new member avail into struct.
* config/riscv/riscv-vector-builtins-avail.h: New file.The definition of AVAIL marco.
---
.../riscv/riscv-vector-builtins-avail.h | 18 +
.../riscv/riscv-vector-builtins-functions.def | 946 +++++++++---------
gcc/config/riscv/riscv-vector-builtins.cc | 6 +-
gcc/config/riscv/riscv-vector-builtins.h | 2 +
4 files changed, 497 insertions(+), 475 deletions(-)
create mode 100644 gcc/config/riscv/riscv-vector-builtins-avail.h
Comments
Thanks for doing this!
+AVAIL (always, true)
-> AVAIL (true, true)
+DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops, always)
-> DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops, true)
Btw, we have full coverage rvv -intrinsic API testing generator for GNU .
https://github.com/riscv-non-isa/rvv-intrinsic-doc/
Could you run it ? Your colleague Lixu knows it.
juzhe.zhong@rivai.ai
From: Feng Wang
Date: 2023-12-07 20:17
To: gcc-patches
CC: kito.cheng; jeffreyalaw; juzhe.zhong; Feng Wang
Subject: [PATCH] RISC-V: Add avail interface into function_group_info
In order to add other extension about vector,this patch add
unsigned int (*avail) (void) into function_group_info to determine
whether to register the intrinsic based on ISA info.
gcc/ChangeLog:
* config/riscv/riscv-vector-builtins-functions.def (DEF_RVV_FUNCTION): Add AVAIL def.
(read_vl): Add avail_always interface.
(vlenb): Ditto.
(vsetvl): Ditto.
(vsetvlmax): Ditto.
(vle): Ditto.
(vse): Ditto.
(vlm): Ditto.
(vsm): Ditto.
(vlse): Ditto.
(vsse): Ditto.
(vluxei8): Ditto.
(vluxei16): Ditto.
(vluxei32): Ditto.
(vluxei64): Ditto.
(vloxei8): Ditto.
(vloxei16): Ditto.
(vloxei32): Ditto.
(vloxei64): Ditto.
(vsuxei8): Ditto.
(vsuxei16): Ditto.
(vsuxei32): Ditto.
(vsuxei64): Ditto.
(vsoxei8): Ditto.
(vsoxei16): Ditto.
(vsoxei32): Ditto.
(vsoxei64):Ditto.
(vleff): Ditto.
(vadd): Ditto.
(vsub): Ditto.
(vrsub): Ditto.
(vneg): Ditto.
(vwaddu): Ditto.
(vwsubu): Ditto.
(vwadd): Ditto.
(vwsub): Ditto.
(vwcvt_x): Ditto.
(vwcvtu_x):Ditto.
(vzext): Ditto.
(vsext): Ditto.
(vadc): Ditto.
(vmadc): Ditto.
(vsbc): Ditto.
(vmsbc): Ditto.
(vand): Ditto.
(vor): Ditto.
(vxor): Ditto.
(vnot): Ditto.
(vsll): Ditto.
(vsra): Ditto.
(vsrl): Ditto.
(vnsrl): Ditto.
(vnsra): Ditto.
(vncvt_x): Ditto.
(vmseq): Ditto.
(vmsne): Ditto.
(vmsltu): Ditto.
(vmslt): Ditto.
(vmsleu): Ditto.
(vmsle): Ditto.
(vmsgtu): Ditto.
(vmsgt): Ditto.
(vmsgeu): Ditto.
(vmsge): Ditto.
(vminu): Ditto.
(vmin): Ditto.
(vmaxu): Ditto.
(vmax): Ditto.
(vmul): Ditto.
(vmulh): Ditto.
(vmulhu): Ditto.
(vmulhsu): Ditto.
(vdivu): Ditto.
(vdiv): Ditto.
(vremu): Ditto.
(vrem): Ditto.
(vwmul): Ditto.
(vwmulu): Ditto.
(vwmulsu): Ditto.
(vmacc): Ditto.
(vnmsac): Ditto.
(vmadd): Ditto.
(vnmsub): Ditto.
(vwmaccu): Ditto.
(vwmacc): Ditto.
(vwmaccsu): Ditto.
(vwmaccus): Ditto.
(vmerge): Ditto.
(vmv_v): Ditto.
(vsaddu): Ditto.
(vsadd): Ditto.
(vssubu): Ditto.
(vssub): Ditto.
(vaaddu): Ditto.
(vaadd): Ditto.
(vasubu): Ditto.
(vasub): Ditto.
(vsmul): Ditto.
(vssrl): Ditto.
(vssra): Ditto.
(vnclipu): Ditto.
(vnclip): Ditto.
(vfadd): Ditto.
(vfsub): Ditto.
(vfrsub): Ditto.
(vfadd_frm): Ditto.
(vfsub_frm): Ditto.
(vfrsub_frm): Ditto.
(vfwadd): Ditto.
(vfwsub): Ditto.
(vfwadd_frm): Ditto.
(vfwsub_frm): Ditto.
(vfmul): Ditto.
(vfdiv): Ditto.
(vfrdiv): Ditto.
(vfmul_frm): Ditto.
(vfdiv_frm): Ditto.
(vfrdiv_frm): Ditto.
(vfwmul): Ditto.
(vfwmul_frm): Ditto.
(vfmacc): Ditto.
(vfnmsac): Ditto.
(vfmadd): Ditto.
(vfnmsub): Ditto.
(vfnmacc): Ditto.
(vfmsac): Ditto.
(vfnmadd): Ditto.
(vfmsub): Ditto.
(vfmacc_frm): Ditto.
(vfnmacc_frm): Ditto.
(vfmsac_frm): Ditto.
(vfnmsac_frm): Ditto.
(vfmadd_frm): Ditto.
(vfnmadd_frm): Ditto.
(vfmsub_frm): Ditto.
(vfnmsub_frm): Ditto.
(vfwmacc): Ditto.
(vfwnmacc): Ditto.
(vfwmsac): Ditto.
(vfwnmsac): Ditto.
(vfwmacc_frm): Ditto.
(vfwnmacc_frm): Ditto.
(vfwmsac_frm): Ditto.
(vfwnmsac_frm): Ditto.
(vfsqrt): Ditto.
(vfsqrt_frm): Ditto.
(vfrsqrt7): Ditto.
(vfrec7): Ditto.
(vfrec7_frm): Ditto.
(vfmin): Ditto.
(vfmax): Ditto.
(vfsgnj): Ditto.
(vfsgnjn): Ditto.
(vfsgnjx): Ditto.
(vfneg): Ditto.
(vfabs): Ditto.
(vmfeq): Ditto.
(vmfne): Ditto.
(vmflt): Ditto.
(vmfle): Ditto.
(vmfgt): Ditto.
(vmfge): Ditto.
(vfclass): Ditto.
(vfmerge): Ditto.
(vfmv_v): Ditto.
(vfcvt_x): Ditto.
(vfcvt_xu): Ditto.
(vfcvt_rtz_x): Ditto.
(vfcvt_rtz_xu): Ditto.
(vfcvt_f): Ditto.
(vfcvt_x_frm): Ditto.
(vfcvt_xu_frm): Ditto.
(vfcvt_f_frm): Ditto.
(vfwcvt_x): Ditto.
(vfwcvt_xu): Ditto.
(vfwcvt_rtz_x): Ditto.
(vfwcvt_rtz_xu): Ditto.
(vfwcvt_f): Ditto.
(vfwcvt_x_frm): Ditto.
(vfwcvt_xu_frm): Ditto.
(vfncvt_x): Ditto.
(vfncvt_xu): Ditto.
(vfncvt_rtz_x): Ditto.
(vfncvt_rtz_xu): Ditto.
(vfncvt_f): Ditto.
(vfncvt_rod_f): Ditto.
(vfncvt_x_frm): Ditto.
(vfncvt_xu_frm): Ditto.
(vfncvt_f_frm): Ditto.
(vredsum): Ditto.
(vredmaxu): Ditto.
(vredmax): Ditto.
(vredminu): Ditto.
(vredmin): Ditto.
(vredand): Ditto.
(vredor): Ditto.
(vredxor): Ditto.
(vwredsum): Ditto.
(vwredsumu): Ditto.
(vfredusum): Ditto.
(vfredosum): Ditto.
(vfredmax): Ditto.
(vfredmin): Ditto.
(vfredusum_frm): Ditto.
(vfredosum_frm): Ditto.
(vfwredosum): Ditto.
(vfwredusum): Ditto.
(vfwredosum_frm): Ditto.
(vfwredusum_frm): Ditto.
(vmand): Ditto.
(vmnand): Ditto.
(vmandn): Ditto.
(vmxor): Ditto.
(vmor): Ditto.
(vmnor): Ditto.
(vmorn): Ditto.
(vmxnor): Ditto.
(vmmv): Ditto.
(vmclr): Ditto.
(vmset): Ditto.
(vmnot): Ditto.
(vcpop): Ditto.
(vfirst): Ditto.
(vmsbf): Ditto.
(vmsif): Ditto.
(vmsof): Ditto.
(viota): Ditto.
(vid): Ditto.
(vmv_x): Ditto.
(vmv_s): Ditto.
(vfmv_f): Ditto.
(vfmv_s): Ditto.
(vslideup): Ditto.
(vslidedown): Ditto.
(vslide1up): Ditto.
(vslide1down): Ditto.
(vfslide1up): Ditto.
(vfslide1down): Ditto.
(vrgather): Ditto.
(vrgatherei16): Ditto.
(vcompress): Ditto.
(vundefined): Ditto.
(vreinterpret): Ditto.
(vlmul_ext): Ditto.
(vlmul_trunc): Ditto.
(vset): Ditto.
(vget): Ditto.
(vcreate): Ditto.
(vlseg): Ditto.
(vsseg): Ditto.
(vlsseg): Ditto.
(vssseg): Ditto.
(vluxseg): Ditto.
(vloxseg): Ditto.
(vsuxseg): Ditto.
(vsoxseg): Ditto.
(vlsegff): Ditto.
* config/riscv/riscv-vector-builtins.cc (DEF_RVV_FUNCTION): Add AVAIL marco.
* config/riscv/riscv-vector-builtins.h (struct function_group_info):
Add new member avail into struct.
* config/riscv/riscv-vector-builtins-avail.h: New file.The definition of AVAIL marco.
---
.../riscv/riscv-vector-builtins-avail.h | 18 +
.../riscv/riscv-vector-builtins-functions.def | 946 +++++++++---------
gcc/config/riscv/riscv-vector-builtins.cc | 6 +-
gcc/config/riscv/riscv-vector-builtins.h | 2 +
4 files changed, 497 insertions(+), 475 deletions(-)
create mode 100644 gcc/config/riscv/riscv-vector-builtins-avail.h
diff --git a/gcc/config/riscv/riscv-vector-builtins-avail.h b/gcc/config/riscv/riscv-vector-builtins-avail.h
new file mode 100644
index 00000000000..1b7a8291881
--- /dev/null
+++ b/gcc/config/riscv/riscv-vector-builtins-avail.h
@@ -0,0 +1,18 @@
+#ifndef GCC_RISCV_VECTOR_BUILTINS_AVAIL_H
+#define GCC_RISCV_VECTOR_BUILTINS_AVAIL_H
+
+#include "insn-codes.h"
+namespace riscv_vector {
+
+/* Declare an availability predicate for built-in functions. */
+#define AVAIL(NAME, COND) \
+ static unsigned int \
+ riscv_vector_avail_##NAME (void) \
+ { \
+ return (COND); \
+ }
+
+AVAIL (always, true)
+
+}
+#endif
diff --git a/gcc/config/riscv/riscv-vector-builtins-functions.def b/gcc/config/riscv/riscv-vector-builtins-functions.def
index 1c37fd5fffe..d1fe600177f 100644
--- a/gcc/config/riscv/riscv-vector-builtins-functions.def
+++ b/gcc/config/riscv/riscv-vector-builtins-functions.def
@@ -33,622 +33,622 @@ along with GCC; see the file COPYING3. If not see
*/
#ifndef DEF_RVV_FUNCTION
-#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO)
+#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL)
#endif
/* Internal helper functions for gimple fold use. */
-DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops)
-DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops)
+DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops, always)
+DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops, always)
/* 6. Configuration-Setting Instructions. */
-DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops)
-DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops)
+DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops, always)
+DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops, always)
/* 7. Vector Loads and Stores. */
// 7.4. Vector Unit-Stride Instructions
-DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops)
-DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops)
-DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops)
-DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops)
+DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops, always)
+DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops, always)
+DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops, always)
+DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops, always)
// 7.5. Vector Strided Instructions
-DEF_RVV_FUNCTION (vlse, loadstore, full_preds, all_v_scalar_const_ptr_ptrdiff_ops)
-DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, all_v_scalar_ptr_ptrdiff_ops)
+DEF_RVV_FUNCTION (vlse, loadstore, full_preds, all_v_scalar_const_ptr_ptrdiff_ops, always)
+DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, all_v_scalar_ptr_ptrdiff_ops, always)
// 7.6. Vector Indexed Instructions
-DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vluxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vloxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vloxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vloxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vloxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vsuxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vsuxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vsuxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vsuxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vsoxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vsoxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vsoxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vsoxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops)
+DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vluxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vloxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vloxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vloxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vloxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vsuxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vsuxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vsuxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vsuxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vsoxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vsoxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vsoxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vsoxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops, always)
// 7.7. Unit-stride Fault-Only-First Loads
-DEF_RVV_FUNCTION (vleff, fault_load, full_preds, all_v_scalar_const_ptr_size_ptr_ops)
+DEF_RVV_FUNCTION (vleff, fault_load, full_preds, all_v_scalar_const_ptr_size_ptr_ops, always)
// TODO: 7.8. Vector Load/Store Segment Instructions
/* 11. Vector Integer Arithmetic Instructions. */
// 11.1. Vector Single-Width Integer Add and Subtract
-DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vrsub, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vneg, alu, full_preds, iu_v_ops)
+DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vrsub, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vneg, alu, full_preds, iu_v_ops, always)
// 11.2. Vector Widening Integer Add/Subtract
-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvv_ops)
-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvx_ops)
-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvv_ops)
-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvx_ops)
-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvv_ops)
-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvx_ops)
-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvv_ops)
-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvx_ops)
-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwv_ops)
-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwx_ops)
-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwv_ops)
-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwx_ops)
-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwv_ops)
-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwx_ops)
-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwv_ops)
-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwx_ops)
-DEF_RVV_FUNCTION (vwcvt_x, alu, full_preds, i_x_x_v_ops)
-DEF_RVV_FUNCTION (vwcvtu_x, alu, full_preds, u_x_x_v_ops)
+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvv_ops, always)
+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvx_ops, always)
+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvv_ops, always)
+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvx_ops, always)
+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvv_ops, always)
+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvx_ops, always)
+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvv_ops, always)
+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvx_ops, always)
+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwv_ops, always)
+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwx_ops, always)
+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwv_ops, always)
+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwx_ops, always)
+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwv_ops, always)
+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwx_ops, always)
+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwv_ops, always)
+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwx_ops, always)
+DEF_RVV_FUNCTION (vwcvt_x, alu, full_preds, i_x_x_v_ops, always)
+DEF_RVV_FUNCTION (vwcvtu_x, alu, full_preds, u_x_x_v_ops, always)
// 11.3. Vector Integer Extension
-DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf2_ops)
-DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf4_ops)
-DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf8_ops)
-DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf2_ops)
-DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf4_ops)
-DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf8_ops)
+DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf2_ops, always)
+DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf4_ops, always)
+DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf8_ops, always)
+DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf2_ops, always)
+DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf4_ops, always)
+DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf8_ops, always)
// 11.4. Vector Integer Add-with-Carry/Subtract-with-Borrow Instructions
-DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvvm_ops)
-DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvxm_ops)
-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvvm_ops)
-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvxm_ops)
-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvv_ops)
-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvx_ops)
-DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvvm_ops)
-DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvxm_ops)
-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvvm_ops)
-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvxm_ops)
-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvv_ops)
-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvx_ops)
+DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvvm_ops, always)
+DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvxm_ops, always)
+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvvm_ops, always)
+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvxm_ops, always)
+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvv_ops, always)
+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvx_ops, always)
+DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvvm_ops, always)
+DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvxm_ops, always)
+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvvm_ops, always)
+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvxm_ops, always)
+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvx_ops, always)
// 11.5. Vector Bitwise Logical Instructions
-DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vnot, alu, full_preds, iu_v_ops)
+DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vnot, alu, full_preds, iu_v_ops, always)
// 11.6. Vector Single-Width Shift Instructions
-DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvv_ops)
-DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvx_ops)
-DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvv_ops)
-DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvx_ops)
-DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvv_ops)
-DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvx_ops)
+DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvx_ops, always)
+DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvx_ops, always)
+DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvx_ops, always)
// 11.7. Vector Narrowing Integer Right Shift Instructions
-DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwv_ops)
-DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwx_ops)
-DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwv_ops)
-DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwx_ops)
-DEF_RVV_FUNCTION (vncvt_x, narrow_alu, full_preds, iu_trunc_ops)
+DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwv_ops, always)
+DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwx_ops, always)
+DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwv_ops, always)
+DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwx_ops, always)
+DEF_RVV_FUNCTION (vncvt_x, narrow_alu, full_preds, iu_trunc_ops, always)
// 11.8. Vector Integer Compare Instructions
-DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvv_ops)
-DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvx_ops)
-DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvv_ops)
-DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvx_ops)
-DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvv_ops)
-DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvx_ops)
-DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvv_ops)
-DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvx_ops)
-DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvv_ops)
-DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvx_ops)
-DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvv_ops)
-DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvx_ops)
-DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvv_ops)
-DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvx_ops)
-DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvv_ops)
-DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvx_ops)
-DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvv_ops)
-DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvx_ops)
-DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvv_ops)
-DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvx_ops)
+DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvv_ops, always)
+DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvx_ops, always)
+DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvv_ops, always)
+DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvx_ops, always)
// 11.9. Vector Integer Min/Max Instructions
-DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvx_ops)
-DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvx_ops)
+DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvx_ops, always)
+DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvx_ops, always)
// 11.10. Vector Single-Width Integer Multiply Instructions
-DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvv_ops)
-DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvx_ops)
-DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvv_ops)
-DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvx_ops)
-DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvv_ops)
-DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvx_ops)
+DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvv_ops, always)
+DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvx_ops, always)
+DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvv_ops, always)
+DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvx_ops, always)
+DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvv_ops, always)
+DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvx_ops, always)
// 11.11. Vector Integer Divide Instructions
-DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvx_ops)
-DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvx_ops)
+DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvx_ops, always)
+DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvx_ops, always)
// 11.12. Vector Widening Integer Multiply Instructions
-DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvv_ops)
-DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvx_ops)
-DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvv_ops)
-DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvx_ops)
-DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvv_ops)
-DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvx_ops)
+DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvv_ops, always)
+DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvx_ops, always)
+DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvv_ops, always)
+DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvx_ops, always)
+DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvv_ops, always)
+DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvx_ops, always)
// 11.13. Vector Single-Width Integer Multiply-Add Instructions
-DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvvv_ops)
-DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvxv_ops)
-DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvvv_ops)
-DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvxv_ops)
-DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvvv_ops)
-DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvxv_ops)
-DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvvv_ops)
-DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvxv_ops)
+DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvvv_ops, always)
+DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvxv_ops, always)
+DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvvv_ops, always)
+DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvxv_ops, always)
+DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvvv_ops, always)
+DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvxv_ops, always)
+DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvvv_ops, always)
+DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvxv_ops, always)
// 11.14. Vector Widening Integer Multiply-Add Instructions
-DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwvv_ops)
-DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwxv_ops)
-DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwvv_ops)
-DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwxv_ops)
-DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwvv_ops)
-DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwxv_ops)
-DEF_RVV_FUNCTION (vwmaccus, alu, full_preds, i_us_wwxv_ops)
+DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwvv_ops, always)
+DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwxv_ops, always)
+DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwvv_ops, always)
+DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwxv_ops, always)
+DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwvv_ops, always)
+DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwxv_ops, always)
+DEF_RVV_FUNCTION (vwmaccus, alu, full_preds, i_us_wwxv_ops, always)
// 11.15. Vector Integer Merge Instructions
-DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, all_vvvm_ops)
-DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, iu_vvxm_ops)
+DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, all_vvvm_ops, always)
+DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, iu_vvxm_ops, always)
// 11.16 Vector Integer Move Instructions
-DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, all_v_ops)
-DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, iu_x_ops)
+DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, all_v_ops, always)
+DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, iu_x_ops, always)
/* 12. Vector Fixed-Point Arithmetic Instructions. */
// 12.1. Vector Single-Width Saturating Add and Subtract
-DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvx_ops)
-DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvx_ops)
+DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvx_ops, always)
+DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvx_ops, always)
// 12.2. Vector Single-Width Averaging Add and Subtract
-DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvx_ops)
-DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvx_ops)
+DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvx_ops, always)
+DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvx_ops, always)
// 12.3. Vector Single-Width Fractional Multiply with Rounding and Saturation
-DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvv_ops)
-DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvx_ops)
+DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvv_ops, always)
+DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvx_ops, always)
// 12.4. Vector Single-Width Scaling Shift Instructions
-DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvv_ops)
-DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvx_ops)
-DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvv_ops)
-DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvx_ops)
+DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvx_ops, always)
+DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvx_ops, always)
// 12.5. Vector Narrowing Fixed-Point Clip Instructions
-DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwv_ops)
-DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwx_ops)
-DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwv_ops)
-DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwx_ops)
+DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwv_ops, always)
+DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwx_ops, always)
+DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwv_ops, always)
+DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwx_ops, always)
/* 13. Vector Floating-Point Instructions. */
// 13.2. Vector Single-Width Floating-Point Add/Subtract Instructions
-DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfrsub, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfrsub_frm, alu_frm, full_preds, f_vvf_ops)
+DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfrsub, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfrsub_frm, alu_frm, full_preds, f_vvf_ops, always)
// 13.3. Vector Widening Floating-Point Add/Subtract Instructions
-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwv_ops)
-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwf_ops)
-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwv_ops)
-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwf_ops)
-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwv_ops)
-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwf_ops)
-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwv_ops)
-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwf_ops)
+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwv_ops, always)
+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwf_ops, always)
+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwv_ops, always)
+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwf_ops, always)
+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwv_ops, always)
+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwf_ops, always)
+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwv_ops, always)
+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwf_ops, always)
// 13.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
-DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfrdiv, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfrdiv_frm, alu_frm, full_preds, f_vvf_ops)
+DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfrdiv, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfrdiv_frm, alu_frm, full_preds, f_vvf_ops, always)
// 13.5. Vector Widening Floating-Point Multiply
-DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvf_ops)
+DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvf_ops, always)
// 13.6. Vector Single-Width Floating-Point Fused Multiply-Add Instructions
-DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvfv_ops)
-
-DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvfv_ops)
+DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvfv_ops, always)
+
+DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvfv_ops, always)
// 13.7. Vector Widening Floating-Point Fused Multiply-Add Instructions
-DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwfv_ops)
-
-DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwfv_ops)
+DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwfv_ops, always)
+
+DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwfv_ops, always)
// 13.8. Vector Floating-Point Square-Root Instruction
-DEF_RVV_FUNCTION (vfsqrt, alu, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfsqrt, alu, full_preds, f_v_ops, always)
-DEF_RVV_FUNCTION (vfsqrt_frm, alu_frm, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfsqrt_frm, alu_frm, full_preds, f_v_ops, always)
// 13.9. Vector Floating-Point Reciprocal Square-Root Estimate Instruction
-DEF_RVV_FUNCTION (vfrsqrt7, alu, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfrsqrt7, alu, full_preds, f_v_ops, always)
// 13.10. Vector Floating-Point Reciprocal Estimate Instruction
-DEF_RVV_FUNCTION (vfrec7, alu, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfrec7, alu, full_preds, f_v_ops, always)
-DEF_RVV_FUNCTION (vfrec7_frm, alu_frm, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfrec7_frm, alu_frm, full_preds, f_v_ops, always)
// 13.11. Vector Floating-Point MIN/MAX Instructions
-DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvf_ops)
+DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvf_ops, always)
// 13.12. Vector Floating-Point Sign-Injection Instructions
-DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfneg, alu, full_preds, f_v_ops)
-DEF_RVV_FUNCTION (vfabs, alu, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfneg, alu, full_preds, f_v_ops, always)
+DEF_RVV_FUNCTION (vfabs, alu, full_preds, f_v_ops, always)
// 13.13. Vector Floating-Point Compare Instructions
-DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvf_ops)
+DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvf_ops, always)
// 13.14. Vector Floating-Point Classify Instruction
-DEF_RVV_FUNCTION (vfclass, alu, full_preds, f_to_u_v_ops)
+DEF_RVV_FUNCTION (vfclass, alu, full_preds, f_to_u_v_ops, always)
// 13.15. Vector Floating-Point Merge Instruction
-DEF_RVV_FUNCTION (vfmerge, no_mask_policy, none_tu_preds, f_vvfm_ops)
+DEF_RVV_FUNCTION (vfmerge, no_mask_policy, none_tu_preds, f_vvfm_ops, always)
// 13.16. Vector Floating-Point Move Instruction
-DEF_RVV_FUNCTION (vfmv_v, move, none_tu_preds, f_f_ops)
+DEF_RVV_FUNCTION (vfmv_v, move, none_tu_preds, f_f_ops, always)
// 13.17. Single-Width Floating-Point/Integer Type-Convert Instructions
-DEF_RVV_FUNCTION (vfcvt_x, alu, full_preds, f_to_i_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_xu, alu, full_preds, f_to_u_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_rtz_x, alu, full_preds, f_to_i_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_rtz_xu, alu, full_preds, f_to_u_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, i_to_f_x_v_ops)
-DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, u_to_f_xu_v_ops)
-
-DEF_RVV_FUNCTION (vfcvt_x_frm, alu_frm, full_preds, f_to_i_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_xu_frm, alu_frm, full_preds, f_to_u_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, i_to_f_x_v_ops)
-DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, u_to_f_xu_v_ops)
+DEF_RVV_FUNCTION (vfcvt_x, alu, full_preds, f_to_i_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_xu, alu, full_preds, f_to_u_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_rtz_x, alu, full_preds, f_to_i_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_rtz_xu, alu, full_preds, f_to_u_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, i_to_f_x_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, u_to_f_xu_v_ops, always)
+
+DEF_RVV_FUNCTION (vfcvt_x_frm, alu_frm, full_preds, f_to_i_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_xu_frm, alu_frm, full_preds, f_to_u_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, i_to_f_x_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, u_to_f_xu_v_ops, always)
// 13.18. Widening Floating-Point/Integer Type-Convert Instructions
-DEF_RVV_FUNCTION (vfwcvt_x, alu, full_preds, f_to_wi_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_xu, alu, full_preds, f_to_wu_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_rtz_x, alu, full_preds, f_to_wi_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_rtz_xu, alu, full_preds, f_to_wu_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, i_to_wf_x_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, u_to_wf_xu_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, f_to_wf_f_v_ops)
+DEF_RVV_FUNCTION (vfwcvt_x, alu, full_preds, f_to_wi_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_xu, alu, full_preds, f_to_wu_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_rtz_x, alu, full_preds, f_to_wi_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_rtz_xu, alu, full_preds, f_to_wu_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, i_to_wf_x_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, u_to_wf_xu_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, f_to_wf_f_v_ops, always)
-DEF_RVV_FUNCTION (vfwcvt_x_frm, alu_frm, full_preds, f_to_wi_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_xu_frm, alu_frm, full_preds, f_to_wu_f_v_ops)
+DEF_RVV_FUNCTION (vfwcvt_x_frm, alu_frm, full_preds, f_to_wi_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_xu_frm, alu_frm, full_preds, f_to_wu_f_v_ops, always)
// 13.19. Narrowing Floating-Point/Integer Type-Convert Instructions
-DEF_RVV_FUNCTION (vfncvt_x, narrow_alu, full_preds, f_to_ni_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_xu, narrow_alu, full_preds, f_to_nu_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_rtz_x, narrow_alu, full_preds, f_to_ni_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_rtz_xu, narrow_alu, full_preds, f_to_nu_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, i_to_nf_x_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, u_to_nf_xu_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, f_to_nf_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_rod_f, narrow_alu, full_preds, f_to_nf_f_w_ops)
-
-DEF_RVV_FUNCTION (vfncvt_x_frm, narrow_alu_frm, full_preds, f_to_ni_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_xu_frm, narrow_alu_frm, full_preds, f_to_nu_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, i_to_nf_x_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, u_to_nf_xu_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, f_to_nf_f_w_ops)
+DEF_RVV_FUNCTION (vfncvt_x, narrow_alu, full_preds, f_to_ni_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_xu, narrow_alu, full_preds, f_to_nu_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_rtz_x, narrow_alu, full_preds, f_to_ni_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_rtz_xu, narrow_alu, full_preds, f_to_nu_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, i_to_nf_x_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, u_to_nf_xu_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, f_to_nf_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_rod_f, narrow_alu, full_preds, f_to_nf_f_w_ops, always)
+
+DEF_RVV_FUNCTION (vfncvt_x_frm, narrow_alu_frm, full_preds, f_to_ni_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_xu_frm, narrow_alu_frm, full_preds, f_to_nu_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, i_to_nf_x_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, u_to_nf_xu_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, f_to_nf_f_w_ops, always)
/* 14. Vector Reduction Operations. */
// 14.1. Vector Single-Width Integer Reduction Instructions
-DEF_RVV_FUNCTION (vredsum, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredmaxu, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredmax, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredminu, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredmin, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredand, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredor, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredxor, reduc_alu, no_mu_preds, iu_vs_ops)
+DEF_RVV_FUNCTION (vredsum, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredmaxu, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredmax, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredminu, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredmin, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredand, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredor, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredxor, reduc_alu, no_mu_preds, iu_vs_ops, always)
// 14.2. Vector Widening Integer Reduction Instructions
-DEF_RVV_FUNCTION (vwredsum, reduc_alu, no_mu_preds, wi_vs_ops)
-DEF_RVV_FUNCTION (vwredsumu, reduc_alu, no_mu_preds, wu_vs_ops)
+DEF_RVV_FUNCTION (vwredsum, reduc_alu, no_mu_preds, wi_vs_ops, always)
+DEF_RVV_FUNCTION (vwredsumu, reduc_alu, no_mu_preds, wu_vs_ops, always)
// 14.3. Vector Single-Width Floating-Point Reduction Instructions
-DEF_RVV_FUNCTION (vfredusum, reduc_alu, no_mu_preds, f_vs_ops)
-DEF_RVV_FUNCTION (vfredosum, reduc_alu, no_mu_preds, f_vs_ops)
-DEF_RVV_FUNCTION (vfredmax, reduc_alu, no_mu_preds, f_vs_ops)
-DEF_RVV_FUNCTION (vfredmin, reduc_alu, no_mu_preds, f_vs_ops)
+DEF_RVV_FUNCTION (vfredusum, reduc_alu, no_mu_preds, f_vs_ops, always)
+DEF_RVV_FUNCTION (vfredosum, reduc_alu, no_mu_preds, f_vs_ops, always)
+DEF_RVV_FUNCTION (vfredmax, reduc_alu, no_mu_preds, f_vs_ops, always)
+DEF_RVV_FUNCTION (vfredmin, reduc_alu, no_mu_preds, f_vs_ops, always)
-DEF_RVV_FUNCTION (vfredusum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops)
-DEF_RVV_FUNCTION (vfredosum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops)
+DEF_RVV_FUNCTION (vfredusum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops, always)
+DEF_RVV_FUNCTION (vfredosum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops, always)
// 14.4. Vector Widening Floating-Point Reduction Instructions
-DEF_RVV_FUNCTION (vfwredosum, reduc_alu, no_mu_preds, wf_vs_ops)
-DEF_RVV_FUNCTION (vfwredusum, reduc_alu, no_mu_preds, wf_vs_ops)
+DEF_RVV_FUNCTION (vfwredosum, reduc_alu, no_mu_preds, wf_vs_ops, always)
+DEF_RVV_FUNCTION (vfwredusum, reduc_alu, no_mu_preds, wf_vs_ops, always)
-DEF_RVV_FUNCTION (vfwredosum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops)
-DEF_RVV_FUNCTION (vfwredusum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops)
+DEF_RVV_FUNCTION (vfwredosum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops, always)
+DEF_RVV_FUNCTION (vfwredusum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops, always)
/* 15. Vector Mask Instructions. */
// 15.1. Vector Mask-Register Logical Instructions
-DEF_RVV_FUNCTION (vmand, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmnand, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmandn, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmxor, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmor, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmnor, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmorn, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmxnor, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmmv, mask_alu, none_preds, b_mm_ops)
-DEF_RVV_FUNCTION (vmclr, mask_alu, none_preds, b_m_ops)
-DEF_RVV_FUNCTION (vmset, mask_alu, none_preds, b_m_ops)
-DEF_RVV_FUNCTION (vmnot, mask_alu, none_preds, b_mm_ops)
+DEF_RVV_FUNCTION (vmand, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmnand, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmandn, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmxor, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmor, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmnor, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmorn, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmxnor, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmmv, mask_alu, none_preds, b_mm_ops, always)
+DEF_RVV_FUNCTION (vmclr, mask_alu, none_preds, b_m_ops, always)
+DEF_RVV_FUNCTION (vmset, mask_alu, none_preds, b_m_ops, always)
+DEF_RVV_FUNCTION (vmnot, mask_alu, none_preds, b_mm_ops, always)
// 15.2. Vector count population in mask vcpop.m
-DEF_RVV_FUNCTION (vcpop, mask_alu, none_m_preds, b_ulong_m_ops)
+DEF_RVV_FUNCTION (vcpop, mask_alu, none_m_preds, b_ulong_m_ops, always)
// 15.3. vfirst find-first-set mask bit
-DEF_RVV_FUNCTION (vfirst, mask_alu, none_m_preds, b_long_m_ops)
+DEF_RVV_FUNCTION (vfirst, mask_alu, none_m_preds, b_long_m_ops, always)
// 15.4. vmsbf.m set-before-first mask bit
-DEF_RVV_FUNCTION (vmsbf, mask_alu, none_m_mu_preds, b_mm_ops)
+DEF_RVV_FUNCTION (vmsbf, mask_alu, none_m_mu_preds, b_mm_ops, always)
// 15.5. vmsif.m set-including-first mask bit
-DEF_RVV_FUNCTION (vmsif, mask_alu, none_m_mu_preds, b_mm_ops)
+DEF_RVV_FUNCTION (vmsif, mask_alu, none_m_mu_preds, b_mm_ops, always)
// 15.6. vmsof.m set-only-first mask bit
-DEF_RVV_FUNCTION (vmsof, mask_alu, none_m_mu_preds, b_mm_ops)
+DEF_RVV_FUNCTION (vmsof, mask_alu, none_m_mu_preds, b_mm_ops, always)
// 15.8. Vector Iota Instruction
-DEF_RVV_FUNCTION (viota, mask_alu, full_preds, u_vm_ops)
+DEF_RVV_FUNCTION (viota, mask_alu, full_preds, u_vm_ops, always)
// 15.9. Vector Element Index Instruction
-DEF_RVV_FUNCTION (vid, alu, full_preds, u_v_ops)
+DEF_RVV_FUNCTION (vid, alu, full_preds, u_v_ops, always)
/* 16. Vector Permutation Instructions. */
// 16.1. Integer Scalar Move Instructions
-DEF_RVV_FUNCTION (vmv_x, scalar_move, none_preds, iu_x_s_ops)
-DEF_RVV_FUNCTION (vmv_s, move, none_tu_preds, iu_s_x_ops)
+DEF_RVV_FUNCTION (vmv_x, scalar_move, none_preds, iu_x_s_ops, always)
+DEF_RVV_FUNCTION (vmv_s, move, none_tu_preds, iu_s_x_ops, always)
// 16.2. Floating-Point Scalar Move Instructions
-DEF_RVV_FUNCTION (vfmv_f, scalar_move, none_preds, f_f_s_ops)
-DEF_RVV_FUNCTION (vfmv_s, move, none_tu_preds, f_s_f_ops)
+DEF_RVV_FUNCTION (vfmv_f, scalar_move, none_preds, f_f_s_ops, always)
+DEF_RVV_FUNCTION (vfmv_s, move, none_tu_preds, f_s_f_ops, always)
// 16.3. Vector Slide Instructions
-DEF_RVV_FUNCTION (vslideup, alu, full_preds, all_vvvx_ops)
-DEF_RVV_FUNCTION (vslidedown, alu, full_preds, all_vvx_ops)
-DEF_RVV_FUNCTION (vslide1up, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vslide1down, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vfslide1up, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfslide1down, alu, full_preds, f_vvf_ops)
+DEF_RVV_FUNCTION (vslideup, alu, full_preds, all_vvvx_ops, always)
+DEF_RVV_FUNCTION (vslidedown, alu, full_preds, all_vvx_ops, always)
+DEF_RVV_FUNCTION (vslide1up, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vslide1down, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vfslide1up, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfslide1down, alu, full_preds, f_vvf_ops, always)
// 16.4. Vector Register Gather Instructions
-DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvv_ops)
-DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvx_ops)
-DEF_RVV_FUNCTION (vrgatherei16, alu, full_preds, all_gatherei16_vvv_ops)
+DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvv_ops, always)
+DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvx_ops, always)
+DEF_RVV_FUNCTION (vrgatherei16, alu, full_preds, all_gatherei16_vvv_ops, always)
// 16.5. Vector Compress Instruction
-DEF_RVV_FUNCTION (vcompress, alu, none_tu_preds, all_vvm_ops)
+DEF_RVV_FUNCTION (vcompress, alu, none_tu_preds, all_vvm_ops, always)
/* Miscellaneous Vector Functions. */
-DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_u_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_i_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_i_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_u_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_f_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_f_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew8_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew16_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew32_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew64_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool2_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool4_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool8_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool16_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool32_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool64_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew8_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew16_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew32_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew64_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew8_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew16_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew32_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew64_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x2_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x4_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x8_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x16_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x32_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x64_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x2_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x4_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x8_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x16_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x32_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x64_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x2_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x4_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x8_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x2_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x4_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul4_x2_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x2_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x4_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x8_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x2_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x4_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul4_x2_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x2_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x4_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x8_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x2_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x4_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul4_x2_ops)
+DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_u_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_i_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_i_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_u_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_f_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_f_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew8_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew16_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew32_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew64_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool2_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool4_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool8_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool16_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool32_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool64_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew8_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew16_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew32_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew64_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew8_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew16_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew32_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew64_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x2_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x4_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x8_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x16_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x32_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x64_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x2_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x4_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x8_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x16_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x32_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x64_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x2_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x4_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x8_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x2_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x4_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul4_x2_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x2_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x4_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x8_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x2_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x4_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul4_x2_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x2_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x4_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x8_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x2_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x4_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul4_x2_ops, always)
// Tuple types
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_tuple_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_tuple_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_tuple_ops)
-DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_tuple_ops)
-DEF_RVV_FUNCTION (vlseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ops)
-DEF_RVV_FUNCTION (vsseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ops)
-DEF_RVV_FUNCTION (vlsseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ptrdiff_ops)
-DEF_RVV_FUNCTION (vssseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ptrdiff_ops)
-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vlsegff, seg_fault_load, full_preds, tuple_v_scalar_const_ptr_size_ptr_ops)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_tuple_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_tuple_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_tuple_ops, always)
+DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_tuple_ops, always)
+DEF_RVV_FUNCTION (vlseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ops, always)
+DEF_RVV_FUNCTION (vsseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ops, always)
+DEF_RVV_FUNCTION (vlsseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ptrdiff_ops, always)
+DEF_RVV_FUNCTION (vssseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ptrdiff_ops, always)
+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vlsegff, seg_fault_load, full_preds, tuple_v_scalar_const_ptr_size_ptr_ops, always)
#undef DEF_RVV_FUNCTION
diff --git a/gcc/config/riscv/riscv-vector-builtins.cc b/gcc/config/riscv/riscv-vector-builtins.cc
index 6330a3a41c3..dac638b6bcc 100644
--- a/gcc/config/riscv/riscv-vector-builtins.cc
+++ b/gcc/config/riscv/riscv-vector-builtins.cc
@@ -51,6 +51,7 @@
#include "riscv-vector-builtins.h"
#include "riscv-vector-builtins-shapes.h"
#include "riscv-vector-builtins-bases.h"
+#include "riscv-vector-builtins-avail.h"
using namespace riscv_vector;
@@ -2684,8 +2685,9 @@ static CONSTEXPR const function_type_info function_types[] = {
/* A list of all RVV intrinsic functions. */
static function_group_info function_groups[] = {
-#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO) \
- {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO},
+#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL) \
+ {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO,\
+ riscv_vector_avail_ ## AVAIL},
#include "riscv-vector-builtins-functions.def"
};
diff --git a/gcc/config/riscv/riscv-vector-builtins.h b/gcc/config/riscv/riscv-vector-builtins.h
index cd8ccab1724..74d50c2f849 100644
--- a/gcc/config/riscv/riscv-vector-builtins.h
+++ b/gcc/config/riscv/riscv-vector-builtins.h
@@ -232,6 +232,8 @@ struct function_group_info
on the index value. */
const predication_type_index *preds;
const rvv_op_info ops_infos;
+ /* Whether the function is available. */
+ unsigned int (*avail) (void);
};
class GTY ((user)) function_instance
--
2.17.1
Also add avail.h into:
riscv-vector-builtins.o: $(srcdir)/config/riscv/riscv-vector-builtins.cc \
$(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_H) $(TM_P_H) \
memmodel.h insn-codes.h $(OPTABS_H) $(RECOG_H) $(DIAGNOSTIC_H) $(EXPR_H) \
$(FUNCTION_H) fold-const.h gimplify.h explow.h stor-layout.h $(REGS_H) \
alias.h langhooks.h attribs.h stringpool.h emit-rtl.h basic-block.h \
gimple.h gimple-iterator.h \
$(srcdir)/config/riscv/riscv-vector-builtins-shapes.h \
$(srcdir)/config/riscv/riscv-vector-builtins-bases.h \
$(srcdir)/config/riscv/riscv-vector-builtins-types.def \
$(RISCV_BUILTINS_H)
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(srcdir)/config/riscv/riscv-vector-builtins.cc
in t-riscv file.
juzhe.zhong@rivai.ai
From: Feng Wang
Date: 2023-12-07 20:17
To: gcc-patches
CC: kito.cheng; jeffreyalaw; juzhe.zhong; Feng Wang
Subject: [PATCH] RISC-V: Add avail interface into function_group_info
In order to add other extension about vector,this patch add
unsigned int (*avail) (void) into function_group_info to determine
whether to register the intrinsic based on ISA info.
gcc/ChangeLog:
* config/riscv/riscv-vector-builtins-functions.def (DEF_RVV_FUNCTION): Add AVAIL def.
(read_vl): Add avail_always interface.
(vlenb): Ditto.
(vsetvl): Ditto.
(vsetvlmax): Ditto.
(vle): Ditto.
(vse): Ditto.
(vlm): Ditto.
(vsm): Ditto.
(vlse): Ditto.
(vsse): Ditto.
(vluxei8): Ditto.
(vluxei16): Ditto.
(vluxei32): Ditto.
(vluxei64): Ditto.
(vloxei8): Ditto.
(vloxei16): Ditto.
(vloxei32): Ditto.
(vloxei64): Ditto.
(vsuxei8): Ditto.
(vsuxei16): Ditto.
(vsuxei32): Ditto.
(vsuxei64): Ditto.
(vsoxei8): Ditto.
(vsoxei16): Ditto.
(vsoxei32): Ditto.
(vsoxei64):Ditto.
(vleff): Ditto.
(vadd): Ditto.
(vsub): Ditto.
(vrsub): Ditto.
(vneg): Ditto.
(vwaddu): Ditto.
(vwsubu): Ditto.
(vwadd): Ditto.
(vwsub): Ditto.
(vwcvt_x): Ditto.
(vwcvtu_x):Ditto.
(vzext): Ditto.
(vsext): Ditto.
(vadc): Ditto.
(vmadc): Ditto.
(vsbc): Ditto.
(vmsbc): Ditto.
(vand): Ditto.
(vor): Ditto.
(vxor): Ditto.
(vnot): Ditto.
(vsll): Ditto.
(vsra): Ditto.
(vsrl): Ditto.
(vnsrl): Ditto.
(vnsra): Ditto.
(vncvt_x): Ditto.
(vmseq): Ditto.
(vmsne): Ditto.
(vmsltu): Ditto.
(vmslt): Ditto.
(vmsleu): Ditto.
(vmsle): Ditto.
(vmsgtu): Ditto.
(vmsgt): Ditto.
(vmsgeu): Ditto.
(vmsge): Ditto.
(vminu): Ditto.
(vmin): Ditto.
(vmaxu): Ditto.
(vmax): Ditto.
(vmul): Ditto.
(vmulh): Ditto.
(vmulhu): Ditto.
(vmulhsu): Ditto.
(vdivu): Ditto.
(vdiv): Ditto.
(vremu): Ditto.
(vrem): Ditto.
(vwmul): Ditto.
(vwmulu): Ditto.
(vwmulsu): Ditto.
(vmacc): Ditto.
(vnmsac): Ditto.
(vmadd): Ditto.
(vnmsub): Ditto.
(vwmaccu): Ditto.
(vwmacc): Ditto.
(vwmaccsu): Ditto.
(vwmaccus): Ditto.
(vmerge): Ditto.
(vmv_v): Ditto.
(vsaddu): Ditto.
(vsadd): Ditto.
(vssubu): Ditto.
(vssub): Ditto.
(vaaddu): Ditto.
(vaadd): Ditto.
(vasubu): Ditto.
(vasub): Ditto.
(vsmul): Ditto.
(vssrl): Ditto.
(vssra): Ditto.
(vnclipu): Ditto.
(vnclip): Ditto.
(vfadd): Ditto.
(vfsub): Ditto.
(vfrsub): Ditto.
(vfadd_frm): Ditto.
(vfsub_frm): Ditto.
(vfrsub_frm): Ditto.
(vfwadd): Ditto.
(vfwsub): Ditto.
(vfwadd_frm): Ditto.
(vfwsub_frm): Ditto.
(vfmul): Ditto.
(vfdiv): Ditto.
(vfrdiv): Ditto.
(vfmul_frm): Ditto.
(vfdiv_frm): Ditto.
(vfrdiv_frm): Ditto.
(vfwmul): Ditto.
(vfwmul_frm): Ditto.
(vfmacc): Ditto.
(vfnmsac): Ditto.
(vfmadd): Ditto.
(vfnmsub): Ditto.
(vfnmacc): Ditto.
(vfmsac): Ditto.
(vfnmadd): Ditto.
(vfmsub): Ditto.
(vfmacc_frm): Ditto.
(vfnmacc_frm): Ditto.
(vfmsac_frm): Ditto.
(vfnmsac_frm): Ditto.
(vfmadd_frm): Ditto.
(vfnmadd_frm): Ditto.
(vfmsub_frm): Ditto.
(vfnmsub_frm): Ditto.
(vfwmacc): Ditto.
(vfwnmacc): Ditto.
(vfwmsac): Ditto.
(vfwnmsac): Ditto.
(vfwmacc_frm): Ditto.
(vfwnmacc_frm): Ditto.
(vfwmsac_frm): Ditto.
(vfwnmsac_frm): Ditto.
(vfsqrt): Ditto.
(vfsqrt_frm): Ditto.
(vfrsqrt7): Ditto.
(vfrec7): Ditto.
(vfrec7_frm): Ditto.
(vfmin): Ditto.
(vfmax): Ditto.
(vfsgnj): Ditto.
(vfsgnjn): Ditto.
(vfsgnjx): Ditto.
(vfneg): Ditto.
(vfabs): Ditto.
(vmfeq): Ditto.
(vmfne): Ditto.
(vmflt): Ditto.
(vmfle): Ditto.
(vmfgt): Ditto.
(vmfge): Ditto.
(vfclass): Ditto.
(vfmerge): Ditto.
(vfmv_v): Ditto.
(vfcvt_x): Ditto.
(vfcvt_xu): Ditto.
(vfcvt_rtz_x): Ditto.
(vfcvt_rtz_xu): Ditto.
(vfcvt_f): Ditto.
(vfcvt_x_frm): Ditto.
(vfcvt_xu_frm): Ditto.
(vfcvt_f_frm): Ditto.
(vfwcvt_x): Ditto.
(vfwcvt_xu): Ditto.
(vfwcvt_rtz_x): Ditto.
(vfwcvt_rtz_xu): Ditto.
(vfwcvt_f): Ditto.
(vfwcvt_x_frm): Ditto.
(vfwcvt_xu_frm): Ditto.
(vfncvt_x): Ditto.
(vfncvt_xu): Ditto.
(vfncvt_rtz_x): Ditto.
(vfncvt_rtz_xu): Ditto.
(vfncvt_f): Ditto.
(vfncvt_rod_f): Ditto.
(vfncvt_x_frm): Ditto.
(vfncvt_xu_frm): Ditto.
(vfncvt_f_frm): Ditto.
(vredsum): Ditto.
(vredmaxu): Ditto.
(vredmax): Ditto.
(vredminu): Ditto.
(vredmin): Ditto.
(vredand): Ditto.
(vredor): Ditto.
(vredxor): Ditto.
(vwredsum): Ditto.
(vwredsumu): Ditto.
(vfredusum): Ditto.
(vfredosum): Ditto.
(vfredmax): Ditto.
(vfredmin): Ditto.
(vfredusum_frm): Ditto.
(vfredosum_frm): Ditto.
(vfwredosum): Ditto.
(vfwredusum): Ditto.
(vfwredosum_frm): Ditto.
(vfwredusum_frm): Ditto.
(vmand): Ditto.
(vmnand): Ditto.
(vmandn): Ditto.
(vmxor): Ditto.
(vmor): Ditto.
(vmnor): Ditto.
(vmorn): Ditto.
(vmxnor): Ditto.
(vmmv): Ditto.
(vmclr): Ditto.
(vmset): Ditto.
(vmnot): Ditto.
(vcpop): Ditto.
(vfirst): Ditto.
(vmsbf): Ditto.
(vmsif): Ditto.
(vmsof): Ditto.
(viota): Ditto.
(vid): Ditto.
(vmv_x): Ditto.
(vmv_s): Ditto.
(vfmv_f): Ditto.
(vfmv_s): Ditto.
(vslideup): Ditto.
(vslidedown): Ditto.
(vslide1up): Ditto.
(vslide1down): Ditto.
(vfslide1up): Ditto.
(vfslide1down): Ditto.
(vrgather): Ditto.
(vrgatherei16): Ditto.
(vcompress): Ditto.
(vundefined): Ditto.
(vreinterpret): Ditto.
(vlmul_ext): Ditto.
(vlmul_trunc): Ditto.
(vset): Ditto.
(vget): Ditto.
(vcreate): Ditto.
(vlseg): Ditto.
(vsseg): Ditto.
(vlsseg): Ditto.
(vssseg): Ditto.
(vluxseg): Ditto.
(vloxseg): Ditto.
(vsuxseg): Ditto.
(vsoxseg): Ditto.
(vlsegff): Ditto.
* config/riscv/riscv-vector-builtins.cc (DEF_RVV_FUNCTION): Add AVAIL marco.
* config/riscv/riscv-vector-builtins.h (struct function_group_info):
Add new member avail into struct.
* config/riscv/riscv-vector-builtins-avail.h: New file.The definition of AVAIL marco.
---
.../riscv/riscv-vector-builtins-avail.h | 18 +
.../riscv/riscv-vector-builtins-functions.def | 946 +++++++++---------
gcc/config/riscv/riscv-vector-builtins.cc | 6 +-
gcc/config/riscv/riscv-vector-builtins.h | 2 +
4 files changed, 497 insertions(+), 475 deletions(-)
create mode 100644 gcc/config/riscv/riscv-vector-builtins-avail.h
diff --git a/gcc/config/riscv/riscv-vector-builtins-avail.h b/gcc/config/riscv/riscv-vector-builtins-avail.h
new file mode 100644
index 00000000000..1b7a8291881
--- /dev/null
+++ b/gcc/config/riscv/riscv-vector-builtins-avail.h
@@ -0,0 +1,18 @@
+#ifndef GCC_RISCV_VECTOR_BUILTINS_AVAIL_H
+#define GCC_RISCV_VECTOR_BUILTINS_AVAIL_H
+
+#include "insn-codes.h"
+namespace riscv_vector {
+
+/* Declare an availability predicate for built-in functions. */
+#define AVAIL(NAME, COND) \
+ static unsigned int \
+ riscv_vector_avail_##NAME (void) \
+ { \
+ return (COND); \
+ }
+
+AVAIL (always, true)
+
+}
+#endif
diff --git a/gcc/config/riscv/riscv-vector-builtins-functions.def b/gcc/config/riscv/riscv-vector-builtins-functions.def
index 1c37fd5fffe..d1fe600177f 100644
--- a/gcc/config/riscv/riscv-vector-builtins-functions.def
+++ b/gcc/config/riscv/riscv-vector-builtins-functions.def
@@ -33,622 +33,622 @@ along with GCC; see the file COPYING3. If not see
*/
#ifndef DEF_RVV_FUNCTION
-#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO)
+#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL)
#endif
/* Internal helper functions for gimple fold use. */
-DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops)
-DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops)
+DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops, always)
+DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops, always)
/* 6. Configuration-Setting Instructions. */
-DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops)
-DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops)
+DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops, always)
+DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops, always)
/* 7. Vector Loads and Stores. */
// 7.4. Vector Unit-Stride Instructions
-DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops)
-DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops)
-DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops)
-DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops)
+DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops, always)
+DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops, always)
+DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops, always)
+DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops, always)
// 7.5. Vector Strided Instructions
-DEF_RVV_FUNCTION (vlse, loadstore, full_preds, all_v_scalar_const_ptr_ptrdiff_ops)
-DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, all_v_scalar_ptr_ptrdiff_ops)
+DEF_RVV_FUNCTION (vlse, loadstore, full_preds, all_v_scalar_const_ptr_ptrdiff_ops, always)
+DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, all_v_scalar_ptr_ptrdiff_ops, always)
// 7.6. Vector Indexed Instructions
-DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vluxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vloxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vloxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vloxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vloxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vsuxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vsuxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vsuxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vsuxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vsoxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vsoxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vsoxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vsoxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops)
+DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vluxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vloxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vloxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vloxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vloxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vsuxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vsuxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vsuxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vsuxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vsoxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vsoxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vsoxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vsoxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops, always)
// 7.7. Unit-stride Fault-Only-First Loads
-DEF_RVV_FUNCTION (vleff, fault_load, full_preds, all_v_scalar_const_ptr_size_ptr_ops)
+DEF_RVV_FUNCTION (vleff, fault_load, full_preds, all_v_scalar_const_ptr_size_ptr_ops, always)
// TODO: 7.8. Vector Load/Store Segment Instructions
/* 11. Vector Integer Arithmetic Instructions. */
// 11.1. Vector Single-Width Integer Add and Subtract
-DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vrsub, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vneg, alu, full_preds, iu_v_ops)
+DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vrsub, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vneg, alu, full_preds, iu_v_ops, always)
// 11.2. Vector Widening Integer Add/Subtract
-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvv_ops)
-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvx_ops)
-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvv_ops)
-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvx_ops)
-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvv_ops)
-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvx_ops)
-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvv_ops)
-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvx_ops)
-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwv_ops)
-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwx_ops)
-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwv_ops)
-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwx_ops)
-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwv_ops)
-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwx_ops)
-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwv_ops)
-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwx_ops)
-DEF_RVV_FUNCTION (vwcvt_x, alu, full_preds, i_x_x_v_ops)
-DEF_RVV_FUNCTION (vwcvtu_x, alu, full_preds, u_x_x_v_ops)
+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvv_ops, always)
+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvx_ops, always)
+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvv_ops, always)
+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvx_ops, always)
+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvv_ops, always)
+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvx_ops, always)
+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvv_ops, always)
+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvx_ops, always)
+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwv_ops, always)
+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwx_ops, always)
+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwv_ops, always)
+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwx_ops, always)
+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwv_ops, always)
+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwx_ops, always)
+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwv_ops, always)
+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwx_ops, always)
+DEF_RVV_FUNCTION (vwcvt_x, alu, full_preds, i_x_x_v_ops, always)
+DEF_RVV_FUNCTION (vwcvtu_x, alu, full_preds, u_x_x_v_ops, always)
// 11.3. Vector Integer Extension
-DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf2_ops)
-DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf4_ops)
-DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf8_ops)
-DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf2_ops)
-DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf4_ops)
-DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf8_ops)
+DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf2_ops, always)
+DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf4_ops, always)
+DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf8_ops, always)
+DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf2_ops, always)
+DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf4_ops, always)
+DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf8_ops, always)
// 11.4. Vector Integer Add-with-Carry/Subtract-with-Borrow Instructions
-DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvvm_ops)
-DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvxm_ops)
-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvvm_ops)
-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvxm_ops)
-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvv_ops)
-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvx_ops)
-DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvvm_ops)
-DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvxm_ops)
-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvvm_ops)
-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvxm_ops)
-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvv_ops)
-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvx_ops)
+DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvvm_ops, always)
+DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvxm_ops, always)
+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvvm_ops, always)
+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvxm_ops, always)
+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvv_ops, always)
+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvx_ops, always)
+DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvvm_ops, always)
+DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvxm_ops, always)
+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvvm_ops, always)
+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvxm_ops, always)
+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvx_ops, always)
// 11.5. Vector Bitwise Logical Instructions
-DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vnot, alu, full_preds, iu_v_ops)
+DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vnot, alu, full_preds, iu_v_ops, always)
// 11.6. Vector Single-Width Shift Instructions
-DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvv_ops)
-DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvx_ops)
-DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvv_ops)
-DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvx_ops)
-DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvv_ops)
-DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvx_ops)
+DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvx_ops, always)
+DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvx_ops, always)
+DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvx_ops, always)
// 11.7. Vector Narrowing Integer Right Shift Instructions
-DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwv_ops)
-DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwx_ops)
-DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwv_ops)
-DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwx_ops)
-DEF_RVV_FUNCTION (vncvt_x, narrow_alu, full_preds, iu_trunc_ops)
+DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwv_ops, always)
+DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwx_ops, always)
+DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwv_ops, always)
+DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwx_ops, always)
+DEF_RVV_FUNCTION (vncvt_x, narrow_alu, full_preds, iu_trunc_ops, always)
// 11.8. Vector Integer Compare Instructions
-DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvv_ops)
-DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvx_ops)
-DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvv_ops)
-DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvx_ops)
-DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvv_ops)
-DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvx_ops)
-DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvv_ops)
-DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvx_ops)
-DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvv_ops)
-DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvx_ops)
-DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvv_ops)
-DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvx_ops)
-DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvv_ops)
-DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvx_ops)
-DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvv_ops)
-DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvx_ops)
-DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvv_ops)
-DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvx_ops)
-DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvv_ops)
-DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvx_ops)
+DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvv_ops, always)
+DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvx_ops, always)
+DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvv_ops, always)
+DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvx_ops, always)
// 11.9. Vector Integer Min/Max Instructions
-DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvx_ops)
-DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvx_ops)
+DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvx_ops, always)
+DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvx_ops, always)
// 11.10. Vector Single-Width Integer Multiply Instructions
-DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvv_ops)
-DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvx_ops)
-DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvv_ops)
-DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvx_ops)
-DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvv_ops)
-DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvx_ops)
+DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvv_ops, always)
+DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvx_ops, always)
+DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvv_ops, always)
+DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvx_ops, always)
+DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvv_ops, always)
+DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvx_ops, always)
// 11.11. Vector Integer Divide Instructions
-DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvx_ops)
-DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvx_ops)
+DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvx_ops, always)
+DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvx_ops, always)
// 11.12. Vector Widening Integer Multiply Instructions
-DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvv_ops)
-DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvx_ops)
-DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvv_ops)
-DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvx_ops)
-DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvv_ops)
-DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvx_ops)
+DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvv_ops, always)
+DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvx_ops, always)
+DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvv_ops, always)
+DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvx_ops, always)
+DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvv_ops, always)
+DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvx_ops, always)
// 11.13. Vector Single-Width Integer Multiply-Add Instructions
-DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvvv_ops)
-DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvxv_ops)
-DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvvv_ops)
-DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvxv_ops)
-DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvvv_ops)
-DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvxv_ops)
-DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvvv_ops)
-DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvxv_ops)
+DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvvv_ops, always)
+DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvxv_ops, always)
+DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvvv_ops, always)
+DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvxv_ops, always)
+DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvvv_ops, always)
+DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvxv_ops, always)
+DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvvv_ops, always)
+DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvxv_ops, always)
// 11.14. Vector Widening Integer Multiply-Add Instructions
-DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwvv_ops)
-DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwxv_ops)
-DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwvv_ops)
-DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwxv_ops)
-DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwvv_ops)
-DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwxv_ops)
-DEF_RVV_FUNCTION (vwmaccus, alu, full_preds, i_us_wwxv_ops)
+DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwvv_ops, always)
+DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwxv_ops, always)
+DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwvv_ops, always)
+DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwxv_ops, always)
+DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwvv_ops, always)
+DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwxv_ops, always)
+DEF_RVV_FUNCTION (vwmaccus, alu, full_preds, i_us_wwxv_ops, always)
// 11.15. Vector Integer Merge Instructions
-DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, all_vvvm_ops)
-DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, iu_vvxm_ops)
+DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, all_vvvm_ops, always)
+DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, iu_vvxm_ops, always)
// 11.16 Vector Integer Move Instructions
-DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, all_v_ops)
-DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, iu_x_ops)
+DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, all_v_ops, always)
+DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, iu_x_ops, always)
/* 12. Vector Fixed-Point Arithmetic Instructions. */
// 12.1. Vector Single-Width Saturating Add and Subtract
-DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvx_ops)
-DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvx_ops)
+DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvx_ops, always)
+DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvx_ops, always)
// 12.2. Vector Single-Width Averaging Add and Subtract
-DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvx_ops)
-DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvx_ops)
+DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvx_ops, always)
+DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvx_ops, always)
// 12.3. Vector Single-Width Fractional Multiply with Rounding and Saturation
-DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvv_ops)
-DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvx_ops)
+DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvv_ops, always)
+DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvx_ops, always)
// 12.4. Vector Single-Width Scaling Shift Instructions
-DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvv_ops)
-DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvx_ops)
-DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvv_ops)
-DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvx_ops)
+DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvx_ops, always)
+DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvx_ops, always)
// 12.5. Vector Narrowing Fixed-Point Clip Instructions
-DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwv_ops)
-DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwx_ops)
-DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwv_ops)
-DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwx_ops)
+DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwv_ops, always)
+DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwx_ops, always)
+DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwv_ops, always)
+DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwx_ops, always)
/* 13. Vector Floating-Point Instructions. */
// 13.2. Vector Single-Width Floating-Point Add/Subtract Instructions
-DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfrsub, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfrsub_frm, alu_frm, full_preds, f_vvf_ops)
+DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfrsub, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfrsub_frm, alu_frm, full_preds, f_vvf_ops, always)
// 13.3. Vector Widening Floating-Point Add/Subtract Instructions
-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwv_ops)
-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwf_ops)
-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwv_ops)
-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwf_ops)
-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwv_ops)
-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwf_ops)
-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwv_ops)
-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwf_ops)
+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwv_ops, always)
+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwf_ops, always)
+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwv_ops, always)
+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwf_ops, always)
+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwv_ops, always)
+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwf_ops, always)
+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwv_ops, always)
+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwf_ops, always)
// 13.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
-DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfrdiv, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfrdiv_frm, alu_frm, full_preds, f_vvf_ops)
+DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfrdiv, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfrdiv_frm, alu_frm, full_preds, f_vvf_ops, always)
// 13.5. Vector Widening Floating-Point Multiply
-DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvf_ops)
+DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvf_ops, always)
// 13.6. Vector Single-Width Floating-Point Fused Multiply-Add Instructions
-DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvfv_ops)
-
-DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvfv_ops)
+DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvfv_ops, always)
+
+DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvfv_ops, always)
// 13.7. Vector Widening Floating-Point Fused Multiply-Add Instructions
-DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwfv_ops)
-
-DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwfv_ops)
+DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwfv_ops, always)
+
+DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwfv_ops, always)
// 13.8. Vector Floating-Point Square-Root Instruction
-DEF_RVV_FUNCTION (vfsqrt, alu, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfsqrt, alu, full_preds, f_v_ops, always)
-DEF_RVV_FUNCTION (vfsqrt_frm, alu_frm, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfsqrt_frm, alu_frm, full_preds, f_v_ops, always)
// 13.9. Vector Floating-Point Reciprocal Square-Root Estimate Instruction
-DEF_RVV_FUNCTION (vfrsqrt7, alu, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfrsqrt7, alu, full_preds, f_v_ops, always)
// 13.10. Vector Floating-Point Reciprocal Estimate Instruction
-DEF_RVV_FUNCTION (vfrec7, alu, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfrec7, alu, full_preds, f_v_ops, always)
-DEF_RVV_FUNCTION (vfrec7_frm, alu_frm, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfrec7_frm, alu_frm, full_preds, f_v_ops, always)
// 13.11. Vector Floating-Point MIN/MAX Instructions
-DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvf_ops)
+DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvf_ops, always)
// 13.12. Vector Floating-Point Sign-Injection Instructions
-DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfneg, alu, full_preds, f_v_ops)
-DEF_RVV_FUNCTION (vfabs, alu, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfneg, alu, full_preds, f_v_ops, always)
+DEF_RVV_FUNCTION (vfabs, alu, full_preds, f_v_ops, always)
// 13.13. Vector Floating-Point Compare Instructions
-DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvf_ops)
+DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvf_ops, always)
// 13.14. Vector Floating-Point Classify Instruction
-DEF_RVV_FUNCTION (vfclass, alu, full_preds, f_to_u_v_ops)
+DEF_RVV_FUNCTION (vfclass, alu, full_preds, f_to_u_v_ops, always)
// 13.15. Vector Floating-Point Merge Instruction
-DEF_RVV_FUNCTION (vfmerge, no_mask_policy, none_tu_preds, f_vvfm_ops)
+DEF_RVV_FUNCTION (vfmerge, no_mask_policy, none_tu_preds, f_vvfm_ops, always)
// 13.16. Vector Floating-Point Move Instruction
-DEF_RVV_FUNCTION (vfmv_v, move, none_tu_preds, f_f_ops)
+DEF_RVV_FUNCTION (vfmv_v, move, none_tu_preds, f_f_ops, always)
// 13.17. Single-Width Floating-Point/Integer Type-Convert Instructions
-DEF_RVV_FUNCTION (vfcvt_x, alu, full_preds, f_to_i_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_xu, alu, full_preds, f_to_u_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_rtz_x, alu, full_preds, f_to_i_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_rtz_xu, alu, full_preds, f_to_u_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, i_to_f_x_v_ops)
-DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, u_to_f_xu_v_ops)
-
-DEF_RVV_FUNCTION (vfcvt_x_frm, alu_frm, full_preds, f_to_i_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_xu_frm, alu_frm, full_preds, f_to_u_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, i_to_f_x_v_ops)
-DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, u_to_f_xu_v_ops)
+DEF_RVV_FUNCTION (vfcvt_x, alu, full_preds, f_to_i_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_xu, alu, full_preds, f_to_u_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_rtz_x, alu, full_preds, f_to_i_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_rtz_xu, alu, full_preds, f_to_u_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, i_to_f_x_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, u_to_f_xu_v_ops, always)
+
+DEF_RVV_FUNCTION (vfcvt_x_frm, alu_frm, full_preds, f_to_i_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_xu_frm, alu_frm, full_preds, f_to_u_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, i_to_f_x_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, u_to_f_xu_v_ops, always)
// 13.18. Widening Floating-Point/Integer Type-Convert Instructions
-DEF_RVV_FUNCTION (vfwcvt_x, alu, full_preds, f_to_wi_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_xu, alu, full_preds, f_to_wu_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_rtz_x, alu, full_preds, f_to_wi_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_rtz_xu, alu, full_preds, f_to_wu_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, i_to_wf_x_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, u_to_wf_xu_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, f_to_wf_f_v_ops)
+DEF_RVV_FUNCTION (vfwcvt_x, alu, full_preds, f_to_wi_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_xu, alu, full_preds, f_to_wu_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_rtz_x, alu, full_preds, f_to_wi_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_rtz_xu, alu, full_preds, f_to_wu_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, i_to_wf_x_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, u_to_wf_xu_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, f_to_wf_f_v_ops, always)
-DEF_RVV_FUNCTION (vfwcvt_x_frm, alu_frm, full_preds, f_to_wi_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_xu_frm, alu_frm, full_preds, f_to_wu_f_v_ops)
+DEF_RVV_FUNCTION (vfwcvt_x_frm, alu_frm, full_preds, f_to_wi_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_xu_frm, alu_frm, full_preds, f_to_wu_f_v_ops, always)
// 13.19. Narrowing Floating-Point/Integer Type-Convert Instructions
-DEF_RVV_FUNCTION (vfncvt_x, narrow_alu, full_preds, f_to_ni_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_xu, narrow_alu, full_preds, f_to_nu_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_rtz_x, narrow_alu, full_preds, f_to_ni_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_rtz_xu, narrow_alu, full_preds, f_to_nu_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, i_to_nf_x_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, u_to_nf_xu_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, f_to_nf_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_rod_f, narrow_alu, full_preds, f_to_nf_f_w_ops)
-
-DEF_RVV_FUNCTION (vfncvt_x_frm, narrow_alu_frm, full_preds, f_to_ni_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_xu_frm, narrow_alu_frm, full_preds, f_to_nu_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, i_to_nf_x_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, u_to_nf_xu_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, f_to_nf_f_w_ops)
+DEF_RVV_FUNCTION (vfncvt_x, narrow_alu, full_preds, f_to_ni_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_xu, narrow_alu, full_preds, f_to_nu_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_rtz_x, narrow_alu, full_preds, f_to_ni_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_rtz_xu, narrow_alu, full_preds, f_to_nu_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, i_to_nf_x_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, u_to_nf_xu_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, f_to_nf_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_rod_f, narrow_alu, full_preds, f_to_nf_f_w_ops, always)
+
+DEF_RVV_FUNCTION (vfncvt_x_frm, narrow_alu_frm, full_preds, f_to_ni_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_xu_frm, narrow_alu_frm, full_preds, f_to_nu_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, i_to_nf_x_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, u_to_nf_xu_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, f_to_nf_f_w_ops, always)
/* 14. Vector Reduction Operations. */
// 14.1. Vector Single-Width Integer Reduction Instructions
-DEF_RVV_FUNCTION (vredsum, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredmaxu, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredmax, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredminu, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredmin, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredand, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredor, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredxor, reduc_alu, no_mu_preds, iu_vs_ops)
+DEF_RVV_FUNCTION (vredsum, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredmaxu, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredmax, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredminu, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredmin, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredand, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredor, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredxor, reduc_alu, no_mu_preds, iu_vs_ops, always)
// 14.2. Vector Widening Integer Reduction Instructions
-DEF_RVV_FUNCTION (vwredsum, reduc_alu, no_mu_preds, wi_vs_ops)
-DEF_RVV_FUNCTION (vwredsumu, reduc_alu, no_mu_preds, wu_vs_ops)
+DEF_RVV_FUNCTION (vwredsum, reduc_alu, no_mu_preds, wi_vs_ops, always)
+DEF_RVV_FUNCTION (vwredsumu, reduc_alu, no_mu_preds, wu_vs_ops, always)
// 14.3. Vector Single-Width Floating-Point Reduction Instructions
-DEF_RVV_FUNCTION (vfredusum, reduc_alu, no_mu_preds, f_vs_ops)
-DEF_RVV_FUNCTION (vfredosum, reduc_alu, no_mu_preds, f_vs_ops)
-DEF_RVV_FUNCTION (vfredmax, reduc_alu, no_mu_preds, f_vs_ops)
-DEF_RVV_FUNCTION (vfredmin, reduc_alu, no_mu_preds, f_vs_ops)
+DEF_RVV_FUNCTION (vfredusum, reduc_alu, no_mu_preds, f_vs_ops, always)
+DEF_RVV_FUNCTION (vfredosum, reduc_alu, no_mu_preds, f_vs_ops, always)
+DEF_RVV_FUNCTION (vfredmax, reduc_alu, no_mu_preds, f_vs_ops, always)
+DEF_RVV_FUNCTION (vfredmin, reduc_alu, no_mu_preds, f_vs_ops, always)
-DEF_RVV_FUNCTION (vfredusum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops)
-DEF_RVV_FUNCTION (vfredosum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops)
+DEF_RVV_FUNCTION (vfredusum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops, always)
+DEF_RVV_FUNCTION (vfredosum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops, always)
// 14.4. Vector Widening Floating-Point Reduction Instructions
-DEF_RVV_FUNCTION (vfwredosum, reduc_alu, no_mu_preds, wf_vs_ops)
-DEF_RVV_FUNCTION (vfwredusum, reduc_alu, no_mu_preds, wf_vs_ops)
+DEF_RVV_FUNCTION (vfwredosum, reduc_alu, no_mu_preds, wf_vs_ops, always)
+DEF_RVV_FUNCTION (vfwredusum, reduc_alu, no_mu_preds, wf_vs_ops, always)
-DEF_RVV_FUNCTION (vfwredosum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops)
-DEF_RVV_FUNCTION (vfwredusum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops)
+DEF_RVV_FUNCTION (vfwredosum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops, always)
+DEF_RVV_FUNCTION (vfwredusum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops, always)
/* 15. Vector Mask Instructions. */
// 15.1. Vector Mask-Register Logical Instructions
-DEF_RVV_FUNCTION (vmand, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmnand, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmandn, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmxor, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmor, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmnor, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmorn, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmxnor, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmmv, mask_alu, none_preds, b_mm_ops)
-DEF_RVV_FUNCTION (vmclr, mask_alu, none_preds, b_m_ops)
-DEF_RVV_FUNCTION (vmset, mask_alu, none_preds, b_m_ops)
-DEF_RVV_FUNCTION (vmnot, mask_alu, none_preds, b_mm_ops)
+DEF_RVV_FUNCTION (vmand, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmnand, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmandn, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmxor, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmor, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmnor, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmorn, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmxnor, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmmv, mask_alu, none_preds, b_mm_ops, always)
+DEF_RVV_FUNCTION (vmclr, mask_alu, none_preds, b_m_ops, always)
+DEF_RVV_FUNCTION (vmset, mask_alu, none_preds, b_m_ops, always)
+DEF_RVV_FUNCTION (vmnot, mask_alu, none_preds, b_mm_ops, always)
// 15.2. Vector count population in mask vcpop.m
-DEF_RVV_FUNCTION (vcpop, mask_alu, none_m_preds, b_ulong_m_ops)
+DEF_RVV_FUNCTION (vcpop, mask_alu, none_m_preds, b_ulong_m_ops, always)
// 15.3. vfirst find-first-set mask bit
-DEF_RVV_FUNCTION (vfirst, mask_alu, none_m_preds, b_long_m_ops)
+DEF_RVV_FUNCTION (vfirst, mask_alu, none_m_preds, b_long_m_ops, always)
// 15.4. vmsbf.m set-before-first mask bit
-DEF_RVV_FUNCTION (vmsbf, mask_alu, none_m_mu_preds, b_mm_ops)
+DEF_RVV_FUNCTION (vmsbf, mask_alu, none_m_mu_preds, b_mm_ops, always)
// 15.5. vmsif.m set-including-first mask bit
-DEF_RVV_FUNCTION (vmsif, mask_alu, none_m_mu_preds, b_mm_ops)
+DEF_RVV_FUNCTION (vmsif, mask_alu, none_m_mu_preds, b_mm_ops, always)
// 15.6. vmsof.m set-only-first mask bit
-DEF_RVV_FUNCTION (vmsof, mask_alu, none_m_mu_preds, b_mm_ops)
+DEF_RVV_FUNCTION (vmsof, mask_alu, none_m_mu_preds, b_mm_ops, always)
// 15.8. Vector Iota Instruction
-DEF_RVV_FUNCTION (viota, mask_alu, full_preds, u_vm_ops)
+DEF_RVV_FUNCTION (viota, mask_alu, full_preds, u_vm_ops, always)
// 15.9. Vector Element Index Instruction
-DEF_RVV_FUNCTION (vid, alu, full_preds, u_v_ops)
+DEF_RVV_FUNCTION (vid, alu, full_preds, u_v_ops, always)
/* 16. Vector Permutation Instructions. */
// 16.1. Integer Scalar Move Instructions
-DEF_RVV_FUNCTION (vmv_x, scalar_move, none_preds, iu_x_s_ops)
-DEF_RVV_FUNCTION (vmv_s, move, none_tu_preds, iu_s_x_ops)
+DEF_RVV_FUNCTION (vmv_x, scalar_move, none_preds, iu_x_s_ops, always)
+DEF_RVV_FUNCTION (vmv_s, move, none_tu_preds, iu_s_x_ops, always)
// 16.2. Floating-Point Scalar Move Instructions
-DEF_RVV_FUNCTION (vfmv_f, scalar_move, none_preds, f_f_s_ops)
-DEF_RVV_FUNCTION (vfmv_s, move, none_tu_preds, f_s_f_ops)
+DEF_RVV_FUNCTION (vfmv_f, scalar_move, none_preds, f_f_s_ops, always)
+DEF_RVV_FUNCTION (vfmv_s, move, none_tu_preds, f_s_f_ops, always)
// 16.3. Vector Slide Instructions
-DEF_RVV_FUNCTION (vslideup, alu, full_preds, all_vvvx_ops)
-DEF_RVV_FUNCTION (vslidedown, alu, full_preds, all_vvx_ops)
-DEF_RVV_FUNCTION (vslide1up, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vslide1down, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vfslide1up, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfslide1down, alu, full_preds, f_vvf_ops)
+DEF_RVV_FUNCTION (vslideup, alu, full_preds, all_vvvx_ops, always)
+DEF_RVV_FUNCTION (vslidedown, alu, full_preds, all_vvx_ops, always)
+DEF_RVV_FUNCTION (vslide1up, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vslide1down, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vfslide1up, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfslide1down, alu, full_preds, f_vvf_ops, always)
// 16.4. Vector Register Gather Instructions
-DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvv_ops)
-DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvx_ops)
-DEF_RVV_FUNCTION (vrgatherei16, alu, full_preds, all_gatherei16_vvv_ops)
+DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvv_ops, always)
+DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvx_ops, always)
+DEF_RVV_FUNCTION (vrgatherei16, alu, full_preds, all_gatherei16_vvv_ops, always)
// 16.5. Vector Compress Instruction
-DEF_RVV_FUNCTION (vcompress, alu, none_tu_preds, all_vvm_ops)
+DEF_RVV_FUNCTION (vcompress, alu, none_tu_preds, all_vvm_ops, always)
/* Miscellaneous Vector Functions. */
-DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_u_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_i_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_i_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_u_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_f_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_f_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew8_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew16_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew32_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew64_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool2_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool4_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool8_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool16_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool32_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool64_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew8_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew16_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew32_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew64_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew8_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew16_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew32_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew64_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x2_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x4_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x8_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x16_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x32_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x64_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x2_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x4_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x8_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x16_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x32_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x64_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x2_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x4_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x8_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x2_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x4_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul4_x2_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x2_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x4_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x8_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x2_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x4_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul4_x2_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x2_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x4_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x8_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x2_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x4_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul4_x2_ops)
+DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_u_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_i_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_i_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_u_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_f_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_f_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew8_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew16_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew32_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew64_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool2_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool4_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool8_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool16_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool32_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool64_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew8_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew16_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew32_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew64_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew8_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew16_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew32_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew64_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x2_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x4_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x8_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x16_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x32_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x64_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x2_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x4_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x8_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x16_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x32_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x64_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x2_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x4_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x8_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x2_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x4_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul4_x2_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x2_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x4_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x8_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x2_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x4_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul4_x2_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x2_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x4_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x8_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x2_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x4_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul4_x2_ops, always)
// Tuple types
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_tuple_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_tuple_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_tuple_ops)
-DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_tuple_ops)
-DEF_RVV_FUNCTION (vlseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ops)
-DEF_RVV_FUNCTION (vsseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ops)
-DEF_RVV_FUNCTION (vlsseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ptrdiff_ops)
-DEF_RVV_FUNCTION (vssseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ptrdiff_ops)
-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vlsegff, seg_fault_load, full_preds, tuple_v_scalar_const_ptr_size_ptr_ops)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_tuple_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_tuple_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_tuple_ops, always)
+DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_tuple_ops, always)
+DEF_RVV_FUNCTION (vlseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ops, always)
+DEF_RVV_FUNCTION (vsseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ops, always)
+DEF_RVV_FUNCTION (vlsseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ptrdiff_ops, always)
+DEF_RVV_FUNCTION (vssseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ptrdiff_ops, always)
+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vlsegff, seg_fault_load, full_preds, tuple_v_scalar_const_ptr_size_ptr_ops, always)
#undef DEF_RVV_FUNCTION
diff --git a/gcc/config/riscv/riscv-vector-builtins.cc b/gcc/config/riscv/riscv-vector-builtins.cc
index 6330a3a41c3..dac638b6bcc 100644
--- a/gcc/config/riscv/riscv-vector-builtins.cc
+++ b/gcc/config/riscv/riscv-vector-builtins.cc
@@ -51,6 +51,7 @@
#include "riscv-vector-builtins.h"
#include "riscv-vector-builtins-shapes.h"
#include "riscv-vector-builtins-bases.h"
+#include "riscv-vector-builtins-avail.h"
using namespace riscv_vector;
@@ -2684,8 +2685,9 @@ static CONSTEXPR const function_type_info function_types[] = {
/* A list of all RVV intrinsic functions. */
static function_group_info function_groups[] = {
-#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO) \
- {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO},
+#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL) \
+ {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO,\
+ riscv_vector_avail_ ## AVAIL},
#include "riscv-vector-builtins-functions.def"
};
diff --git a/gcc/config/riscv/riscv-vector-builtins.h b/gcc/config/riscv/riscv-vector-builtins.h
index cd8ccab1724..74d50c2f849 100644
--- a/gcc/config/riscv/riscv-vector-builtins.h
+++ b/gcc/config/riscv/riscv-vector-builtins.h
@@ -232,6 +232,8 @@ struct function_group_info
on the index value. */
const predication_type_index *preds;
const rvv_op_info ops_infos;
+ /* Whether the function is available. */
+ unsigned int (*avail) (void);
};
class GTY ((user)) function_instance
--
2.17.1
2023-12-07 20:23 juzhe.zhong <juzhe.zhong@rivai.ai> wrote:
>Thanks for doing this!
>
>+AVAIL (always, true)
>-> AVAIL (true, true)
>
>+DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops, always)
>-> DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops, true)
>
>Btw, we have full coverage rvv -intrinsic API testing generator for GNU .
>https://github.com/riscv-non-isa/rvv-intrinsic-doc/
>Could you run it ? Your colleague Lixu knows it.
>
OK. got it, I will run it. Thanks.
>
>
>
>juzhe.zhong@rivai.ai
>
>From: Feng Wang
>Date: 2023-12-07 20:17
>To: gcc-patches
>CC: kito.cheng; jeffreyalaw; juzhe.zhong; Feng Wang
>Subject: [PATCH] RISC-V: Add avail interface into function_group_info
>In order to add other extension about vector,this patch add
>unsigned int (*avail) (void) into function_group_info to determine
>whether to register the intrinsic based on ISA info.
>
>gcc/ChangeLog:
>
>* config/riscv/riscv-vector-builtins-functions.def (DEF_RVV_FUNCTION): Add AVAIL def.
>(read_vl): Add avail_always interface.
>(vlenb): Ditto.
>(vsetvl): Ditto.
>(vsetvlmax): Ditto.
>(vle): Ditto.
>(vse): Ditto.
>(vlm): Ditto.
>(vsm): Ditto.
>(vlse): Ditto.
>(vsse): Ditto.
>(vluxei8): Ditto.
>(vluxei16): Ditto.
>(vluxei32): Ditto.
>(vluxei64): Ditto.
>(vloxei8): Ditto.
>(vloxei16): Ditto.
>(vloxei32): Ditto.
>(vloxei64): Ditto.
>(vsuxei8): Ditto.
>(vsuxei16): Ditto.
>(vsuxei32): Ditto.
>(vsuxei64): Ditto.
>(vsoxei8): Ditto.
>(vsoxei16): Ditto.
>(vsoxei32): Ditto.
>(vsoxei64):Ditto.
>(vleff): Ditto.
>(vadd): Ditto.
>(vsub): Ditto.
>(vrsub): Ditto.
>(vneg): Ditto.
>(vwaddu): Ditto.
>(vwsubu): Ditto.
>(vwadd): Ditto.
>(vwsub): Ditto.
>(vwcvt_x): Ditto.
>(vwcvtu_x):Ditto.
>(vzext): Ditto.
>(vsext): Ditto.
>(vadc): Ditto.
>(vmadc): Ditto.
>(vsbc): Ditto.
>(vmsbc): Ditto.
>(vand): Ditto.
>(vor): Ditto.
>(vxor): Ditto.
>(vnot): Ditto.
>(vsll): Ditto.
>(vsra): Ditto.
>(vsrl): Ditto.
>(vnsrl): Ditto.
>(vnsra): Ditto.
>(vncvt_x): Ditto.
>(vmseq): Ditto.
>(vmsne): Ditto.
>(vmsltu): Ditto.
>(vmslt): Ditto.
>(vmsleu): Ditto.
>(vmsle): Ditto.
>(vmsgtu): Ditto.
>(vmsgt): Ditto.
>(vmsgeu): Ditto.
>(vmsge): Ditto.
>(vminu): Ditto.
>(vmin): Ditto.
>(vmaxu): Ditto.
>(vmax): Ditto.
>(vmul): Ditto.
>(vmulh): Ditto.
>(vmulhu): Ditto.
>(vmulhsu): Ditto.
>(vdivu): Ditto.
>(vdiv): Ditto.
>(vremu): Ditto.
>(vrem): Ditto.
>(vwmul): Ditto.
>(vwmulu): Ditto.
>(vwmulsu): Ditto.
>(vmacc): Ditto.
>(vnmsac): Ditto.
>(vmadd): Ditto.
>(vnmsub): Ditto.
>(vwmaccu): Ditto.
>(vwmacc): Ditto.
>(vwmaccsu): Ditto.
>(vwmaccus): Ditto.
>(vmerge): Ditto.
>(vmv_v): Ditto.
>(vsaddu): Ditto.
>(vsadd): Ditto.
>(vssubu): Ditto.
>(vssub): Ditto.
>(vaaddu): Ditto.
>(vaadd): Ditto.
>(vasubu): Ditto.
>(vasub): Ditto.
>(vsmul): Ditto.
>(vssrl): Ditto.
>(vssra): Ditto.
>(vnclipu): Ditto.
>(vnclip): Ditto.
>(vfadd): Ditto.
>(vfsub): Ditto.
>(vfrsub): Ditto.
>(vfadd_frm): Ditto.
>(vfsub_frm): Ditto.
>(vfrsub_frm): Ditto.
>(vfwadd): Ditto.
>(vfwsub): Ditto.
>(vfwadd_frm): Ditto.
>(vfwsub_frm): Ditto.
>(vfmul): Ditto.
>(vfdiv): Ditto.
>(vfrdiv): Ditto.
>(vfmul_frm): Ditto.
>(vfdiv_frm): Ditto.
>(vfrdiv_frm): Ditto.
>(vfwmul): Ditto.
>(vfwmul_frm): Ditto.
>(vfmacc): Ditto.
>(vfnmsac): Ditto.
>(vfmadd): Ditto.
>(vfnmsub): Ditto.
>(vfnmacc): Ditto.
>(vfmsac): Ditto.
>(vfnmadd): Ditto.
>(vfmsub): Ditto.
>(vfmacc_frm): Ditto.
>(vfnmacc_frm): Ditto.
>(vfmsac_frm): Ditto.
>(vfnmsac_frm): Ditto.
>(vfmadd_frm): Ditto.
>(vfnmadd_frm): Ditto.
>(vfmsub_frm): Ditto.
>(vfnmsub_frm): Ditto.
>(vfwmacc): Ditto.
>(vfwnmacc): Ditto.
>(vfwmsac): Ditto.
>(vfwnmsac): Ditto.
>(vfwmacc_frm): Ditto.
>(vfwnmacc_frm): Ditto.
>(vfwmsac_frm): Ditto.
>(vfwnmsac_frm): Ditto.
>(vfsqrt): Ditto.
>(vfsqrt_frm): Ditto.
>(vfrsqrt7): Ditto.
>(vfrec7): Ditto.
>(vfrec7_frm): Ditto.
>(vfmin): Ditto.
>(vfmax): Ditto.
>(vfsgnj): Ditto.
>(vfsgnjn): Ditto.
>(vfsgnjx): Ditto.
>(vfneg): Ditto.
>(vfabs): Ditto.
>(vmfeq): Ditto.
>(vmfne): Ditto.
>(vmflt): Ditto.
>(vmfle): Ditto.
>(vmfgt): Ditto.
>(vmfge): Ditto.
>(vfclass): Ditto.
>(vfmerge): Ditto.
>(vfmv_v): Ditto.
>(vfcvt_x): Ditto.
>(vfcvt_xu): Ditto.
>(vfcvt_rtz_x): Ditto.
>(vfcvt_rtz_xu): Ditto.
>(vfcvt_f): Ditto.
>(vfcvt_x_frm): Ditto.
>(vfcvt_xu_frm): Ditto.
>(vfcvt_f_frm): Ditto.
>(vfwcvt_x): Ditto.
>(vfwcvt_xu): Ditto.
>(vfwcvt_rtz_x): Ditto.
>(vfwcvt_rtz_xu): Ditto.
>(vfwcvt_f): Ditto.
>(vfwcvt_x_frm): Ditto.
>(vfwcvt_xu_frm): Ditto.
>(vfncvt_x): Ditto.
>(vfncvt_xu): Ditto.
>(vfncvt_rtz_x): Ditto.
>(vfncvt_rtz_xu): Ditto.
>(vfncvt_f): Ditto.
>(vfncvt_rod_f): Ditto.
>(vfncvt_x_frm): Ditto.
>(vfncvt_xu_frm): Ditto.
>(vfncvt_f_frm): Ditto.
>(vredsum): Ditto.
>(vredmaxu): Ditto.
>(vredmax): Ditto.
>(vredminu): Ditto.
>(vredmin): Ditto.
>(vredand): Ditto.
>(vredor): Ditto.
>(vredxor): Ditto.
>(vwredsum): Ditto.
>(vwredsumu): Ditto.
>(vfredusum): Ditto.
>(vfredosum): Ditto.
>(vfredmax): Ditto.
>(vfredmin): Ditto.
>(vfredusum_frm): Ditto.
>(vfredosum_frm): Ditto.
>(vfwredosum): Ditto.
>(vfwredusum): Ditto.
>(vfwredosum_frm): Ditto.
>(vfwredusum_frm): Ditto.
>(vmand): Ditto.
>(vmnand): Ditto.
>(vmandn): Ditto.
>(vmxor): Ditto.
>(vmor): Ditto.
>(vmnor): Ditto.
>(vmorn): Ditto.
>(vmxnor): Ditto.
>(vmmv): Ditto.
>(vmclr): Ditto.
>(vmset): Ditto.
>(vmnot): Ditto.
>(vcpop): Ditto.
>(vfirst): Ditto.
>(vmsbf): Ditto.
>(vmsif): Ditto.
>(vmsof): Ditto.
>(viota): Ditto.
>(vid): Ditto.
>(vmv_x): Ditto.
>(vmv_s): Ditto.
>(vfmv_f): Ditto.
>(vfmv_s): Ditto.
>(vslideup): Ditto.
>(vslidedown): Ditto.
>(vslide1up): Ditto.
>(vslide1down): Ditto.
>(vfslide1up): Ditto.
>(vfslide1down): Ditto.
>(vrgather): Ditto.
>(vrgatherei16): Ditto.
>(vcompress): Ditto.
>(vundefined): Ditto.
>(vreinterpret): Ditto.
>(vlmul_ext): Ditto.
>(vlmul_trunc): Ditto.
>(vset): Ditto.
>(vget): Ditto.
>(vcreate): Ditto.
>(vlseg): Ditto.
>(vsseg): Ditto.
>(vlsseg): Ditto.
>(vssseg): Ditto.
>(vluxseg): Ditto.
>(vloxseg): Ditto.
>(vsuxseg): Ditto.
>(vsoxseg): Ditto.
>(vlsegff): Ditto.
>* config/riscv/riscv-vector-builtins.cc (DEF_RVV_FUNCTION): Add AVAIL marco.
>* config/riscv/riscv-vector-builtins.h (struct function_group_info):
>Add new member avail into struct.
>* config/riscv/riscv-vector-builtins-avail.h: New file.The definition of AVAIL marco.
>---
>.../riscv/riscv-vector-builtins-avail.h | 18 +
>.../riscv/riscv-vector-builtins-functions.def | 946 +++++++++---------
>gcc/config/riscv/riscv-vector-builtins.cc | 6 +-
>gcc/config/riscv/riscv-vector-builtins.h | 2 +
>4 files changed, 497 insertions(+), 475 deletions(-)
>create mode 100644 gcc/config/riscv/riscv-vector-builtins-avail.h
>
>diff --git a/gcc/config/riscv/riscv-vector-builtins-avail.h b/gcc/config/riscv/riscv-vector-builtins-avail.h
>new file mode 100644
>index 00000000000..1b7a8291881
>--- /dev/null
>+++ b/gcc/config/riscv/riscv-vector-builtins-avail.h
>@@ -0,0 +1,18 @@
>+#ifndef GCC_RISCV_VECTOR_BUILTINS_AVAIL_H
>+#define GCC_RISCV_VECTOR_BUILTINS_AVAIL_H
>+
>+#include "insn-codes.h"
>+namespace riscv_vector {
>+
>+/* Declare an availability predicate for built-in functions. */
>+#define AVAIL(NAME, COND) \
>+ static unsigned int \
>+ riscv_vector_avail_##NAME (void) \
>+ { \
>+ return (COND); \
>+ }
>+
>+AVAIL (always, true)
>+
>+}
>+#endif
>diff --git a/gcc/config/riscv/riscv-vector-builtins-functions.def b/gcc/config/riscv/riscv-vector-builtins-functions.def
>index 1c37fd5fffe..d1fe600177f 100644
>--- a/gcc/config/riscv/riscv-vector-builtins-functions.def
>+++ b/gcc/config/riscv/riscv-vector-builtins-functions.def
>@@ -33,622 +33,622 @@ along with GCC; see the file COPYING3. If not see
>*/
>#ifndef DEF_RVV_FUNCTION
>-#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO)
>+#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL)
>#endif
>/* Internal helper functions for gimple fold use. */
>-DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops)
>-DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops)
>+DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops, always)
>+DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops, always)
>/* 6. Configuration-Setting Instructions. */
>-DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops)
>-DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops)
>+DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops, always)
>+DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops, always)
>/* 7. Vector Loads and Stores. */
>// 7.4. Vector Unit-Stride Instructions
>-DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops)
>-DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops)
>-DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops)
>-DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops)
>+DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops, always)
>+DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops, always)
>+DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops, always)
>+DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops, always)
>// 7.5. Vector Strided Instructions
>-DEF_RVV_FUNCTION (vlse, loadstore, full_preds, all_v_scalar_const_ptr_ptrdiff_ops)
>-DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, all_v_scalar_ptr_ptrdiff_ops)
>+DEF_RVV_FUNCTION (vlse, loadstore, full_preds, all_v_scalar_const_ptr_ptrdiff_ops, always)
>+DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, all_v_scalar_ptr_ptrdiff_ops, always)
>// 7.6. Vector Indexed Instructions
>-DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops)
>-DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops)
>-DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops)
>-DEF_RVV_FUNCTION (vluxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops)
>-DEF_RVV_FUNCTION (vloxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops)
>-DEF_RVV_FUNCTION (vloxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops)
>-DEF_RVV_FUNCTION (vloxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops)
>-DEF_RVV_FUNCTION (vloxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops)
>-DEF_RVV_FUNCTION (vsuxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops)
>-DEF_RVV_FUNCTION (vsuxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops)
>-DEF_RVV_FUNCTION (vsuxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops)
>-DEF_RVV_FUNCTION (vsuxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops)
>-DEF_RVV_FUNCTION (vsoxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops)
>-DEF_RVV_FUNCTION (vsoxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops)
>-DEF_RVV_FUNCTION (vsoxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops)
>-DEF_RVV_FUNCTION (vsoxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops)
>+DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops, always)
>+DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops, always)
>+DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops, always)
>+DEF_RVV_FUNCTION (vluxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops, always)
>+DEF_RVV_FUNCTION (vloxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops, always)
>+DEF_RVV_FUNCTION (vloxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops, always)
>+DEF_RVV_FUNCTION (vloxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops, always)
>+DEF_RVV_FUNCTION (vloxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops, always)
>+DEF_RVV_FUNCTION (vsuxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops, always)
>+DEF_RVV_FUNCTION (vsuxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops, always)
>+DEF_RVV_FUNCTION (vsuxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops, always)
>+DEF_RVV_FUNCTION (vsuxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops, always)
>+DEF_RVV_FUNCTION (vsoxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops, always)
>+DEF_RVV_FUNCTION (vsoxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops, always)
>+DEF_RVV_FUNCTION (vsoxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops, always)
>+DEF_RVV_FUNCTION (vsoxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops, always)
>// 7.7. Unit-stride Fault-Only-First Loads
>-DEF_RVV_FUNCTION (vleff, fault_load, full_preds, all_v_scalar_const_ptr_size_ptr_ops)
>+DEF_RVV_FUNCTION (vleff, fault_load, full_preds, all_v_scalar_const_ptr_size_ptr_ops, always)
>// TODO: 7.8. Vector Load/Store Segment Instructions
>/* 11. Vector Integer Arithmetic Instructions. */
>// 11.1. Vector Single-Width Integer Add and Subtract
>-DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvv_ops)
>-DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvx_ops)
>-DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvv_ops)
>-DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvx_ops)
>-DEF_RVV_FUNCTION (vrsub, alu, full_preds, iu_vvx_ops)
>-DEF_RVV_FUNCTION (vneg, alu, full_preds, iu_v_ops)
>+DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvv_ops, always)
>+DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvx_ops, always)
>+DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvv_ops, always)
>+DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvx_ops, always)
>+DEF_RVV_FUNCTION (vrsub, alu, full_preds, iu_vvx_ops, always)
>+DEF_RVV_FUNCTION (vneg, alu, full_preds, iu_v_ops, always)
>// 11.2. Vector Widening Integer Add/Subtract
>-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvv_ops)
>-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvx_ops)
>-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvv_ops)
>-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvx_ops)
>-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvv_ops)
>-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvx_ops)
>-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvv_ops)
>-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvx_ops)
>-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwv_ops)
>-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwx_ops)
>-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwv_ops)
>-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwx_ops)
>-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwv_ops)
>-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwx_ops)
>-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwv_ops)
>-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwx_ops)
>-DEF_RVV_FUNCTION (vwcvt_x, alu, full_preds, i_x_x_v_ops)
>-DEF_RVV_FUNCTION (vwcvtu_x, alu, full_preds, u_x_x_v_ops)
>+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvv_ops, always)
>+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvx_ops, always)
>+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvv_ops, always)
>+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvx_ops, always)
>+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvv_ops, always)
>+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvx_ops, always)
>+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvv_ops, always)
>+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvx_ops, always)
>+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwv_ops, always)
>+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwx_ops, always)
>+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwv_ops, always)
>+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwx_ops, always)
>+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwv_ops, always)
>+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwx_ops, always)
>+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwv_ops, always)
>+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwx_ops, always)
>+DEF_RVV_FUNCTION (vwcvt_x, alu, full_preds, i_x_x_v_ops, always)
>+DEF_RVV_FUNCTION (vwcvtu_x, alu, full_preds, u_x_x_v_ops, always)
>// 11.3. Vector Integer Extension
>-DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf2_ops)
>-DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf4_ops)
>-DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf8_ops)
>-DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf2_ops)
>-DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf4_ops)
>-DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf8_ops)
>+DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf2_ops, always)
>+DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf4_ops, always)
>+DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf8_ops, always)
>+DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf2_ops, always)
>+DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf4_ops, always)
>+DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf8_ops, always)
>// 11.4. Vector Integer Add-with-Carry/Subtract-with-Borrow Instructions
>-DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvvm_ops)
>-DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvxm_ops)
>-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvvm_ops)
>-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvxm_ops)
>-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvv_ops)
>-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvx_ops)
>-DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvvm_ops)
>-DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvxm_ops)
>-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvvm_ops)
>-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvxm_ops)
>-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvv_ops)
>-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvx_ops)
>+DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvvm_ops, always)
>+DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvxm_ops, always)
>+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvvm_ops, always)
>+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvxm_ops, always)
>+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvx_ops, always)
>+DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvvm_ops, always)
>+DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvxm_ops, always)
>+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvvm_ops, always)
>+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvxm_ops, always)
>+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvx_ops, always)
>// 11.5. Vector Bitwise Logical Instructions
>-DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvv_ops)
>-DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvx_ops)
>-DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvv_ops)
>-DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvx_ops)
>-DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvv_ops)
>-DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvx_ops)
>-DEF_RVV_FUNCTION (vnot, alu, full_preds, iu_v_ops)
>+DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvv_ops, always)
>+DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvx_ops, always)
>+DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvv_ops, always)
>+DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvx_ops, always)
>+DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvv_ops, always)
>+DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvx_ops, always)
>+DEF_RVV_FUNCTION (vnot, alu, full_preds, iu_v_ops, always)
>// 11.6. Vector Single-Width Shift Instructions
>-DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvv_ops)
>-DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvx_ops)
>-DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvv_ops)
>-DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvx_ops)
>-DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvv_ops)
>-DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvx_ops)
>+DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvv_ops, always)
>+DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvx_ops, always)
>+DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvv_ops, always)
>+DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvx_ops, always)
>+DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvv_ops, always)
>+DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvx_ops, always)
>// 11.7. Vector Narrowing Integer Right Shift Instructions
>-DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwv_ops)
>-DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwx_ops)
>-DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwv_ops)
>-DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwx_ops)
>-DEF_RVV_FUNCTION (vncvt_x, narrow_alu, full_preds, iu_trunc_ops)
>+DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwv_ops, always)
>+DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwx_ops, always)
>+DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwv_ops, always)
>+DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwx_ops, always)
>+DEF_RVV_FUNCTION (vncvt_x, narrow_alu, full_preds, iu_trunc_ops, always)
>// 11.8. Vector Integer Compare Instructions
>-DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvv_ops)
>-DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvx_ops)
>-DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvv_ops)
>-DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvx_ops)
>-DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvv_ops)
>-DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvx_ops)
>-DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvv_ops)
>-DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvx_ops)
>-DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvv_ops)
>-DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvx_ops)
>-DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvv_ops)
>-DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvx_ops)
>-DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvv_ops)
>-DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvx_ops)
>-DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvv_ops)
>-DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvx_ops)
>-DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvv_ops)
>-DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvx_ops)
>-DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvv_ops)
>-DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvx_ops)
>+DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvx_ops, always)
>+DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvx_ops, always)
>+DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvx_ops, always)
>+DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvx_ops, always)
>+DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvx_ops, always)
>+DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvx_ops, always)
>+DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvx_ops, always)
>+DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvx_ops, always)
>+DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvx_ops, always)
>+DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvx_ops, always)
>// 11.9. Vector Integer Min/Max Instructions
>-DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvv_ops)
>-DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvx_ops)
>-DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvv_ops)
>-DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvx_ops)
>-DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvv_ops)
>-DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvx_ops)
>-DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvv_ops)
>-DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvx_ops)
>+DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvv_ops, always)
>+DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvx_ops, always)
>+DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvv_ops, always)
>+DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvx_ops, always)
>+DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvv_ops, always)
>+DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvx_ops, always)
>+DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvv_ops, always)
>+DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvx_ops, always)
>// 11.10. Vector Single-Width Integer Multiply Instructions
>-DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops)
>-DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvx_ops)
>-DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvv_ops)
>-DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvx_ops)
>-DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvv_ops)
>-DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvx_ops)
>-DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvv_ops)
>-DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvx_ops)
>+DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops, always)
>+DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvx_ops, always)
>+DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvv_ops, always)
>+DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvx_ops, always)
>+DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvv_ops, always)
>+DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvx_ops, always)
>+DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvv_ops, always)
>+DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvx_ops, always)
>// 11.11. Vector Integer Divide Instructions
>-DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvv_ops)
>-DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvx_ops)
>-DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvv_ops)
>-DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvx_ops)
>-DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvv_ops)
>-DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvx_ops)
>-DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvv_ops)
>-DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvx_ops)
>+DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvv_ops, always)
>+DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvx_ops, always)
>+DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvv_ops, always)
>+DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvx_ops, always)
>+DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvv_ops, always)
>+DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvx_ops, always)
>+DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvv_ops, always)
>+DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvx_ops, always)
>// 11.12. Vector Widening Integer Multiply Instructions
>-DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvv_ops)
>-DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvx_ops)
>-DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvv_ops)
>-DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvx_ops)
>-DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvv_ops)
>-DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvx_ops)
>+DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvv_ops, always)
>+DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvx_ops, always)
>+DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvv_ops, always)
>+DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvx_ops, always)
>+DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvv_ops, always)
>+DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvx_ops, always)
>// 11.13. Vector Single-Width Integer Multiply-Add Instructions
>-DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvvv_ops)
>-DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvxv_ops)
>-DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvvv_ops)
>-DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvxv_ops)
>-DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvvv_ops)
>-DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvxv_ops)
>-DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvvv_ops)
>-DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvxv_ops)
>+DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvxv_ops, always)
>+DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvxv_ops, always)
>+DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvxv_ops, always)
>+DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvxv_ops, always)
>// 11.14. Vector Widening Integer Multiply-Add Instructions
>-DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwvv_ops)
>-DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwxv_ops)
>-DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwvv_ops)
>-DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwxv_ops)
>-DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwvv_ops)
>-DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwxv_ops)
>-DEF_RVV_FUNCTION (vwmaccus, alu, full_preds, i_us_wwxv_ops)
>+DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwvv_ops, always)
>+DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwxv_ops, always)
>+DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwvv_ops, always)
>+DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwxv_ops, always)
>+DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwvv_ops, always)
>+DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwxv_ops, always)
>+DEF_RVV_FUNCTION (vwmaccus, alu, full_preds, i_us_wwxv_ops, always)
>// 11.15. Vector Integer Merge Instructions
>-DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, all_vvvm_ops)
>-DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, iu_vvxm_ops)
>+DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, all_vvvm_ops, always)
>+DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, iu_vvxm_ops, always)
>// 11.16 Vector Integer Move Instructions
>-DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, all_v_ops)
>-DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, iu_x_ops)
>+DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, all_v_ops, always)
>+DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, iu_x_ops, always)
>/* 12. Vector Fixed-Point Arithmetic Instructions. */
>// 12.1. Vector Single-Width Saturating Add and Subtract
>-DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvv_ops)
>-DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvx_ops)
>-DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvv_ops)
>-DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvx_ops)
>-DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvv_ops)
>-DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvx_ops)
>-DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvv_ops)
>-DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvx_ops)
>+DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvv_ops, always)
>+DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvx_ops, always)
>+DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvv_ops, always)
>+DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvx_ops, always)
>+DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvv_ops, always)
>+DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvx_ops, always)
>+DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvv_ops, always)
>+DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvx_ops, always)
>// 12.2. Vector Single-Width Averaging Add and Subtract
>-DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvv_ops)
>-DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvx_ops)
>-DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvv_ops)
>-DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvx_ops)
>-DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvv_ops)
>-DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvx_ops)
>-DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvv_ops)
>-DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvx_ops)
>+DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvv_ops, always)
>+DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvx_ops, always)
>+DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvv_ops, always)
>+DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvx_ops, always)
>+DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvv_ops, always)
>+DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvx_ops, always)
>+DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvv_ops, always)
>+DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvx_ops, always)
>// 12.3. Vector Single-Width Fractional Multiply with Rounding and Saturation
>-DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvv_ops)
>-DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvx_ops)
>+DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvv_ops, always)
>+DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvx_ops, always)
>// 12.4. Vector Single-Width Scaling Shift Instructions
>-DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvv_ops)
>-DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvx_ops)
>-DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvv_ops)
>-DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvx_ops)
>+DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvv_ops, always)
>+DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvx_ops, always)
>+DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvv_ops, always)
>+DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvx_ops, always)
>// 12.5. Vector Narrowing Fixed-Point Clip Instructions
>-DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwv_ops)
>-DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwx_ops)
>-DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwv_ops)
>-DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwx_ops)
>+DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwv_ops, always)
>+DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwx_ops, always)
>+DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwv_ops, always)
>+DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwx_ops, always)
>/* 13. Vector Floating-Point Instructions. */
>// 13.2. Vector Single-Width Floating-Point Add/Subtract Instructions
>-DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfrsub, alu, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfrsub_frm, alu_frm, full_preds, f_vvf_ops)
>+DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfrsub, alu, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfrsub_frm, alu_frm, full_preds, f_vvf_ops, always)
>// 13.3. Vector Widening Floating-Point Add/Subtract Instructions
>-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvv_ops)
>-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvf_ops)
>-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvv_ops)
>-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvf_ops)
>-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwv_ops)
>-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwf_ops)
>-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwv_ops)
>-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwf_ops)
>-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvv_ops)
>-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvf_ops)
>-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvv_ops)
>-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvf_ops)
>-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwv_ops)
>-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwf_ops)
>-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwv_ops)
>-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwf_ops)
>+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvv_ops, always)
>+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvf_ops, always)
>+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvv_ops, always)
>+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvf_ops, always)
>+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwv_ops, always)
>+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwf_ops, always)
>+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwv_ops, always)
>+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwf_ops, always)
>+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvv_ops, always)
>+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvf_ops, always)
>+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvv_ops, always)
>+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvf_ops, always)
>+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwv_ops, always)
>+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwf_ops, always)
>+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwv_ops, always)
>+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwf_ops, always)
>// 13.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
>-DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfrdiv, alu, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfrdiv_frm, alu_frm, full_preds, f_vvf_ops)
>+DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfrdiv, alu, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfrdiv_frm, alu_frm, full_preds, f_vvf_ops, always)
>// 13.5. Vector Widening Floating-Point Multiply
>-DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvv_ops)
>-DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvf_ops)
>-DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvv_ops)
>-DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvf_ops)
>+DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvv_ops, always)
>+DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvf_ops, always)
>+DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvv_ops, always)
>+DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvf_ops, always)
>// 13.6. Vector Single-Width Floating-Point Fused Multiply-Add Instructions
>-DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvfv_ops)
>-
>-DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvfv_ops)
>-DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvvv_ops)
>-DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvfv_ops)
>+DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvfv_ops, always)
>+
>+DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvfv_ops, always)
>+DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvvv_ops, always)
>+DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvfv_ops, always)
>// 13.7. Vector Widening Floating-Point Fused Multiply-Add Instructions
>-DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwvv_ops)
>-DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwfv_ops)
>-DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwvv_ops)
>-DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwfv_ops)
>-DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwvv_ops)
>-DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwfv_ops)
>-DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwvv_ops)
>-DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwfv_ops)
>-
>-DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwvv_ops)
>-DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwfv_ops)
>-DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwvv_ops)
>-DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwfv_ops)
>-DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwvv_ops)
>-DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwfv_ops)
>-DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwvv_ops)
>-DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwfv_ops)
>+DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwvv_ops, always)
>+DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwfv_ops, always)
>+DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwvv_ops, always)
>+DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwfv_ops, always)
>+DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwvv_ops, always)
>+DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwfv_ops, always)
>+DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwvv_ops, always)
>+DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwfv_ops, always)
>+
>+DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwvv_ops, always)
>+DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwfv_ops, always)
>+DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwvv_ops, always)
>+DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwfv_ops, always)
>+DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwvv_ops, always)
>+DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwfv_ops, always)
>+DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwvv_ops, always)
>+DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwfv_ops, always)
>// 13.8. Vector Floating-Point Square-Root Instruction
>-DEF_RVV_FUNCTION (vfsqrt, alu, full_preds, f_v_ops)
>+DEF_RVV_FUNCTION (vfsqrt, alu, full_preds, f_v_ops, always)
>-DEF_RVV_FUNCTION (vfsqrt_frm, alu_frm, full_preds, f_v_ops)
>+DEF_RVV_FUNCTION (vfsqrt_frm, alu_frm, full_preds, f_v_ops, always)
>// 13.9. Vector Floating-Point Reciprocal Square-Root Estimate Instruction
>-DEF_RVV_FUNCTION (vfrsqrt7, alu, full_preds, f_v_ops)
>+DEF_RVV_FUNCTION (vfrsqrt7, alu, full_preds, f_v_ops, always)
>// 13.10. Vector Floating-Point Reciprocal Estimate Instruction
>-DEF_RVV_FUNCTION (vfrec7, alu, full_preds, f_v_ops)
>+DEF_RVV_FUNCTION (vfrec7, alu, full_preds, f_v_ops, always)
>-DEF_RVV_FUNCTION (vfrec7_frm, alu_frm, full_preds, f_v_ops)
>+DEF_RVV_FUNCTION (vfrec7_frm, alu_frm, full_preds, f_v_ops, always)
>// 13.11. Vector Floating-Point MIN/MAX Instructions
>-DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvf_ops)
>+DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvf_ops, always)
>// 13.12. Vector Floating-Point Sign-Injection Instructions
>-DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvv_ops)
>-DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfneg, alu, full_preds, f_v_ops)
>-DEF_RVV_FUNCTION (vfabs, alu, full_preds, f_v_ops)
>+DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvv_ops, always)
>+DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfneg, alu, full_preds, f_v_ops, always)
>+DEF_RVV_FUNCTION (vfabs, alu, full_preds, f_v_ops, always)
>// 13.13. Vector Floating-Point Compare Instructions
>-DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvv_ops)
>-DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvf_ops)
>-DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvv_ops)
>-DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvf_ops)
>-DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvv_ops)
>-DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvf_ops)
>-DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvv_ops)
>-DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvf_ops)
>-DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvv_ops)
>-DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvf_ops)
>-DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvv_ops)
>-DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvf_ops)
>+DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvf_ops, always)
>+DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvf_ops, always)
>+DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvf_ops, always)
>+DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvf_ops, always)
>+DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvf_ops, always)
>+DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvv_ops, always)
>+DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvf_ops, always)
>// 13.14. Vector Floating-Point Classify Instruction
>-DEF_RVV_FUNCTION (vfclass, alu, full_preds, f_to_u_v_ops)
>+DEF_RVV_FUNCTION (vfclass, alu, full_preds, f_to_u_v_ops, always)
>// 13.15. Vector Floating-Point Merge Instruction
>-DEF_RVV_FUNCTION (vfmerge, no_mask_policy, none_tu_preds, f_vvfm_ops)
>+DEF_RVV_FUNCTION (vfmerge, no_mask_policy, none_tu_preds, f_vvfm_ops, always)
>// 13.16. Vector Floating-Point Move Instruction
>-DEF_RVV_FUNCTION (vfmv_v, move, none_tu_preds, f_f_ops)
>+DEF_RVV_FUNCTION (vfmv_v, move, none_tu_preds, f_f_ops, always)
>// 13.17. Single-Width Floating-Point/Integer Type-Convert Instructions
>-DEF_RVV_FUNCTION (vfcvt_x, alu, full_preds, f_to_i_f_v_ops)
>-DEF_RVV_FUNCTION (vfcvt_xu, alu, full_preds, f_to_u_f_v_ops)
>-DEF_RVV_FUNCTION (vfcvt_rtz_x, alu, full_preds, f_to_i_f_v_ops)
>-DEF_RVV_FUNCTION (vfcvt_rtz_xu, alu, full_preds, f_to_u_f_v_ops)
>-DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, i_to_f_x_v_ops)
>-DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, u_to_f_xu_v_ops)
>-
>-DEF_RVV_FUNCTION (vfcvt_x_frm, alu_frm, full_preds, f_to_i_f_v_ops)
>-DEF_RVV_FUNCTION (vfcvt_xu_frm, alu_frm, full_preds, f_to_u_f_v_ops)
>-DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, i_to_f_x_v_ops)
>-DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, u_to_f_xu_v_ops)
>+DEF_RVV_FUNCTION (vfcvt_x, alu, full_preds, f_to_i_f_v_ops, always)
>+DEF_RVV_FUNCTION (vfcvt_xu, alu, full_preds, f_to_u_f_v_ops, always)
>+DEF_RVV_FUNCTION (vfcvt_rtz_x, alu, full_preds, f_to_i_f_v_ops, always)
>+DEF_RVV_FUNCTION (vfcvt_rtz_xu, alu, full_preds, f_to_u_f_v_ops, always)
>+DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, i_to_f_x_v_ops, always)
>+DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, u_to_f_xu_v_ops, always)
>+
>+DEF_RVV_FUNCTION (vfcvt_x_frm, alu_frm, full_preds, f_to_i_f_v_ops, always)
>+DEF_RVV_FUNCTION (vfcvt_xu_frm, alu_frm, full_preds, f_to_u_f_v_ops, always)
>+DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, i_to_f_x_v_ops, always)
>+DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, u_to_f_xu_v_ops, always)
>// 13.18. Widening Floating-Point/Integer Type-Convert Instructions
>-DEF_RVV_FUNCTION (vfwcvt_x, alu, full_preds, f_to_wi_f_v_ops)
>-DEF_RVV_FUNCTION (vfwcvt_xu, alu, full_preds, f_to_wu_f_v_ops)
>-DEF_RVV_FUNCTION (vfwcvt_rtz_x, alu, full_preds, f_to_wi_f_v_ops)
>-DEF_RVV_FUNCTION (vfwcvt_rtz_xu, alu, full_preds, f_to_wu_f_v_ops)
>-DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, i_to_wf_x_v_ops)
>-DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, u_to_wf_xu_v_ops)
>-DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, f_to_wf_f_v_ops)
>+DEF_RVV_FUNCTION (vfwcvt_x, alu, full_preds, f_to_wi_f_v_ops, always)
>+DEF_RVV_FUNCTION (vfwcvt_xu, alu, full_preds, f_to_wu_f_v_ops, always)
>+DEF_RVV_FUNCTION (vfwcvt_rtz_x, alu, full_preds, f_to_wi_f_v_ops, always)
>+DEF_RVV_FUNCTION (vfwcvt_rtz_xu, alu, full_preds, f_to_wu_f_v_ops, always)
>+DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, i_to_wf_x_v_ops, always)
>+DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, u_to_wf_xu_v_ops, always)
>+DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, f_to_wf_f_v_ops, always)
>-DEF_RVV_FUNCTION (vfwcvt_x_frm, alu_frm, full_preds, f_to_wi_f_v_ops)
>-DEF_RVV_FUNCTION (vfwcvt_xu_frm, alu_frm, full_preds, f_to_wu_f_v_ops)
>+DEF_RVV_FUNCTION (vfwcvt_x_frm, alu_frm, full_preds, f_to_wi_f_v_ops, always)
>+DEF_RVV_FUNCTION (vfwcvt_xu_frm, alu_frm, full_preds, f_to_wu_f_v_ops, always)
>// 13.19. Narrowing Floating-Point/Integer Type-Convert Instructions
>-DEF_RVV_FUNCTION (vfncvt_x, narrow_alu, full_preds, f_to_ni_f_w_ops)
>-DEF_RVV_FUNCTION (vfncvt_xu, narrow_alu, full_preds, f_to_nu_f_w_ops)
>-DEF_RVV_FUNCTION (vfncvt_rtz_x, narrow_alu, full_preds, f_to_ni_f_w_ops)
>-DEF_RVV_FUNCTION (vfncvt_rtz_xu, narrow_alu, full_preds, f_to_nu_f_w_ops)
>-DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, i_to_nf_x_w_ops)
>-DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, u_to_nf_xu_w_ops)
>-DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, f_to_nf_f_w_ops)
>-DEF_RVV_FUNCTION (vfncvt_rod_f, narrow_alu, full_preds, f_to_nf_f_w_ops)
>-
>-DEF_RVV_FUNCTION (vfncvt_x_frm, narrow_alu_frm, full_preds, f_to_ni_f_w_ops)
>-DEF_RVV_FUNCTION (vfncvt_xu_frm, narrow_alu_frm, full_preds, f_to_nu_f_w_ops)
>-DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, i_to_nf_x_w_ops)
>-DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, u_to_nf_xu_w_ops)
>-DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, f_to_nf_f_w_ops)
>+DEF_RVV_FUNCTION (vfncvt_x, narrow_alu, full_preds, f_to_ni_f_w_ops, always)
>+DEF_RVV_FUNCTION (vfncvt_xu, narrow_alu, full_preds, f_to_nu_f_w_ops, always)
>+DEF_RVV_FUNCTION (vfncvt_rtz_x, narrow_alu, full_preds, f_to_ni_f_w_ops, always)
>+DEF_RVV_FUNCTION (vfncvt_rtz_xu, narrow_alu, full_preds, f_to_nu_f_w_ops, always)
>+DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, i_to_nf_x_w_ops, always)
>+DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, u_to_nf_xu_w_ops, always)
>+DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, f_to_nf_f_w_ops, always)
>+DEF_RVV_FUNCTION (vfncvt_rod_f, narrow_alu, full_preds, f_to_nf_f_w_ops, always)
>+
>+DEF_RVV_FUNCTION (vfncvt_x_frm, narrow_alu_frm, full_preds, f_to_ni_f_w_ops, always)
>+DEF_RVV_FUNCTION (vfncvt_xu_frm, narrow_alu_frm, full_preds, f_to_nu_f_w_ops, always)
>+DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, i_to_nf_x_w_ops, always)
>+DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, u_to_nf_xu_w_ops, always)
>+DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, f_to_nf_f_w_ops, always)
>/* 14. Vector Reduction Operations. */
>// 14.1. Vector Single-Width Integer Reduction Instructions
>-DEF_RVV_FUNCTION (vredsum, reduc_alu, no_mu_preds, iu_vs_ops)
>-DEF_RVV_FUNCTION (vredmaxu, reduc_alu, no_mu_preds, iu_vs_ops)
>-DEF_RVV_FUNCTION (vredmax, reduc_alu, no_mu_preds, iu_vs_ops)
>-DEF_RVV_FUNCTION (vredminu, reduc_alu, no_mu_preds, iu_vs_ops)
>-DEF_RVV_FUNCTION (vredmin, reduc_alu, no_mu_preds, iu_vs_ops)
>-DEF_RVV_FUNCTION (vredand, reduc_alu, no_mu_preds, iu_vs_ops)
>-DEF_RVV_FUNCTION (vredor, reduc_alu, no_mu_preds, iu_vs_ops)
>-DEF_RVV_FUNCTION (vredxor, reduc_alu, no_mu_preds, iu_vs_ops)
>+DEF_RVV_FUNCTION (vredsum, reduc_alu, no_mu_preds, iu_vs_ops, always)
>+DEF_RVV_FUNCTION (vredmaxu, reduc_alu, no_mu_preds, iu_vs_ops, always)
>+DEF_RVV_FUNCTION (vredmax, reduc_alu, no_mu_preds, iu_vs_ops, always)
>+DEF_RVV_FUNCTION (vredminu, reduc_alu, no_mu_preds, iu_vs_ops, always)
>+DEF_RVV_FUNCTION (vredmin, reduc_alu, no_mu_preds, iu_vs_ops, always)
>+DEF_RVV_FUNCTION (vredand, reduc_alu, no_mu_preds, iu_vs_ops, always)
>+DEF_RVV_FUNCTION (vredor, reduc_alu, no_mu_preds, iu_vs_ops, always)
>+DEF_RVV_FUNCTION (vredxor, reduc_alu, no_mu_preds, iu_vs_ops, always)
>// 14.2. Vector Widening Integer Reduction Instructions
>-DEF_RVV_FUNCTION (vwredsum, reduc_alu, no_mu_preds, wi_vs_ops)
>-DEF_RVV_FUNCTION (vwredsumu, reduc_alu, no_mu_preds, wu_vs_ops)
>+DEF_RVV_FUNCTION (vwredsum, reduc_alu, no_mu_preds, wi_vs_ops, always)
>+DEF_RVV_FUNCTION (vwredsumu, reduc_alu, no_mu_preds, wu_vs_ops, always)
>// 14.3. Vector Single-Width Floating-Point Reduction Instructions
>-DEF_RVV_FUNCTION (vfredusum, reduc_alu, no_mu_preds, f_vs_ops)
>-DEF_RVV_FUNCTION (vfredosum, reduc_alu, no_mu_preds, f_vs_ops)
>-DEF_RVV_FUNCTION (vfredmax, reduc_alu, no_mu_preds, f_vs_ops)
>-DEF_RVV_FUNCTION (vfredmin, reduc_alu, no_mu_preds, f_vs_ops)
>+DEF_RVV_FUNCTION (vfredusum, reduc_alu, no_mu_preds, f_vs_ops, always)
>+DEF_RVV_FUNCTION (vfredosum, reduc_alu, no_mu_preds, f_vs_ops, always)
>+DEF_RVV_FUNCTION (vfredmax, reduc_alu, no_mu_preds, f_vs_ops, always)
>+DEF_RVV_FUNCTION (vfredmin, reduc_alu, no_mu_preds, f_vs_ops, always)
>-DEF_RVV_FUNCTION (vfredusum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops)
>-DEF_RVV_FUNCTION (vfredosum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops)
>+DEF_RVV_FUNCTION (vfredusum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops, always)
>+DEF_RVV_FUNCTION (vfredosum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops, always)
>// 14.4. Vector Widening Floating-Point Reduction Instructions
>-DEF_RVV_FUNCTION (vfwredosum, reduc_alu, no_mu_preds, wf_vs_ops)
>-DEF_RVV_FUNCTION (vfwredusum, reduc_alu, no_mu_preds, wf_vs_ops)
>+DEF_RVV_FUNCTION (vfwredosum, reduc_alu, no_mu_preds, wf_vs_ops, always)
>+DEF_RVV_FUNCTION (vfwredusum, reduc_alu, no_mu_preds, wf_vs_ops, always)
>-DEF_RVV_FUNCTION (vfwredosum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops)
>-DEF_RVV_FUNCTION (vfwredusum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops)
>+DEF_RVV_FUNCTION (vfwredosum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops, always)
>+DEF_RVV_FUNCTION (vfwredusum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops, always)
>/* 15. Vector Mask Instructions. */
>// 15.1. Vector Mask-Register Logical Instructions
>-DEF_RVV_FUNCTION (vmand, mask_alu, none_preds, b_mmm_ops)
>-DEF_RVV_FUNCTION (vmnand, mask_alu, none_preds, b_mmm_ops)
>-DEF_RVV_FUNCTION (vmandn, mask_alu, none_preds, b_mmm_ops)
>-DEF_RVV_FUNCTION (vmxor, mask_alu, none_preds, b_mmm_ops)
>-DEF_RVV_FUNCTION (vmor, mask_alu, none_preds, b_mmm_ops)
>-DEF_RVV_FUNCTION (vmnor, mask_alu, none_preds, b_mmm_ops)
>-DEF_RVV_FUNCTION (vmorn, mask_alu, none_preds, b_mmm_ops)
>-DEF_RVV_FUNCTION (vmxnor, mask_alu, none_preds, b_mmm_ops)
>-DEF_RVV_FUNCTION (vmmv, mask_alu, none_preds, b_mm_ops)
>-DEF_RVV_FUNCTION (vmclr, mask_alu, none_preds, b_m_ops)
>-DEF_RVV_FUNCTION (vmset, mask_alu, none_preds, b_m_ops)
>-DEF_RVV_FUNCTION (vmnot, mask_alu, none_preds, b_mm_ops)
>+DEF_RVV_FUNCTION (vmand, mask_alu, none_preds, b_mmm_ops, always)
>+DEF_RVV_FUNCTION (vmnand, mask_alu, none_preds, b_mmm_ops, always)
>+DEF_RVV_FUNCTION (vmandn, mask_alu, none_preds, b_mmm_ops, always)
>+DEF_RVV_FUNCTION (vmxor, mask_alu, none_preds, b_mmm_ops, always)
>+DEF_RVV_FUNCTION (vmor, mask_alu, none_preds, b_mmm_ops, always)
>+DEF_RVV_FUNCTION (vmnor, mask_alu, none_preds, b_mmm_ops, always)
>+DEF_RVV_FUNCTION (vmorn, mask_alu, none_preds, b_mmm_ops, always)
>+DEF_RVV_FUNCTION (vmxnor, mask_alu, none_preds, b_mmm_ops, always)
>+DEF_RVV_FUNCTION (vmmv, mask_alu, none_preds, b_mm_ops, always)
>+DEF_RVV_FUNCTION (vmclr, mask_alu, none_preds, b_m_ops, always)
>+DEF_RVV_FUNCTION (vmset, mask_alu, none_preds, b_m_ops, always)
>+DEF_RVV_FUNCTION (vmnot, mask_alu, none_preds, b_mm_ops, always)
>// 15.2. Vector count population in mask vcpop.m
>-DEF_RVV_FUNCTION (vcpop, mask_alu, none_m_preds, b_ulong_m_ops)
>+DEF_RVV_FUNCTION (vcpop, mask_alu, none_m_preds, b_ulong_m_ops, always)
>// 15.3. vfirst find-first-set mask bit
>-DEF_RVV_FUNCTION (vfirst, mask_alu, none_m_preds, b_long_m_ops)
>+DEF_RVV_FUNCTION (vfirst, mask_alu, none_m_preds, b_long_m_ops, always)
>// 15.4. vmsbf.m set-before-first mask bit
>-DEF_RVV_FUNCTION (vmsbf, mask_alu, none_m_mu_preds, b_mm_ops)
>+DEF_RVV_FUNCTION (vmsbf, mask_alu, none_m_mu_preds, b_mm_ops, always)
>// 15.5. vmsif.m set-including-first mask bit
>-DEF_RVV_FUNCTION (vmsif, mask_alu, none_m_mu_preds, b_mm_ops)
>+DEF_RVV_FUNCTION (vmsif, mask_alu, none_m_mu_preds, b_mm_ops, always)
>// 15.6. vmsof.m set-only-first mask bit
>-DEF_RVV_FUNCTION (vmsof, mask_alu, none_m_mu_preds, b_mm_ops)
>+DEF_RVV_FUNCTION (vmsof, mask_alu, none_m_mu_preds, b_mm_ops, always)
>// 15.8. Vector Iota Instruction
>-DEF_RVV_FUNCTION (viota, mask_alu, full_preds, u_vm_ops)
>+DEF_RVV_FUNCTION (viota, mask_alu, full_preds, u_vm_ops, always)
>// 15.9. Vector Element Index Instruction
>-DEF_RVV_FUNCTION (vid, alu, full_preds, u_v_ops)
>+DEF_RVV_FUNCTION (vid, alu, full_preds, u_v_ops, always)
>/* 16. Vector Permutation Instructions. */
>// 16.1. Integer Scalar Move Instructions
>-DEF_RVV_FUNCTION (vmv_x, scalar_move, none_preds, iu_x_s_ops)
>-DEF_RVV_FUNCTION (vmv_s, move, none_tu_preds, iu_s_x_ops)
>+DEF_RVV_FUNCTION (vmv_x, scalar_move, none_preds, iu_x_s_ops, always)
>+DEF_RVV_FUNCTION (vmv_s, move, none_tu_preds, iu_s_x_ops, always)
>// 16.2. Floating-Point Scalar Move Instructions
>-DEF_RVV_FUNCTION (vfmv_f, scalar_move, none_preds, f_f_s_ops)
>-DEF_RVV_FUNCTION (vfmv_s, move, none_tu_preds, f_s_f_ops)
>+DEF_RVV_FUNCTION (vfmv_f, scalar_move, none_preds, f_f_s_ops, always)
>+DEF_RVV_FUNCTION (vfmv_s, move, none_tu_preds, f_s_f_ops, always)
>// 16.3. Vector Slide Instructions
>-DEF_RVV_FUNCTION (vslideup, alu, full_preds, all_vvvx_ops)
>-DEF_RVV_FUNCTION (vslidedown, alu, full_preds, all_vvx_ops)
>-DEF_RVV_FUNCTION (vslide1up, alu, full_preds, iu_vvx_ops)
>-DEF_RVV_FUNCTION (vslide1down, alu, full_preds, iu_vvx_ops)
>-DEF_RVV_FUNCTION (vfslide1up, alu, full_preds, f_vvf_ops)
>-DEF_RVV_FUNCTION (vfslide1down, alu, full_preds, f_vvf_ops)
>+DEF_RVV_FUNCTION (vslideup, alu, full_preds, all_vvvx_ops, always)
>+DEF_RVV_FUNCTION (vslidedown, alu, full_preds, all_vvx_ops, always)
>+DEF_RVV_FUNCTION (vslide1up, alu, full_preds, iu_vvx_ops, always)
>+DEF_RVV_FUNCTION (vslide1down, alu, full_preds, iu_vvx_ops, always)
>+DEF_RVV_FUNCTION (vfslide1up, alu, full_preds, f_vvf_ops, always)
>+DEF_RVV_FUNCTION (vfslide1down, alu, full_preds, f_vvf_ops, always)
>// 16.4. Vector Register Gather Instructions
>-DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvv_ops)
>-DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvx_ops)
>-DEF_RVV_FUNCTION (vrgatherei16, alu, full_preds, all_gatherei16_vvv_ops)
>+DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvv_ops, always)
>+DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvx_ops, always)
>+DEF_RVV_FUNCTION (vrgatherei16, alu, full_preds, all_gatherei16_vvv_ops, always)
>// 16.5. Vector Compress Instruction
>-DEF_RVV_FUNCTION (vcompress, alu, none_tu_preds, all_vvm_ops)
>+DEF_RVV_FUNCTION (vcompress, alu, none_tu_preds, all_vvm_ops, always)
>/* Miscellaneous Vector Functions. */
>-DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_u_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_i_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_i_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_u_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_f_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_f_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew8_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew16_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew32_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew64_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool1_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool2_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool4_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool8_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool16_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool32_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool64_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew8_lmul1_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew16_lmul1_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew32_lmul1_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew64_lmul1_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew8_lmul1_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew16_lmul1_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew32_lmul1_interpret_ops)
>-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew64_lmul1_interpret_ops)
>-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x2_ops)
>-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x4_ops)
>-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x8_ops)
>-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x16_ops)
>-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x32_ops)
>-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x64_ops)
>-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x2_ops)
>-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x4_ops)
>-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x8_ops)
>-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x16_ops)
>-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x32_ops)
>-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x64_ops)
>-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x2_ops)
>-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x4_ops)
>-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x8_ops)
>-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x2_ops)
>-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x4_ops)
>-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul4_x2_ops)
>-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x2_ops)
>-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x4_ops)
>-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x8_ops)
>-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x2_ops)
>-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x4_ops)
>-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul4_x2_ops)
>-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x2_ops)
>-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x4_ops)
>-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x8_ops)
>-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x2_ops)
>-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x4_ops)
>-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul4_x2_ops)
>+DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_u_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_i_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_i_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_u_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_f_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_f_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew8_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew16_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew32_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew64_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool1_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool2_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool4_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool8_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool16_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool32_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool64_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew8_lmul1_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew16_lmul1_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew32_lmul1_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew64_lmul1_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew8_lmul1_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew16_lmul1_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew32_lmul1_interpret_ops, always)
>+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew64_lmul1_interpret_ops, always)
>+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x2_ops, always)
>+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x4_ops, always)
>+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x8_ops, always)
>+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x16_ops, always)
>+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x32_ops, always)
>+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x64_ops, always)
>+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x2_ops, always)
>+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x4_ops, always)
>+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x8_ops, always)
>+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x16_ops, always)
>+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x32_ops, always)
>+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x64_ops, always)
>+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x2_ops, always)
>+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x4_ops, always)
>+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x8_ops, always)
>+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x2_ops, always)
>+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x4_ops, always)
>+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul4_x2_ops, always)
>+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x2_ops, always)
>+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x4_ops, always)
>+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x8_ops, always)
>+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x2_ops, always)
>+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x4_ops, always)
>+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul4_x2_ops, always)
>+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x2_ops, always)
>+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x4_ops, always)
>+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x8_ops, always)
>+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x2_ops, always)
>+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x4_ops, always)
>+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul4_x2_ops, always)
>// Tuple types
>-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_tuple_ops)
>-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_tuple_ops)
>-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_tuple_ops)
>-DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_tuple_ops)
>-DEF_RVV_FUNCTION (vlseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ops)
>-DEF_RVV_FUNCTION (vsseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ops)
>-DEF_RVV_FUNCTION (vlsseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ptrdiff_ops)
>-DEF_RVV_FUNCTION (vssseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ptrdiff_ops)
>-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops)
>-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops)
>-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops)
>-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops)
>-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops)
>-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops)
>-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops)
>-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops)
>-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops)
>-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops)
>-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops)
>-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops)
>-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops)
>-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops)
>-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops)
>-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops)
>-DEF_RVV_FUNCTION (vlsegff, seg_fault_load, full_preds, tuple_v_scalar_const_ptr_size_ptr_ops)
>+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_tuple_ops, always)
>+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_tuple_ops, always)
>+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_tuple_ops, always)
>+DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_tuple_ops, always)
>+DEF_RVV_FUNCTION (vlseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ops, always)
>+DEF_RVV_FUNCTION (vsseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ops, always)
>+DEF_RVV_FUNCTION (vlsseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ptrdiff_ops, always)
>+DEF_RVV_FUNCTION (vssseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ptrdiff_ops, always)
>+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops, always)
>+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops, always)
>+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops, always)
>+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops, always)
>+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops, always)
>+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops, always)
>+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops, always)
>+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops, always)
>+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops, always)
>+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops, always)
>+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops, always)
>+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops, always)
>+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops, always)
>+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops, always)
>+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops, always)
>+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops, always)
>+DEF_RVV_FUNCTION (vlsegff, seg_fault_load, full_preds, tuple_v_scalar_const_ptr_size_ptr_ops, always)
>#undef DEF_RVV_FUNCTION
>diff --git a/gcc/config/riscv/riscv-vector-builtins.cc b/gcc/config/riscv/riscv-vector-builtins.cc
>index 6330a3a41c3..dac638b6bcc 100644
>--- a/gcc/config/riscv/riscv-vector-builtins.cc
>+++ b/gcc/config/riscv/riscv-vector-builtins.cc
>@@ -51,6 +51,7 @@
>#include "riscv-vector-builtins.h"
>#include "riscv-vector-builtins-shapes.h"
>#include "riscv-vector-builtins-bases.h"
>+#include "riscv-vector-builtins-avail.h"
>using namespace riscv_vector;
>@@ -2684,8 +2685,9 @@ static CONSTEXPR const function_type_info function_types[] = {
>/* A list of all RVV intrinsic functions. */
>static function_group_info function_groups[] = {
>-#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO) \
>- {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO},
>+#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL) \
>+ {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO,\
>+ riscv_vector_avail_ ## AVAIL},
>#include "riscv-vector-builtins-functions.def"
>};
>diff --git a/gcc/config/riscv/riscv-vector-builtins.h b/gcc/config/riscv/riscv-vector-builtins.h
>index cd8ccab1724..74d50c2f849 100644
>--- a/gcc/config/riscv/riscv-vector-builtins.h
>+++ b/gcc/config/riscv/riscv-vector-builtins.h
>@@ -232,6 +232,8 @@ struct function_group_info
> on the index value. */
> const predication_type_index *preds;
> const rvv_op_info ops_infos;
>+ /* Whether the function is available. */
>+ unsigned int (*avail) (void);
>};
>class GTY ((user)) function_instance
>--
>2.17.1
>
>
> #ifndef DEF_RVV_FUNCTION
> -#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO)
> +#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL)
#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, ...)
And add a comment to mention 5th argument is optional for AVAIL.
> #endif
>
> /* Internal helper functions for gimple fold use. */
> -DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops)
> -DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops)
> +DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops, always)
> +DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops, always)
Then you don't need to add `always` if it's `always`.
> diff --git a/gcc/config/riscv/riscv-vector-builtins.cc b/gcc/config/riscv/riscv-vector-builtins.cc
> index 6330a3a41c3..dac638b6bcc 100644
> --- a/gcc/config/riscv/riscv-vector-builtins.cc
> +++ b/gcc/config/riscv/riscv-vector-builtins.cc
> @@ -51,6 +51,7 @@
> #include "riscv-vector-builtins.h"
> #include "riscv-vector-builtins-shapes.h"
> #include "riscv-vector-builtins-bases.h"
> +#include "riscv-vector-builtins-avail.h"
>
> using namespace riscv_vector;
>
> @@ -2684,8 +2685,9 @@ static CONSTEXPR const function_type_info function_types[] = {
>
> /* A list of all RVV intrinsic functions. */
> static function_group_info function_groups[] = {
> -#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO) \
> - {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO},
> +#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL) \
#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, ...)
__VA_ARGS__
{#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO,\
__VA_ARGS__},
> + {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO,\
> + riscv_vector_avail_ ## AVAIL},
> #include "riscv-vector-builtins-functions.def"
> };
>
> diff --git a/gcc/config/riscv/riscv-vector-builtins.h b/gcc/config/riscv/riscv-vector-builtins.h
> index cd8ccab1724..74d50c2f849 100644
> --- a/gcc/config/riscv/riscv-vector-builtins.h
> +++ b/gcc/config/riscv/riscv-vector-builtins.h
> @@ -232,6 +232,8 @@ struct function_group_info
> on the index value. */
> const predication_type_index *preds;
> const rvv_op_info ops_infos;
> + /* Whether the function is available. */
> + unsigned int (*avail) (void);
Then write a constexpr constructor like this commit:
https://github.com/gcc-mirror/gcc/commit/9e12010b5e724277ea44c300630802f464407d8d#diff-d6f7db0db31bfb339b01bec450f1b905381eb4730cc5ab2b2794971e34647d64R46-R49
> };
>
> class GTY ((user)) function_instance
> --
> 2.17.1
>
new file mode 100644
@@ -0,0 +1,18 @@
+#ifndef GCC_RISCV_VECTOR_BUILTINS_AVAIL_H
+#define GCC_RISCV_VECTOR_BUILTINS_AVAIL_H
+
+#include "insn-codes.h"
+namespace riscv_vector {
+
+/* Declare an availability predicate for built-in functions. */
+#define AVAIL(NAME, COND) \
+ static unsigned int \
+ riscv_vector_avail_##NAME (void) \
+ { \
+ return (COND); \
+ }
+
+AVAIL (always, true)
+
+}
+#endif
@@ -33,622 +33,622 @@ along with GCC; see the file COPYING3. If not see
*/
#ifndef DEF_RVV_FUNCTION
-#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO)
+#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL)
#endif
/* Internal helper functions for gimple fold use. */
-DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops)
-DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops)
+DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops, always)
+DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops, always)
/* 6. Configuration-Setting Instructions. */
-DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops)
-DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops)
+DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops, always)
+DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops, always)
/* 7. Vector Loads and Stores. */
// 7.4. Vector Unit-Stride Instructions
-DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops)
-DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops)
-DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops)
-DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops)
+DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops, always)
+DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops, always)
+DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops, always)
+DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops, always)
// 7.5. Vector Strided Instructions
-DEF_RVV_FUNCTION (vlse, loadstore, full_preds, all_v_scalar_const_ptr_ptrdiff_ops)
-DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, all_v_scalar_ptr_ptrdiff_ops)
+DEF_RVV_FUNCTION (vlse, loadstore, full_preds, all_v_scalar_const_ptr_ptrdiff_ops, always)
+DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, all_v_scalar_ptr_ptrdiff_ops, always)
// 7.6. Vector Indexed Instructions
-DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vluxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vloxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vloxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vloxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vloxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vsuxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vsuxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vsuxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vsuxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vsoxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vsoxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vsoxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vsoxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops)
+DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vluxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vloxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vloxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vloxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vloxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vsuxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vsuxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vsuxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vsuxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vsoxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vsoxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vsoxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vsoxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops, always)
// 7.7. Unit-stride Fault-Only-First Loads
-DEF_RVV_FUNCTION (vleff, fault_load, full_preds, all_v_scalar_const_ptr_size_ptr_ops)
+DEF_RVV_FUNCTION (vleff, fault_load, full_preds, all_v_scalar_const_ptr_size_ptr_ops, always)
// TODO: 7.8. Vector Load/Store Segment Instructions
/* 11. Vector Integer Arithmetic Instructions. */
// 11.1. Vector Single-Width Integer Add and Subtract
-DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vrsub, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vneg, alu, full_preds, iu_v_ops)
+DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vrsub, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vneg, alu, full_preds, iu_v_ops, always)
// 11.2. Vector Widening Integer Add/Subtract
-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvv_ops)
-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvx_ops)
-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvv_ops)
-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvx_ops)
-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvv_ops)
-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvx_ops)
-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvv_ops)
-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvx_ops)
-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwv_ops)
-DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwx_ops)
-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwv_ops)
-DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwx_ops)
-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwv_ops)
-DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwx_ops)
-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwv_ops)
-DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwx_ops)
-DEF_RVV_FUNCTION (vwcvt_x, alu, full_preds, i_x_x_v_ops)
-DEF_RVV_FUNCTION (vwcvtu_x, alu, full_preds, u_x_x_v_ops)
+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvv_ops, always)
+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvx_ops, always)
+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvv_ops, always)
+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvx_ops, always)
+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvv_ops, always)
+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvx_ops, always)
+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvv_ops, always)
+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvx_ops, always)
+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwv_ops, always)
+DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwx_ops, always)
+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwv_ops, always)
+DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwx_ops, always)
+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwv_ops, always)
+DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwx_ops, always)
+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwv_ops, always)
+DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwx_ops, always)
+DEF_RVV_FUNCTION (vwcvt_x, alu, full_preds, i_x_x_v_ops, always)
+DEF_RVV_FUNCTION (vwcvtu_x, alu, full_preds, u_x_x_v_ops, always)
// 11.3. Vector Integer Extension
-DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf2_ops)
-DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf4_ops)
-DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf8_ops)
-DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf2_ops)
-DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf4_ops)
-DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf8_ops)
+DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf2_ops, always)
+DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf4_ops, always)
+DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf8_ops, always)
+DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf2_ops, always)
+DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf4_ops, always)
+DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf8_ops, always)
// 11.4. Vector Integer Add-with-Carry/Subtract-with-Borrow Instructions
-DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvvm_ops)
-DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvxm_ops)
-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvvm_ops)
-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvxm_ops)
-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvv_ops)
-DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvx_ops)
-DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvvm_ops)
-DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvxm_ops)
-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvvm_ops)
-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvxm_ops)
-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvv_ops)
-DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvx_ops)
+DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvvm_ops, always)
+DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvxm_ops, always)
+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvvm_ops, always)
+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvxm_ops, always)
+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvv_ops, always)
+DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvx_ops, always)
+DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvvm_ops, always)
+DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvxm_ops, always)
+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvvm_ops, always)
+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvxm_ops, always)
+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvx_ops, always)
// 11.5. Vector Bitwise Logical Instructions
-DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vnot, alu, full_preds, iu_v_ops)
+DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vnot, alu, full_preds, iu_v_ops, always)
// 11.6. Vector Single-Width Shift Instructions
-DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvv_ops)
-DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvx_ops)
-DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvv_ops)
-DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvx_ops)
-DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvv_ops)
-DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvx_ops)
+DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvx_ops, always)
+DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvx_ops, always)
+DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvx_ops, always)
// 11.7. Vector Narrowing Integer Right Shift Instructions
-DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwv_ops)
-DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwx_ops)
-DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwv_ops)
-DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwx_ops)
-DEF_RVV_FUNCTION (vncvt_x, narrow_alu, full_preds, iu_trunc_ops)
+DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwv_ops, always)
+DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwx_ops, always)
+DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwv_ops, always)
+DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwx_ops, always)
+DEF_RVV_FUNCTION (vncvt_x, narrow_alu, full_preds, iu_trunc_ops, always)
// 11.8. Vector Integer Compare Instructions
-DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvv_ops)
-DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvx_ops)
-DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvv_ops)
-DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvx_ops)
-DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvv_ops)
-DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvx_ops)
-DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvv_ops)
-DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvx_ops)
-DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvv_ops)
-DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvx_ops)
-DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvv_ops)
-DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvx_ops)
-DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvv_ops)
-DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvx_ops)
-DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvv_ops)
-DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvx_ops)
-DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvv_ops)
-DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvx_ops)
-DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvv_ops)
-DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvx_ops)
+DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvv_ops, always)
+DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvx_ops, always)
+DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvv_ops, always)
+DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvx_ops, always)
+DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvv_ops, always)
+DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvx_ops, always)
// 11.9. Vector Integer Min/Max Instructions
-DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvx_ops)
-DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvx_ops)
+DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvx_ops, always)
+DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvx_ops, always)
// 11.10. Vector Single-Width Integer Multiply Instructions
-DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops)
-DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvv_ops)
-DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvx_ops)
-DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvv_ops)
-DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvx_ops)
-DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvv_ops)
-DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvx_ops)
+DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops, always)
+DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvv_ops, always)
+DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvx_ops, always)
+DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvv_ops, always)
+DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvx_ops, always)
+DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvv_ops, always)
+DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvx_ops, always)
// 11.11. Vector Integer Divide Instructions
-DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvx_ops)
-DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvx_ops)
+DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvx_ops, always)
+DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvx_ops, always)
// 11.12. Vector Widening Integer Multiply Instructions
-DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvv_ops)
-DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvx_ops)
-DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvv_ops)
-DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvx_ops)
-DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvv_ops)
-DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvx_ops)
+DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvv_ops, always)
+DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvx_ops, always)
+DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvv_ops, always)
+DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvx_ops, always)
+DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvv_ops, always)
+DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvx_ops, always)
// 11.13. Vector Single-Width Integer Multiply-Add Instructions
-DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvvv_ops)
-DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvxv_ops)
-DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvvv_ops)
-DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvxv_ops)
-DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvvv_ops)
-DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvxv_ops)
-DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvvv_ops)
-DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvxv_ops)
+DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvvv_ops, always)
+DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvxv_ops, always)
+DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvvv_ops, always)
+DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvxv_ops, always)
+DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvvv_ops, always)
+DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvxv_ops, always)
+DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvvv_ops, always)
+DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvxv_ops, always)
// 11.14. Vector Widening Integer Multiply-Add Instructions
-DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwvv_ops)
-DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwxv_ops)
-DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwvv_ops)
-DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwxv_ops)
-DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwvv_ops)
-DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwxv_ops)
-DEF_RVV_FUNCTION (vwmaccus, alu, full_preds, i_us_wwxv_ops)
+DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwvv_ops, always)
+DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwxv_ops, always)
+DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwvv_ops, always)
+DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwxv_ops, always)
+DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwvv_ops, always)
+DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwxv_ops, always)
+DEF_RVV_FUNCTION (vwmaccus, alu, full_preds, i_us_wwxv_ops, always)
// 11.15. Vector Integer Merge Instructions
-DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, all_vvvm_ops)
-DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, iu_vvxm_ops)
+DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, all_vvvm_ops, always)
+DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, iu_vvxm_ops, always)
// 11.16 Vector Integer Move Instructions
-DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, all_v_ops)
-DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, iu_x_ops)
+DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, all_v_ops, always)
+DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, iu_x_ops, always)
/* 12. Vector Fixed-Point Arithmetic Instructions. */
// 12.1. Vector Single-Width Saturating Add and Subtract
-DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvx_ops)
-DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvx_ops)
+DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvx_ops, always)
+DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvx_ops, always)
// 12.2. Vector Single-Width Averaging Add and Subtract
-DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvx_ops)
-DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvv_ops)
-DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvx_ops)
-DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvv_ops)
-DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvx_ops)
+DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvx_ops, always)
+DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvv_ops, always)
+DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvx_ops, always)
+DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvv_ops, always)
+DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvx_ops, always)
// 12.3. Vector Single-Width Fractional Multiply with Rounding and Saturation
-DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvv_ops)
-DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvx_ops)
+DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvv_ops, always)
+DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvx_ops, always)
// 12.4. Vector Single-Width Scaling Shift Instructions
-DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvv_ops)
-DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvx_ops)
-DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvv_ops)
-DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvx_ops)
+DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvx_ops, always)
+DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvv_ops, always)
+DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvx_ops, always)
// 12.5. Vector Narrowing Fixed-Point Clip Instructions
-DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwv_ops)
-DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwx_ops)
-DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwv_ops)
-DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwx_ops)
+DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwv_ops, always)
+DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwx_ops, always)
+DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwv_ops, always)
+DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwx_ops, always)
/* 13. Vector Floating-Point Instructions. */
// 13.2. Vector Single-Width Floating-Point Add/Subtract Instructions
-DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfrsub, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfrsub_frm, alu_frm, full_preds, f_vvf_ops)
+DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfrsub, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfadd_frm, alu_frm, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsub_frm, alu_frm, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfrsub_frm, alu_frm, full_preds, f_vvf_ops, always)
// 13.3. Vector Widening Floating-Point Add/Subtract Instructions
-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwv_ops)
-DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwf_ops)
-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwv_ops)
-DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwf_ops)
-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwv_ops)
-DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwf_ops)
-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwv_ops)
-DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwf_ops)
+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwv_ops, always)
+DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwf_ops, always)
+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwv_ops, always)
+DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwf_ops, always)
+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwv_ops, always)
+DEF_RVV_FUNCTION (vfwadd_frm, widen_alu_frm, full_preds, f_wwf_ops, always)
+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwv_ops, always)
+DEF_RVV_FUNCTION (vfwsub_frm, widen_alu_frm, full_preds, f_wwf_ops, always)
// 13.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
-DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfrdiv, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfrdiv_frm, alu_frm, full_preds, f_vvf_ops)
+DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfrdiv, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfmul_frm, alu_frm, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfdiv_frm, alu_frm, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfrdiv_frm, alu_frm, full_preds, f_vvf_ops, always)
// 13.5. Vector Widening Floating-Point Multiply
-DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvf_ops)
-DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvv_ops)
-DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvf_ops)
+DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvf_ops, always)
+DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvv_ops, always)
+DEF_RVV_FUNCTION (vfwmul_frm, alu_frm, full_preds, f_wvf_ops, always)
// 13.6. Vector Single-Width Floating-Point Fused Multiply-Add Instructions
-DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvfv_ops)
-
-DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvfv_ops)
-DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvvv_ops)
-DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvfv_ops)
+DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvfv_ops, always)
+
+DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmacc_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmacc_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmsac_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmsac_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmadd_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmadd_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfmsub_frm, alu_frm, full_preds, f_vvfv_ops, always)
+DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvvv_ops, always)
+DEF_RVV_FUNCTION (vfnmsub_frm, alu_frm, full_preds, f_vvfv_ops, always)
// 13.7. Vector Widening Floating-Point Fused Multiply-Add Instructions
-DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwfv_ops)
-
-DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwfv_ops)
-DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwvv_ops)
-DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwfv_ops)
+DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwfv_ops, always)
+
+DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwmacc_frm, alu_frm, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwnmacc_frm, alu_frm, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwmsac_frm, alu_frm, full_preds, f_wwfv_ops, always)
+DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwvv_ops, always)
+DEF_RVV_FUNCTION (vfwnmsac_frm, alu_frm, full_preds, f_wwfv_ops, always)
// 13.8. Vector Floating-Point Square-Root Instruction
-DEF_RVV_FUNCTION (vfsqrt, alu, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfsqrt, alu, full_preds, f_v_ops, always)
-DEF_RVV_FUNCTION (vfsqrt_frm, alu_frm, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfsqrt_frm, alu_frm, full_preds, f_v_ops, always)
// 13.9. Vector Floating-Point Reciprocal Square-Root Estimate Instruction
-DEF_RVV_FUNCTION (vfrsqrt7, alu, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfrsqrt7, alu, full_preds, f_v_ops, always)
// 13.10. Vector Floating-Point Reciprocal Estimate Instruction
-DEF_RVV_FUNCTION (vfrec7, alu, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfrec7, alu, full_preds, f_v_ops, always)
-DEF_RVV_FUNCTION (vfrec7_frm, alu_frm, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfrec7_frm, alu_frm, full_preds, f_v_ops, always)
// 13.11. Vector Floating-Point MIN/MAX Instructions
-DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvf_ops)
+DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvf_ops, always)
// 13.12. Vector Floating-Point Sign-Injection Instructions
-DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvv_ops)
-DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfneg, alu, full_preds, f_v_ops)
-DEF_RVV_FUNCTION (vfabs, alu, full_preds, f_v_ops)
+DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvv_ops, always)
+DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfneg, alu, full_preds, f_v_ops, always)
+DEF_RVV_FUNCTION (vfabs, alu, full_preds, f_v_ops, always)
// 13.13. Vector Floating-Point Compare Instructions
-DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvf_ops)
-DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvv_ops)
-DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvf_ops)
+DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvf_ops, always)
+DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvv_ops, always)
+DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvf_ops, always)
// 13.14. Vector Floating-Point Classify Instruction
-DEF_RVV_FUNCTION (vfclass, alu, full_preds, f_to_u_v_ops)
+DEF_RVV_FUNCTION (vfclass, alu, full_preds, f_to_u_v_ops, always)
// 13.15. Vector Floating-Point Merge Instruction
-DEF_RVV_FUNCTION (vfmerge, no_mask_policy, none_tu_preds, f_vvfm_ops)
+DEF_RVV_FUNCTION (vfmerge, no_mask_policy, none_tu_preds, f_vvfm_ops, always)
// 13.16. Vector Floating-Point Move Instruction
-DEF_RVV_FUNCTION (vfmv_v, move, none_tu_preds, f_f_ops)
+DEF_RVV_FUNCTION (vfmv_v, move, none_tu_preds, f_f_ops, always)
// 13.17. Single-Width Floating-Point/Integer Type-Convert Instructions
-DEF_RVV_FUNCTION (vfcvt_x, alu, full_preds, f_to_i_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_xu, alu, full_preds, f_to_u_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_rtz_x, alu, full_preds, f_to_i_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_rtz_xu, alu, full_preds, f_to_u_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, i_to_f_x_v_ops)
-DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, u_to_f_xu_v_ops)
-
-DEF_RVV_FUNCTION (vfcvt_x_frm, alu_frm, full_preds, f_to_i_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_xu_frm, alu_frm, full_preds, f_to_u_f_v_ops)
-DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, i_to_f_x_v_ops)
-DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, u_to_f_xu_v_ops)
+DEF_RVV_FUNCTION (vfcvt_x, alu, full_preds, f_to_i_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_xu, alu, full_preds, f_to_u_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_rtz_x, alu, full_preds, f_to_i_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_rtz_xu, alu, full_preds, f_to_u_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, i_to_f_x_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, u_to_f_xu_v_ops, always)
+
+DEF_RVV_FUNCTION (vfcvt_x_frm, alu_frm, full_preds, f_to_i_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_xu_frm, alu_frm, full_preds, f_to_u_f_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, i_to_f_x_v_ops, always)
+DEF_RVV_FUNCTION (vfcvt_f_frm, alu_frm, full_preds, u_to_f_xu_v_ops, always)
// 13.18. Widening Floating-Point/Integer Type-Convert Instructions
-DEF_RVV_FUNCTION (vfwcvt_x, alu, full_preds, f_to_wi_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_xu, alu, full_preds, f_to_wu_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_rtz_x, alu, full_preds, f_to_wi_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_rtz_xu, alu, full_preds, f_to_wu_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, i_to_wf_x_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, u_to_wf_xu_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, f_to_wf_f_v_ops)
+DEF_RVV_FUNCTION (vfwcvt_x, alu, full_preds, f_to_wi_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_xu, alu, full_preds, f_to_wu_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_rtz_x, alu, full_preds, f_to_wi_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_rtz_xu, alu, full_preds, f_to_wu_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, i_to_wf_x_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, u_to_wf_xu_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, f_to_wf_f_v_ops, always)
-DEF_RVV_FUNCTION (vfwcvt_x_frm, alu_frm, full_preds, f_to_wi_f_v_ops)
-DEF_RVV_FUNCTION (vfwcvt_xu_frm, alu_frm, full_preds, f_to_wu_f_v_ops)
+DEF_RVV_FUNCTION (vfwcvt_x_frm, alu_frm, full_preds, f_to_wi_f_v_ops, always)
+DEF_RVV_FUNCTION (vfwcvt_xu_frm, alu_frm, full_preds, f_to_wu_f_v_ops, always)
// 13.19. Narrowing Floating-Point/Integer Type-Convert Instructions
-DEF_RVV_FUNCTION (vfncvt_x, narrow_alu, full_preds, f_to_ni_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_xu, narrow_alu, full_preds, f_to_nu_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_rtz_x, narrow_alu, full_preds, f_to_ni_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_rtz_xu, narrow_alu, full_preds, f_to_nu_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, i_to_nf_x_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, u_to_nf_xu_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, f_to_nf_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_rod_f, narrow_alu, full_preds, f_to_nf_f_w_ops)
-
-DEF_RVV_FUNCTION (vfncvt_x_frm, narrow_alu_frm, full_preds, f_to_ni_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_xu_frm, narrow_alu_frm, full_preds, f_to_nu_f_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, i_to_nf_x_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, u_to_nf_xu_w_ops)
-DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, f_to_nf_f_w_ops)
+DEF_RVV_FUNCTION (vfncvt_x, narrow_alu, full_preds, f_to_ni_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_xu, narrow_alu, full_preds, f_to_nu_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_rtz_x, narrow_alu, full_preds, f_to_ni_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_rtz_xu, narrow_alu, full_preds, f_to_nu_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, i_to_nf_x_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, u_to_nf_xu_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, f_to_nf_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_rod_f, narrow_alu, full_preds, f_to_nf_f_w_ops, always)
+
+DEF_RVV_FUNCTION (vfncvt_x_frm, narrow_alu_frm, full_preds, f_to_ni_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_xu_frm, narrow_alu_frm, full_preds, f_to_nu_f_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, i_to_nf_x_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, u_to_nf_xu_w_ops, always)
+DEF_RVV_FUNCTION (vfncvt_f_frm, narrow_alu_frm, full_preds, f_to_nf_f_w_ops, always)
/* 14. Vector Reduction Operations. */
// 14.1. Vector Single-Width Integer Reduction Instructions
-DEF_RVV_FUNCTION (vredsum, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredmaxu, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredmax, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredminu, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredmin, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredand, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredor, reduc_alu, no_mu_preds, iu_vs_ops)
-DEF_RVV_FUNCTION (vredxor, reduc_alu, no_mu_preds, iu_vs_ops)
+DEF_RVV_FUNCTION (vredsum, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredmaxu, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredmax, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredminu, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredmin, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredand, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredor, reduc_alu, no_mu_preds, iu_vs_ops, always)
+DEF_RVV_FUNCTION (vredxor, reduc_alu, no_mu_preds, iu_vs_ops, always)
// 14.2. Vector Widening Integer Reduction Instructions
-DEF_RVV_FUNCTION (vwredsum, reduc_alu, no_mu_preds, wi_vs_ops)
-DEF_RVV_FUNCTION (vwredsumu, reduc_alu, no_mu_preds, wu_vs_ops)
+DEF_RVV_FUNCTION (vwredsum, reduc_alu, no_mu_preds, wi_vs_ops, always)
+DEF_RVV_FUNCTION (vwredsumu, reduc_alu, no_mu_preds, wu_vs_ops, always)
// 14.3. Vector Single-Width Floating-Point Reduction Instructions
-DEF_RVV_FUNCTION (vfredusum, reduc_alu, no_mu_preds, f_vs_ops)
-DEF_RVV_FUNCTION (vfredosum, reduc_alu, no_mu_preds, f_vs_ops)
-DEF_RVV_FUNCTION (vfredmax, reduc_alu, no_mu_preds, f_vs_ops)
-DEF_RVV_FUNCTION (vfredmin, reduc_alu, no_mu_preds, f_vs_ops)
+DEF_RVV_FUNCTION (vfredusum, reduc_alu, no_mu_preds, f_vs_ops, always)
+DEF_RVV_FUNCTION (vfredosum, reduc_alu, no_mu_preds, f_vs_ops, always)
+DEF_RVV_FUNCTION (vfredmax, reduc_alu, no_mu_preds, f_vs_ops, always)
+DEF_RVV_FUNCTION (vfredmin, reduc_alu, no_mu_preds, f_vs_ops, always)
-DEF_RVV_FUNCTION (vfredusum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops)
-DEF_RVV_FUNCTION (vfredosum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops)
+DEF_RVV_FUNCTION (vfredusum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops, always)
+DEF_RVV_FUNCTION (vfredosum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops, always)
// 14.4. Vector Widening Floating-Point Reduction Instructions
-DEF_RVV_FUNCTION (vfwredosum, reduc_alu, no_mu_preds, wf_vs_ops)
-DEF_RVV_FUNCTION (vfwredusum, reduc_alu, no_mu_preds, wf_vs_ops)
+DEF_RVV_FUNCTION (vfwredosum, reduc_alu, no_mu_preds, wf_vs_ops, always)
+DEF_RVV_FUNCTION (vfwredusum, reduc_alu, no_mu_preds, wf_vs_ops, always)
-DEF_RVV_FUNCTION (vfwredosum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops)
-DEF_RVV_FUNCTION (vfwredusum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops)
+DEF_RVV_FUNCTION (vfwredosum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops, always)
+DEF_RVV_FUNCTION (vfwredusum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops, always)
/* 15. Vector Mask Instructions. */
// 15.1. Vector Mask-Register Logical Instructions
-DEF_RVV_FUNCTION (vmand, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmnand, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmandn, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmxor, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmor, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmnor, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmorn, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmxnor, mask_alu, none_preds, b_mmm_ops)
-DEF_RVV_FUNCTION (vmmv, mask_alu, none_preds, b_mm_ops)
-DEF_RVV_FUNCTION (vmclr, mask_alu, none_preds, b_m_ops)
-DEF_RVV_FUNCTION (vmset, mask_alu, none_preds, b_m_ops)
-DEF_RVV_FUNCTION (vmnot, mask_alu, none_preds, b_mm_ops)
+DEF_RVV_FUNCTION (vmand, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmnand, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmandn, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmxor, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmor, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmnor, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmorn, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmxnor, mask_alu, none_preds, b_mmm_ops, always)
+DEF_RVV_FUNCTION (vmmv, mask_alu, none_preds, b_mm_ops, always)
+DEF_RVV_FUNCTION (vmclr, mask_alu, none_preds, b_m_ops, always)
+DEF_RVV_FUNCTION (vmset, mask_alu, none_preds, b_m_ops, always)
+DEF_RVV_FUNCTION (vmnot, mask_alu, none_preds, b_mm_ops, always)
// 15.2. Vector count population in mask vcpop.m
-DEF_RVV_FUNCTION (vcpop, mask_alu, none_m_preds, b_ulong_m_ops)
+DEF_RVV_FUNCTION (vcpop, mask_alu, none_m_preds, b_ulong_m_ops, always)
// 15.3. vfirst find-first-set mask bit
-DEF_RVV_FUNCTION (vfirst, mask_alu, none_m_preds, b_long_m_ops)
+DEF_RVV_FUNCTION (vfirst, mask_alu, none_m_preds, b_long_m_ops, always)
// 15.4. vmsbf.m set-before-first mask bit
-DEF_RVV_FUNCTION (vmsbf, mask_alu, none_m_mu_preds, b_mm_ops)
+DEF_RVV_FUNCTION (vmsbf, mask_alu, none_m_mu_preds, b_mm_ops, always)
// 15.5. vmsif.m set-including-first mask bit
-DEF_RVV_FUNCTION (vmsif, mask_alu, none_m_mu_preds, b_mm_ops)
+DEF_RVV_FUNCTION (vmsif, mask_alu, none_m_mu_preds, b_mm_ops, always)
// 15.6. vmsof.m set-only-first mask bit
-DEF_RVV_FUNCTION (vmsof, mask_alu, none_m_mu_preds, b_mm_ops)
+DEF_RVV_FUNCTION (vmsof, mask_alu, none_m_mu_preds, b_mm_ops, always)
// 15.8. Vector Iota Instruction
-DEF_RVV_FUNCTION (viota, mask_alu, full_preds, u_vm_ops)
+DEF_RVV_FUNCTION (viota, mask_alu, full_preds, u_vm_ops, always)
// 15.9. Vector Element Index Instruction
-DEF_RVV_FUNCTION (vid, alu, full_preds, u_v_ops)
+DEF_RVV_FUNCTION (vid, alu, full_preds, u_v_ops, always)
/* 16. Vector Permutation Instructions. */
// 16.1. Integer Scalar Move Instructions
-DEF_RVV_FUNCTION (vmv_x, scalar_move, none_preds, iu_x_s_ops)
-DEF_RVV_FUNCTION (vmv_s, move, none_tu_preds, iu_s_x_ops)
+DEF_RVV_FUNCTION (vmv_x, scalar_move, none_preds, iu_x_s_ops, always)
+DEF_RVV_FUNCTION (vmv_s, move, none_tu_preds, iu_s_x_ops, always)
// 16.2. Floating-Point Scalar Move Instructions
-DEF_RVV_FUNCTION (vfmv_f, scalar_move, none_preds, f_f_s_ops)
-DEF_RVV_FUNCTION (vfmv_s, move, none_tu_preds, f_s_f_ops)
+DEF_RVV_FUNCTION (vfmv_f, scalar_move, none_preds, f_f_s_ops, always)
+DEF_RVV_FUNCTION (vfmv_s, move, none_tu_preds, f_s_f_ops, always)
// 16.3. Vector Slide Instructions
-DEF_RVV_FUNCTION (vslideup, alu, full_preds, all_vvvx_ops)
-DEF_RVV_FUNCTION (vslidedown, alu, full_preds, all_vvx_ops)
-DEF_RVV_FUNCTION (vslide1up, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vslide1down, alu, full_preds, iu_vvx_ops)
-DEF_RVV_FUNCTION (vfslide1up, alu, full_preds, f_vvf_ops)
-DEF_RVV_FUNCTION (vfslide1down, alu, full_preds, f_vvf_ops)
+DEF_RVV_FUNCTION (vslideup, alu, full_preds, all_vvvx_ops, always)
+DEF_RVV_FUNCTION (vslidedown, alu, full_preds, all_vvx_ops, always)
+DEF_RVV_FUNCTION (vslide1up, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vslide1down, alu, full_preds, iu_vvx_ops, always)
+DEF_RVV_FUNCTION (vfslide1up, alu, full_preds, f_vvf_ops, always)
+DEF_RVV_FUNCTION (vfslide1down, alu, full_preds, f_vvf_ops, always)
// 16.4. Vector Register Gather Instructions
-DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvv_ops)
-DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvx_ops)
-DEF_RVV_FUNCTION (vrgatherei16, alu, full_preds, all_gatherei16_vvv_ops)
+DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvv_ops, always)
+DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvx_ops, always)
+DEF_RVV_FUNCTION (vrgatherei16, alu, full_preds, all_gatherei16_vvv_ops, always)
// 16.5. Vector Compress Instruction
-DEF_RVV_FUNCTION (vcompress, alu, none_tu_preds, all_vvm_ops)
+DEF_RVV_FUNCTION (vcompress, alu, none_tu_preds, all_vvm_ops, always)
/* Miscellaneous Vector Functions. */
-DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_u_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_i_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_i_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_u_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_f_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_f_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew8_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew16_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew32_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew64_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool2_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool4_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool8_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool16_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool32_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool64_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew8_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew16_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew32_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew64_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew8_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew16_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew32_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew64_lmul1_interpret_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x2_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x4_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x8_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x16_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x32_ops)
-DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x64_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x2_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x4_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x8_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x16_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x32_ops)
-DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x64_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x2_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x4_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x8_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x2_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x4_ops)
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul4_x2_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x2_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x4_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x8_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x2_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x4_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul4_x2_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x2_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x4_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x8_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x2_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x4_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul4_x2_ops)
+DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_u_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_i_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_i_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_u_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_f_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_f_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew8_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew16_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew32_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew64_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool2_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool4_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool8_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool16_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool32_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_bool64_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew8_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew16_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew32_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_signed_eew64_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew8_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew16_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew32_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, b_v_unsigned_eew64_lmul1_interpret_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x2_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x4_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x8_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x16_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x32_ops, always)
+DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x64_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x2_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x4_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x8_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x16_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x32_ops, always)
+DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x64_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x2_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x4_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x8_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x2_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x4_ops, always)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul4_x2_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x2_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x4_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x8_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x2_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x4_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul4_x2_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x2_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x4_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul1_x8_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x2_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul2_x4_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_lmul4_x2_ops, always)
// Tuple types
-DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_tuple_ops)
-DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_tuple_ops)
-DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_tuple_ops)
-DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_tuple_ops)
-DEF_RVV_FUNCTION (vlseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ops)
-DEF_RVV_FUNCTION (vsseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ops)
-DEF_RVV_FUNCTION (vlsseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ptrdiff_ops)
-DEF_RVV_FUNCTION (vssseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ptrdiff_ops)
-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops)
-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops)
-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops)
-DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops)
-DEF_RVV_FUNCTION (vlsegff, seg_fault_load, full_preds, tuple_v_scalar_const_ptr_size_ptr_ops)
+DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_tuple_ops, always)
+DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_tuple_ops, always)
+DEF_RVV_FUNCTION (vcreate, vcreate, none_preds, all_v_vcreate_tuple_ops, always)
+DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_tuple_ops, always)
+DEF_RVV_FUNCTION (vlseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ops, always)
+DEF_RVV_FUNCTION (vsseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ops, always)
+DEF_RVV_FUNCTION (vlsseg, seg_loadstore, full_preds, tuple_v_scalar_const_ptr_ptrdiff_ops, always)
+DEF_RVV_FUNCTION (vssseg, seg_loadstore, none_m_preds, tuple_v_scalar_ptr_ptrdiff_ops, always)
+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vluxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vloxseg, seg_indexed_loadstore, full_preds, tuple_v_scalar_const_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vsuxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew8_index_ops, always)
+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew16_index_ops, always)
+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew32_index_ops, always)
+DEF_RVV_FUNCTION (vsoxseg, seg_indexed_loadstore, none_m_preds, tuple_v_scalar_ptr_eew64_index_ops, always)
+DEF_RVV_FUNCTION (vlsegff, seg_fault_load, full_preds, tuple_v_scalar_const_ptr_size_ptr_ops, always)
#undef DEF_RVV_FUNCTION
@@ -51,6 +51,7 @@
#include "riscv-vector-builtins.h"
#include "riscv-vector-builtins-shapes.h"
#include "riscv-vector-builtins-bases.h"
+#include "riscv-vector-builtins-avail.h"
using namespace riscv_vector;
@@ -2684,8 +2685,9 @@ static CONSTEXPR const function_type_info function_types[] = {
/* A list of all RVV intrinsic functions. */
static function_group_info function_groups[] = {
-#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO) \
- {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO},
+#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, AVAIL) \
+ {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO,\
+ riscv_vector_avail_ ## AVAIL},
#include "riscv-vector-builtins-functions.def"
};
@@ -232,6 +232,8 @@ struct function_group_info
on the index value. */
const predication_type_index *preds;
const rvv_op_info ops_infos;
+ /* Whether the function is available. */
+ unsigned int (*avail) (void);
};
class GTY ((user)) function_instance