From patchwork Fri Dec 8 02:44:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Feng Wang X-Patchwork-Id: 175533 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp5205595vqy; Thu, 7 Dec 2023 18:46:14 -0800 (PST) X-Google-Smtp-Source: AGHT+IFiJSfKxITTYRMSVCnusePsRs3Z6hqNzMVVk6tx8t1D/Bv5BOKbEIr+TQz7zDqgNfwAZReD X-Received: by 2002:a05:620a:880f:b0:77f:3657:6659 with SMTP id qj15-20020a05620a880f00b0077f36576659mr2442625qkn.94.1702003574263; Thu, 07 Dec 2023 18:46:14 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1702003574; cv=pass; d=google.com; s=arc-20160816; b=Rhm030e7A6A1gIDDay2TB1NjJ5EH4ECzTI2GoTtZuZd6+KLKeDCvGf7RhoQ5rVDqt0 GibNIUjcJd4bpAXdkFanc9KgbiLGq4QFbISaxzZsUIBQXf9lrf+kJTc3Uz3lcGgKHfou H2Hvl8PpqD2urbiHPwfaPK1ed1WI0Xam1CrYB+wsnCi7jr83Xdn2lQ9FrcrJOMQ26ziR 9D67EYroMZHzDqUkxZXVLz1DCHXzzo3UNI0RTQtGRKbJhlSPNpJOTpOI9Rt4D84W47wB VJQomGx+7MOwvz4pQN9kQedETGtq7wlNn86PvTEqgFA0OTYMheURmnmQ3XfzoB9NUTjW 6FrA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to; bh=rO8fkImNsgtJeOYaj/NGRSYJYYGj8ISNYjuREbj9UHg=; fh=Puwh6aWFkQFHAcgMxtgtl8u0zENvfqZymSUfjOfMnnI=; b=dag5BbFdGPNddripIZeLvH3K3aKmWYyj9RkTYW1TAq7ZDBq3ozA9DW24es1SLdVxmH lM/+EIuRgOBFb8AAX7aQIrFecia2cAYs8MKYQY/OeqTteCzrxbSoxH6TotXOXDMzcE2i OU8BfhDR6YQP2VG9umc4eZbBWzOIaT+jDduJXhxNOOatEKIyDNCHXj3CQAlek+GxXYsq LJsPD9sYzm+Fw1QRnVS9Sxz+O2mV0uDz4C6IkvdOzgVN61I1Upz2BEArR1CzUHAPoN47 jt7R578dsIUj+7NTDg9uAKsGOvwwa40It2DLQYoISa2TX8ZOXaqh//G8T4ub3ouUwpB1 fLug== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id bs33-20020a05620a472100b0077d72b6ab70si1275331qkb.355.2023.12.07.18.46.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Dec 2023 18:46:14 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EFF9E3858292 for ; Fri, 8 Dec 2023 02:46:13 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from zg8tmty3ljk5ljewns4xndka.icoremail.net (zg8tmty3ljk5ljewns4xndka.icoremail.net [167.99.105.149]) by sourceware.org (Postfix) with ESMTP id B07673858C5F for ; Fri, 8 Dec 2023 02:45:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B07673858C5F Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=eswincomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=eswincomputing.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B07673858C5F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=167.99.105.149 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702003550; cv=none; b=r45eG4g1BOYIZgLLGFmWS4oEDltN6Wtp6vpSeZduXpFQd8Euw0Y1im0i3DffVYHcd9pTc8G8Y97bWiN7ODBU+q3Yvkn96w7/QvCdTw7NT4JXzBD3y7ZUlIXMW5qMrTdsXea8Hr8Kry2cbiOl/sHNI2iAxMbR6hNPwOE1ZKpWSds= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702003550; c=relaxed/simple; bh=4E4WvO7eeEqPRPDgjEvF08bZe+y8TSjHRL2+abQIR6k=; h=From:To:Subject:Date:Message-Id; b=x9TwaFvQ1Up/JEij2HZVSiIGpqC9ZwOVKL1Iaz7o4yCyks6nt/V5Ux/j0Ktx+dM8ru+1dVrQrL8NtJkIPFysAFMmdzq1WFAtZyjDPxNpSbiXp+vpgjNarV/AmhX0s+9R0h2MyY4FiiPoCIfjGPnMBuqzZgIYAKw1P6nOSuu6ZLE= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from localhost.localdomain (unknown [10.12.130.31]) by app2 (Coremail) with SMTP id TQJkCgB3BdQMg3JlD6sAAA--.6743S4; Fri, 08 Dec 2023 10:44:28 +0800 (CST) From: Feng Wang To: gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com, jeffreyalaw@gmail.com, juzhe.zhong@rivai.ai, Feng Wang Subject: [PATCH][v2] RISC-V: Add avail interface into function_group_info Date: Fri, 8 Dec 2023 02:44:39 +0000 Message-Id: <20231208024439.10538-1-wangfeng@eswincomputing.com> X-Mailer: git-send-email 2.17.1 X-CM-TRANSID: TQJkCgB3BdQMg3JlD6sAAA--.6743S4 X-Coremail-Antispam: 1UD129KBjvAXoWkXr43Xw1xAw4UWw15Xw4xJFb_yoWfGFyxXo Z7Ww1DAry8JF10gr9a9r13Zr1UWa1UAas3Jr15W3WIga93ArWS93WfurZrAr1SkF4xGr47 tayYqFW8K3Z0qr15n29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UjIYCTnIWjp_UUUY87AC8VAFwI0_Gr0_Xr1l1xkIjI8I6I8E6xAIw20EY4v20xva j40_Wr0E3s1l1IIY67AEw4v_Jr0_Jr4l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2 x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3wA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8 Jr0_Cr1UM28EF7xvwVC2z280aVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv6xkF7I0E14v26r xl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj 6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr 0_Gr1lF7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkIecxEwVCm-wCF 04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r 18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vI r41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr 1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvE x4A2jsIEc7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7VUbXdbUUUUUU== X-CM-SenderInfo: pzdqwwxhqjqvxvzl0uprps33xlqjhudrp/ X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784680099639264915 X-GMAIL-MSGID: 1784680099639264915 Patch v2: Using variadic macro and add the dependency into t-riscv 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 argument. (read_vl): Using AVAIL argument default value. (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): Using variadic macro. * config/riscv/riscv-vector-builtins.h (struct function_group_info): Add avail function interface into struct. * config/riscv/t-riscv: Add dependency * config/riscv/riscv-vector-builtins-avail.h: New file.The definition of AVAIL marco. --- .../riscv/riscv-vector-builtins-avail.h | 17 + .../riscv/riscv-vector-builtins-functions.def | 953 +++++++++--------- gcc/config/riscv/riscv-vector-builtins.cc | 6 +- gcc/config/riscv/riscv-vector-builtins.h | 10 + gcc/config/riscv/t-riscv | 1 + gcc/testsuite/g++.target/riscv/rvv/rvv.exp | 9 +- gcc/testsuite/gcc.target/riscv/rvv/rvv.exp | 8 + 7 files changed, 526 insertions(+), 478 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..22f72e0baca --- /dev/null +++ b/gcc/config/riscv/riscv-vector-builtins-avail.h @@ -0,0 +1,17 @@ +#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); \ + } + + +} +#endif diff --git a/gcc/config/riscv/riscv-vector-builtins-functions.def b/gcc/config/riscv/riscv-vector-builtins-functions.def index 1c37fd5fffe..0d6ed6d739c 100644 --- a/gcc/config/riscv/riscv-vector-builtins-functions.def +++ b/gcc/config/riscv/riscv-vector-builtins-functions.def @@ -1,6 +1,6 @@ /* Intrinsic define macros for RISC-V 'V' Extension for GNU compiler. - Copyright (C) 2022-2023 Free Software Foundation, Inc. - Contributed by Juzhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd. + Copyright (C, ) 2022-2023 Free Software Foundation, Inc. + Contributed by Juzhe Zhong (juzhe.zhong@rivai.ai, ), RiVAI Technologies Ltd. This file is part of GCC. @@ -31,624 +31,627 @@ along with GCC; see the file COPYING3. If not see - OPS_INFO describes all information of return type and each argument type. + - AVAIL this argument is the optional for AVAIL.Determin the enable + of the intrinsic function. + */ #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, ) +DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops, ) /* 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, ) +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) +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) +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_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, ) +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, ) // 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, ) // 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, ) +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, ) // 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, ) +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, ) // 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, ) +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, ) // 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, ) +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, ) // 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, ) +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) +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 (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, ) +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, ) // 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, ) +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, ) // 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, ) +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) +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) +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) +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 (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, ) +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, ) // 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, ) +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, 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, ) +DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, iu_vvxm_ops, ) // 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, ) +DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, iu_x_ops, ) /* 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, ) +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, ) // 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, ) +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 (vsmul, alu, full_preds, full_v_i_vvv_ops, ) +DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_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) +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 (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, ) +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, ) /* 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, ) +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, ) // 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, ) +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, ) // 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, ) +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, ) // 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, ) +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, ) // 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, ) +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, ) // 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, ) +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, ) // 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, ) -DEF_RVV_FUNCTION (vfsqrt_frm, alu_frm, full_preds, f_v_ops) +DEF_RVV_FUNCTION (vfsqrt_frm, alu_frm, full_preds, f_v_ops, ) // 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, ) // 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, ) -DEF_RVV_FUNCTION (vfrec7_frm, alu_frm, full_preds, f_v_ops) +DEF_RVV_FUNCTION (vfrec7_frm, alu_frm, full_preds, f_v_ops, ) // 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, ) +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, ) // 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, ) +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, ) // 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, ) +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, ) // 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, ) // 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, ) // 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, ) // 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, ) +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, ) // 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, ) +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_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, ) +DEF_RVV_FUNCTION (vfwcvt_xu_frm, alu_frm, full_preds, f_to_wu_f_v_ops, ) // 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, ) +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, ) /* 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, ) +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, ) // 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, ) +DEF_RVV_FUNCTION (vwredsumu, reduc_alu, no_mu_preds, wu_vs_ops, ) // 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, ) +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_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, ) +DEF_RVV_FUNCTION (vfredosum_frm, reduc_alu_frm, no_mu_preds, f_vs_ops, ) // 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, ) +DEF_RVV_FUNCTION (vfwredusum, reduc_alu, no_mu_preds, wf_vs_ops, ) -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, ) +DEF_RVV_FUNCTION (vfwredusum_frm, reduc_alu_frm, no_mu_preds, wf_vs_ops, ) /* 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, ) +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, ) // 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, ) // 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, ) // 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, ) // 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, ) // 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, ) // 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, ) // 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, ) /* 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, ) +DEF_RVV_FUNCTION (vmv_s, move, none_tu_preds, iu_s_x_ops, ) // 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, ) +DEF_RVV_FUNCTION (vfmv_s, move, none_tu_preds, f_s_f_ops, ) // 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, ) +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, ) // 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, ) +DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvx_ops, ) +DEF_RVV_FUNCTION (vrgatherei16, alu, full_preds, all_gatherei16_vvv_ops, ) // 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, ) /* 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, ) +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, ) // 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, ) +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, ) #undef DEF_RVV_FUNCTION diff --git a/gcc/config/riscv/riscv-vector-builtins.cc b/gcc/config/riscv/riscv-vector-builtins.cc index 6330a3a41c3..5a164943df9 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, ...) \ + {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO,\ + __VA_ARGS__}, #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..6c3e61074a2 100644 --- a/gcc/config/riscv/riscv-vector-builtins.h +++ b/gcc/config/riscv/riscv-vector-builtins.h @@ -212,6 +212,14 @@ class function_shape; /* Static information about a set of functions. */ struct function_group_info { + constexpr function_group_info (const char *base_name,\ + const function_base *const *base,\ + const function_shape *const *shape,\ + const predication_type_index *preds,\ + const rvv_op_info ops_infos,\ + unsigned int (*avail)() = nullptr) + : base_name (base_name), base (base), shape (shape), preds (preds),\ + ops_infos (ops_infos), avail (avail){}; /* The base name, as a string. */ const char *base_name; @@ -232,6 +240,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 diff --git a/gcc/config/riscv/t-riscv b/gcc/config/riscv/t-riscv index 3b9686daa58..cacb1e8ddb4 100644 --- a/gcc/config/riscv/t-riscv +++ b/gcc/config/riscv/t-riscv @@ -1,4 +1,5 @@ RISCV_BUILTINS_H = $(srcdir)/config/riscv/riscv-vector-builtins.h \ + $(srcdir)/config/riscv/riscv-vector-builtins-avail.h \ $(srcdir)/config/riscv/riscv-vector-builtins.def \ $(srcdir)/config/riscv/riscv-vector-builtins-functions.def \ riscv-vector-type-indexer.gen.def diff --git a/gcc/testsuite/g++.target/riscv/rvv/rvv.exp b/gcc/testsuite/g++.target/riscv/rvv/rvv.exp index 5b01e4e05d2..24c72718543 100644 --- a/gcc/testsuite/g++.target/riscv/rvv/rvv.exp +++ b/gcc/testsuite/g++.target/riscv/rvv/rvv.exp @@ -41,7 +41,14 @@ dg-init set CFLAGS "-march=$gcc_march -mabi=$gcc_mabi -O3" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/base/*.C]] \ "" $CFLAGS - +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/gnu-api-tests/*.\[cS\]]] \ + "" $CFLAGS +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/gnu-overloaded-tests/*.\[cS\]]] \ + "" $CFLAGS +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/policy/gnu-api-tests/*.\[cS\]]] \ + "" $CFLAGS +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/policy/gnu-overloaded-tests/*.\[cS\]]] \ + "" $CFLAGS dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/autovec/*.\[C\]]] \ "" $CFLAGS diff --git a/gcc/testsuite/gcc.target/riscv/rvv/rvv.exp b/gcc/testsuite/gcc.target/riscv/rvv/rvv.exp index 1d5041b0c8c..592ad330fc8 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/rvv.exp +++ b/gcc/testsuite/gcc.target/riscv/rvv/rvv.exp @@ -37,6 +37,14 @@ dg-init set CFLAGS "$DEFAULT_CFLAGS -O3" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/base/*.\[cS\]]] \ "" $CFLAGS +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/gnu-api-tests/*.\[cS\]]] \ + "" $CFLAGS +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/gnu-overloaded-tests/*.\[cS\]]] \ + "" $CFLAGS +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/policy/gnu-api-tests/*.\[cS\]]] \ + "" $CFLAGS +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/policy/gnu-overloaded-tests/*.\[cS\]]] \ + "" $CFLAGS gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/vsetvl/*.\[cS\]]] \ "" $CFLAGS dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/autovec/*.\[cS\]]] \