From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ua1-x92e.google.com (mail-ua1-x92e.google.com [IPv6:2607:f8b0:4864:20::92e]) by sourceware.org (Postfix) with ESMTPS id EEE093858D1E for ; Tue, 18 Apr 2023 14:28:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org EEE093858D1E 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-x92e.google.com with SMTP id q10so5957963uas.2 for ; Tue, 18 Apr 2023 07:28:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681828117; x=1684420117; 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=Ir85Ku1nJY6VSUa3rRJiWUirdbAv7earad6leYWjkvQ=; b=GEtPtZlzDKm22JzbHJL7SsLTuu1jf+WOG4h5RUAU7DQ1/r3X54mmUa7MU6LElyXz0z q+KTxkF4/zeyyJHIBHCjaYFea0kAKjPadpQJGrd1kTK1+z4smcKeQAzLlGyMA7sy3o/M scZ6jveAk7pHT6ofzQanJubMhQ3Ni65ycyvnEWXuXI7RHaigCBWQAKc1kLQznYuadK9K soUIP0EJRZ9Fll/DlUVomD83F2YzgAVB6UL540M3FdMaFX4Ii4us9q41z2vKITPo+mpN wovsNOHTDkBUgbuIcd0a03F3iy7ayJCIT8HiF1PrRz8Vf9VTRBLGpy86Y3hnPELaWPGu pzJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681828117; x=1684420117; 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=Ir85Ku1nJY6VSUa3rRJiWUirdbAv7earad6leYWjkvQ=; b=gtX5rAiiRsw09gZO8UuYahmbn3GcgmbAkr1vYTMNmiEg8iBRpkj6ZOihbTM2D/+Etb S5bNnDJAtRAwwXc5Ti5UgZeojOQeHj45kVbpoyrhIClDf33s30V9NWHdMHkPJiLiEh0P HIAd5H6SP+yNdcdAeJBIZn6pam/9ytS63wy+4TcI3hTZmsydRWuF6ciMrIZbpI9a5P/o +fho6KzLh7Wh1TGaBchLh9Jcu2vgsfLJF+NZHGRz+NdhB8iCXy2FZmbWtSs6oyL8oP4F g7vD5+2+6B6+siQ2tVX9k5HzOqTOIVifko12wcQY4Fzrpux/szmrAR64VHPKdHixMth3 D/bw== X-Gm-Message-State: AAQBX9cKZyJ2kgQFu2Ytn4R8aJg0LmW/ITKCcldXDvqpRWzbYpDoLgL6 dEf85ZujE3HcCkc88MmYNwb0qqZPFQHH80ye9Zg= X-Google-Smtp-Source: AKy350YJhgvCNyEZwG/qXGbGQVHton5dubznLu18F7ut86FRqBcWx7tihMatcoNJUI1blq7Y5+GAfOOmRb5TxNUUtnA= X-Received: by 2002:a1f:5c11:0:b0:43f:e949:758f with SMTP id q17-20020a1f5c11000000b0043fe949758fmr6025076vkb.4.1681828117057; Tue, 18 Apr 2023 07:28:37 -0700 (PDT) MIME-Version: 1.0 References: <20230417183701.2249183-1-collison@rivosinc.com> <20230417183701.2249183-8-collison@rivosinc.com> In-Reply-To: From: Kito Cheng Date: Tue, 18 Apr 2023 22:28:26 +0800 Message-ID: Subject: Re: [PATCH v4 07/10] vect: Verify that GET_MODE_NUNITS is a multiple of 2. To: Richard Biener Cc: Michael Collison , gcc-patches@gcc.gnu.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-8.8 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,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 List-Id: Wait, VNx1DImode can be really evaluate to just one element if -march=3Drv64g_zve64x, I thinks this should be just fixed on backend by this patch: https://patchwork.ozlabs.org/project/gcc/patch/20230414014518.15458-1-juzhe= .zhong@rivai.ai/ On Tue, Apr 18, 2023 at 2:12=E2=80=AFPM Richard Biener via Gcc-patches wrote: > > On Mon, Apr 17, 2023 at 8:42=E2=80=AFPM Michael Collison wrote: > > > > While working on autovectorizing for the RISCV port I encountered an is= sue > > where can_duplicate_and_interleave_p assumes that GET_MODE_NUNITS is a > > evenly divisible by two. The RISC-V target has vector modes (e.g. VNx1D= Imode), > > where GET_MODE_NUNITS is equal to one. > > > > Tested on RISCV and x86_64-linux-gnu. Okay? > > OK. > > > 2023-03-09 Michael Collison > > > > * tree-vect-slp.cc (can_duplicate_and_interleave_p): > > Check that GET_MODE_NUNITS is a multiple of 2. > > --- > > gcc/tree-vect-slp.cc | 7 +++++-- > > 1 file changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc > > index d73deaecce0..a64fe454e19 100644 > > --- a/gcc/tree-vect-slp.cc > > +++ b/gcc/tree-vect-slp.cc > > @@ -423,10 +423,13 @@ can_duplicate_and_interleave_p (vec_info *vinfo, = unsigned int count, > > (GET_MODE_BITSIZE (int_mode), 1); > > tree vector_type > > =3D get_vectype_for_scalar_type (vinfo, int_type, count); > > + poly_int64 half_nelts; > > if (vector_type > > && VECTOR_MODE_P (TYPE_MODE (vector_type)) > > && known_eq (GET_MODE_SIZE (TYPE_MODE (vector_type)), > > - GET_MODE_SIZE (base_vector_mode))) > > + GET_MODE_SIZE (base_vector_mode)) > > + && multiple_p (GET_MODE_NUNITS (TYPE_MODE (vector_type)), > > + 2, &half_nelts)) > > { > > /* Try fusing consecutive sequences of COUNT / NVECTORS e= lements > > together into elements of type INT_TYPE and using the = result > > @@ -434,7 +437,7 @@ can_duplicate_and_interleave_p (vec_info *vinfo, un= signed int count, > > poly_uint64 nelts =3D GET_MODE_NUNITS (TYPE_MODE (vector_= type)); > > vec_perm_builder sel1 (nelts, 2, 3); > > vec_perm_builder sel2 (nelts, 2, 3); > > - poly_int64 half_nelts =3D exact_div (nelts, 2); > > + > > for (unsigned int i =3D 0; i < 3; ++i) > > { > > sel1.quick_push (i); > > -- > > 2.34.1 > >