From patchwork Wed Nov 1 06:35:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Xu X-Patchwork-Id: 160443 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:abcd:0:b0:403:3b70:6f57 with SMTP id f13csp220893vqx; Tue, 31 Oct 2023 23:36:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE+XhOxD0YjtrtbL6CQZ5EEb79fgNCJRcjJ+B7NcR+Uz5oe/yRBtHC7ANqxLSZp06k9J0xy X-Received: by 2002:a05:620a:1a1a:b0:775:937b:c594 with SMTP id bk26-20020a05620a1a1a00b00775937bc594mr17264778qkb.58.1698820565319; Tue, 31 Oct 2023 23:36:05 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1698820565; cv=pass; d=google.com; s=arc-20160816; b=y0nfU1s842zUxA5ESe7k15i0Z5eBngVRjUWt9L0GpCYJOXYeh/E0yDOsPEjMf+VPxH WvKOV82EqtHkHUSLJWbgNk54B8ZpkM4MvzX7b4epHMfCwz8RyYaWUWmXPnkahm4U8jHx pXB2Bl6rjBGrxPdjRGbkOhWig4pEvxFLJ1dZiFyzl7cXTzZm2rRMChcnsC/Bd1VA0qHK gxeS5JFJwp2Bv0S9rA0Hag1HxN2+4jU18VRKhubVA8KEujTqUSNfA4rj5LZF8EX1UbxR RVgRFsfoBlLc59YSImL2uCJ60pnX46e/999DzWog+f3+EMhQmeIkAwq2k+JPAf/043q9 fW9w== 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=4wT0sWKmR/eoXJp9N/pZjvO4MiCckmuXbiLOTz1z8jM=; fh=Qb/t3bub0qUevN32JfR0ksI5uuULifWToHOJuO7VEBY=; b=QSc50lSc50Q5Av5xm6lTYbCPvJv7qCGr6Rca1iPHkBcz1Wd+aYxr65zFadXLR9cRw2 OiL4y5fAxPBOIWat/2ViDm1k66mn3g+dMeGZ0l2ysGiswKhU39bK/bGlYndtcZ0rC9q1 qwf+rjwKkXPFA8bAggPlIiSS2OQzNexCpYaUtj3+RR+1aeympafaRJsH1UYy7jpBQKqg EtAgm00WR1hgxy3hTgq/RXJIGuU4orOuuxyerBA2/C4Bf08wXYT5NbjG1v4GJKO5lGHd fUEWdft+mffsK4ymUbZZvdY1H63A8x9sEAqNKoFElokQwGGCRo+XIWrWppeijUDrawrp M5cA== 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 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id q3-20020a05620a024300b007789a6caf87si2157318qkn.557.2023.10.31.23.36.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Oct 2023 23:36:05 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; 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 8.43.85.97 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 18E453857004 for ; Wed, 1 Nov 2023 06:36:05 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from zg8tmtu5ljg5lje1ms4xmtka.icoremail.net (zg8tmtu5ljg5lje1ms4xmtka.icoremail.net [159.89.151.119]) by sourceware.org (Postfix) with ESMTP id C60D83858439 for ; Wed, 1 Nov 2023 06:35:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C60D83858439 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 C60D83858439 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=159.89.151.119 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698820541; cv=none; b=LX2ziTF7Z0BPHPfsUBK5w2ntddTV+l5dSubiPLr2q0rNkRQBdiTO7ePEvb0TIe4xCXksq7ILZmA2GkwvCjmAFYyADMkbfNo1r3MVAf/gzmHEh8YpPa3azH9o9HjtI4r//R/YMmL0rUOUz8e97a5drtAzv8hb4iyz9KuieFuwwi8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698820541; c=relaxed/simple; bh=/R7imQoUYGRhqh/FnfJ/fWX67HpgYzBABrv9hup62BQ=; h=From:To:Subject:Date:Message-Id; b=FDnjM4TciywlDVBrgMhcsh8O2gPEEbGCrf1vYPjnp7YN6EfJJZBha+e1yMWp0tm19gpglns3XRqLzkC0xvuYQLzC+iER7B2NNv0UcHU6HLrwxKjTEcvaQns264H5T9VgrgwUGyYZWbHaIT1Mz2vvpk+rskyt4e6sA2tMnC07xWY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from host014-ubuntu-1804.lxd (unknown [10.12.130.31]) by app2 (Coremail) with SMTP id TQJkCgCnZEKa8UFlJa4BAA--.18145S4; Wed, 01 Nov 2023 14:35:07 +0800 (CST) From: Li Xu To: gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com, palmer@dabbelt.com, juzhe.zhong@rivai.ai, xuli Subject: [PATCH] RISC-V: Support vundefine intrinsics for tuple types Date: Wed, 1 Nov 2023 06:35:19 +0000 Message-Id: <20231101063519.33245-1-xuli1@eswincomputing.com> X-Mailer: git-send-email 2.17.1 X-CM-TRANSID: TQJkCgCnZEKa8UFlJa4BAA--.18145S4 X-Coremail-Antispam: 1UD129KBjvJXoW3Wr1rWry8tr1furyktFyrZwb_yoW7Gw13pa 98JrW2vry8XFZxWwn3KFW8Wr43Ar4xGa15Ary5Zws8Ca17Wws2y3Wqgw4ftF4DuFsY9w12 9ay5Ca15ua45ArJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUk214x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U JVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc CE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E 2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV W8JwACjcxG0xvY0x0EwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lc2xSY4AK6svPMxAI w28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr 4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUAVWUtwCIc40Y0x0EwIxG rwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWUJVW8Jw CI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcVC2 z280aVCY1x0267AKxVWUJVW8JbIYCTnIWIevJa73UjIFyTuYvjfUoOJ5UUUUU X-CM-SenderInfo: 50xoxi46hv4xpqfrz1xxwl0woofrz/ X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_MSPIKE_H4, 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: 1781342472777507380 X-GMAIL-MSGID: 1781342472777507380 From: xuli https://github.com/riscv-non-isa/rvv-intrinsic-doc/pull/288 gcc/ChangeLog: * config/riscv/riscv-vector-builtins-functions.def (vundefined): Add vundefine intrinsics for tuple types. * config/riscv/riscv-vector-builtins.cc: Ditto. * config/riscv/vector.md (@vundefined): Ditto. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/tuple_vundefined.c: New test. --- .../riscv/riscv-vector-builtins-functions.def | 1 + gcc/config/riscv/riscv-vector-builtins.cc | 8 ++ gcc/config/riscv/vector.md | 7 ++ .../riscv/rvv/base/tuple_vundefined.c | 73 +++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/tuple_vundefined.c diff --git a/gcc/config/riscv/riscv-vector-builtins-functions.def b/gcc/config/riscv/riscv-vector-builtins-functions.def index 18ed2c2b8f6..911fd520195 100644 --- a/gcc/config/riscv/riscv-vector-builtins-functions.def +++ b/gcc/config/riscv/riscv-vector-builtins-functions.def @@ -622,6 +622,7 @@ DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul4_x2_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) diff --git a/gcc/config/riscv/riscv-vector-builtins.cc b/gcc/config/riscv/riscv-vector-builtins.cc index 5d4dc264fa6..2e33bf73549 100644 --- a/gcc/config/riscv/riscv-vector-builtins.cc +++ b/gcc/config/riscv/riscv-vector-builtins.cc @@ -2509,6 +2509,14 @@ static CONSTEXPR const rvv_op_info all_v_vcreate_tuple_ops rvv_arg_type_info (RVV_BASE_vector), /* Return type */ tuple_vcreate_args /* Args */}; +/* A static operand information for vector_type func () function registration. + */ +static CONSTEXPR const rvv_op_info all_none_void_tuple_ops + = {tuple_ops, /* Types */ + OP_TYPE_none, /* Suffix */ + rvv_arg_type_info (RVV_BASE_vector), /* Return type */ + void_args /* Args */}; + /* A list of all RVV base function types. */ static CONSTEXPR const function_type_info function_types[] = { #define DEF_RVV_TYPE_INDEX( \ diff --git a/gcc/config/riscv/vector.md b/gcc/config/riscv/vector.md index 0297e4f0227..35bb6c3dc58 100644 --- a/gcc/config/riscv/vector.md +++ b/gcc/config/riscv/vector.md @@ -880,6 +880,13 @@ "" [(set_attr "type" "vector")]) +(define_insn "@vundefined" + [(set (match_operand:VT 0 "register_operand" "=vr") + (unspec:VT [(reg:SI X0_REGNUM)] UNSPEC_VUNDEF))] + "TARGET_VECTOR" + "" + [(set_attr "type" "vector")]) + (define_expand "@vreinterpret" [(set (match_operand:V 0 "register_operand") (match_operand 1 "vector_any_register_operand"))] diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/tuple_vundefined.c b/gcc/testsuite/gcc.target/riscv/rvv/base/tuple_vundefined.c new file mode 100644 index 00000000000..174860de559 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/base/tuple_vundefined.c @@ -0,0 +1,73 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh -mabi=lp64 -O3 -Wno-psabi" } */ + +#include "riscv_vector.h" + +vfloat16mf4x2_t +test_vundefined_f16mf4x2 () +{ + return __riscv_vundefined_f16mf4x2 (); +} + +vfloat32m1x3_t +test_vundefined_f32m1x3 () +{ + return __riscv_vundefined_f32m1x3 (); +} + +vfloat64m1x5_t +test_vundefined_f64m1x5 () +{ + return __riscv_vundefined_f64m1x5 (); +} + +vint8mf4x2_t +test_vundefined_i8mf4x2 () +{ + return __riscv_vundefined_i8mf4x2 (); +} + +vint16mf4x8_t +test_vundefined_i16mf4x8 () +{ + return __riscv_vundefined_i16mf4x8 (); +} + +vint32m1x7_t +test_vundefined_i32m1x7 () +{ + return __riscv_vundefined_i32m1x7 (); +} + +vint64m1x4_t +test_vundefined_i64m1x4 () +{ + return __riscv_vundefined_i64m1x4 (); +} + +vuint8mf8x2_t +test_vundefined_u8mf8x2 () +{ + return __riscv_vundefined_u8mf8x2 (); +} + +vuint16mf4x4_t +test_vundefined_u16mf4x4 () +{ + return __riscv_vundefined_u16mf4x4 (); +} + +vuint32m1x7_t +test_vundefined_u32m1x7 () +{ + return __riscv_vundefined_u32m1x7 (); +} + +vuint64m4x2_t +test_vundefined_u64m4x2 () +{ + return __riscv_vundefined_u64m4x2 (); +} + +/* { dg-final { scan-assembler-times {vse[0-9]+\.v\s+v[0-9]+,\s*0\([0-9ax]+\)} 18 } } */ +/* { dg-final { scan-assembler-times {vs[0-9]+r\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 28 } } */