From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) by sourceware.org (Postfix) with ESMTPS id 4794E3858C53 for ; Fri, 25 Aug 2023 06:36:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4794E3858C53 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-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2b9c907bc68so8277141fa.2 for ; Thu, 24 Aug 2023 23:36:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692945388; x=1693550188; 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=f/elpDjgCttmEVhTl6eaiv2LKnApaKces8FjoIK8vEg=; b=k7/Dp70ukpB07XhsK9Gh/gW70UhcgKgkTOYV8M56kBEupR9D1m8Oh9KOFZoXYoJf3O rkhu1+oEF3R35m3VSEitkSPjMHjm5BxnDaWmn0meIb4OjKcz7bFgL2UrX0O761H7HpFn mirk87+K0LC7GA0oGiKp6Cf3fJVUTRwgEuCtPfIN627hY/URM5TxFnZ9qcgmm2Py2k8J c2j6Eqsivx1Sfz3gCrzmXFubIX+uyS1KGArW9XBYIRtxI/bcRQXw+3cBQ1KGjqJ8A7Mh Btgc6WBdUuE9J2mnnELBquG6McLuA8SYOfYHsdWlEf+m8/zMU5B/jq/fA5wrxhyCDs4C 2+nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692945388; x=1693550188; 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=f/elpDjgCttmEVhTl6eaiv2LKnApaKces8FjoIK8vEg=; b=bJajtGTEI5vW2WLI7OrUqkgCQ2D3SSkSgWmt8S199qMUg4ahTfFYegcV/Jj0Cotuf4 8SCQsgv5LHcemHo8/eeLY6hsgu++XsZ5vdL0YQPRwEMV7AzhxM+3R6rcx0B8QYkVK8Jb wTSPLjEYhh9s6hfta8aW2ned6IxShwwSqYU+L/Cq5nq4RmJ0FI7cUdj8Fv4M7e+v9D9W FmzMuDI9xnI++sVjHK0DmGu1YxuVJ7b/xhWz4E5QuiWW1uMUGXWbfVvAqK9ZhMKfhEgQ 3PzMev+afwNlLlDQ4CshC84h805Mn1eoAyaKLTQfhTEORLOpslTbYc/Bhq7iDn8ZsfB1 lZLA== X-Gm-Message-State: AOJu0YzbedZDLYyVTQi8muRfc3T4YEPkzAIlAuR6tbw5mmr7NUEU0qa1 7y7/+bznrafM0M8AXgvOpPQXjXs4T1MItENuixo= X-Google-Smtp-Source: AGHT+IHT5lki/N1c9Rp7BC7a6WL1oHy9Og4u0JAx/Gkv80aCbjutJUvAfzruCAd2gF8LkQW+QjwKl9BswVEJrCcZ+vM= X-Received: by 2002:a2e:b707:0:b0:2b9:f1ad:9503 with SMTP id j7-20020a2eb707000000b002b9f1ad9503mr12881748ljo.35.1692945387378; Thu, 24 Aug 2023 23:36:27 -0700 (PDT) MIME-Version: 1.0 References: <20230824191455.3547513-1-apinski@marvell.com> <20230824191455.3547513-2-apinski@marvell.com> In-Reply-To: <20230824191455.3547513-2-apinski@marvell.com> From: Richard Biener Date: Fri, 25 Aug 2023 08:36:15 +0200 Message-ID: Subject: Re: [PATCH 2/3] MATCH: `a | C -> C` when we know that `a & ~C == 0` To: Andrew Pinski Cc: gcc-patches@gcc.gnu.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-7.7 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: On Thu, Aug 24, 2023 at 9:16=E2=80=AFPM Andrew Pinski via Gcc-patches wrote: > > Even though this is handled by other code inside both VRP and CCP, > sometimes we want to optimize this outside of VRP and CCP. > An example is given in PR 106677 where phiopt will happen > after VRP (which removes a cast for a comparison) and then > phiopt will optimize the phi to be `a | 1` which can then > be optimized to `1` due to this patch. Also works for xor, no? > OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions. OK with or without adding XOR. Richard. > Note Similar code already exists in simplify_rtx for the RTL level; > it was moved from combine to simplify_rtx in r0-72539-gbd1ef757767f6d. > gcc/ChangeLog: > > * match.pd (`a | C -> C`): New pattern. > --- > gcc/match.pd | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/gcc/match.pd b/gcc/match.pd > index c87a0795667..3bbeceb37b4 100644 > --- a/gcc/match.pd > +++ b/gcc/match.pd > @@ -1456,6 +1456,12 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) > (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)) > && wi::bit_and_not (get_nonzero_bits (@0), wi::to_wide (@1)) =3D= =3D 0) > @0)) > +/* x | C -> C if we know that x & ~C =3D=3D 0. */ > +(simplify > + (bit_ior SSA_NAME@0 INTEGER_CST@1) > + (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)) > + && wi::bit_and_not (get_nonzero_bits (@0), wi::to_wide (@1)) =3D= =3D 0) > + @1)) > #endif > > /* ~(~X - Y) -> X + Y and ~(~X + Y) -> X - Y. */ > -- > 2.31.1 >