From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbguseast1.qq.com (smtpbguseast1.qq.com [54.204.34.129]) by sourceware.org (Postfix) with ESMTPS id C9DA83858D1E for ; Tue, 14 Feb 2023 22:27:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C9DA83858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp87t1676413654te5prqca Received: from rios-cad5.localdomain ( [58.60.1.11]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 15 Feb 2023 06:27:33 +0800 (CST) X-QQ-SSF: 01400000002000E0L000B00A0000000 X-QQ-FEAT: Rf1s/nWaRtsQGx5Z94uZ1ZJWu4SBoBmEuL0iLkXC+I8RhBL9BMzOGpBmvs+g8 zPLdEntKix1Nc+dlTRtEluTV539uq4WWbFpw2YFkTprz8AHew2ItQozRvIj1vjJFoexRt2+ Nf2P5z/2OyAWZmo7Uz6Qtd8r7Ea0ar+riIxNQjLkoIK8ouHflU1HAZxVDbZnfVcumTJdEno 82ah0eZa6aUpohvB30tWtQt0czGEtbvgEsGa5Y7x+Os9ooMuhAYHQlYrEQqBuoOh+BUujjD Bdh0Z7qefFid+CEN0uaMJQwWOiDo+IWhlq7VV4nNNCsIiI7vNmk55DqfT4nLdlqDLfr9sK7 RJQz4ldWNsfbiIvg+Y= X-QQ-GoodBg: 2 From: juzhe.zhong@rivai.ai To: gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com, Ju-Zhe Zhong Subject: [PATCH] RISC-V: Rearrange the organization of declarations of RVV intrinsics [NFC] Date: Wed, 15 Feb 2023 06:27:33 +0800 Message-Id: <20230214222733.183219-1-juzhe.zhong@rivai.ai> X-Mailer: git-send-email 2.36.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: From: Ju-Zhe Zhong This patch doesn't change any functionality, only rearrange the oraganzation. Make it to be consistent with RVV ISA. Add annotation for it to make codes more readable. gcc/ChangeLog: * config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange. (vsm): Ditto. (vsse): Ditto. (vsoxei64): Ditto. (vsub): Ditto. (vand): Ditto. (vor): Ditto. (vxor): Ditto. (vsll): Ditto. (vsra): Ditto. (vsrl): Ditto. (vmin): Ditto. (vmax): Ditto. (vminu): Ditto. (vmaxu): Ditto. (vmul): Ditto. (vmulh): Ditto. (vmulhu): Ditto. (vmulhsu): Ditto. (vdiv): Ditto. (vrem): Ditto. (vdivu): Ditto. (vremu): Ditto. (vnot): Ditto. (vsext): Ditto. (vzext): Ditto. (vwadd): Ditto. (vwsub): Ditto. (vwmul): Ditto. (vwmulu): Ditto. (vwmulsu): Ditto. (vwaddu): Ditto. (vwsubu): Ditto. (vsbc): Ditto. (vmsbc): Ditto. (vnsra): Ditto. (vmerge): Ditto. (vmv_v): Ditto. (vmsne): Ditto. (vmslt): Ditto. (vmsgt): Ditto. (vmsle): Ditto. (vmsge): Ditto. (vmsltu): Ditto. (vmsgtu): Ditto. (vmsleu): Ditto. (vmsgeu): Ditto. (vnmsac): Ditto. (vmadd): Ditto. (vnmsub): Ditto. (vwmacc): Ditto. (vsadd): Ditto. (vssub): Ditto. (vssubu): Ditto. (vaadd): Ditto. (vasub): Ditto. (vasubu): Ditto. (vsmul): Ditto. (vssra): Ditto. (vssrl): Ditto. (vnclip): Ditto. --- .../riscv/riscv-vector-builtins-functions.def | 262 +++++++++++------- 1 file changed, 161 insertions(+), 101 deletions(-) diff --git a/gcc/config/riscv/riscv-vector-builtins-functions.def b/gcc/config/riscv/riscv-vector-builtins-functions.def index 22271273655..9bad1373bfd 100644 --- a/gcc/config/riscv/riscv-vector-builtins-functions.def +++ b/gcc/config/riscv/riscv-vector-builtins-functions.def @@ -37,15 +37,23 @@ along with GCC; see the file COPYING3. If not see #endif /* 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) + /* 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) + +// 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) + +// 7.6. Vector Indexed Instructions DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_uint8_index_ops) DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_uint16_index_ops) DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_uint32_index_ops) @@ -62,162 +70,214 @@ DEF_RVV_FUNCTION (vsoxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_uin DEF_RVV_FUNCTION (vsoxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_uint16_index_ops) DEF_RVV_FUNCTION (vsoxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_uint32_index_ops) DEF_RVV_FUNCTION (vsoxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_uint64_index_ops) + +// TODO: 7.7. Unit-stride Fault-Only-First Loads +// 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 (vsub, alu, full_preds, iu_vvv_ops) -DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvv_ops) -DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvv_ops) -DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvv_ops) -DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvv_ops) -DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvv_ops) -DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvv_ops) -DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvv_ops) -DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvv_ops) -DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvv_ops) -DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvv_ops) -DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops) -DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvv_ops) -DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvv_ops) -DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvv_ops) -DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvv_ops) -DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvv_ops) -DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvv_ops) -DEF_RVV_FUNCTION (vremu, alu, full_preds, u_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 (vand, alu, full_preds, iu_vvx_ops) -DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvx_ops) -DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvx_ops) -DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvx_ops) -DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvx_ops) -DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvx_ops) -DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvx_ops) -DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvx_ops) -DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvx_ops) -DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvx_ops) -DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvx_ops) -DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvx_ops) -DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvx_ops) -DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvx_ops) -DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvx_ops) -DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvx_ops) -DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvx_ops) -DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvx_ops) DEF_RVV_FUNCTION (vneg, alu, full_preds, iu_v_ops) -DEF_RVV_FUNCTION (vnot, alu, full_preds, iu_v_ops) -DEF_RVV_FUNCTION (vsext, alu, full_preds, i_vf2_ops) -DEF_RVV_FUNCTION (vsext, alu, full_preds, i_vf4_ops) -DEF_RVV_FUNCTION (vsext, alu, full_preds, i_vf8_ops) -DEF_RVV_FUNCTION (vzext, alu, full_preds, u_vf2_ops) -DEF_RVV_FUNCTION (vzext, alu, full_preds, u_vf4_ops) -DEF_RVV_FUNCTION (vzext, alu, full_preds, u_vf8_ops) -DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvv_ops) -DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvv_ops) -DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvv_ops) -DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvv_ops) -DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvv_ops) + +// 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 (vwmul, alu, full_preds, i_wvx_ops) -DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvx_ops) -DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvx_ops) -DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvx_ops) -DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvx_ops) -DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwv_ops) -DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwv_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 (vwaddu, widen_alu, full_preds, u_wwx_ops) -DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_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) + +// 11.3. Vector Integer Extension +DEF_RVV_FUNCTION (vzext, alu, full_preds, u_vf2_ops) +DEF_RVV_FUNCTION (vzext, alu, full_preds, u_vf4_ops) +DEF_RVV_FUNCTION (vzext, alu, full_preds, u_vf8_ops) +DEF_RVV_FUNCTION (vsext, alu, full_preds, i_vf2_ops) +DEF_RVV_FUNCTION (vsext, alu, full_preds, i_vf4_ops) +DEF_RVV_FUNCTION (vsext, alu, full_preds, i_vf8_ops) + +// 11.4. Vector Integer Add-with-Carry/Subtract-with-Borrow Instructions DEF_RVV_FUNCTION (vadc, no_mask_policy, tu_preds, iu_vvvm_ops) -DEF_RVV_FUNCTION (vsbc, no_mask_policy, tu_preds, iu_vvvm_ops) DEF_RVV_FUNCTION (vadc, no_mask_policy, tu_preds, iu_vvxm_ops) -DEF_RVV_FUNCTION (vsbc, no_mask_policy, tu_preds, iu_vvxm_ops) DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvvm_ops) -DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvvm_ops) DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvxm_ops) -DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvxm_ops) DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvv_ops) -DEF_RVV_FUNCTION (vmsbc, 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, tu_preds, iu_vvvm_ops) +DEF_RVV_FUNCTION (vsbc, no_mask_policy, 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) + +// 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) + +// 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) + +// 11.7. Vector Narrowing Integer Right Shift Instructions DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwv_ops) -DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_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 (vmerge, no_mask_policy, tu_preds, all_vvvm_ops) -DEF_RVV_FUNCTION (vmerge, no_mask_policy, tu_preds, iu_vvxm_ops) -DEF_RVV_FUNCTION (vmv_v, move, tu_preds, all_v_ops) -DEF_RVV_FUNCTION (vmv_v, move, tu_preds, iu_x_ops) + +// 11.8. Vector Integer Compare Instructions DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvv_ops) -DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvv_ops) -DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvv_ops) -DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvv_ops) -DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvv_ops) -DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvv_ops) -DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvv_ops) -DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvv_ops) -DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvv_ops) -DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_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 (vmsgt, 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 (vmsge, return_mask, none_m_mu_preds, i_mvx_ops) -DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_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 (vmsleu, 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) + +// 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) + +// 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) + +// 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) + +// 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) + +// 11.13. Vector Single-Width Integer Multiply-Add Instructions DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvvv_ops) -DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvvv_ops) -DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvvv_ops) -DEF_RVV_FUNCTION (vnmsub, 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 (vwmacc, alu, full_preds, i_wwvv_ops) -DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwxv_ops) + +// 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) + +// 11.15. Vector Integer Merge Instructions +DEF_RVV_FUNCTION (vmerge, no_mask_policy, tu_preds, all_vvvm_ops) +DEF_RVV_FUNCTION (vmerge, no_mask_policy, tu_preds, iu_vvxm_ops) + +// 11.16 Vector Integer Move Instructions +DEF_RVV_FUNCTION (vmv_v, move, tu_preds, all_v_ops) +DEF_RVV_FUNCTION (vmv_v, move, tu_preds, iu_x_ops) + /* 12. Vector Fixed-Point Arithmetic Instructions. */ -DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvv_ops) -DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvv_ops) + +// 12.1. Vector Single-Width Saturating Add and Subtract DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvv_ops) -DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvv_ops) -DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvx_ops) -DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvx_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 (vaadd, alu, full_preds, i_vvv_ops) -DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvv_ops) +DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvv_ops) +DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvx_ops) + +// 12.2. Vector Single-Width Averaging Add and Subtract DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvv_ops) -DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvv_ops) -DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvv_ops) -DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvv_ops) -DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvv_ops) -DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvx_ops) -DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvx_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) + +// 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 (vssra, alu, full_preds, i_shift_vvx_ops) + +// 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) + +// 12.5. Vector Narrowing Fixed-Point Clip Instructions DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwv_ops) -DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_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) +/* TODO: 13. Vector Floating-Point Instructions. */ +/* TODO: 14. Vector Reduction Operations. */ +/* TODO: 15. Vector Mask Instructions. */ +/* TODO: 16. Vector Permutation Instructions. */ + #undef DEF_RVV_FUNCTION -- 2.36.3