From patchwork Thu Jun 16 11:08:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tamar Christina X-Patchwork-Id: 55133 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 4546A3856954 for ; Thu, 16 Jun 2022 11:09:51 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4546A3856954 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1655377791; bh=nCwQvYPEyKXJ+F6zStyucz2x6L/t/NCuKDdcTh08koY=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=atV/t4+LrtCokjH9Y56YArNt8tmRXqiz/q/OZ/GUGM5uRb/uUE4heYEn8wRlqnlGN RVnOkA+1EgWufUkHNgc5tGUr2bQEEtagC+Nim7cTIm8n42ts9+RlrRMTPt1kS9077v GFG/BXZuPd3sDc+Pa7yvXg73TE27XBIcDyK5DUCQ= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00058.outbound.protection.outlook.com [40.107.0.58]) by sourceware.org (Postfix) with ESMTPS id 308823856949 for ; Thu, 16 Jun 2022 11:09:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 308823856949 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=khKbCvBwloKkelhsUzv883SEpzMCErBf2Y8bubK9rYMSllgV52OXgowAmjyxQHfjHTUk5Tj2NuuvuDlTK4RJSQiCYu/W++qPbB/6wuISKqqqC8QSNGATgs9oiRJKzOjEKwYObyLWXcSwdlWXaMsKqy9KB5uympjg3qr6j1YaJuzJAK9BUAQvnVU3BL/DoF7BKf1YM6RgwhxfXmhtZua+SwFYWoOumtQ0I9rOuYBy2QSR9UY46bFmu2xdwuBAHiKOclos4ltqwuv4c3fLhxtGmtybD99hCqU0uiLcTR/eeEKdAJjm5QCGxl9mMBbxYiWuIzAKwDgJCh8U0AFGpXEzuQ== ARC-Message-Signature: i=2; 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=nCwQvYPEyKXJ+F6zStyucz2x6L/t/NCuKDdcTh08koY=; b=bI7QbXK/vQIE0D7Hsj0AfgTduBl8V9YEER7GFAj6yJRTG3QrtT2yqbLBmLWt9MlgoeHEESVWnIP5V8nXnFxUeSdoBq+2tWnvkMd171u/79Liw9OS64Gg/InzCo0a49XtS6uuG969ibttG/V+al4n7OVyxpnrQfkOqA7c9nn8H3toxhxrvLLOEULKk29ugC7r99aCzdlVk0Sng5IVrYAIF1J+WBo9zz9trzE1AueGb2pB/kT02tu2lCCtkOGpg6nxGF9vUOVZjPT5M8RAjN4UU6d4oARI3JUXb3bNtGSg9/Ou8Hnq+FO1ATi2dcQmrO6u8prM2jL1IKdLM6Tjf3H4mQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from AM5PR0701CA0067.eurprd07.prod.outlook.com (2603:10a6:203:2::29) by DB9PR08MB6809.eurprd08.prod.outlook.com (2603:10a6:10:2ae::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.13; Thu, 16 Jun 2022 11:09:19 +0000 Received: from VE1EUR03FT053.eop-EUR03.prod.protection.outlook.com (2603:10a6:203:2:cafe::6a) by AM5PR0701CA0067.outlook.office365.com (2603:10a6:203:2::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.9 via Frontend Transport; Thu, 16 Jun 2022 11:09:19 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT053.mail.protection.outlook.com (10.152.19.198) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.14 via Frontend Transport; Thu, 16 Jun 2022 11:09:18 +0000 Received: ("Tessian outbound e40990bc24d7:v120"); Thu, 16 Jun 2022 11:09:18 +0000 X-CR-MTA-TID: 64aa7808 Received: from f65efd3e5381.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 2EB0AD88-EC44-4B74-884D-CC48DCC12698.1; Thu, 16 Jun 2022 11:08:53 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f65efd3e5381.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 16 Jun 2022 11:08:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OkZDi5WYUomGRVfxKLQJNCd5Y8yldts+YpU+i89c1zxs7bleqoUfAdoHjp/Sv4Jcp4pAxE3SB39sSeoAaeA2lGU0HpddaqL8ZYp8rn/ImgOmP5wzXBEMafphCneHbIKUdn6rdsNqeMTVka5d3iOpwTfAE9OiSQVaqy6DIFxMg+plyoGUdYPLQz4rGmpaiqa4Lrl8nHJZNdIdpnamHyTcCL8kifCh7km7z/UvwKvjJ4CzJ/qsN9G9Yhb51BT+gjWfjO6kpAEp0kB21cVjvrK+MSKcYFL/5N0m87Dl176O8kb8NJ2As4OFJWImEydl3NlSBjog9ZHmQ8SlrpmSAUV93Q== 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=nCwQvYPEyKXJ+F6zStyucz2x6L/t/NCuKDdcTh08koY=; b=D2rthKiZg9jzeaH74Y+Vink9RV624VCXtYxP+CpEMFpvvuwvKXF2X5/VmzgEY2givmnvsDQ3I5+57930eFNH+vp7XsKFHiPo5ZgaeavDQv6yHGP5to7+ETcbGL/fm+QP5Ot5hrrTGD6HNLTeacC6QRplPXOtpkxz9YswxNJtBQiSTyUHWX13J8bViZvEAPEHqk78Z8MqtzFp9zzctliSK6H8+sARmhsswOjHKyEnZsUKqMfSnkiDmu6KtnFaRarcEuCaL00PCbevPS/88LC5zpa1eI1O88wnwzZKV9POpC9bTAaxA3njlJIWhZCiJ130pUXPyUUmxaySWydaiDCf8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by DB9PR08MB6779.eurprd08.prod.outlook.com (2603:10a6:10:2a1::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.15; Thu, 16 Jun 2022 11:08:50 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::54e5:594b:e5fd:a9b4]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::54e5:594b:e5fd:a9b4%8]) with mapi id 15.20.5353.014; Thu, 16 Jun 2022 11:08:49 +0000 Date: Thu, 16 Jun 2022 12:08:47 +0100 To: gcc-patches@gcc.gnu.org Subject: [PATCH 1/2]middle-end: Simplify subtract where both arguments are being bitwise inverted. Message-ID: Content-Disposition: inline X-ClientProxiedBy: LO4P123CA0002.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:150::7) To VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 6e41db09-34ac-4b7e-36ac-08da4f88a88c X-MS-TrafficTypeDiagnostic: DB9PR08MB6779:EE_|VE1EUR03FT053:EE_|DB9PR08MB6809:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: VxvSPynopVByKvUJxQSufE8BUgYki9XJcktuUtJyBeTfrjIhuceLV7Ls9fD7c/3hWyyJkwI75nwG+U1mXdwHe5bHVGxo3yWg4Q4dS6RJa6bN3TlX/lycx9kJQYBtRpS3QXp5qdAGJxMYv018kMj6xarHtjOEug9jJmwIHkqpuZLWuVwYJBisqnlpUM0Qp6npKmhCxXY7mqMlnsrTJa49t7H676oK9YADZCpDn55Tm8AJaVw9XP7P7xDEIk71/syFpC9rg4CdIOAwPhVjkzl580ErFvL9rP4JMogDJChV/JzNVzpVqPQg/wZiqJ9OuwxTIMSh/mmRm7Ig9O31Ga8QOCklSZjc9xDKwesX6Ie5ydczKn76Aa/bmAdrPLNY+oXhZPfZIYsKUipdMkDGEFIxPf1AcYQs1rPZ4Er7WaEBRFgkY/1z5n4py+fuhHg+yymjxE3Y4IJYMhsj2R6bT8CAZpyrTKXyASVg2brznt5v+GQpvB4Mj35MD+do2xaddPTRaHlDIJ9SazkDTbwAeqLyRZxATIMLZI6cW/yPgywMqpQZZRCAFEOq1y+U+w5OUX/rb2KGDKdvabEqraRs+UVu8c0Zpgp/MasZvTM5dpSvFh/4nZocTYZlaBpC8aUMIOWSUX/UjoBw7ozRHRDu86bQw1y/XrSFhsH7BfHboYLtrR+Ea/E2oyq/yA+5FR+A+UViiud43fiG0rpxRH8C1ilciVlB9Xo2bV8l1zF1E1JtDprtu3TW6QdOVJlHTt0F8dBUHt5CR7l4rZRvg7m7YkH1btj5IjO6BiRoqb/T/oOxXxJrmZCSEnehlvA2CnjjyOMQ X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(366004)(44144004)(33964004)(186003)(6506007)(26005)(4743002)(2616005)(6512007)(84970400001)(38100700002)(83380400001)(235185007)(4326008)(8676002)(44832011)(8936002)(86362001)(5660300002)(2906002)(6916009)(6486002)(316002)(66556008)(508600001)(66476007)(66946007)(36756003)(4216001)(2700100001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6779 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT053.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 354040a6-51be-438b-6ef1-08da4f88970e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 69iS+2mhE4RMmHEPqA3zHFJeiKee+FoYfwgil1aP4M4wdwPxI7BzcTMfWGqcRVdv180ob9Cl8qczh2dYZQZdJ7eHayH88+quNWMuY6Ghmle0QLZ223/+yprKnnr/dwkRH3gZCzFiUPAVfCYssVCK6S4IesYZ3uDlxrWc7ItMSRc640vbFvRtXvb3Kr/Mz6VKRgDbsGXoo8RTdYHqV+NPDrKl9gn2r2VrkIRryS38N2icuXGN0bKMQpKg2Sa0J8GoeZr2sUSy1bPYgUSzoLM9t1BzmmO8XeyCbWfmgcdQiJxgCJcai/TZcmjKxjcTfWK51qeQba8bQ7dCMIIOnaxBlE5HKLC37Php99lAYVpKDcZZ1AMB/CwGxY/QQ9ymEQp3ySgILiHxBnCh/BQ8RCGDJgTC4VzI0NkTbgebKQuMHM3qV9IhQpLcAj6Fxk4W0Z0H8/CFH3spZhYduwkpfAdO9ZJanpZOmlNUu3xDQUuWxsC/oDqzA97y4h6DHhEMOo0kg+1yqF1W1Et7zxZToJ13AsKEfXpu8bKIq8Pfv7enBc4m7DHU6EbPWUQQKIoTsMlkrwx3xSMc2A74s/XhaLrgLafuyUrFuHCH/PwU30jdTNzDAVWqtNyf4L6YHgq3RVyAvjqdH+jH5a1zbkAD+DGjghqRSeCrMCHDPJ6vUPt2Cqz3mlqPSLIxXC2mFZ7OQ89n7yAlZZLP1Bft5eZJeb6EhqoLAQLYBOkdt4TlB2eBOHYVFVibTqLnP+4o7D984etRQmz3INERoMuPjk8i4nD8Wnw6ijnjGgfCBFFxUa6hVm5fTMnwG02Acrh5FGyXoldy X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230016)(4636009)(40470700004)(46966006)(36840700001)(84970400001)(26005)(6512007)(36860700001)(86362001)(4743002)(81166007)(336012)(6506007)(47076005)(33964004)(2616005)(40460700003)(107886003)(186003)(70586007)(36756003)(4326008)(8936002)(6916009)(8676002)(5660300002)(2906002)(316002)(235185007)(70206006)(508600001)(6486002)(44832011)(82310400005)(44144004)(356005)(83380400001)(4216001)(2700100001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2022 11:09:18.7160 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6e41db09-34ac-4b7e-36ac-08da4f88a88c X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT053.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6809 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: Tamar Christina via Gcc-patches From: Tamar Christina Reply-To: Tamar Christina Cc: nd@arm.com, rguenther@suse.de Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Hi All, This adds a match.pd rule that drops the bitwwise nots when both arguments to a subtract is inverted. i.e. for: float g(float a, float b) { return ~(int)a - ~(int)b; } we instead generate float g(float a, float b) { return (int)a - (int)b; } We already do a limited version of this from the fold_binary fold functions but this makes a more general version in match.pd that applies more often. Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. Ok for master? Thanks, Tamar gcc/ChangeLog: * match.pd: New bit_not rule. gcc/testsuite/ChangeLog: * gcc.dg/subnot.c: New test. --- inline copy of patch -- diff --git a/gcc/match.pd b/gcc/match.pd index a59b6778f661cf9121dd3503f43472871e4da445..51b0a1b562409af535e53828a10c30b8a3e1ae2e 100644 --- diff --git a/gcc/match.pd b/gcc/match.pd index a59b6778f661cf9121dd3503f43472871e4da445..51b0a1b562409af535e53828a10c30b8a3e1ae2e 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1258,6 +1258,10 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (simplify (bit_not (plus:c (bit_not @0) @1)) (minus @0 @1)) +/* (~X - ~Y) -> X - Y. */ +(simplify + (minus (bit_not @0) (bit_not @1)) + (minus @0 @1)) /* ~(X - Y) -> ~X + Y. */ (simplify diff --git a/gcc/testsuite/gcc.dg/subnot.c b/gcc/testsuite/gcc.dg/subnot.c new file mode 100644 index 0000000000000000000000000000000000000000..d621bacd27bd3d19a010e4c9f831aa77d28bd02d --- /dev/null +++ b/gcc/testsuite/gcc.dg/subnot.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-O -fdump-tree-optimized" } */ + +float g(float a, float b) +{ + return ~(int)a - ~(int)b; +} + +/* { dg-final { scan-tree-dump-not "~" "optimized" } } */ --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1258,6 +1258,10 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (simplify (bit_not (plus:c (bit_not @0) @1)) (minus @0 @1)) +/* (~X - ~Y) -> X - Y. */ +(simplify + (minus (bit_not @0) (bit_not @1)) + (minus @0 @1)) /* ~(X - Y) -> ~X + Y. */ (simplify diff --git a/gcc/testsuite/gcc.dg/subnot.c b/gcc/testsuite/gcc.dg/subnot.c new file mode 100644 index 0000000000000000000000000000000000000000..d621bacd27bd3d19a010e4c9f831aa77d28bd02d --- /dev/null +++ b/gcc/testsuite/gcc.dg/subnot.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-O -fdump-tree-optimized" } */ + +float g(float a, float b) +{ + return ~(int)a - ~(int)b; +} + +/* { dg-final { scan-tree-dump-not "~" "optimized" } } */