| Message ID | 20260707075715.5624-1-Pengfei.Li2@arm.com |
|---|---|
| State | Committed |
| Commit | 79c77e1642030361a17b3c892a00092d8285a3b2 |
| Headers |
Return-Path: <gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0E5BE4BA2E1F for <patchwork@sourceware.org>; Tue, 7 Jul 2026 07:59:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0E5BE4BA2E1F Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=O2FhOQS5; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=O2FhOQS5 X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazlp170130007.outbound.protection.outlook.com [IPv6:2a01:111:f403:c20f::7]) by sourceware.org (Postfix) with ESMTPS id 0FA254BA2E1F for <gcc-patches@gcc.gnu.org>; Tue, 7 Jul 2026 07:59:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0FA254BA2E1F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0FA254BA2E1F Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c20f::7 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1783411142; cv=pass; b=QIO2j4Gvm52F6d0X0po6uY3E9CKRajfH2gY68DsP/JjFIMoZe8J1pu6IbrDcB+YXOleGiN4JAOUmiSdXxMUu2Za4O+mbtsBxh628yTJOtSCwsRJP99aFtTI3mkMI7FewXeghXr29HTD+sfqWyRVHOzjQCi18OPSsFEh6muYaKqA= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1783411142; c=relaxed/simple; bh=uNi/uDk4qNsnEk58CjtRNr8V4QuUK+mJdjZsYIwgboU=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=u4rs4wcoSqURpS8L1fCWgi5cLRCnxXWwEeAt17d65tc+zULFc3xmwkwAWDfP8Z2nHIFf4IjjuG+p8/tzyCoWfVjyZErh2UqQz7H/PUbC2vKUoCG0Ja0JCqUT/ksI/BT1CF2g0tYOE3MlakCiyyYB0X10XlEhYt2hfakyV8i2KAY= ARC-Authentication-Results: i=3; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=O2FhOQS5; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=O2FhOQS5 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0FA254BA2E1F ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=g+CIgh6DAocpHZhAJQb4KEdrXAxmpkhWnnPowKkGbqm6RmlByrDcfbn2W32+AAS8T2JBtNYQrLSbHjgYG8KhCkIyxdYPhFgCRKL0D2xIsnHOaStO3OqwOUMhY9rizv32ucArtH07Ixwi/BpWWlPAqRBsJGn9mtID227AULY2bARRHKDDlpqPuGptAK1yRQ7EXwTrMgvb64YPUSyrGpZKG67BWFfqBjcwx9LKJgDJoOwlv3+vxwOz5UYd0ntb2naMiEnlN5IxKmq5LygMb9n0Ac6R4jbetjtmkAj8oD6uz7XGSo30/N/Lmav2QuCVscNwYI2F92tht6AdE7znxGmxqA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=GwdZWqcG4Wzjonzui6w/BiY5lvV75o90vCXhLHMGdWU=; b=s8P7bjVDB2mn5NN8WNfFWgdq383VXkkCcesrS1UsBaYfx8I3RCaAqD7iXeBVXW2POFQp2miF+W9oF+GMbATgww/L/+jCYFXVSKcjpCoapZ28dZsDZMaeYj+DOAP5n9cuQToFwl1EltV7+n5CIzL3SrUpJMI0WmrTJikiFf83Z11Wjdz6iYMSG0YUreiVt8sLDVNeQLSwMliCtSFyaHORelTuzGunhUnNMEeqBC5RMYdkAVX8Qt0/yTG0KHCOveYoxS+oAjB5rWVs4MYlkQVhMwb9sV7puv1fGs3kDPnlEeNsf44fQaZJVTySwmqVyhkmO/AJELAMrEoW+KvCRtKS7Q== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) 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=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GwdZWqcG4Wzjonzui6w/BiY5lvV75o90vCXhLHMGdWU=; b=O2FhOQS5t7ZJn3eFwHSv1d6WE5rOTB/jdPhD53EImULPOmvwE9S9s5v0h1PTZw37HFyxwWOWcfJYtprJqRi3rq0nN3arW+ORzwH2vxPH4dKoxfwcKF5ZON+HG/jCnpqu6CjnLBZV6eoQnOmJy29Sd9hMBrFMA2owyxc41btDKTw= Received: from DU6P191CA0044.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:53f::24) by PAWPR08MB11389.eurprd08.prod.outlook.com (2603:10a6:102:50f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.11; Tue, 7 Jul 2026 07:58:55 +0000 Received: from DB5PEPF00014B8D.eurprd02.prod.outlook.com (2603:10a6:10:53f:cafe::9b) by DU6P191CA0044.outlook.office365.com (2603:10a6:10:53f::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.181.13 via Frontend Transport; Tue, 7 Jul 2026 07:58:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DB5PEPF00014B8D.mail.protection.outlook.com (10.167.8.201) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.181.6 via Frontend Transport; Tue, 7 Jul 2026 07:58:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Nb4exub+bwLZcDfVpvGYq0gD6atUmmVl40PW46i+3vLZrZyMJOqUwnvA+xSa43CU95fFFKLbvsw1YBegdDnXQlxz8yNRhudoIR4UONkjHsuhkcae+wA/hheLqDDTVeGmCgx8ALNlSXcJUTa6Ox1dffvPHrpUUiDMM3gk1jiH6h0JGD7U6vjZhSEObgfMCalwy3Qtp+PhT8FPit8e8LdbK4nG3VGdfhsTUv+WizdnpMZM126sfmpAdSRQuFlA2W/z29L47N88ZipB/yYGerB1M9SYRHxMAnupOeVWSkeR/u7xX7rZyfJ/CdWMwj05q+sptyznNZK5m58h5opEjFgy8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=GwdZWqcG4Wzjonzui6w/BiY5lvV75o90vCXhLHMGdWU=; b=G6eUtYsrL1Z9oy+BR9QHmXPUeMH6LWGbTf7JuNZclstBpFpdNTAT40FExUM+DISqEztvAEQjasC0A6OVKQ964horZc5lmL6P1upJNMIl3Y5GbWSSapyn0PWIyv2ROJ/9wWvmX6MVXg1nyNj+tf4bFr+fwyxO/iJT6MyrF1NeAUQN1b+LXn+KA+Zs+b5fvYKpBDf62svdfZL+CmuIciwFg+2y+xf94XiHrX2JxqLvVZBqheZmERZ2dbXdpvRwyFTSua8ybGcbFMqIWdQU0GJlVSR4xl9/+ckL0sw0tHTAE/GIkerbLhix+5j9elmAfNtV3RyEbD7V5P9n7SYYuBI7dQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 172.205.89.229) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GwdZWqcG4Wzjonzui6w/BiY5lvV75o90vCXhLHMGdWU=; b=O2FhOQS5t7ZJn3eFwHSv1d6WE5rOTB/jdPhD53EImULPOmvwE9S9s5v0h1PTZw37HFyxwWOWcfJYtprJqRi3rq0nN3arW+ORzwH2vxPH4dKoxfwcKF5ZON+HG/jCnpqu6CjnLBZV6eoQnOmJy29Sd9hMBrFMA2owyxc41btDKTw= Received: from DUZPR01CA0118.eurprd01.prod.exchangelabs.com (2603:10a6:10:4bc::29) by PAWPR08MB11297.eurprd08.prod.outlook.com (2603:10a6:102:50c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.8; Tue, 7 Jul 2026 07:57:49 +0000 Received: from DB3PEPF0000885C.eurprd02.prod.outlook.com (2603:10a6:10:4bc:cafe::a) by DUZPR01CA0118.outlook.office365.com (2603:10a6:10:4bc::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.202.9 via Frontend Transport; Tue, 7 Jul 2026 07:57:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 172.205.89.229) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 172.205.89.229 as permitted sender) receiver=protection.outlook.com; client-ip=172.205.89.229; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (172.205.89.229) by DB3PEPF0000885C.mail.protection.outlook.com (10.167.242.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.6 via Frontend Transport; Tue, 7 Jul 2026 07:57:48 +0000 Received: from AZ-NEU-EXJ02.Arm.com (10.240.25.139) by AZ-NEU-EX04.Arm.com (10.240.25.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Tue, 7 Jul 2026 07:57:46 +0000 Received: from AZ-NEU-EX04.Arm.com (10.240.25.138) by AZ-NEU-EXJ02.Arm.com (10.240.25.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Tue, 7 Jul 2026 07:57:46 +0000 Received: from ip-10-248-139-167.eu-west-1.compute.internal (10.248.139.167) by mail.arm.com (10.240.25.138) with Microsoft SMTP Server id 15.2.2562.29 via Frontend Transport; Tue, 7 Jul 2026 07:57:45 +0000 From: Pengfei Li <Pengfei.Li2@arm.com> To: <gcc-patches@gcc.gnu.org> CC: <rguenther@suse.de>, <jefflaw@qti.qualcomm.com>, <tamar.christina@arm.com>, Pengfei Li <Pengfei.Li2@arm.com> Subject: [PATCH] match.pd: Fold SAD_EXPR with identical inputs Date: Tue, 7 Jul 2026 07:57:14 +0000 Message-ID: <20260707075715.5624-1-Pengfei.Li2@arm.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DB3PEPF0000885C:EE_|PAWPR08MB11297:EE_|DB5PEPF00014B8D:EE_|PAWPR08MB11389:EE_ X-MS-Office365-Filtering-Correlation-Id: af19132e-d907-4608-8337-08dedbfd97a5 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|82310400026|1800799024|36860700016|376014|23010399003|11063799006|56012099006|18002099003|13003099007; X-Microsoft-Antispam-Message-Info-Original: RjuWeWVRUhR0765qthdLWIATr1Ik3O/sTQbJUOSriaOFYzxyDzwbfNgXIYVVLXqTEuzj4ObIp7OXT3LP4QnzA0OSa/Nsxy1oCs+lZd7kVBzEhPvk7KJbvSMJ0gGMS0RXN83EGE6AUS8FRLXgsch0464RMc6J/GZZj9+IiueVIDRW86rSXfREcJN4M5KSKtzObdi6DCFjm8MJsuIrMUnGA/3nwCn+5hOYeyjNFwf6ZVQQReB3aiFcFNuCXjkkyBTuhaoDCf2SbcI8mfg7nlskGptD73EGMptK1ZmZu5DQC/onEjFUU6P7mWRK/sl99UghYo1EQe/oR9Q1wyc55jWg01sksdMkf6y1mRySHZHRXPmQ+GO8EdbrqN2SfaUnjaRF456GGLb5CjDqZuTQ/I7KALeBCpcQ55DTaHTmH3GLD+276cfpeRnAaHOwm52zYNDZrQe0n1ffraBNEDaAxIale8q8kGg7Xjs3hWpaAQT52ftXy8hP4iDQ1W9uu8DUyf3V2BzCX4ISrRKbzKKyYujMfTmizQ+MTb+akQ9CsHjzhtE0L7M1PUN4wVoCwnJCeXwyz5MbMlnj9BCyLA79tLDDosje8WIz2Xdd3Xl8yepv9M5AbUQqeN77VfQF6bG/xX9Mu1/A1gDXpfV6tpU8wlvkpXww/FJXtlI+dNgZNpV3n/M= X-Forefront-Antispam-Report-Untrusted: CIP:172.205.89.229; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(36860700016)(376014)(23010399003)(11063799006)(56012099006)(18002099003)(13003099007); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: LEfcfv9smflVfy5GIpcEtNHMjmvuqF1ssjYqcFxc5C8UemRsAFs30QzQnVLcN0l0e8IWTuRVl+YmULLvj9HnisNe5X2utr7JnYC1qKiEJkepDJGas6BVAF7k5nGlHqU7NKdhRo6cVMBwuIQSDKDzXLTLCeqkNK/FWsH2gzsfWnNN89BC/WSuAZUzV2IbIKCZ5u6k31O8/+e+b85Q42+B0v/xfdx81MWK7idLU2FfDNM1qDo9ObsyqKQ56CsFoFC4xgleqbkpozlJfx+WbeioWxbXxjUMGZiAlCVSFMI6dQrbFn3qhaghAXtgzlXWWYKoh11MtXCwe31l3h9uPPXvrA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB11297 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5PEPF00014B8D.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 1bfcfd07-dc77-40d3-6b12-08dedbfd703a X-Microsoft-Antispam: BCL:0; ARA:13230040|23010399003|376014|82310400026|1800799024|35042699022|36860700016|14060799003|18002099003|11063799006|56012099006|13003099007; X-Microsoft-Antispam-Message-Info: m+mt8SzLTJgNuGFwXaIGlgSYnczQdKkY956q2qE63EW9hR5atEr98YiRb9VlS3xJ4io5whC+mFcWGVgsLKRKaFupNP7xZZwoCC5Qkp5WZt42n0ED7pic8FjsW9KmJefreIRLJ+Q9BariWKl6HhxfO0jKv3/E8ON+fM7f1FP1QHABfWKk/xfVq4iMpfAJ5kJx0vktHTOq3+Wg1DR+R8lkdSVj5jwTn6YS8nqfg0IUONiDGIEaM691J7lfxo1PI+/MLittS0N8lMjIuwJo9YnewumBuiUe/j8cWW8P7oFXHOFB0wY/KiFRqQB2ELd8IJl0ucsdRpJaeKVXrOiUQQBGnCNJP0111FKByZBRbDJdJ/7zL1MZ9kWJylPjlmLfIjJ1LT7s0lm4ZPnwQonT+JCV9t1z1feC3h4h4KPy7+chD6ZNmgxG/Zq8q9EkQblhcp5/SSj/x7DqSmtleHrHg94PvWbJtPNsut6Ln7NadWHXhhYknAG/6CjupbSp0GOUSzSJ4w4DCakI3uL4QpjTwtyjbndXFpzorUO3Xeh5i+HtdXtY+HUULwqFP84cWKZB9Wr8B0Z7GjIo3p+8IzzjwpGfWrMF2O4UfGsSnRwNlevpRFSmDA+MwbmOm2rzUPUU5oMQPzjiWr6VA4jPKM6KCQhPzNeMSLQQJ8QBK+bKqxAONbg= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(23010399003)(376014)(82310400026)(1800799024)(35042699022)(36860700016)(14060799003)(18002099003)(11063799006)(56012099006)(13003099007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: USoJ5/hIm7fss23RS0UiqsJ7Dx1wJY+m9pW6RrpmhqhU0E0dx2aTJa9gBCxwCFxVJaiYQwgYZMydDo4VGZi05vtD+6KBplsGrrGR2dJWioFqHxZ52ESOStSdOGwJRyx/NJfPETktp7wTmQsgqlxa37YUxKk4x1mrqEdO7NjWuelPL27BR1rlZIAvBo8lhXDZQdilhOaBkJpMnbgUM/71LFf7+X1PBNf93uVADjPyBStLn6F/Iv1wwMTt8E71owjV/rAknrE+HRk+DwPjPSO8X2xMf08rZNqqWdkdsMauuIACpTi2nmP2rg6sunjXby2qmxIcGBXVAduGCtnnrdH9ZQA2Xm7Fxs5BSDRj0x7AVCOJZTg6WY+zVu1bY74jmfnqeJx99nGv6r7CBy+h8fCYbgRCSY8k5SCR8EcTZejzoCKGrz1jO2OEz8ugoL6eGtr2 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2026 07:58:54.9607 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: af19132e-d907-4608-8337-08dedbfd97a5 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DB5PEPF00014B8D.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB11389 X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_NONE, TXREP shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org |
| Series |
match.pd: Fold SAD_EXPR with identical inputs
|
|
Checks
| Context | Check | Description |
|---|---|---|
| linaro-tcwg-bot/tcwg_gcc_build--master-arm | success | Build passed |
| linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 | success | Build passed |
Commit Message
Pengfei Li
July 7, 2026, 7:57 a.m. UTC
Normally, SAD_EXPRs with identical first and second operands are not constructed, since the absolute difference value is zero. However, this can still appear when vectorizing small iteration-count reduction loops with an absolute difference operation. This patch adds a match.pd rule to fold the redundant SAD_EXPR to its accumulator operand. Bootstrapped and tested on aarch64-linux-gnu and x86_64-linux-gnu. gcc/ChangeLog: * match.pd: Simplify SAD(x, x, acc) into acc. gcc/testsuite/ChangeLog: * gcc.target/aarch64/sve/sad_2.c: New test. --- gcc/match.pd | 7 +++++++ gcc/testsuite/gcc.target/aarch64/sve/sad_2.c | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/sad_2.c
Comments
On Tue, Jul 7, 2026 at 10:00 AM Pengfei Li <Pengfei.Li2@arm.com> wrote: > > Normally, SAD_EXPRs with identical first and second operands are not > constructed, since the absolute difference value is zero. However, this > can still appear when vectorizing small iteration-count reduction loops > with an absolute difference operation. > > This patch adds a match.pd rule to fold the redundant SAD_EXPR to its > accumulator operand. > > Bootstrapped and tested on aarch64-linux-gnu and x86_64-linux-gnu. The pattern looks good to me, but I don't see how the testcase exercises it? > gcc/ChangeLog: > > * match.pd: Simplify SAD(x, x, acc) into acc. > > gcc/testsuite/ChangeLog: > > * gcc.target/aarch64/sve/sad_2.c: New test. > --- > gcc/match.pd | 7 +++++++ > gcc/testsuite/gcc.target/aarch64/sve/sad_2.c | 16 ++++++++++++++++ > 2 files changed, 23 insertions(+) > create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/sad_2.c > > diff --git a/gcc/match.pd b/gcc/match.pd > index a7cec25dbad..4520a23a026 100644 > --- a/gcc/match.pd > +++ b/gcc/match.pd > @@ -1229,6 +1229,13 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) > (mult (absu@1 @0) @1) > (mult (convert@2 @0) @2)) > > +#if GIMPLE > +/* Simplify SAD(x, x, acc) -> acc since the absolute difference is zero. */ > +(simplify > + (sad @0 @0 @1) > + @1) > +#endif > + > /* cos(copysign(x, y)) -> cos(x). Similarly for cosh. */ > (for coss (COS COSH) > (for copysigns (COPYSIGN) > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/sad_2.c b/gcc/testsuite/gcc.target/aarch64/sve/sad_2.c > new file mode 100644 > index 00000000000..d46517f10d8 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/aarch64/sve/sad_2.c > @@ -0,0 +1,16 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O3 -msve-vector-bits=128 -mtune=neoverse-v2" } */ > + > +#include <stdint.h> > + > +int foo (uint8_t *pix1, uint8_t *pix2) > +{ > + int sum = 0; > + for (int x = 0; x < 48; x++) > + { > + sum += __builtin_abs (pix1[x] - pix2[x]); > + } > + return sum; > +} > + > +/* { dg-final { scan-assembler-times {\tudot\t} 3 } } */ > -- > 2.43.0 >
Hi Richard, On 07/07/2026 09:38, Richard Biener wrote: > On Tue, Jul 7, 2026 at 10:00 AM Pengfei Li <Pengfei.Li2@arm.com> wrote: >> Normally, SAD_EXPRs with identical first and second operands are not >> constructed, since the absolute difference value is zero. However, this >> can still appear when vectorizing small iteration-count reduction loops >> with an absolute difference operation. >> >> This patch adds a match.pd rule to fold the redundant SAD_EXPR to its >> accumulator operand. >> >> Bootstrapped and tested on aarch64-linux-gnu and x86_64-linux-gnu. > The pattern looks good to me, but I don't see how the testcase exercises it? In this testcase, SAD_EXPR is expanded to AArch64 uabd + udot instructions. Without the pattern, the uabd is eliminated but SAD_EXPR still generates an extra udot with a zero vector, e.g. movi d31, #0 ... udot z29.s, z31.b, z28.b The 48-iteration loop needs 3 udot, instead of 4. That's what the testcase checks. Ok for trunk? Thanks, Pengfei > >> gcc/ChangeLog: >> >> * match.pd: Simplify SAD(x, x, acc) into acc. >> >> gcc/testsuite/ChangeLog: >> >> * gcc.target/aarch64/sve/sad_2.c: New test. >> --- >> gcc/match.pd | 7 +++++++ >> gcc/testsuite/gcc.target/aarch64/sve/sad_2.c | 16 ++++++++++++++++ >> 2 files changed, 23 insertions(+) >> create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/sad_2.c >> >> diff --git a/gcc/match.pd b/gcc/match.pd >> index a7cec25dbad..4520a23a026 100644 >> --- a/gcc/match.pd >> +++ b/gcc/match.pd >> @@ -1229,6 +1229,13 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) >> (mult (absu@1 @0) @1) >> (mult (convert@2 @0) @2)) >> >> +#if GIMPLE >> +/* Simplify SAD(x, x, acc) -> acc since the absolute difference is zero. */ >> +(simplify >> + (sad @0 @0 @1) >> + @1) >> +#endif >> + >> /* cos(copysign(x, y)) -> cos(x). Similarly for cosh. */ >> (for coss (COS COSH) >> (for copysigns (COPYSIGN) >> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/sad_2.c b/gcc/testsuite/gcc.target/aarch64/sve/sad_2.c >> new file mode 100644 >> index 00000000000..d46517f10d8 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/aarch64/sve/sad_2.c >> @@ -0,0 +1,16 @@ >> +/* { dg-do compile } */ >> +/* { dg-options "-O3 -msve-vector-bits=128 -mtune=neoverse-v2" } */ >> + >> +#include <stdint.h> >> + >> +int foo (uint8_t *pix1, uint8_t *pix2) >> +{ >> + int sum = 0; >> + for (int x = 0; x < 48; x++) >> + { >> + sum += __builtin_abs (pix1[x] - pix2[x]); >> + } >> + return sum; >> +} >> + >> +/* { dg-final { scan-assembler-times {\tudot\t} 3 } } */ >> -- >> 2.43.0 >>
On Tue, Jul 7, 2026 at 11:49 AM Pengfei Li <pengfei.li2@arm.com> wrote: > > Hi Richard, > > On 07/07/2026 09:38, Richard Biener wrote: > > On Tue, Jul 7, 2026 at 10:00 AM Pengfei Li <Pengfei.Li2@arm.com> wrote: > >> Normally, SAD_EXPRs with identical first and second operands are not > >> constructed, since the absolute difference value is zero. However, this > >> can still appear when vectorizing small iteration-count reduction loops > >> with an absolute difference operation. > >> > >> This patch adds a match.pd rule to fold the redundant SAD_EXPR to its > >> accumulator operand. > >> > >> Bootstrapped and tested on aarch64-linux-gnu and x86_64-linux-gnu. > > The pattern looks good to me, but I don't see how the testcase exercises it? > > In this testcase, SAD_EXPR is expanded to AArch64 uabd + udot > instructions. Without the pattern, the uabd is eliminated but SAD_EXPR > still generates an extra udot with a zero vector, e.g. > > movi d31, #0 > ... > udot z29.s, z31.b, z28.b > > The 48-iteration loop needs 3 udot, instead of 4. That's what the > testcase checks. Ok for trunk? OK. > > Thanks, > Pengfei > > > > >> gcc/ChangeLog: > >> > >> * match.pd: Simplify SAD(x, x, acc) into acc. > >> > >> gcc/testsuite/ChangeLog: > >> > >> * gcc.target/aarch64/sve/sad_2.c: New test. > >> --- > >> gcc/match.pd | 7 +++++++ > >> gcc/testsuite/gcc.target/aarch64/sve/sad_2.c | 16 ++++++++++++++++ > >> 2 files changed, 23 insertions(+) > >> create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/sad_2.c > >> > >> diff --git a/gcc/match.pd b/gcc/match.pd > >> index a7cec25dbad..4520a23a026 100644 > >> --- a/gcc/match.pd > >> +++ b/gcc/match.pd > >> @@ -1229,6 +1229,13 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) > >> (mult (absu@1 @0) @1) > >> (mult (convert@2 @0) @2)) > >> > >> +#if GIMPLE > >> +/* Simplify SAD(x, x, acc) -> acc since the absolute difference is zero. */ > >> +(simplify > >> + (sad @0 @0 @1) > >> + @1) > >> +#endif > >> + > >> /* cos(copysign(x, y)) -> cos(x). Similarly for cosh. */ > >> (for coss (COS COSH) > >> (for copysigns (COPYSIGN) > >> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/sad_2.c b/gcc/testsuite/gcc.target/aarch64/sve/sad_2.c > >> new file mode 100644 > >> index 00000000000..d46517f10d8 > >> --- /dev/null > >> +++ b/gcc/testsuite/gcc.target/aarch64/sve/sad_2.c > >> @@ -0,0 +1,16 @@ > >> +/* { dg-do compile } */ > >> +/* { dg-options "-O3 -msve-vector-bits=128 -mtune=neoverse-v2" } */ > >> + > >> +#include <stdint.h> > >> + > >> +int foo (uint8_t *pix1, uint8_t *pix2) > >> +{ > >> + int sum = 0; > >> + for (int x = 0; x < 48; x++) > >> + { > >> + sum += __builtin_abs (pix1[x] - pix2[x]); > >> + } > >> + return sum; > >> +} > >> + > >> +/* { dg-final { scan-assembler-times {\tudot\t} 3 } } */ > >> -- > >> 2.43.0 > >>
diff --git a/gcc/match.pd b/gcc/match.pd index a7cec25dbad..4520a23a026 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1229,6 +1229,13 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (mult (absu@1 @0) @1) (mult (convert@2 @0) @2)) +#if GIMPLE +/* Simplify SAD(x, x, acc) -> acc since the absolute difference is zero. */ +(simplify + (sad @0 @0 @1) + @1) +#endif + /* cos(copysign(x, y)) -> cos(x). Similarly for cosh. */ (for coss (COS COSH) (for copysigns (COPYSIGN) diff --git a/gcc/testsuite/gcc.target/aarch64/sve/sad_2.c b/gcc/testsuite/gcc.target/aarch64/sve/sad_2.c new file mode 100644 index 00000000000..d46517f10d8 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/sve/sad_2.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -msve-vector-bits=128 -mtune=neoverse-v2" } */ + +#include <stdint.h> + +int foo (uint8_t *pix1, uint8_t *pix2) +{ + int sum = 0; + for (int x = 0; x < 48; x++) + { + sum += __builtin_abs (pix1[x] - pix2[x]); + } + return sum; +} + +/* { dg-final { scan-assembler-times {\tudot\t} 3 } } */