From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x42b.google.com (mail-pf1-x42b.google.com [IPv6:2607:f8b0:4864:20::42b]) by sourceware.org (Postfix) with ESMTPS id D97A83858D3C; Tue, 23 Jan 2024 23:49:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D97A83858D3C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D97A83858D3C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::42b ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706053762; cv=none; b=aAsJlY/ZwhlNXriqIGFYwPcmKnttc/ZGQ0tGygMy2T979wSJKI6p+NYRmhxE3cQCgx8zX/vl31fsV+HSRw0jZ3Uufa7naTWep5u8lYsEZO3DBk8Lxr78s9vw63pvfVAFBdspB0ZMZRoAwDZxRNHJOoX4yUTBWJusgponi2c92N4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706053762; c=relaxed/simple; bh=eNohYJsR3VPgPZYlpAt35gDh2HmpiJn5GadiB/mLinA=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=cfc7M7Q8l1wpNQfc1kbJDnBgCxPSHryatoP5kn1COyu3pLWlSAwtMJyen8YGXHZ0rWfbJobVLG9BmJXMgwaSTViQeDz4Xk5zuWG3psyj+VdNcwDgDdcsS0Gvwu0/uk6r2By6+112jHmNZTuwG+obdyU2j1KcjGlhpDgb0gEYYIw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-6dbcdbe13e1so2733003b3a.3; Tue, 23 Jan 2024 15:49:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706053758; x=1706658558; darn=gcc.gnu.org; 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=JzZeAZGMkNoTRPBH1hh2vgT36vZRQSBu9rtXDTe5kwg=; b=iOpgOZ9BfB6bloyjWYpvPdPnrzjdxuxzzQugwqnA3a/MOS8vfivxSYFv2ySnDkK7Bj 2FMPB5/gBS8AxnYuyd67GlIB7btGMjla+aeRLNpK4wRB/4NGiC5CHXAvzoJKXycqPnsF VVFkeywRmrPs3Z8ecvxqRbt1kAAgDm/Mi0w7GwHojUqy6/3WK6kC1fC7XldD7QoHIrYZ sAofUfAFxItumXnZWHSnEQQySwarVsX8/FLcOsTRiJ0pU6a2tqaPV4HDtJ5b2ni2KcZL 1jP35J8IxolAgKIM8iK7guPoW4bytVrUpFCuU3SHIIkjdLtK4fPqF2IAc0I13X9D2wwT hwIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706053758; x=1706658558; 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=JzZeAZGMkNoTRPBH1hh2vgT36vZRQSBu9rtXDTe5kwg=; b=K3hQwSG4OltzD2tAn6VpT5DD3NyhG7zfokOoZvTyozgblBrP2WnXemEutOLSdh5VAe sBMzYoWeFKtY7fZQF2vFAR581j/Ucvo8qjgh9Ec4sQ3Qc19n6P/6EvfWd4VL0wtNdaLt vu+XJCTXNmRf4GCphvUNrO2C2fpLhL/B3EFoPEWDhZQDMiFs75D58eIHV7jM7VuM526T STbO/iQFdaOKAmO14KLVV2D8JVsCSJaOZWinl9zkQgUupnHabo9A0z6gibH2bbZby7iM V+kgwQsyWdbPvGIdakMr4ybGpyqX5YV5ksBCkDtNtfZeAk4IiOWoIgFe95Q8itDy0cSA 2y5A== X-Gm-Message-State: AOJu0YzrvjHWHIkTByuZnowICAS0dAX/vmzj7QdqBTEuoy5Io08yvE/a TrSLMGTt/2Cs2EsmngSo9fJ5t3oPCaIEx2E3kRfkFl9kQXKV5OcFDMsuQoaGze1coW2eV6Kc7FF FW63WGrsEJ3+YzDZ/guAfidVmIYfd/n06fNI= X-Google-Smtp-Source: AGHT+IECdDZgC9sFAlM8x8HOWH17g82OqFfoLrq4P3GQzpyUISyyzrVtE97O0/ZJYOlXte+/OigAeU1r0/4afVrVNjI= X-Received: by 2002:a05:6a20:6da2:b0:19b:1eda:ab61 with SMTP id gl34-20020a056a206da200b0019b1edaab61mr3051408pzb.54.1706053758031; Tue, 23 Jan 2024 15:49:18 -0800 (PST) MIME-Version: 1.0 References: <20240123205716.24C46385800E@sourceware.org> In-Reply-To: <20240123205716.24C46385800E@sourceware.org> From: Andrew Pinski Date: Tue, 23 Jan 2024 15:49:05 -0800 Message-ID: Subject: Re: [gcc(refs/vendors/vrull/heads/slp-improvements)] match.pd: Look through view_convert when folding vec_perms To: Philipp Tomsich , "Andrew Pinski (QUIC)" Cc: gcc-cvs@gcc.gnu.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,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 Tue, Jan 23, 2024 at 12:57=E2=80=AFPM Philipp Tomsich via Gcc-cvs wrote: > > https://gcc.gnu.org/g:b896c82f141211437b5b5b83a3537d6bd2d243dc > > commit b896c82f141211437b5b5b83a3537d6bd2d243dc > Author: Manolis Tsamis > Date: Wed Nov 1 12:27:28 2023 +0100 > > match.pd: Look through view_convert when folding vec_perms > > The match.pd patterns to merge two vector permutes into one fail to > match when a (potentially no-op) view convert expressions is > separating the two permutes. This is observable in the SLP tree for > the first loop of x264's satd and inhibits optimization. > > This change adds a check whether a view_convert will be a no-op > (comparing the element precision) and rewrites the permute sequence > for those cases. My suggestion is just use nop_convert instead and which does the correct thing for a vector conversion between signed and unsigned types. Or do you need one between integer and floating point types too? Thanks, Andrew > > Ref #343 > > Diff: > --- > gcc/match.pd | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/gcc/match.pd b/gcc/match.pd > index e42ecaf9ec7..be623d9773c 100644 > --- a/gcc/match.pd > +++ b/gcc/match.pd > @@ -9965,7 +9965,7 @@ and, > d =3D VEC_PERM_EXPR ; */ > > (simplify > - (vec_perm (vec_perm@0 @1 @2 VECTOR_CST@3) @0 VECTOR_CST@4) > + (vec_perm (view_convert?@0 (vec_perm @1 @2 VECTOR_CST@3)) @0 VECTOR_CST= @4) > (if (TYPE_VECTOR_SUBPARTS (type).is_constant ()) > (with > { > @@ -9977,7 +9977,8 @@ and, > vec_perm_builder builder2 (nelts, nelts, 1); > } > (if (tree_to_vec_perm_builder (&builder0, @3) > - && tree_to_vec_perm_builder (&builder1, @4)) > + && tree_to_vec_perm_builder (&builder1, @4) > + && element_precision (type) =3D=3D element_precision (TREE_TYPE (= @0))) > (with > { > vec_perm_indices sel0 (builder0, 2, nelts); > @@ -10002,7 +10003,7 @@ and, > op0 =3D vec_perm_indices_to_tree (TREE_TYPE (@4), sel2); > } > (if (op0) > - (vec_perm @1 @2 { op0; }))))))) > + (view_convert (vec_perm @1 @2 { op0; })))))))) > > /* Merge > c =3D VEC_PERM_EXPR ;