From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ua1-x92d.google.com (mail-ua1-x92d.google.com [IPv6:2607:f8b0:4864:20::92d]) by sourceware.org (Postfix) with ESMTPS id A87C53858C54 for ; Fri, 10 Mar 2023 08:26:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A87C53858C54 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ua1-x92d.google.com with SMTP id h34so2990522uag.4 for ; Fri, 10 Mar 2023 00:26:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678436806; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=nm7u4/iFH4Gvhb9rLGVtlBoVyy3gIyShMlIkYFnyG8A=; b=g775ySlW0q/MfLz7L1EcZ97xHJ1RREanArzVzhhBpFh0vktYOeaVr/9TPaD4MAO4km Dbh7b38dOBsQ9dsiSCKDC7bpIUNaQ9Jn8c9GeQzVOcr2jwX05138NSsw1V4CYf7+jF9F OwYTWQdKQDSe2vwowP/9DM6uNf8ysELN9V0WA0Sg5O8TwEQW/KxkEpXMTKyunJh8QkZ0 ld2IAoNoVHaCqgTFfQ1hJLBTwdZYfq0pM9UFj/aqTci9dU7MkPNJd6uofWwHKafDl1za jfnIZIDxbGT6l5UuWi7WxyClW25/EcW/GWocV9Rxt5cpZprdFgK/L+yw901ayjPczTA1 XQbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678436806; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nm7u4/iFH4Gvhb9rLGVtlBoVyy3gIyShMlIkYFnyG8A=; b=b4ZPXBD8R/qGt+FwC87D+0O4QtJdEDU9fKPFxKbwC0cKjNB/VLkNmvU2+waaamV+Wh 6reJwRoaWmgVUblZxj9KgDLp0ZIedk1xGiSRGreFdvgiC9L2aCVpTceP36nfDEfPukvC /4MkHPKlRA6KzoL5dRzDX/HDNWku/QdMsQrIVn5TCw9hXo/x6BtXWJR7Vm6O2+uKToFs GpIwIHXD5E5PI5UHAM0aAvpggX8EWwqhA13qJVAlqceNPc94dxm/UY77+1d8UObryRI5 n6CKHdC7Q/cV84/Sdvgdm/KePiu0/HIoPxtSnBzPeJQAl6kEHzWN+cK03zx5t2Q2stGw xtOQ== X-Gm-Message-State: AO0yUKVHC8kDWDTLKWtUPfZkliO52BFb6Pd4rzY7ouX6L3rhvvPXdJ8o O4wmPr2scgH/WDgpbLbrsEu5A5QCDwj6/AYHynA= X-Google-Smtp-Source: AK7set/RGPOmx2Yj16820NQYCmyhpqRjboLs3qy2//DgKEBhoWICgwK8wUBNs47KbP05bV2LeqNHLbSm1VIoWHsIeSk= X-Received: by 2002:a9f:310a:0:b0:68e:33d7:7e6b with SMTP id m10-20020a9f310a000000b0068e33d77e6bmr16296946uab.1.1678436805808; Fri, 10 Mar 2023 00:26:45 -0800 (PST) MIME-Version: 1.0 References: <20230308074213.97404-1-juzhe.zhong@rivai.ai> In-Reply-To: From: Kito Cheng Date: Fri, 10 Mar 2023 16:26:34 +0800 Message-ID: Subject: Re: [PATCH] Extend nops num in "maybe_gen_insn" for RISC-V Vector intrinsics To: Richard Biener Cc: Ju-Zhe Zhong , gcc-patches@gcc.gnu.org, jeffreyalaw@gmail.com, richard.sandiford@arm.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-8.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Committed to trunk, thanks :) On Wed, Mar 8, 2023 at 3:49=E2=80=AFPM Richard Biener w= rote: > > On Wed, 8 Mar 2023, juzhe.zhong@rivai.ai wrote: > > > From: Ju-Zhe Zhong > > > > Hi, current maybe_gen_insn can only expand 9 nops. > > For RVV intrinsics, I need to extend it as 10, otherwise I should use G= EN_FCN. > > This patch is quite obvious change, Ok for trunk ? > > The optabs.cc change is OK. > > Thanks, > Richard. > > > Thanks. > > > > gcc/ChangeLog: > > > > * config/riscv/riscv-vector-builtins.cc (function_expander::use= _ternop_insn): Use maybe_gen_insn instead. > > (function_expander::use_widen_ternop_insn): Ditto. > > * optabs.cc (maybe_gen_insn): Extend nops handling. > > > > --- > > gcc/config/riscv/riscv-vector-builtins.cc | 24 ++--------------------- > > gcc/optabs.cc | 5 +++++ > > 2 files changed, 7 insertions(+), 22 deletions(-) > > > > diff --git a/gcc/config/riscv/riscv-vector-builtins.cc b/gcc/config/ris= cv/riscv-vector-builtins.cc > > index 60381cfe98f..fcda3863576 100644 > > --- a/gcc/config/riscv/riscv-vector-builtins.cc > > +++ b/gcc/config/riscv/riscv-vector-builtins.cc > > @@ -3154,17 +3154,7 @@ function_expander::use_ternop_insn (bool vd_accu= m_p, insn_code icode) > > add_input_operand (Pmode, get_tail_policy_for_pred (pred)); > > add_input_operand (Pmode, get_mask_policy_for_pred (pred)); > > add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX)); > > - > > - /* See optabs.cc, the maximum nops is 9 for using 'maybe_gen_insn'. > > - We temporarily use GCN directly. We will change it back it we > > - can support nops >=3D 10. */ > > - gcc_assert (maybe_legitimize_operands (icode, 0, opno, m_ops)); > > - rtx_insn *pat =3D GEN_FCN ( > > - icode) (m_ops[0].value, m_ops[1].value, m_ops[2].value, m_ops[3].v= alue, > > - m_ops[4].value, m_ops[5].value, m_ops[6].value, m_ops[7].valu= e, > > - m_ops[8].value, m_ops[9].value); > > - emit_insn (pat); > > - return m_ops[0].value; > > + return generate_insn (icode); > > } > > > > /* Implement the call using instruction ICODE, with a 1:1 mapping betw= een > > @@ -3196,17 +3186,7 @@ function_expander::use_widen_ternop_insn (insn_c= ode icode) > > add_input_operand (Pmode, get_tail_policy_for_pred (pred)); > > add_input_operand (Pmode, get_mask_policy_for_pred (pred)); > > add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX)); > > - > > - /* See optabs.cc, the maximum nops is 9 for using 'maybe_gen_insn'. > > - We temporarily use GCN directly. We will change it back it we > > - can support nops >=3D 10. */ > > - gcc_assert (maybe_legitimize_operands (icode, 0, opno, m_ops)); > > - rtx_insn *pat =3D GEN_FCN ( > > - icode) (m_ops[0].value, m_ops[1].value, m_ops[2].value, m_ops[3].v= alue, > > - m_ops[4].value, m_ops[5].value, m_ops[6].value, m_ops[7].valu= e, > > - m_ops[8].value, m_ops[9].value); > > - emit_insn (pat); > > - return m_ops[0].value; > > + return generate_insn (icode); > > } > > > > /* Implement the call using instruction ICODE, with a 1:1 mapping betw= een > > diff --git a/gcc/optabs.cc b/gcc/optabs.cc > > index cf22bfec3f5..4c641cab192 100644 > > --- a/gcc/optabs.cc > > +++ b/gcc/optabs.cc > > @@ -8091,6 +8091,11 @@ maybe_gen_insn (enum insn_code icode, unsigned i= nt nops, > > return GEN_FCN (icode) (ops[0].value, ops[1].value, ops[2].value= , > > ops[3].value, ops[4].value, ops[5].value, > > ops[6].value, ops[7].value, ops[8].value); > > + case 10: > > + return GEN_FCN (icode) (ops[0].value, ops[1].value, ops[2].value= , > > + ops[3].value, ops[4].value, ops[5].value, > > + ops[6].value, ops[7].value, ops[8].value, > > + ops[9].value); > > } > > gcc_unreachable (); > > } > > > > -- > Richard Biener > SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg= , > Germany; GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman; > HRB 36809 (AG Nuernberg)