From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com [IPv6:2a00:1450:4864:20::129]) by sourceware.org (Postfix) with ESMTPS id 642563858D1E for ; Tue, 18 Apr 2023 06:11:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 642563858D1E 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-lf1-x129.google.com with SMTP id 2adb3069b0e04-4ec816d64afso9059773e87.1 for ; Mon, 17 Apr 2023 23:11:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681798312; x=1684390312; 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=s/0tk3DYKE7lj84DwRXMX/HdqJ/BU8Mvg9cMiTdYGZw=; b=A3a+4YnceLPLNYUR62f25Bq1iNgrhTV8a4T2m5DovkKRBvCBiaYOHyx0e0hqgN+lZl er2sTC4T51HfrFgR019gUCtUOvGnW04ANGaIrBKGF6Mml2ig8Wjh22cNxzM4Oktnx3sZ T2aCAa4BqmWqDRE6ZTalXcR/t7SvIeva2gQpqI2ca2CKOpHNnc1T3Kh9tKpaVvy2aegR F2kCd5enTPntbCYk8uRi4sjPzFTH03lfB6Gy0iA75vGxF8CTDn0+zlrL5QwRPuHyPZy6 EBmLSXq5/8ydaBhNHfNllzoDTPB6g+Hxww3kvKu5ovrv2+XgrLFJF6ArIUHJczGOcut6 2RMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681798312; x=1684390312; 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=s/0tk3DYKE7lj84DwRXMX/HdqJ/BU8Mvg9cMiTdYGZw=; b=Dv+Rn+gfVyZcY+5CquDmoWS9ZL8n+7mRakbpnRpGTbIGQHBFZ6mjK0gzGeTCnvOEGY oZL2+xtoBUuZUrpEhaMREy6XsAF+DHT1akHLbjAqZY4bMGMMssqLpIK6p30/x/QP+YiM bCJRpLrjcDq51vY82oU/SXTJawyLtR9KEp5puWGcVDfNDAFNm9HV745iZa5W0dudiGE3 JdibvEXy7hf+PfgwaBnqsfq3AywSxUzTiM+gucG1k915wlg+UMCm3JLKoxVY7ij8CpfJ AQ1E01Xuf7s2BHcQGmM3E+EAoHeKUnP2Mu2e0O3XgqzcBMruxMBA5XiFILQZI1d1A78z +JyA== X-Gm-Message-State: AAQBX9fVs8/7YndX+M3obLXvcr9ZUfg/M73xx+lg+J4+T7gvOw1PZNUf mP8XsP9zPfkoq9SMt4e/D5AO2AWVknPWBFLKBOM= X-Google-Smtp-Source: AKy350bFTjcrjZFHwf+4SxK3DapoMO6B3pdTUcSpNl19GdSFuTD4ChUNLLhZ+A8uhqbRj/RLWLr9fOoaqg4WBwh8Yuo= X-Received: by 2002:a05:6512:2509:b0:4e8:6261:7dd0 with SMTP id be9-20020a056512250900b004e862617dd0mr4250297lfb.4.1681798311882; Mon, 17 Apr 2023 23:11:51 -0700 (PDT) MIME-Version: 1.0 References: <20230417183701.2249183-1-collison@rivosinc.com> <20230417183701.2249183-8-collison@rivosinc.com> In-Reply-To: <20230417183701.2249183-8-collison@rivosinc.com> From: Richard Biener Date: Tue, 18 Apr 2023 08:11:39 +0200 Message-ID: Subject: Re: [PATCH v4 07/10] vect: Verify that GET_MODE_NUNITS is a multiple of 2. To: Michael Collison Cc: gcc-patches@gcc.gnu.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-6.9 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: 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 issu= e > 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. VNx1DIm= ode), > 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, un= signed 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 ele= ments > together into elements of type INT_TYPE and using the re= sult > @@ -434,7 +437,7 @@ can_duplicate_and_interleave_p (vec_info *vinfo, unsi= gned int count, > poly_uint64 nelts =3D GET_MODE_NUNITS (TYPE_MODE (vector_ty= pe)); > 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 >