From patchwork Wed Jan 5 20:12:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Navid Rahimi X-Patchwork-Id: 49608 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 607383858015 for ; Wed, 5 Jan 2022 20:13:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 607383858015 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1641413584; bh=fTHsKLkXmDHgEaccEreh/Kr3Jw96pSmE5H9dAji/6WM=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=Rc441WzI73Lde707levt8baEbJi+B5sB4IOU2h8Hvwn7PbUy9LCxr36CE9fDxNvaJ MjvTNN94R89ME3y3ROd7Xejztd58ANdmMY+8U5js7z7BWr1fto/fzxTmuxiI48Jy9O uZBg1THHX9InyUZxV1lvHiwzLDv7FDFhv5+SeF/w= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from na01-obe.outbound.protection.outlook.com (mail-cusazon11020019.outbound.protection.outlook.com [52.101.61.19]) by sourceware.org (Postfix) with ESMTPS id F0ECB385840C for ; Wed, 5 Jan 2022 20:12:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F0ECB385840C ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YwYANE6bd6KheaMy/J2zlBUj+B0NN2LUoItz2Q7UK7ZHaZJAeGsimLtx4BXHDIjPycKEZHgFPdb0WZYZQrkST8WTk0d3dFY0URcarRpwMyHHHOyLqQFz2K70mZXS6OhGwJCSPZMMs/9BejnhQpyTeBmXxlcdRHru3TQBcEObpO6p5A0Mo3QH56EK7bzf9F2IpunWP7hPMP1gvdatLKUYQDjTp3T10YEMYltbOLMXb9Z8VcE168mS5mSjH5AvoIinye+eShQq1o+9M29O2rH9HVIs7hKY4Dxvp78cBj6H0NI2vloiZoTH5wdbNo+4DevU5vyY+vIJQGWODixyFrP0cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=q6tbqRQmUDeUSXspBPvzFK1LhcdiG2yc/x7BEatMIEM=; b=ocbalrCXqb/p0p25Ecfr/fB8SlShqgPPGPN5um9F+E+PjBnU5S5HlRC2GGnugV0PYahsga/QXSIz8C5ypccAuFLxowwsSvNDaAnIXwg8H0HjEKqhFJIu8tijfp0u0ZifqAVATPwWtDNHIXqsXtcjLjx3ulqjfZwJm50BnwNDRdWnvzmID0tkID6WH5b3LcIkreal8A6FW53QrAJeANFtmBIu/K1SxsE30L0jNVfxrFLpoA4zZNKTECOxUvvUZfsMGCxvixDcZstWpXYADv2J4sIr7/I/HrOor6ISjjrUoNHskfQJ1CvuGvQpW3SxT0IYlY7DaiIMEFc5ppqm1pXBKw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none Received: from BN6PR21MB0162.namprd21.prod.outlook.com (2603:10b6:404:94::8) by MN2PR21MB1391.namprd21.prod.outlook.com (2603:10b6:208:203::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4888.4; Wed, 5 Jan 2022 20:12:31 +0000 Received: from BN6PR21MB0162.namprd21.prod.outlook.com ([fe80::25b3:b5ef:bc86:4839]) by BN6PR21MB0162.namprd21.prod.outlook.com ([fe80::25b3:b5ef:bc86:4839%4]) with mapi id 15.20.4888.004; Wed, 5 Jan 2022 20:12:31 +0000 To: "gcc-patches@gcc.gnu.org" Subject: [PATCH] tree-optimization/103514 Missing XOR-EQ-AND Optimization Thread-Topic: [PATCH] tree-optimization/103514 Missing XOR-EQ-AND Optimization Thread-Index: AQHYAm7REjcKKa77J0StVNz+EmutiQ== Date: Wed, 5 Jan 2022 20:12:31 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=True; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2022-01-05T20:12:28.532Z; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=General; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0; MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d761d387-aa28-4344-504c-08d9d087b440 x-ms-traffictypediagnostic: MN2PR21MB1391:EE_ x-ms-exchange-atpmessageproperties: SA|SL x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5797; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: q+a0yQtQ6vxUeh5bjX0xBKzEVqSPjf3fc2e4/6XGx6Ve39ySN7a/9v0nKNVAX4a8bFy3e3bEZWqhwJkvqVvFyy4PG92FkY6QwFabVu4eITN82WMzo4elxEgWYIaDdNKN7FEuQArikMY6zS7u7VbWqYgDrm7tvCS446CdEd9eaNhb7+OYvh+wtvthSKK3DKCq3d+wsjDxPGCdav/bnWmymvta658OqFT27Gx9GY4YIQLvcUvf4B2+RR4RK32gKbviByOlES8dE+6YGsgvAD+SCrwqhqOzYhj42rTH4zB7/KFVjMD18OS8Xj6Chjwf+X3b4WjWJFoA2sTcMLjJQ8olB25xbcudsSOMrKY1uP1p73PZHeUNObzkci8AGLOcxrTWHnezhXgHbzEDjKXaYfriy8HL/ezuM3gZM4QU4pPfNR81fOqREtNea9FcTaeA66HoqshLBtaRapkhX3EQok+boaXILONUFmFEdUOkh1B45p1m5w2ASTNH1Y8XBD1AW15xqqPzVcZ5FJEoHowtO8BJURfuGvsI29asC1c5SdkRDf805XSr1EDczvDr1tfwxjl6b5hGF+Kk3CL+TwTmnbBbcJ0Jc8nzPn9tfMYBHQdtdOGr4P0q8P8r6hkxs0nlJDCj/7bHj9qnV2AIPR4sD56M8uiwW4sm5GoehHcAgS07jFqZYGeZ8ZZ2EEKTUdIfu20JJjPqk27JlTSsPPnmPezUinm8xl+YON4JrZnPtlvs6IYBuub3VbJEmrqIA66yWcl5u4N/AVj6UUPwYCo0n3LzYrzUSa+ojvauUDk1I86Ko1T6mRfV08+p91zNuC7mnU0DWJMTUamp0WWluezmVPOGGA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN6PR21MB0162.namprd21.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(52536014)(316002)(2906002)(66946007)(186003)(6916009)(84970400001)(7696005)(8676002)(6506007)(38070700005)(55016003)(9686003)(76116006)(91956017)(8936002)(99936003)(82960400001)(82950400001)(64756008)(122000001)(8990500004)(66556008)(66476007)(38100700002)(10290500003)(966005)(66446008)(4744005)(71200400001)(33656002)(86362001)(508600001)(5660300002)(20210929001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?UtnwR7a1Qe9hkdcE5kke3TA?= =?iso-8859-1?q?TA6+gKS69p70o+DOdkuURTadkJOgZ1JgfpNpvfqRDwWyj293hbsilHmhCuSD?= =?iso-8859-1?q?ziVOA9QUTLwYGN64IPTWbuPXZBM5npmvx3SbnU0SErTr+8GuQLfKP0+ePGUE?= =?iso-8859-1?q?XjG0+4p4AlchMR2vt6v++CAujZJjweTrp3nTeYquIghO0H1M28KW+2vsXkJI?= =?iso-8859-1?q?qP8+jhJUvxg+2rDBU5lFhLDvOgvRd76Zjua5WcvH+MRDkvxG+ZpDJq/VnzAz?= =?iso-8859-1?q?BTKG3uZbcDxFlgsdNGQhuxK3hNWT+icgmUJNoDiEZJg2++WK6DkCIn+swMYW?= =?iso-8859-1?q?y8elLUOTqJqnQbyFv8YPE8Nsjflaju0ldho58D+9rMoXaNnuf9zrYYnq9dec?= =?iso-8859-1?q?IKzNCuSU+/+xSX4tS1j85g3hliridtmXMvz0+CMx+RHTUV9al/ZkNbnwprnR?= =?iso-8859-1?q?hamRCyI01BpEyVm/5DbCg/u55KUDcAJ8Tad+tjPHNY5vbYWk/sRN0NaF4oiA?= =?iso-8859-1?q?0dlaywMdPXn6IhTQZkE9OuXz7NHMJrvMFB6dbV0q0+KdZR9AAiDHfRtjY4QP?= =?iso-8859-1?q?VttfGXREurd9BRe7PMv7E0qh+atKgKUbMqpiOozs8lVhEyAhnbQTt84kGzQ1?= =?iso-8859-1?q?x9yBJtmS4nLfvg6W4yRDDRFNWyhb8buZUbNsRh70/W9B6J0/DMQPQVx7BlPS?= =?iso-8859-1?q?4oSNwDT+8mgZDcCybSA+UGW6iK1TygaiGlVXYg9Rl0DFWEBZp5kv4JgTM2Yq?= =?iso-8859-1?q?87nntTGAeYhy4GqHUoxBFb+iqp4GpGbR1b2L8fsrjWlZJTygqPZVNsKFoVzJ?= =?iso-8859-1?q?GKJfAqPgO3o4rgGDcy2cA29zOja2MsjBMuF1h1NhnxTijPJmFa/Vq3M/GgbT?= =?iso-8859-1?q?yCj3HXovz2qTB5S61IRKF6n6Ecshphjo2nnHMdpB9Ovddb1Tcv6QHpLRwhVJ?= =?iso-8859-1?q?NGTr6cYCV60boZUrW2ho1Yq4wqSqMBRS4SRSeyoxldzWKDxD3XTrprxM7HEf?= =?iso-8859-1?q?Zd+pGTxcJt4GZNlkRO5XIP4O/SRkoC27Kcj31ZY0M5AyRERLJAEEeR755PJ+?= =?iso-8859-1?q?Ks6Mc7GkfbVJJCrdhaxCZX/Lp2/wIY/gLHtp12ixhNC3kiJmzcrearKwBhM1?= =?iso-8859-1?q?clUZmu2cB/nkBshSvw08bLuRlDmCcOHaMutJFuFHQf0Imbi9dyjyFjfCnelv?= =?iso-8859-1?q?eI1C1xcPQ7cSQiJT5HNryHusTL8NBptK/0PDM8JnnraL4pXzZbSWM4ER0vq8?= =?iso-8859-1?q?SK8cP2746HpRXtnYdkNdtla7bhExds2A0S1VbWSFLpFG4RKUhHHVD4SdMaHJ?= =?iso-8859-1?q?uoVaT+ksnFNIdLX9adaCQYMaVK+/Smk3BkTIXtqbAmBd/wKAfJ1+Z7yfck/u?= =?iso-8859-1?q?PG6uGKu0ZvZ2FJ8L/1kmw2/WcnQrZPoPwAlMhmZg14je4bzuN8d3EtfDxnZy?= =?iso-8859-1?q?fUQbSxNVYr+mZ6KyJFTuHlzXsZ79E8XQTsNaLPAU2NppoXtKWCH5B/++udHZ?= =?iso-8859-1?q?uA6DsusH54cnfutLMMHiCplwtDodM69ADtg+GdNiPJ1TCPrjCAavwd71oe+q?= =?iso-8859-1?q?0IkiqT3wkf4AP9uoWoh/d924SmMtApV14wFHFM06NOxF1PKbVI/sVB7UFn4x?= =?iso-8859-1?q?Tfdc0+Qmh6pi27yMH2u57rviz6R11ia/gjdjvW2E0GqeNbHL0tVkaBTxkDC0?= =?iso-8859-1?q?Cdq9UG06A15OcYOGk70p5f+KM08Eq03urMm2di655Ow=3D=3D?= MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN6PR21MB0162.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d761d387-aa28-4344-504c-08d9d087b440 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jan 2022 20:12:31.1812 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 1hQWjocPm23INdXEiwCMYOpga1S17F2VVIWTRXFvTBjDVaI+puhJrQenOLdPXQ7cxZgSCRq1Oo3oTgjStmboxlAWsO/gZ/WPylz5LOLNYJ0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR21MB1391 X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Navid Rahimi via Gcc-patches From: Navid Rahimi Reply-To: Navid Rahimi Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Hi GCC community, This patch will add the missed pattern described in bug 103514 [1] to the match.pd. [1] includes proof of correctness for the patch too. PR tree-optimization/103514 * match.pd (a & b) ^ (a == b) -> !(a | b): New optimization. * match.pd (a & b) == (a ^ b) -> !(a | b): New optimization. * gcc.dg/tree-ssa/pr103514.c: Testcase for this optimization. 1) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103514 Best wishes, Navid. From 7bc34478cc3a494bb634625281b5f03e43f210a9 Mon Sep 17 00:00:00 2001 From: Navid Rahimi Date: Wed, 1 Dec 2021 00:00:54 -0800 Subject: [PATCH] tree-optimization/103514 Missing XOR-EQ-AND Optimization * match.pd (a & b) ^ (a == b) -> !(a | b): New optimization. * match.pd (a & b) == (a ^ b) -> !(a | b): New optimization. * gcc.dg/tree-ssa/pr103514.c: Testcase for this optimization. --- gcc/match.pd | 8 ++++++ gcc/testsuite/gcc.dg/tree-ssa/pr103514.c | 33 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr103514.c diff --git a/gcc/match.pd b/gcc/match.pd index 0d7b8dd1334..df55206d2ec 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1768,6 +1768,14 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (negate (nop_convert? (bit_not @0))) (plus (view_convert @0) { build_each_one_cst (type); })) +/* (a & b) ^ (a == b) -> !(a | b) */ +/* (a & b) == (a ^ b) -> !(a | b) */ +(for first_op (bit_xor eq) + second_op (eq bit_xor) + (simplify + (first_op:c (bit_and:c truth_valued_p@0 truth_valued_p@1) (second_op:c @0 @1)) + (bit_not (bit_ior @0 @1)))) + /* Convert ~ (A - 1) or ~ (A + -1) to -A. */ (simplify (bit_not (convert? (minus @0 integer_each_onep))) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr103514.c b/gcc/testsuite/gcc.dg/tree-ssa/pr103514.c new file mode 100644 index 00000000000..5942ad37bf0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr103514.c @@ -0,0 +1,33 @@ +/* { dg-do compile } */ +/* { dg-options "-O -fdump-tree-optimized" } */ +#include + +bool +i (bool a, bool b) +{ + return (a & b) ^ (a == b); +} + +bool +j (bool a, bool b) +{ + return (a & b) == (a ^ b); +} + +bool +g (bool a, bool b) +{ + return (a && b) == (a ^ b); +} + +bool +h (bool a, bool b) +{ + return (a && b) ^ (a == b); +} + + +/* Make sure we have removed "==" and "^" and "&". */ +/* { dg-final { scan-tree-dump-not "&" "optimized"} } */ +/* { dg-final { scan-tree-dump-not "\\^" "optimized"} } */ +/* { dg-final { scan-tree-dump-not "==" "optimized"} } */ \ No newline at end of file -- 2.25.1