From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2051.outbound.protection.outlook.com [40.107.6.51]) by sourceware.org (Postfix) with ESMTPS id 2CC8F385F014 for ; Wed, 15 May 2024 09:12:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2CC8F385F014 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 2CC8F385F014 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.6.51 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1715764358; cv=pass; b=RdtIWUB4a4ctrAgJgNQHyKSr8Eivm6Fkbxe9MAJwef14tWNbQx7LfS/N/f7mmWzPp1O4FLCrE0LYr3HKq/Z2yN9mIHEoj/IXtit/8MhhvZ5+nhSDnJ290mJAB4yIqGkU5h1c+1KchvEzq4XZm6veTlTgSfl6k5H22Y61l4CimD8= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1715764358; c=relaxed/simple; bh=m47P9YQjVJejCHq/Im2so2aaHZDEv9s4E1Vzdi04REY=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=bioWBOqYb16NEa4osjT1XmEIygwM7V/DXwMgGoQWGZpkcj0f655ZgN8jB24H5JKwTAbrTBDXmdahTm1ki59cDAZYe+Kf/uRN4t+XJGsdi6K4h6MlQQ0BqDNwQwa+EqGIt5/yFRtELDJby49albNu59f7RL8/dvT+cJGEd+/bcfU= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=WngnWRpA6gtGUiwJpMqf9tCvbF+pwhIYtwgL3pPGhkCLfVDYSqtegWUfkB0PME0rIgYIZ7uV8vCluMlO7PevYxZHCT5FcSRQMZZ2uWqGWYlZ78biLdQLyqx0c4eEZ0HZuBHSjkL3PLKMFvqMXli4yA3NMdiRaTVnYtg0zAMPUnnRGuaW5ZOvLYjhIir94PktEqc5NwcvECEmJiIMVlPfBR0RtWCURbW+UPhpXpp84wLxtg3ue9YClEXo+R38BWjk+USYUPF2FKNSJ8sIbIFcmzbzQNn3jV5CiK7DHlcueRjOcTl/SiW1tRdk1+3jMWVAyhA3R8H0YfD3e3k1L+cIGQ== 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=YXkK2k632fQt1kP44IRa/bwuI05IQq/muJspVGDSGd4=; b=bVmYWuSG/cJnFvJCPkD+rEei+S8QHrq2wLKE/uf9Y5PZnAsuKse9gbsA57avdwRwixeSm2Gt9YA+joDLGXFYI7UCTkvDPUBRNjpu3tbe8yn5yHlHsX39BqLlUnsKN8fow7lNGqhmwPA0gc8hOnNsTzpytG96mhUdTrEgj+HXJUdrt7bEPJrzhwaoerOH7+z3KZ+XOB/2x/SRAEfE540/kOpH6uSvY+gaTp+WW5JAh8W9+4hwjzuYM06o6hF5yoBNI6l+GJmc3q99H+i1nzKgNVhM5oUPLL5sDUTLB+cQ03g4kQJFEtrYIoh9MdvXU7OqCqlhHA/YgKPbsl3afZU2rQ== 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=arm.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]) 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=YXkK2k632fQt1kP44IRa/bwuI05IQq/muJspVGDSGd4=; b=dgRxeGlxCXQeI5ASixLV7BF1uFFWh8upaR/emUoEIrcU0xM4wIHyekFZH2RiHwonVh8oinhvEI/+quaL8AcY4UB3HwUftXQ+NtzANJunEz92W9g5KrEuHfEJjxaDKxfb/LQ8CQcxj82fNGBcmnur0mGgV/9bkKEJGbnsn3OJ+Fc= Received: from DU6P191CA0055.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:53e::26) by AM0PR08MB5345.eurprd08.prod.outlook.com (2603:10a6:208:18c::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.56; Wed, 15 May 2024 09:12:30 +0000 Received: from DB3PEPF0000885B.eurprd02.prod.outlook.com (2603:10a6:10:53e:cafe::1c) by DU6P191CA0055.outlook.office365.com (2603:10a6:10:53e::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27 via Frontend Transport; Wed, 15 May 2024 09:12:30 +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=arm.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 DB3PEPF0000885B.mail.protection.outlook.com (10.167.242.6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7587.21 via Frontend Transport; Wed, 15 May 2024 09:12:30 +0000 Received: ("Tessian outbound b7675f20d34d:v315"); Wed, 15 May 2024 09:12:30 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 5a7450410243fd5e X-CR-MTA-TID: 64aa7808 Received: from f97d5caa8663.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id DBA3A9D4-F092-4C14-8D91-85B23CA0A892.1; Wed, 15 May 2024 09:12:24 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f97d5caa8663.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 15 May 2024 09:12:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IoecntxHe0yYj1Xr9V4N8/afl0ZTbT4x7rfYf32OELr4/iWcY/HFhjOj5dlAwqCrqoxRF+rYi2WgAgj7XR+LJJDHn5SvgdMFCnMMp9pI7xzioK9zI6vRZ+sG4L/I3dL8siX45pyMV5x7wt+xIRO89N2r40610TzoOYXjcer9i3dnvVNXYXSG4lEDao8UdTz6MCmzDtHGzRLrsrVY5l1X82xCVNmKdELg7ukZ4kQAtMgpRFn6PCyMxfJQQA6jwF0pWFrXYV8CQckx0M/u+L14lMDq8iwO/t6sgaUJQxgmu1ltOl0kZ6BCrxv65jmG+s/yalkAn6G6r3+Zwa1Dq/tb8Q== 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=YXkK2k632fQt1kP44IRa/bwuI05IQq/muJspVGDSGd4=; b=KW0FddgXT81213475XkrA7wRpjDV9WkRqFYK7L+qdMLWeB/3hgk+9A3BbMmcEMTIvZhptIeJC5K1v7/CafA3tuTKZjD5cUGT1BCzGNdmoXO2kL4FkiocCyibMZvLIWLv/lIQYhiYTWeHfbay/omP7ouv+eEEbA6e6ECyTuUxxwDQ3ypCJ7dscLPjVJqBwhLIzQNmTgKsQhta/JL6Oubwi3YUOpO4j5W+RKtTelQWQcf+bkKxLVISWbUiZAp/fyD9ryfllz9mXs6IJzjFiBSO/AnkwXD4u3KlnT9bInFFqsJ61632XqVb61zr4mVPt0jkNYU1VUq5UogkdGvUwPwBKA== 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 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=YXkK2k632fQt1kP44IRa/bwuI05IQq/muJspVGDSGd4=; b=dgRxeGlxCXQeI5ASixLV7BF1uFFWh8upaR/emUoEIrcU0xM4wIHyekFZH2RiHwonVh8oinhvEI/+quaL8AcY4UB3HwUftXQ+NtzANJunEz92W9g5KrEuHfEJjxaDKxfb/LQ8CQcxj82fNGBcmnur0mGgV/9bkKEJGbnsn3OJ+Fc= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by VE1PR08MB5792.eurprd08.prod.outlook.com (2603:10a6:800:1a6::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.27; Wed, 15 May 2024 09:12:20 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::89dc:c731:362b:7c69]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::89dc:c731:362b:7c69%4]) with mapi id 15.20.7587.025; Wed, 15 May 2024 09:12:18 +0000 From: Tamar Christina To: "pan2.li@intel.com" , "gcc-patches@gcc.gnu.org" CC: "juzhe.zhong@rivai.ai" , "kito.cheng@gmail.com" , "richard.guenther@gmail.com" , "hongtao.liu@intel.com" Subject: RE: [PATCH v5 1/3] Internal-fn: Support new IFN SAT_ADD for unsigned scalar int Thread-Topic: [PATCH v5 1/3] Internal-fn: Support new IFN SAT_ADD for unsigned scalar int Thread-Index: AQHapm2dY2SaU0mb3EqHvhF47NqzJrGYAd6w Date: Wed, 15 May 2024 09:12:18 +0000 Message-ID: References: <20240515021407.1287623-1-pan2.li@intel.com> In-Reply-To: <20240515021407.1287623-1-pan2.li@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|VE1PR08MB5792:EE_|DB3PEPF0000885B:EE_|AM0PR08MB5345:EE_ X-MS-Office365-Filtering-Correlation-Id: 3244a741-bf57-428c-a1f9-08dc74bf2621 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230031|376005|1800799015|366007|38070700009; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?V3iaYDcrfqEh3BixpM9D8wutZvL7Azk31K++3jDMwLxRqBYogepKrdD2KJ0x?= =?us-ascii?Q?7v/G1JO33GaWq8f7NAFEOrfJXXIELaNYdiKxBv2zxyBmgwDGMmRXcnm7Fnuh?= =?us-ascii?Q?KCZ/PjOdzv64ttt8L9J7imgJdp3+NlOGuMbJaVfBuzGyJLnku4q4V9QYMiw9?= =?us-ascii?Q?DYtWs2QsbQz1BqjF5ZUOqQpaEHp0+sNTq/hS5QVzMu2hgEY47J1SVbicZZdg?= =?us-ascii?Q?RwRL2OAjWKHmAnOlHxW1i6KwB9YMfNUn7I/vdisovdv0lXwgRg9iRpLEDaUW?= =?us-ascii?Q?8a/YCALV8qVRuUhpTfOq6XeSgvSSEdG3ddCChEAftiyiwsHWIRwg4NjRX4O0?= =?us-ascii?Q?iieNscHzLOvoWYZI5yUvOzbbceex4TjUBk6Nz2I3uEP8QdeQhvUXRuwilU4w?= =?us-ascii?Q?v9rkhYssi20vRFEZw5fsiA6M2+jSO86w2LPPBuETzv0aVqBM2BLmhsdyJn11?= =?us-ascii?Q?86oYt9EueRdEGvESR5BLK8vDFKlPc/oWZWVJioyOJ8J80G51E1wPxxvKIcc2?= =?us-ascii?Q?q8aYOWL07M5gwjH7MLcAgKpxZYBvCT5qdXPPKuyim4BiJmpBDquFNpgxNnQd?= =?us-ascii?Q?0iGL/OS/6mRMW2DLpp3km5ZKD5eEKhYr6GP743ACQI7EL15emMwwwD2Jsx0c?= =?us-ascii?Q?BVWgfduuwiQ4KlsH4yOXR8lE0Fqua7A7DWtugL5GVlN181w4ks1QtpZ66iG2?= =?us-ascii?Q?3rrdgnRzxbZbFMbYgIwg//sCY4MZiRzyzBuDwP5JBhdBkd6c5mojmYGZgp0Z?= =?us-ascii?Q?lIMjgXmWfC0HSfYZeVg0VbXnqOsgkUgaJbhJSdyG7D6ZMY7K2JmbKAxTnznC?= =?us-ascii?Q?ZcEaEIC3fzzoPeCmhH/zUwPs34wt4BjUkEEcpkKawigXsJOGk/mAhKAhww76?= =?us-ascii?Q?GGf06l4BdTb1RAfhiyXKn2sF8Xo8JShuORsTHk4Ep7i9u+9BuIf9iiKMyThV?= =?us-ascii?Q?auK6CUiSVZLn2k85xXq7KU4sUe6MSlEun7L29RCZHctXxVV8Z1rCpMmPEbdd?= =?us-ascii?Q?DF/ajrdglQcnheHu1sEfqkS0wMQZ/zUbsmd2eHCGIq3SjbFvAAVybdlvUJhi?= =?us-ascii?Q?3Fwe5pNAHilmms81yYyVPoE3kL3fU1KDXiIOYnhj68xMINfRrN7ecNerOf9d?= =?us-ascii?Q?T2LgSdagwYcJGJSqtI+D0xofMoULQVhYL3dKcP5Y6+eOqzen/eBB2r3wAerp?= =?us-ascii?Q?S06KxFoJGTOTGDJWtK5doOoUZsGuWM9PcYfxPOJSA6F346tzRJVRRrCEeB8I?= =?us-ascii?Q?4q5SnfrfBivgrdQtzIlUwz55Pr43We6hh4lg6OwmWmML9SwBVpZOGvawG6Ec?= =?us-ascii?Q?xR/Q/7CXungZPkOVHZjzQ04GnHDte+WwgJaRR19IiE6qYA=3D=3D?= 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:(13230031)(376005)(1800799015)(366007)(38070700009);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5792 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: DB3PEPF0000885B.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e2e477e9-3538-4e76-8191-08dc74bf1ef2 X-Microsoft-Antispam: BCL:0;ARA:13230031|376005|82310400017|35042699013|1800799015|36860700004; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?JJ3NV4tNZVYPV0eb2Go2pQs9+9rxST5tF4mcXxGc62E2usUOVeQB5heUIhch?= =?us-ascii?Q?tQZrcGEs0eJnVXmo/1mhaDwVuHvlgrk1au2ymVcnI7rdx41t0VC6Ndv9Pwvn?= =?us-ascii?Q?VldRs5u+Vgdd3WGQnVyvlBIwFsNkGq57vLnP6kxtfv7421Sib6IMy4WQZxGR?= =?us-ascii?Q?5ACBZCdQoaR93lZz+sx5Bb7/qgXGOUx0Z60qd06yooT1hzVLasU3n4syJlNo?= =?us-ascii?Q?g3LjO0foP2S88mGKF7aR4ahPbd//norXkHjHtUoqg4jlO2p965iBjN4+a3ph?= =?us-ascii?Q?SdoKmp6wLKXilz0qtAuG6O5Yqk+cLxEYyI0iwoQqYza2dHxQRVKBoyyXFLcP?= =?us-ascii?Q?vY3J1GJ5vjDCmxg/PMfLgxRCIgvDm2S++luhxTpEYCJfnIUpfIsUbLaekhvp?= =?us-ascii?Q?dduakrmCIUU8E4uLKgTfzX4MdNv7yUcc/EbQTFGAjhObegP0CfmZg/lQZNZ0?= =?us-ascii?Q?b6zcFwV+zctlMdlA8Hwki31oxuKargIycUua3YKi+mRarqHZrnc3Yq1lBPTS?= =?us-ascii?Q?Q9ynoB3uEtqPmAnLIDnBB2ibYXHgiwSH/eYZc5YIDehdO2wmlK0mY5MtTKTX?= =?us-ascii?Q?QCGlL+n9fmF8VYMX9R7QFawFSRn7forTQkFntmucW2SNBWN7bk25pioe43/A?= =?us-ascii?Q?68XfWI1Mx7eYdpxj3ZmmTSlhQ4bEozAmvGLh9+LvnEFw+nrMF+Xcy+7wXg2q?= =?us-ascii?Q?gxMovyf8anfna7laPg7Ujn+VbFp/9SUdKDzH7s/rLQJtmRasx2Rdktq37Fkb?= =?us-ascii?Q?+v94uIYz48wjL7iDkjLh0gmFPyslam0UcU//BFsRqZGT7APE1kwK9QU79Xrd?= =?us-ascii?Q?Iu0fWmrUXAIo4V3ERpZPZfiNEk8q3Z1hwFBp6NKUSDeL8EzVYA6K+4kJ/8/W?= =?us-ascii?Q?APU5v65tDhL6JmlNpSVqchUQ26ZyI6+PHlMnaylEKV3556U0BQWnp0lkgU/a?= =?us-ascii?Q?j4FCRPWOEg6Lb5WgPTT32YV7G3iotPfNHQZIcTzfhR6NVr+9B+QXW2RJtwwr?= =?us-ascii?Q?mfyYY6GcxTMlvVNMz3a0QAmYCaPAPGzDrhrTCrOrK1jOKGklco1QBwxmRkzj?= =?us-ascii?Q?FC6GMIRTj68VT/xGwrT4AXTELjjkDFQwd1RnqpFI17MS6cdU4ZgAYpk2bICF?= =?us-ascii?Q?6PmOZRRg4WZyps9i9ovOxP6qPZOWSs32SxqoZrwUZ+0QHUR5iSPrQrrp/gvu?= =?us-ascii?Q?5CoGjYJE0X3S009SB7dKpfJIHecmkaOl4ODc3uJ200QaOG83nXUOO1Vy+JjO?= =?us-ascii?Q?ojx49OdaGs3nvB10lWpsMUk7EpVJQyqY9OfhYnBKn/xsKLgts7b64CEGWZmY?= =?us-ascii?Q?1jL8LV96IcaD+KPQMGoxZ5NpdfRIWgpYFvhdBnu9kC2pQ7HRaZo5XHd+tfFl?= =?us-ascii?Q?ue7G9eJ7ivSdF1Ivn8loz1UTiDAb?= 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:(13230031)(376005)(82310400017)(35042699013)(1800799015)(36860700004);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 May 2024 09:12:30.6925 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3244a741-bf57-428c-a1f9-08dc74bf2621 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: DB3PEPF0000885B.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5345 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,GIT_PATCH_0,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,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 List-Id: Hi Pan, Thanks! > -----Original Message----- > From: pan2.li@intel.com > Sent: Wednesday, May 15, 2024 3:14 AM > To: gcc-patches@gcc.gnu.org > Cc: juzhe.zhong@rivai.ai; kito.cheng@gmail.com; Tamar Christina > ; richard.guenther@gmail.com; > hongtao.liu@intel.com; Pan Li > Subject: [PATCH v5 1/3] Internal-fn: Support new IFN SAT_ADD for unsigned= scalar > int >=20 > From: Pan Li >=20 > This patch would like to add the middle-end presentation for the > saturation add. Aka set the result of add to the max when overflow. > It will take the pattern similar as below. >=20 > SAT_ADD (x, y) =3D> (x + y) | (-(TYPE)((TYPE)(x + y) < x)) >=20 > Take uint8_t as example, we will have: >=20 > * SAT_ADD (1, 254) =3D> 255. > * SAT_ADD (1, 255) =3D> 255. > * SAT_ADD (2, 255) =3D> 255. > * SAT_ADD (255, 255) =3D> 255. >=20 > Given below example for the unsigned scalar integer uint64_t: >=20 > uint64_t sat_add_u64 (uint64_t x, uint64_t y) > { > return (x + y) | (- (uint64_t)((uint64_t)(x + y) < x)); > } >=20 > Before this patch: > uint64_t sat_add_uint64_t (uint64_t x, uint64_t y) > { > long unsigned int _1; > _Bool _2; > long unsigned int _3; > long unsigned int _4; > uint64_t _7; > long unsigned int _10; > __complex__ long unsigned int _11; >=20 > ;; basic block 2, loop depth 0 > ;; pred: ENTRY > _11 =3D .ADD_OVERFLOW (x_5(D), y_6(D)); > _1 =3D REALPART_EXPR <_11>; > _10 =3D IMAGPART_EXPR <_11>; > _2 =3D _10 !=3D 0; > _3 =3D (long unsigned int) _2; > _4 =3D -_3; > _7 =3D _1 | _4; > return _7; > ;; succ: EXIT >=20 > } >=20 > After this patch: > uint64_t sat_add_uint64_t (uint64_t x, uint64_t y) > { > uint64_t _7; >=20 > ;; basic block 2, loop depth 0 > ;; pred: ENTRY > _7 =3D .SAT_ADD (x_5(D), y_6(D)); [tail call] > return _7; > ;; succ: EXIT > } >=20 > The below tests are passed for this patch: > 1. The riscv fully regression tests. > 3. The x86 bootstrap tests. > 4. The x86 fully regression tests. >=20 > PR target/51492 > PR target/112600 >=20 > gcc/ChangeLog: >=20 > * internal-fn.cc (commutative_binary_fn_p): Add type IFN_SAT_ADD > to the return true switch case(s). > * internal-fn.def (SAT_ADD): Add new signed optab SAT_ADD. > * match.pd: Add unsigned SAT_ADD match(es). > * optabs.def (OPTAB_NL): Remove fixed-point limitation for > us/ssadd. > * tree-ssa-math-opts.cc (gimple_unsigned_integer_sat_add): New > extern func decl generated in match.pd match. > (match_saturation_arith): New func impl to match the saturation arith. > (math_opts_dom_walker::after_dom_children): Try match saturation > arith when IOR expr. >=20 LGTM but you'll need an OK from Richard, Thanks for working on this! Tamar > Signed-off-by: Pan Li > --- > gcc/internal-fn.cc | 1 + > gcc/internal-fn.def | 2 ++ > gcc/match.pd | 51 +++++++++++++++++++++++++++++++++++++++ > gcc/optabs.def | 4 +-- > gcc/tree-ssa-math-opts.cc | 32 ++++++++++++++++++++++++ > 5 files changed, 88 insertions(+), 2 deletions(-) >=20 > diff --git a/gcc/internal-fn.cc b/gcc/internal-fn.cc > index 0a7053c2286..73045ca8c8c 100644 > --- a/gcc/internal-fn.cc > +++ b/gcc/internal-fn.cc > @@ -4202,6 +4202,7 @@ commutative_binary_fn_p (internal_fn fn) > case IFN_UBSAN_CHECK_MUL: > case IFN_ADD_OVERFLOW: > case IFN_MUL_OVERFLOW: > + case IFN_SAT_ADD: > case IFN_VEC_WIDEN_PLUS: > case IFN_VEC_WIDEN_PLUS_LO: > case IFN_VEC_WIDEN_PLUS_HI: > diff --git a/gcc/internal-fn.def b/gcc/internal-fn.def > index 848bb9dbff3..25badbb86e5 100644 > --- a/gcc/internal-fn.def > +++ b/gcc/internal-fn.def > @@ -275,6 +275,8 @@ DEF_INTERNAL_SIGNED_OPTAB_FN (MULHS, ECF_CONST > | ECF_NOTHROW, first, > DEF_INTERNAL_SIGNED_OPTAB_FN (MULHRS, ECF_CONST | ECF_NOTHROW, > first, > smulhrs, umulhrs, binary) >=20 > +DEF_INTERNAL_SIGNED_OPTAB_FN (SAT_ADD, ECF_CONST, first, ssadd, usadd, > binary) > + > DEF_INTERNAL_COND_FN (ADD, ECF_CONST, add, binary) > DEF_INTERNAL_COND_FN (SUB, ECF_CONST, sub, binary) > DEF_INTERNAL_COND_FN (MUL, ECF_CONST, smul, binary) > diff --git a/gcc/match.pd b/gcc/match.pd > index 07e743ae464..0f9c34fa897 100644 > --- a/gcc/match.pd > +++ b/gcc/match.pd > @@ -3043,6 +3043,57 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) > || POINTER_TYPE_P (itype)) > && wi::eq_p (wi::to_wide (int_cst), wi::max_value (itype)))))) >=20 > +/* Unsigned Saturation Add */ > +(match (usadd_left_part_1 @0 @1) > + (plus:c @0 @1) > + (if (INTEGRAL_TYPE_P (type) > + && TYPE_UNSIGNED (TREE_TYPE (@0)) > + && types_match (type, TREE_TYPE (@0)) > + && types_match (type, TREE_TYPE (@1))))) > + > +(match (usadd_left_part_2 @0 @1) > + (realpart (IFN_ADD_OVERFLOW:c @0 @1)) > + (if (INTEGRAL_TYPE_P (type) > + && TYPE_UNSIGNED (TREE_TYPE (@0)) > + && types_match (type, TREE_TYPE (@0)) > + && types_match (type, TREE_TYPE (@1))))) > + > +(match (usadd_right_part_1 @0 @1) > + (negate (convert (lt (plus:c @0 @1) @0))) > + (if (INTEGRAL_TYPE_P (type) > + && TYPE_UNSIGNED (TREE_TYPE (@0)) > + && types_match (type, TREE_TYPE (@0)) > + && types_match (type, TREE_TYPE (@1))))) > + > +(match (usadd_right_part_1 @0 @1) > + (negate (convert (gt @0 (plus:c @0 @1)))) > + (if (INTEGRAL_TYPE_P (type) > + && TYPE_UNSIGNED (TREE_TYPE (@0)) > + && types_match (type, TREE_TYPE (@0)) > + && types_match (type, TREE_TYPE (@1))))) > + > +(match (usadd_right_part_2 @0 @1) > + (negate (convert (ne (imagpart (IFN_ADD_OVERFLOW:c @0 @1)) > integer_zerop))) > + (if (INTEGRAL_TYPE_P (type) > + && TYPE_UNSIGNED (TREE_TYPE (@0)) > + && types_match (type, TREE_TYPE (@0)) > + && types_match (type, TREE_TYPE (@1))))) > + > +/* We cannot merge or overload usadd_left_part_1 and usadd_left_part_2 > + because the sub part of left_part_2 cannot work with right_part_1. > + For example, left_part_2 pattern focus one .ADD_OVERFLOW but the > + right_part_1 has nothing to do with .ADD_OVERFLOW. */ > + > +/* Unsigned saturation add, case 1 (branchless): > + SAT_U_ADD =3D (X + Y) | - ((X + Y) < X) or > + SAT_U_ADD =3D (X + Y) | - (X > (X + Y)). */ > +(match (unsigned_integer_sat_add @0 @1) > + (bit_ior:c (usadd_left_part_1 @0 @1) (usadd_right_part_1 @0 @1))) > + > +/* Unsigned saturation add, case 2 (branchless with .ADD_OVERFLOW). */ > +(match (unsigned_integer_sat_add @0 @1) > + (bit_ior:c (usadd_left_part_2 @0 @1) (usadd_right_part_2 @0 @1))) > + > /* x > y && x !=3D XXX_MIN --> x > y > x > y && x =3D=3D XXX_MIN --> false . */ > (for eqne (eq ne) > diff --git a/gcc/optabs.def b/gcc/optabs.def > index ad14f9328b9..3f2cb46aff8 100644 > --- a/gcc/optabs.def > +++ b/gcc/optabs.def > @@ -111,8 +111,8 @@ OPTAB_NX(add_optab, "add$F$a3") > OPTAB_NX(add_optab, "add$Q$a3") > OPTAB_VL(addv_optab, "addv$I$a3", PLUS, "add", '3', gen_intv_fp_libfunc) > OPTAB_VX(addv_optab, "add$F$a3") > -OPTAB_NL(ssadd_optab, "ssadd$Q$a3", SS_PLUS, "ssadd", '3', > gen_signed_fixed_libfunc) > -OPTAB_NL(usadd_optab, "usadd$Q$a3", US_PLUS, "usadd", '3', > gen_unsigned_fixed_libfunc) > +OPTAB_NL(ssadd_optab, "ssadd$a3", SS_PLUS, "ssadd", '3', > gen_signed_fixed_libfunc) > +OPTAB_NL(usadd_optab, "usadd$a3", US_PLUS, "usadd", '3', > gen_unsigned_fixed_libfunc) > OPTAB_NL(sub_optab, "sub$P$a3", MINUS, "sub", '3', gen_int_fp_fixed_libf= unc) > OPTAB_NX(sub_optab, "sub$F$a3") > OPTAB_NX(sub_optab, "sub$Q$a3") > diff --git a/gcc/tree-ssa-math-opts.cc b/gcc/tree-ssa-math-opts.cc > index e8c804f09b7..62da1c5ee08 100644 > --- a/gcc/tree-ssa-math-opts.cc > +++ b/gcc/tree-ssa-math-opts.cc > @@ -4086,6 +4086,36 @@ arith_overflow_check_p (gimple *stmt, gimple > *cast_stmt, gimple *&use_stmt, > return 0; > } >=20 > +extern bool gimple_unsigned_integer_sat_add (tree, tree*, tree (*)(tree)= ); > + > +/* > + * Try to match saturation arith pattern(s). > + * 1. SAT_ADD (unsigned) > + * _7 =3D _4 + _6; > + * _8 =3D _4 > _7; > + * _9 =3D (long unsigned int) _8; > + * _10 =3D -_9; > + * _12 =3D _7 | _10; > + * =3D> > + * _12 =3D .SAT_ADD (_4, _6); */ > +static void > +match_saturation_arith (gimple_stmt_iterator *gsi, gassign *stmt) > +{ > + gcall *call =3D NULL; > + > + tree ops[2]; > + tree lhs =3D gimple_assign_lhs (stmt); > + > + if (gimple_unsigned_integer_sat_add (lhs, ops, NULL) > + && direct_internal_fn_supported_p (IFN_SAT_ADD, TREE_TYPE (lhs), > + OPTIMIZE_FOR_BOTH)) > + { > + call =3D gimple_build_call_internal (IFN_SAT_ADD, 2, ops[0], ops[1= ]); > + gimple_call_set_lhs (call, lhs); > + gsi_replace (gsi, call, true); > + } > +} > + > /* Recognize for unsigned x > x =3D y - z; > if (x > y) > @@ -6048,6 +6078,8 @@ math_opts_dom_walker::after_dom_children > (basic_block bb) > break; >=20 > case BIT_IOR_EXPR: > + match_saturation_arith (&gsi, as_a (stmt)); > + /* fall-through */ > case BIT_XOR_EXPR: > match_uaddc_usubc (&gsi, stmt, code); > break; > -- > 2.34.1