From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00154904.pphosted.com (mx0b-00154904.pphosted.com [148.163.137.20]) by sourceware.org (Postfix) with ESMTPS id D001E3856DC7 for ; Wed, 25 May 2022 14:48:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D001E3856DC7 Received: from pps.filterd (m0170398.ppops.net [127.0.0.1]) by mx0b-00154904.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24P9m6eN007856; Wed, 25 May 2022 10:48:58 -0400 Received: from mx0b-00154901.pphosted.com (mx0b-00154901.pphosted.com [67.231.157.37]) by mx0b-00154904.pphosted.com (PPS) with ESMTPS id 3g93tyvbv7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 May 2022 10:48:58 -0400 Received: from pps.filterd (m0144104.ppops.net [127.0.0.1]) by mx0b-00154901.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24PEdEQC010016; Wed, 25 May 2022 10:48:57 -0400 Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2102.outbound.protection.outlook.com [104.47.55.102]) by mx0b-00154901.pphosted.com (PPS) with ESMTPS id 3g93tu0bmq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 May 2022 10:48:57 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZKFHXCQsZ5nB7ZZ2aEUZ85z6Nos8bpFKdS6de3VmOxkeOT58m/LVkP6R7EivTD4Y7quWemVsR2bxSPLIsBYLTJIRR7LI3+sHiRSH5qpd+1A+K/O1seNyCT49Fa3Fx4DJ96c/QDbUBHQpaTP5teGh/Z++Jb7T89G2v4irLZlMfRl+Lrob5k5orWdGsgGqI1aI1cBpDrl0EzPzf6/92YTzKwka2Q3HrddiQyRt0pSsH4Cf2mlhOsiFWbxczIqyRRYSqorOor6Yuic3lzh8zO4TBoEQ44A2ujVu9RZPG5fS1cdVHN8wZsXsrMkCOz7RZb/ihw6la/ZvVrWVcEoAxH35qA== 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=ia37dt8UC+u3dQUotxwNZfV+i0p40uEHsNe1Kn57wk8=; b=PDyJi/jivFL6TwuoYCGre1pqItsh1fR/4pYbXNNJnfD9mSuztDWFs4JlJdMb5GXTXxOKwdmXMHP7hftEW1BVGAPIRlXEl27MkkS54N8cmasPtfXP4hPQ0OdCVwHhSlVppJKfl7dh4jl3sIP+F/Mh0ENiIAlKSljWTZHoxW+vhqNj3war51GaGr2p46s1NxzpYvAmNuBxUYRVfK5PK4waXC5XTcL4gjPUn00niuTXaIJCM46LWK0dTiVJvajQMhm57MhyLh+JKsWjmlCkNC4yUSIblJxZ3A6Geo9eFvcjeyNLevgob6ajkIYgIa4MIeAP/uZg3NHZi8Fu2m93E/hZUQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=dell.com; dmarc=pass action=none header.from=dell.com; dkim=pass header.d=dell.com; arc=none Received: from SA0PR19MB4508.namprd19.prod.outlook.com (2603:10b6:806:b8::7) by BN0PR19MB5328.namprd19.prod.outlook.com (2603:10b6:408:15b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Wed, 25 May 2022 14:48:55 +0000 Received: from SA0PR19MB4508.namprd19.prod.outlook.com ([fe80::f1:cf7f:5eaa:d7cf]) by SA0PR19MB4508.namprd19.prod.outlook.com ([fe80::f1:cf7f:5eaa:d7cf%9]) with mapi id 15.20.5273.023; Wed, 25 May 2022 14:48:55 +0000 From: "Koning, Paul" To: Roger Sayle CC: Richard Biener , GCC Patches Subject: Re: [PATCH] Canonicalize X&-Y as X*Y in match.pd when Y is [0,1]. Thread-Topic: [PATCH] Canonicalize X&-Y as X*Y in match.pd when Y is [0,1]. Thread-Index: AQHYcD0P/bJIrAHrW0i6Hi9+hZ8FZQ== Date: Wed, 25 May 2022 14:48:54 +0000 Message-ID: <7B23C596-B050-4582-A704-5AF4C6B556F0@dell.com> References: <024f01d86f75$d40ae450$7c20acf0$@nextmovesoftware.com> <686E0561-904A-4509-94DA-661533F593CD@dell.com> <058a01d87045$37026db0$a5074910$@nextmovesoftware.com> In-Reply-To: <058a01d87045$37026db0$a5074910$@nextmovesoftware.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3654.120.0.1.13) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5c458cd6-5e7e-4d3a-a570-08da3e5db112 x-ms-traffictypediagnostic: BN0PR19MB5328:EE_ x-microsoft-antispam-prvs: x-exotenant: 2khUwGVqB6N9v58KS13ncyUmMJd8q4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +Do9tpLHFY9KPR/nOHOc4r/VgNFiTqGPECkKp962mo+kTalG5X+aRTJKgS9jREmgjer1rdk2Y1We1Jsb3+fXs0xOoGuRpJLV8/gprQeZdUGbLKPfy+WXmrBx8nVe+VHu3gdPQQ+kSnQwejk0XecDdmXtGfiOBcqKDzjmJAtZg1/1jAfeRlO13VHqQYzu50q0AJiNOSvHvIdKYbVhwj1idDFqiEBiscQ4EdKWc4P/d/KHQT7yHM0x1BbhZHoq1EOM3Hn5yNtYYreeXeCCnz/GeiAoc2Hx3Mu5mEmlgTB2L3nl9QkElxtj7dg6gEg3Wnv2TGZMGoPxFVZ/sRUQl3WBWmXt0FSe1v+STpNvuJLlZ1pvORI/MlsjCVzQ1yAi0VVnJAJvmw4ZYpTwb060d1xbJKLYkaQjAEAzW8kttt8WS1zZD4GPpknUNKEv7mhe4rQWWALolwj8CC0mPWuAaDQdlhrnyk3tceO/z1hqooNCjrQmEcee5EWpXcW1zVYyv62mx3yX9LmvEGU6C7xlB0ldJmy+GKjvYlEwS/VYXIwSQQZuCt3r7+YARndNyxQK+xDOpaqGUkQS5L8HlDR6JyoP77ERyNJ/mj/DfO3F5hNQq0IBXg4ftfCQbumpfNfr/bse0wf1z/Hv+KsHwTQdM2+lmuwVuB1bZ6gPsGG1j/Qi0Bed6fis5Gk0GREze4ZRcLtxP0SF1dfyaSGGnVFgMbnqG+lrLqEAM1Zv4//zINJk7Nz2qhKSg7R8jIkUvJxaNquD x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA0PR19MB4508.namprd19.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(6486002)(316002)(786003)(2616005)(8936002)(38100700002)(122000001)(2906002)(6916009)(54906003)(53546011)(186003)(66556008)(38070700005)(36756003)(64756008)(66946007)(6506007)(8676002)(66476007)(91956017)(66446008)(4326008)(26005)(6512007)(86362001)(82960400001)(5660300002)(33656002)(71200400001)(508600001)(76116006)(45980500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?fbuPU406BMfLQ1XfFXfQ5N4gx1yqHH6jfQlG4G0Skvx2e0eW+BGrhKlkL2by?= =?us-ascii?Q?eMoI2bDa7JZ9OkyXMuUQncwpXu+1Q9rluzhy+Y2dzgaWhRABchp5rhSYbRcf?= =?us-ascii?Q?33AXA8NpgOkKviytFUz0NRo5wLYLoLygmngefi4oRBXdB5OnVvmvLAkJCorP?= =?us-ascii?Q?4FdsAviSrqVn3bZWI3kS2r1RsiTL2EHsYWvBnMBbNfxg33Oc0I+rB2mxgxvN?= =?us-ascii?Q?o7drqOdw5Lt61T7GtGfwgp7aPNHUiZnZ0R1qUepnaAl3Xd9DZFd1YNVwVNBy?= =?us-ascii?Q?W2NJMiJsP3CxTs2F8VW/q2BXSoRs4+dk0j/+CTo3ES2EoMTkm+yFXWB2AXuE?= =?us-ascii?Q?3OVx+oKC0RC5hK7YY72rQV5ikLcxl/QbPVsdyFY7wnCKDkssert/tEPmsXBp?= =?us-ascii?Q?BrBkBqgFpVEXZSAfbKNapqq9K0ibaBjsVm5dh8gMZNkWyNd0D0CsH1gxgsGU?= =?us-ascii?Q?bgkTAESOckmo6yh4wLMC3ncR1u6aLfVDForU2HUaHtj6D+0x96mmP0EHEvB2?= =?us-ascii?Q?Gmy0bpi5Jgd3TpBxA9/+K39fT/2JuWR1kX1m0sdn7VV7rx/mK0CNNLpaRDl4?= =?us-ascii?Q?nVc71nhdvRcRCiCdlo2OYrCL3dHffww+Qs/RwTr8I1DCIb6CTCwQ3aZV1Byg?= =?us-ascii?Q?eqwarFGuNxjaHuVTmmFQa6xspg+UbVaOd1g3VdWslR7bNL2S1sY7HvkVXmKO?= =?us-ascii?Q?vwDzF/x4NxDq4Ox3WMlsIcgAyjZwbb2vdIBh5cznFdOIX7DN2OIGaSIDo4x0?= =?us-ascii?Q?7/LbOEK5hnxpSgvHBevikq+uS9o7zhXc76iofO41yZbx1zDbgL1mv6ooXtW9?= =?us-ascii?Q?52yVlDbGyaOxGk/wySIsSpHP/2icdF+tGxcJGBuhooEe1mefc2RWzd7T/TYv?= =?us-ascii?Q?6Gyd3HoChk4q1LbhOiHLbVvxRYQGTURkBwxJU22AqTMJi8dVbvT81lxQHqSr?= =?us-ascii?Q?Ce8m634udFXFmPCtvwthKyaRu4sK7r4o2j2BCX24zasnJWXcALw/oq9wRFle?= =?us-ascii?Q?j0VUQN4N5meCsFtV4N0IWpyEbRV4o4RqBd9a/mJavyJ6KGlsCMJ+9OUSxWJR?= =?us-ascii?Q?aDKvfTrEJcf/COIN1srOJzjL4bCAsVTKcWfoC446gbWt7tLIVWlUBS4N6mCe?= =?us-ascii?Q?8keIMU1RrxukqN1OU0EGFtcxNsSSYaHqyt1woEuoLR3kZnGT8RBkeZT675st?= =?us-ascii?Q?Gma1qKr9jSKMSOoyTPS7PqK2toSyBjBihlJDG6G9G29QESwuARl8+9j4VUMw?= =?us-ascii?Q?bOs0Y2G74P5nAownt11FgkJzVWBOOplkrhx9PZZqSiqp5PAieWCXeA+ub7zv?= =?us-ascii?Q?age8ikvGpMzAm5fSn9aOb2fBBjHOVj0lykw1DoBZe9SB2pJn1sUY1OpjoXE9?= =?us-ascii?Q?LDwQxY9EmBPERG+PLecUKkfgO9Pr7H3kixgV6+HYeY2uy3XIero2naCx9fPi?= =?us-ascii?Q?xT84gh5QamrfEW6ZDt3FKwpWjecezikfb6exdQxY4sywwcIURRu4wRa0x+Et?= =?us-ascii?Q?aBeXATBJofFqZ1X+SKokgGVEeRvrzUm9+MAcMYs8tRiOevF+0+3hFdoU0XWw?= =?us-ascii?Q?Hw8QAB0GXLjvu9sr7ZkLnDAhHskcjvZrrT2qyPfzpjWN39WRmFC107GgT5j7?= =?us-ascii?Q?UsF2S3EeH7b3j4v9bqXKB6V4B5/Cpz6yAhCvi4DRC0E6gJCg5xz7LZcX0IdR?= =?us-ascii?Q?83va/DG40J5C6BWi9MEk41U8wfA9VpflyssBlRjlWFSNsmOmrEHSPdewXq6u?= =?us-ascii?Q?yXm5yQmeEknGYbDTpkR/pjtmAnlsrdA=3D?= MIME-Version: 1.0 X-OriginatorOrg: Dell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA0PR19MB4508.namprd19.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c458cd6-5e7e-4d3a-a570-08da3e5db112 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 May 2022 14:48:54.9547 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 945c199a-83a2-4e80-9f8c-5a91be5752dd X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: bJgA9srC0Hw2F9BWFgxa1/YwbaYwbJ9H38kxbnzco/oRtG2I9RKhBtZYI7VbLgHZo6PTlE9nxxzNaHIkNsBHOA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0PR19MB5328 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.874,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-05-25_04,2022-05-25_02,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 impostorscore=0 mlxlogscore=982 suspectscore=0 priorityscore=1501 adultscore=0 malwarescore=0 mlxscore=0 bulkscore=0 lowpriorityscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2205250077 X-Proofpoint-ORIG-GUID: CGLLXvvCjEuQ_We5SC-YShu9ifJZASTT X-Proofpoint-GUID: CGLLXvvCjEuQ_We5SC-YShu9ifJZASTT X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 mlxscore=0 phishscore=0 adultscore=0 bulkscore=0 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2205250077 X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, HTML_MESSAGE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 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-List-Received-Date: Wed, 25 May 2022 14:49:00 -0000 On May 25, 2022, at 10:39 AM, Roger Sayle > wrote: On May 25, 2022, at 7:34 AM, Richard Biener via Gcc-patches > wrote: On Tue, May 24, 2022 at 3:55 PM Roger Sayle > wrote: "For every pessimization, there's an equal and opposite optimization". In the review of my original patch for PR middle-end/98865, Richard Biener pointed out that match.pd shouldn't be transforming X*Y into X&-Y as the former is considered cheaper by tree-ssa's cost model (operator count). A corollary of this is that we should instead be transforming X&-Y into the cheaper X*Y as a preferred canonical form (especially as RTL expansion now intelligently selects the appropriate implementation based on the target's costs). With this patch we now generate identical code for: int foo(int x, int y) { return -(x&1) & y; } int bar(int x, int y) { return (x&1) * y; } What, if anything, does the target description have to do for "the appropriate implementation" to be selected? For example, if the target has an "AND with complement" operation, it's probably cheaper than multiply and would be the preferred generated code. RTL expansion will use an AND and NEG instruction pair if that's cheaper than the cost of a MULT or a synth_mult sequence. Even, without the backend providing an rtx_costs function, GCC will default to AND and NEG having COSTS_N_INSNS(1), and MULT having COSTS_N_INSNS(4). But consider the case where y is cloned/inlined/CSE'd to have the value 2, in which (on many targets) case the LSHIFT is cheaper than a AND and a NEG. Alas, I don't believe a existence of ANDN, such as with BMI or SSE, has any impact on the decision, as this is NEG;AND not NOT;AND. If you known of any target that has an "AND with negation" instruction, I'll probably need to tweak RTL expansion to check for that explicitly. I don't know of one either (in the two's complement world); I misread the m= inus as tilde in the "before". Sorry about the mixup. paul