From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2059.outbound.protection.outlook.com [40.107.20.59]) by sourceware.org (Postfix) with ESMTPS id A4EE5385C416 for ; Mon, 31 Oct 2022 11:42:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A4EE5385C416 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-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=PfbD78UkE5F/UrBt4b+ryX+2AAk7zKlR6MT7h+8s37OST7v1IfN/14eh92VOr1OUvsPLISuVhG7hzArcr8jaBm84WqwwXQpRjY2/2SWawUP5SOgD1Sykm0r7+fH17X5vqoAC1oSfBh4bH/qKPXMjmt/QoYo6x7iywp5ZstT9aNYxG9Hs8YJyiTbOcCMJRWP2bTKWh0mFahs5fudqR8ux7i2SZ7LTuq1FckIgtiCft5R8fQQ34eFtWqeQ53s7sWE+id80XYnr4SJ0AN7VjYNt/dFjP7QWSzUJHj3wYe8j0ldTNGF8MvKGkPqN922VPIYJi83+giN8BX988cUrw8GAqw== 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=szf95CfH/llUDn2d5JfsRRi+P7Ykw5X31NurLSu7Sis=; b=U65bAtaeYOGFrw7JDTU64ObmQf+HcDgzlVJtOPArs546S4yJlCoOu46b7e/SHJaUtvkK8R5PL1Rn8BYCBLu1rIQ5lxCtKZyTeCVnqwwbId913r3swlc1nUGkJcn+Tr13H50Uhd6dU6VfokWiQnNXkeyhGn2no2ym4J6Vo6a97q6J6f5DHdKcJdJv5JfpRtO2cKYtTHgdrz8DbbwZO047cR4xVvsl1VDuhgHwYlV4QpiobiJezVsiqv+rzGmRX6HW7vtVv9J4fH23ZUgX+lQPnBHOH1Eb1QFezy1raibX/7gXV6ly1AYZhxNi75P1oxeL0WReFpuHRLbe2fCvHXxYEg== 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]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=szf95CfH/llUDn2d5JfsRRi+P7Ykw5X31NurLSu7Sis=; b=S/a5Zr6FewrNcs7qy9x+bfjF2wZHMN/ssiP4CbfcnsTvI5DnUyNdejgwcU4b9aFdzAjEtNp43FGCVuVv6QVwzI8r0+ud6SYGV4cFIh6D2gI83lz4lEdNtixDHLeQY8A7RcOmEUgoaWKw1K5YOZs2VN0WelJSFO9iNPQLUiOMrfo= Received: from AM6P193CA0049.EURP193.PROD.OUTLOOK.COM (2603:10a6:209:8e::26) by AS8PR08MB10245.eurprd08.prod.outlook.com (2603:10a6:20b:63c::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.16; Mon, 31 Oct 2022 11:42:40 +0000 Received: from AM7EUR03FT012.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:8e:cafe::fd) by AM6P193CA0049.outlook.office365.com (2603:10a6:209:8e::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.19 via Frontend Transport; Mon, 31 Oct 2022 11:42:40 +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 AM7EUR03FT012.mail.protection.outlook.com (100.127.141.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.14 via Frontend Transport; Mon, 31 Oct 2022 11:42:40 +0000 Received: ("Tessian outbound b4aebcc5bc64:v130"); Mon, 31 Oct 2022 11:42:40 +0000 X-CR-MTA-TID: 64aa7808 Received: from 4cc4d34da2ac.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 48920D4F-F490-469A-95DC-D749F5F4C2CA.1; Mon, 31 Oct 2022 11:42:34 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 4cc4d34da2ac.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 31 Oct 2022 11:42:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XvCuGEh6XOjJM6xMOAobUMzNVmMt2SfilcwbEIV47y7Mrjs2VtzKxhNot0FW4um4Wp/g9f+RIwUpFBuhhC9+OmOJZkGt6t+NaZpoSVDKAhVCCwu5OC/0xjPLPhqYjRatY+pmIBoNwat+f1BUiD2qcvobdy3vtkXVjIFi9zgOx1wM5zCNaLj+0B3J/hmMd7HGXReoxy85TjLGVZQtylcj8QZvRxaEJIsUb3A5CqodoWsxK+fbXQ5LEprQn1D18fp94rAFviPblGdqQAhJMc0BDTnMgfGzY/ETidIqJKaLZI8iI+Wkbn4Sd+SBNrFxoQnc6F7RyWmd/AEj0lKRdpQ2lA== 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=szf95CfH/llUDn2d5JfsRRi+P7Ykw5X31NurLSu7Sis=; b=Jye0amgh9HE3d8eg13GlykvCMnXe//9/Z5vdgrAW7Q528shW8tElkO92K8AwGxv+UTLXfynuuyQ2e4tZN37yizVkMycjPzt8qxSqC2KMqCBW8Q6FDIdlnxdOptA0BzROQhUG3Hu7VzBRoMoJq5V4QTslcgCWPB1pzHbo9ZLY+Az6pK0nzX9UGQvxhtpGMDLtBDdl3A78PcBu2+jPAtLOOzadID7y++nEmdg6XfDL57eqJzN8O9Dy5qFyf93TNaV6MmlThvJIyTcc9cKQsGq5sMIDDUW/o6mqq/ygtijAGlR+tu+oG5HJzYl94jwfa/uyxpiCe2bc99GnmjGBhBpXHA== 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=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=szf95CfH/llUDn2d5JfsRRi+P7Ykw5X31NurLSu7Sis=; b=S/a5Zr6FewrNcs7qy9x+bfjF2wZHMN/ssiP4CbfcnsTvI5DnUyNdejgwcU4b9aFdzAjEtNp43FGCVuVv6QVwzI8r0+ud6SYGV4cFIh6D2gI83lz4lEdNtixDHLeQY8A7RcOmEUgoaWKw1K5YOZs2VN0WelJSFO9iNPQLUiOMrfo= Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by AM0PR08MB5475.eurprd08.prod.outlook.com (2603:10a6:208:188::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.19; Mon, 31 Oct 2022 11:42:31 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::c57d:50c2:3502:a52]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::c57d:50c2:3502:a52%4]) with mapi id 15.20.5769.019; Mon, 31 Oct 2022 11:42:31 +0000 From: Tamar Christina To: Richard Biener CC: Andrew Pinski , nd , "gcc-patches@gcc.gnu.org" Subject: RE: [PATCH]middle-end simplify complex if expressions where comparisons are inverse of one another. Thread-Topic: [PATCH]middle-end simplify complex if expressions where comparisons are inverse of one another. Thread-Index: AQHYgYV05EjYER2K3U6QUesqLBCP9q1YBFAAgBf6HbCAALlnAIAA4k0AgABCX4CAAMr7gIAByk8AgHjkW2CAAEKBAIAAAjwwgASLcYCANxH3YA== Date: Mon, 31 Oct 2022 11:42:31 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: 824DFFAAD293EB4195C04559F32BE111.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: VI1PR08MB5325:EE_|AM0PR08MB5475:EE_|AM7EUR03FT012:EE_|AS8PR08MB10245:EE_ X-MS-Office365-Filtering-Correlation-Id: 71c400cf-274e-48da-d50d-08dabb350446 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: XiVyK0CTA50IWciTJ4Wn7lCxL1O9j9Mg56UBV6HL5w1NZUXIRlLeLjpyQvq5Z1O0ohK99zXT56NdgjYjR77yb4nEZ7sncaD10TKEOYo2w5Jb4U4zaHHpjsa0SYsbkIjMByjIZWKBjvp6r3xRVyTLchJQCuUGv/V3hkdSsD/UNGgeF68VUGMoL8GGAeedxkgS+bV7yy/jJiVhts1k7QGFBrsdMwMlCajQ0T8khFfhzTiOMHEmf9mVXwMS4+Qdx8IAzRjEBriRHSGQk2SPq3kxQIyBzxnq2HgvAFTUzRpCwFzDgmK4tWDMHeF2fuvhyrUVVu65XAPqsEfTltsHB4Qpy/vHks5PHCQQMAJg+iq5RZ4lKctm0D0AqBYM9RlHlxJLp0NmHGzKS1mnzjrioTLjMV7PYNHfTnY5dDmj3vePe95XuAb0TqeCzXaukE0vAH1evcyrmCRic8NPOWHxu0P0QvLLfnteJmNT4r2tcjFKA0ZYbaCV/zeSluTqoNZBJPnZClONi95+9MZIEwIjlDEJBChPhm/1FVVywt/4KFYaI9VzWyQ0/+71B+OFcha4nzjfDAY0c5f7gxoAKogAJvMMIhuRmosQmY1oVN8j3rSHEqtrHu4UwlNJFOk2hU3IRSAx/7eIUawySW5305MZF1tSQWlo3Fc2WPFA4OE/rd0eAyD1F6EQvgy+pN7CK9s+EpOczHr037n92UvcNV2lvY8gSw3PgZAfQAI4g+XzpjWCUC4SoF3XLiIKoI9TbBAr/ub1lpqwBs1/PVvCCcW0DVt9O4MKVhrWxB4YCmt8452kzWNBYbMYm7Cn012QEk9VeuKaM4xA2wNALF6pKjcEFJhnMA== 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:(13230022)(4636009)(376002)(366004)(136003)(396003)(39860400002)(346002)(451199015)(6916009)(86362001)(316002)(71200400001)(5660300002)(478600001)(54906003)(84970400001)(7696005)(99936003)(4326008)(76116006)(8676002)(6506007)(2906002)(33656002)(186003)(122000001)(38100700002)(66946007)(55016003)(26005)(66556008)(66476007)(66446008)(64756008)(9686003)(52536014)(38070700005)(8936002)(41300700001);DIR:OUT;SFP:1101; Content-Type: multipart/mixed; boundary="_002_VI1PR08MB532528C7619B621263E65E28FF379VI1PR08MB5325eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5475 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: AM7EUR03FT012.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4706c145-e9fa-4d2d-8581-08dabb34fef7 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bKw8GrkgH2RonT5aT+MAHzON7AEAAkvw0fThWEVSoeV/mUS+qzplaPvb+F3CHFUCoKQ9ZSxTPEuWTmC3hCFweO6V1w83/+0+OfXrGzTvEwX83f0IGBYOCy/H17PU95y6ivJq/jjiV25/cu3Fr1VhciJWIaVaC4WnKx7pDkkNL1NbE/w2xKulM7E2gZp7exacHC4UEfYJquDekZWFV3hr8e/zsf1GxpBGNkfA6YPI8aU+nsjJ8AfV76bGelyzYL+wJ61YkHaefSQ9I2GYi9/AwE255yyxAIt0AAwszFYKwRxq6XZiFDI84dT5P3QlqL+yFB4t2FBcyw/1tcZNXfvWIzt2P9DKHilgEDTZSjuuK9uvhyJ0qRKOITDhxjw6LPKKCjwYXIcmOnlHGdAvABfn6Y/d3AZtCvSh9vKktyH4t4vF4Tfj0ioKpS8NeCg/3V3sNFRvpOpRYTspMYNCOx5gGbwjrgDqTGNzifCwjXKJODVvkLbz/tlsVYs7/Fv0EOPY7WFGFQKVUL6Y/gmrqYRXYtS8qgzNC9Mwx206M3yfA0QLTJFVcIIli+61rm/d7krr99Y9PmEFF/UflXqenjO2uB+DG0cK8qZbPfh52yv7dAzxKnNI75YQYQP0H7/FDmiLjc2be1ezPSYCgvZMVj3RDMSNgfEuOpD6T1lP0wzr2zpLX42ITSQoGGgnOUGPARacOhkBSJMY8ANdsjEG+YjiwwaxgYfo5mAwp/dVVd3mAZZhsokULOxuxwTWxaWtbBI8aPSqf9Htlaw/kwVnnqtuANAzpWP2eUgcnx2EHK9Q3Vu8gR1boSW14td/XZO54geBB34AhvUTmEdbCMI8k2Klz0Lj84c9LapeORbdDnmyt0U= 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:(13230022)(4636009)(396003)(376002)(39860400002)(346002)(136003)(451199015)(40470700004)(46966006)(36840700001)(2906002)(235185007)(5660300002)(52536014)(6862004)(8936002)(41300700001)(4326008)(8676002)(70206006)(84970400001)(70586007)(478600001)(33656002)(40460700003)(82740400003)(356005)(81166007)(186003)(336012)(82310400005)(7696005)(6506007)(26005)(9686003)(54906003)(36860700001)(99936003)(55016003)(40480700001)(316002)(86362001)(47076005);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2022 11:42:40.4977 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 71c400cf-274e-48da-d50d-08dabb350446 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: AM7EUR03FT012.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB10245 X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,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: --_002_VI1PR08MB532528C7619B621263E65E28FF379VI1PR08MB5325eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi, This is a cleaned up version addressing all feedback. Bootstrapped Regtested on aarch64-none-linux-gnu, x86_64-pc-linux-gnu and no issues. Ok for master? Thanks, Tamar gcc/ChangeLog: * match.pd: Add new rule. gcc/testsuite/ChangeLog: * gcc.target/aarch64/if-compare_1.c: New test. * gcc.target/aarch64/if-compare_2.c: New test. --- inline copy of patch --- diff --git a/gcc/match.pd b/gcc/match.pd index 297c4d7a2355c2faa2afb7cfa0b4e171a161ef39..463132bfd35cf61f50381cedd07= d7617c638034b 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1903,6 +1903,61 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (if (INTEGRAL_TYPE_P (type)) (bit_and @0 @1))) =20 +(for cmp (tcc_comparison) + icmp (inverted_tcc_comparison) + /* Fold (((a < b) & c) | ((a >=3D b) & d)) into (a < b ? c : d) & 1. */ + (simplify + (bit_ior + (bit_and:c (convert? (cmp@0 @01 @02)) @3) + (bit_and:c (convert? (icmp@4 @01 @02)) @5)) + (if (INTEGRAL_TYPE_P (type) + /* The scalar version has to be canonicalized after vectorization + because it makes unconditional loads conditional ones, which + means we lose vectorization because the loads may trap. */ + && canonicalize_math_after_vectorization_p ()) + (bit_and (cond @0 @3 @5) { build_one_cst (type); }))) + + /* Fold ((-(a < b) & c) | (-(a >=3D b) & d)) into a < b ? c : d. This is + canonicalized further and we recognize the conditional form: + (a < b ? c : 0) | (a >=3D b ? d : 0) into a < b ? c : d. */ + (simplify + (bit_ior + (cond (cmp@0 @01 @02) @3 zerop) + (cond (icmp@4 @01 @02) @5 zerop)) + (if (INTEGRAL_TYPE_P (type) + /* The scalar version has to be canonicalized after vectorization + because it makes unconditional loads conditional ones, which + means we lose vectorization because the loads may trap. */ + && canonicalize_math_after_vectorization_p ()) + (cond @0 @3 @5))) + + /* Vector Fold (((a < b) & c) | ((a >=3D b) & d)) into a < b ? c : d.=20 + and ((~(a < b) & c) | (~(a >=3D b) & d)) into a < b ? c : d. */ + (simplify + (bit_ior + (bit_and:c (vec_cond:s (cmp@0 @6 @7) @4 @5) @2) + (bit_and:c (vec_cond:s (icmp@1 @6 @7) @4 @5) @3)) + (if (integer_zerop (@5)) + (switch + (if (integer_onep (@4)) + (bit_and (vec_cond @0 @2 @3) @4)) + (if (integer_minus_onep (@4)) + (vec_cond @0 @2 @3))) + (if (integer_zerop (@4)) + (switch + (if (integer_onep (@5)) + (bit_and (vec_cond @0 @3 @2) @5)) + (if (integer_minus_onep (@5)) + (vec_cond @0 @3 @2)))))) + + /* Scalar Vectorized Fold ((-(a < b) & c) | (-(a >=3D b) & d)) + into a < b ? d : c. */ + (simplify + (bit_ior + (vec_cond:s (cmp@0 @4 @5) @2 integer_zerop) + (vec_cond:s (icmp@1 @4 @5) @3 integer_zerop)) + (vec_cond @0 @2 @3))) + /* Transform X & -Y into X * Y when Y is { 0 or 1 }. */ (simplify (bit_and:c (convert? (negate zero_one_valued_p@0)) @1) diff --git a/gcc/testsuite/gcc.target/aarch64/if-compare_1.c b/gcc/testsuit= e/gcc.target/aarch64/if-compare_1.c new file mode 100644 index 0000000000000000000000000000000000000000..53bbd779a30e1a30e0ce0e4e5ea= f589bfaf570fe --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/if-compare_1.c @@ -0,0 +1,47 @@ +/* { dg-do run } */ +/* { dg-additional-options "-O -save-temps" } */ +/* { dg-final { check-function-bodies "**" "" "" { target { le } } } } */ + +extern void abort (); + +/* +**zoo1: +** cmp w0, w1 +** csel w0, w2, w3, lt +** and w0, w0, 1 +** ret +*/ +__attribute((noipa, noinline)) +int zoo1 (int a, int b, int c, int d) +{ + return ((a < b) & c) | ((a >=3D b) & d); +} + +/* +**zoo2: +** cmp w0, w1 +** csel w0, w2, w3, lt +** ret +*/ +__attribute((noipa, noinline)) +int zoo2 (int a, int b, int c, int d) +{ + return (-(a < b) & c) | (-(a >=3D b) & d); +} + +int main () +{ + if (zoo1 (-3, 3, 5, 8) !=3D 1) + abort (); + + if (zoo1 (3, -3, 5, 8) !=3D 0) + abort (); + + if (zoo2 (-3, 3, 5, 8) !=3D 5) + abort (); + + if (zoo2 (3, -3, 5, 8) !=3D 8) + abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/aarch64/if-compare_2.c b/gcc/testsuit= e/gcc.target/aarch64/if-compare_2.c new file mode 100644 index 0000000000000000000000000000000000000000..14988abac45989578b198f28c7c= 0ea203959c08b --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/if-compare_2.c @@ -0,0 +1,96 @@ +/* { dg-do run } */ +/* { dg-additional-options "-O3 -std=3Dc99 -save-temps" } */ +/* { dg-final { check-function-bodies "**" "" "" { target { le } } } } */ + +#pragma GCC target "+nosve" + +#include + +typedef int v4si __attribute__ ((vector_size (16))); + +/* +**foo1: +** cmgt v0.4s, v1.4s, v0.4s +** bsl v0.16b, v2.16b, v3.16b +** ret +*/ +v4si foo1 (v4si a, v4si b, v4si c, v4si d) { + return ((a < b) & c) | ((a >=3D b) & d); +} + +/* +**foo2: +** cmgt v0.4s, v1.4s, v0.4s +** bsl v0.16b, v3.16b, v2.16b +** ret +*/ +v4si foo2 (v4si a, v4si b, v4si c, v4si d) { + return (~(a < b) & c) | (~(a >=3D b) & d); +} + + +/** +**bar1: +**... +** cmge v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s +** bsl v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b +** and v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b +**... +*/ +void bar1 (int * restrict a, int * restrict b, int * restrict c, + int * restrict d, int * restrict res, int n) +{ + for (int i =3D 0; i < (n & -4); i++) + res[i] =3D ((a[i] < b[i]) & c[i]) | ((a[i] >=3D b[i]) & d[i]); +} + +/** +**bar2: +**... +** cmge v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s +** bsl v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b +**... +*/ +void bar2 (int * restrict a, int * restrict b, int * restrict c, + int * restrict d, int * restrict res, int n) +{ + for (int i =3D 0; i < (n & -4); i++) + res[i] =3D (-(a[i] < b[i]) & c[i]) | (-(a[i] >=3D b[i]) & d[i]); +} + +extern void abort (); + +int main () +{ + + v4si a =3D { -3, -3, -3, -3 }; + v4si b =3D { 3, 3, 3, 3 }; + v4si c =3D { 5, 5, 5, 5 }; + v4si d =3D { 8, 8, 8, 8 }; + + v4si res1 =3D foo1 (a, b, c, d); + if (memcmp (&res1, &c, 16UL) !=3D 0) + abort (); + + v4si res2 =3D foo2 (a, b, c, d); + if (memcmp (&res2, &d, 16UL) !=3D 0) + abort (); + + int ar[4] =3D { -3, -3, -3, -3 }; + int br[4] =3D { 3, 3, 3, 3 }; + int cr[4] =3D { 5, 5, 5, 5 }; + int dr[4] =3D { 8, 8, 8, 8 }; + + int exp1[4] =3D { 1, 1, 1, 1 }; + int res3[4]; + bar1 ((int*)&ar, (int*)&br, (int*)&cr, (int*)&dr, (int*)&res3, 4); + if (memcmp (&res3, &exp1, 16UL) !=3D 0) + abort (); + + int res4[4]; + bar2 ((int*)&ar, (int*)&br, (int*)&cr, (int*)&dr, (int*)&res4, 4); + if (memcmp (&res4, &cr, 16UL) !=3D 0) + abort (); + + return 0; +} --_002_VI1PR08MB532528C7619B621263E65E28FF379VI1PR08MB5325eurp_ Content-Type: application/octet-stream; name="rb15679.patch" Content-Description: rb15679.patch Content-Disposition: attachment; filename="rb15679.patch"; size=6088; creation-date="Mon, 31 Oct 2022 11:42:04 GMT"; modification-date="Mon, 31 Oct 2022 11:42:31 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9tYXRjaC5wZCBiL2djYy9tYXRjaC5wZAppbmRleCAyOTdjNGQ3YTIz NTVjMmZhYTJhZmI3Y2ZhMGI0ZTE3MWExNjFlZjM5Li40NjMxMzJiZmQzNWNmNjFmNTAzODFjZWRk MDdkNzYxN2M2MzgwMzRiIDEwMDY0NAotLS0gYS9nY2MvbWF0Y2gucGQKKysrIGIvZ2NjL21hdGNo LnBkCkBAIC0xOTAzLDYgKzE5MDMsNjEgQEAgREVGSU5FX0lOVF9BTkRfRkxPQVRfUk9VTkRfRk4g KFJJTlQpCiAgKGlmIChJTlRFR1JBTF9UWVBFX1AgKHR5cGUpKQogICAoYml0X2FuZCBAMCBAMSkp KQogCisoZm9yIGNtcCAodGNjX2NvbXBhcmlzb24pCisgICAgIGljbXAgKGludmVydGVkX3RjY19j b21wYXJpc29uKQorIC8qIEZvbGQgKCgoYSA8IGIpICYgYykgfCAoKGEgPj0gYikgJiBkKSkgaW50 byAoYSA8IGIgPyBjIDogZCkgJiAxLiAgKi8KKyAoc2ltcGxpZnkKKyAgKGJpdF9pb3IKKyAgIChi aXRfYW5kOmMgKGNvbnZlcnQ/IChjbXBAMCAgQDAxIEAwMikpIEAzKQorICAgKGJpdF9hbmQ6YyAo Y29udmVydD8gKGljbXBANCBAMDEgQDAyKSkgQDUpKQorICAgIChpZiAoSU5URUdSQUxfVFlQRV9Q ICh0eXBlKQorCSAvKiBUaGUgc2NhbGFyIHZlcnNpb24gaGFzIHRvIGJlIGNhbm9uaWNhbGl6ZWQg YWZ0ZXIgdmVjdG9yaXphdGlvbgorCSAgICBiZWNhdXNlIGl0IG1ha2VzIHVuY29uZGl0aW9uYWwg bG9hZHMgY29uZGl0aW9uYWwgb25lcywgd2hpY2gKKwkgICAgbWVhbnMgd2UgbG9zZSB2ZWN0b3Jp emF0aW9uIGJlY2F1c2UgdGhlIGxvYWRzIG1heSB0cmFwLiAgKi8KKwkgJiYgY2Fub25pY2FsaXpl X21hdGhfYWZ0ZXJfdmVjdG9yaXphdGlvbl9wICgpKQorICAgICAoYml0X2FuZCAoY29uZCBAMCBA MyBANSkgeyBidWlsZF9vbmVfY3N0ICh0eXBlKTsgfSkpKQorCisgLyogRm9sZCAoKC0oYSA8IGIp ICYgYykgfCAoLShhID49IGIpICYgZCkpIGludG8gYSA8IGIgPyBjIDogZC4gIFRoaXMgaXMKKyAg ICBjYW5vbmljYWxpemVkIGZ1cnRoZXIgYW5kIHdlIHJlY29nbml6ZSB0aGUgY29uZGl0aW9uYWwg Zm9ybToKKyAgICAoYSA8IGIgPyBjIDogMCkgfCAoYSA+PSBiID8gZCA6IDApIGludG8gYSA8IGIg PyBjIDogZC4gICovCisgKHNpbXBsaWZ5CisgIChiaXRfaW9yCisgICAoY29uZCAoY21wQDAgIEAw MSBAMDIpIEAzIHplcm9wKQorICAgKGNvbmQgKGljbXBANCBAMDEgQDAyKSBANSB6ZXJvcCkpCisg ICAgKGlmIChJTlRFR1JBTF9UWVBFX1AgKHR5cGUpCisJIC8qIFRoZSBzY2FsYXIgdmVyc2lvbiBo YXMgdG8gYmUgY2Fub25pY2FsaXplZCBhZnRlciB2ZWN0b3JpemF0aW9uCisJICAgIGJlY2F1c2Ug aXQgbWFrZXMgdW5jb25kaXRpb25hbCBsb2FkcyBjb25kaXRpb25hbCBvbmVzLCB3aGljaAorCSAg ICBtZWFucyB3ZSBsb3NlIHZlY3Rvcml6YXRpb24gYmVjYXVzZSB0aGUgbG9hZHMgbWF5IHRyYXAu ICAqLworCSAmJiBjYW5vbmljYWxpemVfbWF0aF9hZnRlcl92ZWN0b3JpemF0aW9uX3AgKCkpCisg ICAgKGNvbmQgQDAgQDMgQDUpKSkKKworIC8qIFZlY3RvciBGb2xkICgoKGEgPCBiKSAmIGMpIHwg KChhID49IGIpICYgZCkpIGludG8gYSA8IGIgPyBjIDogZC4gCisgICAgYW5kICgofihhIDwgYikg JiBjKSB8ICh+KGEgPj0gYikgJiBkKSkgaW50byBhIDwgYiA/IGMgOiBkLiAgKi8KKyAoc2ltcGxp ZnkKKyAgKGJpdF9pb3IKKyAgIChiaXRfYW5kOmMgKHZlY19jb25kOnMgKGNtcEAwIEA2IEA3KSBA NCBANSkgQDIpCisgICAoYml0X2FuZDpjICh2ZWNfY29uZDpzIChpY21wQDEgQDYgQDcpIEA0IEA1 KSBAMykpCisgICAgKGlmIChpbnRlZ2VyX3plcm9wIChANSkpCisgICAgIChzd2l0Y2gKKyAgICAg IChpZiAoaW50ZWdlcl9vbmVwIChANCkpCisgICAgICAgKGJpdF9hbmQgKHZlY19jb25kIEAwIEAy IEAzKSBANCkpCisJKGlmIChpbnRlZ2VyX21pbnVzX29uZXAgKEA0KSkKKwkgKHZlY19jb25kIEAw IEAyIEAzKSkpCisgICAgKGlmIChpbnRlZ2VyX3plcm9wIChANCkpCisgICAgIChzd2l0Y2gKKyAg ICAgIChpZiAoaW50ZWdlcl9vbmVwIChANSkpCisgICAgICAgKGJpdF9hbmQgKHZlY19jb25kIEAw IEAzIEAyKSBANSkpCisgICAgICAoaWYgKGludGVnZXJfbWludXNfb25lcCAoQDUpKQorICAgICAg ICh2ZWNfY29uZCBAMCBAMyBAMikpKSkpKQorCisgLyogU2NhbGFyIFZlY3Rvcml6ZWQgRm9sZCAo KC0oYSA8IGIpICYgYykgfCAoLShhID49IGIpICYgZCkpCisgICAgaW50byBhIDwgYiA/IGQgOiBj LiAgKi8KKyAoc2ltcGxpZnkKKyAgKGJpdF9pb3IKKyAgICh2ZWNfY29uZDpzIChjbXBAMCBANCBA NSkgQDIgaW50ZWdlcl96ZXJvcCkKKyAgICh2ZWNfY29uZDpzIChpY21wQDEgQDQgQDUpIEAzIGlu dGVnZXJfemVyb3ApKQorICAgICh2ZWNfY29uZCBAMCBAMiBAMykpKQorCiAvKiBUcmFuc2Zvcm0g WCAmIC1ZIGludG8gWCAqIFkgd2hlbiBZIGlzIHsgMCBvciAxIH0uICAqLwogKHNpbXBsaWZ5CiAg KGJpdF9hbmQ6YyAoY29udmVydD8gKG5lZ2F0ZSB6ZXJvX29uZV92YWx1ZWRfcEAwKSkgQDEpCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9pZi1jb21wYXJlXzEu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2lmLWNvbXBhcmVfMS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAuLjUzYmJkNzc5YTMwZTFhMzBlMGNlMGU0ZTVlYWY1ODliZmFmNTcwZmUKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9pZi1jb21wYXJlXzEu YwpAQCAtMCwwICsxLDQ3IEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLWFkZGl0aW9u YWwtb3B0aW9ucyAiLU8gLXNhdmUtdGVtcHMiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBjaGVjay1m dW5jdGlvbi1ib2RpZXMgIioqIiAiIiAiIiB7IHRhcmdldCB7IGxlIH0gfSB9IH0gKi8KKworZXh0 ZXJuIHZvaWQgYWJvcnQgKCk7CisKKy8qCisqKnpvbzE6CisqKgljbXAJdzAsIHcxCisqKgljc2Vs CXcwLCB3MiwgdzMsIGx0CisqKglhbmQJdzAsIHcwLCAxCisqKglyZXQKKyovCitfX2F0dHJpYnV0 ZSgobm9pcGEsIG5vaW5saW5lKSkKK2ludCB6b28xIChpbnQgYSwgaW50IGIsIGludCBjLCBpbnQg ZCkKK3sKKyAgIHJldHVybiAoKGEgPCBiKSAmIGMpIHwgKChhID49IGIpICYgZCk7Cit9CisKKy8q CisqKnpvbzI6CisqKgljbXAJdzAsIHcxCisqKgljc2VsCXcwLCB3MiwgdzMsIGx0CisqKglyZXQK KyovCitfX2F0dHJpYnV0ZSgobm9pcGEsIG5vaW5saW5lKSkKK2ludCB6b28yIChpbnQgYSwgaW50 IGIsIGludCBjLCBpbnQgZCkKK3sKKyAgIHJldHVybiAoLShhIDwgYikgJiBjKSB8ICgtKGEgPj0g YikgJiBkKTsKK30KKworaW50IG1haW4gKCkKK3sKKyAgaWYgKHpvbzEgKC0zLCAzLCA1LCA4KSAh PSAxKQorICAgIGFib3J0ICgpOworCisgIGlmICh6b28xICgzLCAtMywgNSwgOCkgIT0gMCkKKyAg ICBhYm9ydCAoKTsKKworICBpZiAoem9vMiAoLTMsIDMsIDUsIDgpICE9IDUpCisgICAgYWJvcnQg KCk7CisKKyAgaWYgKHpvbzIgKDMsIC0zLCA1LCA4KSAhPSA4KQorICAgIGFib3J0ICgpOworCisg IHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvaWYtY29tcGFyZV8yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9pZi1j b21wYXJlXzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDk4OGFiYWM0NTk4OTU3OGIxOThmMjhjN2MwZWEyMDM5 NTljMDhiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvaWYtY29tcGFyZV8yLmMKQEAgLTAsMCArMSw5NiBAQAorLyogeyBkZy1kbyBydW4gfSAqLwor LyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1PMyAtc3RkPWM5OSAtc2F2ZS10ZW1wcyIgfSAq LworLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiICIiIHsgdGFy Z2V0IHsgbGUgfSB9IH0gfSAqLworCisjcHJhZ21hIEdDQyB0YXJnZXQgIitub3N2ZSIKKworI2lu Y2x1ZGUgPHN0cmluZy5oPgorCit0eXBlZGVmIGludCB2NHNpIF9fYXR0cmlidXRlX18gKCh2ZWN0 b3Jfc2l6ZSAoMTYpKSk7CisKKy8qCisqKmZvbzE6CisqKgljbWd0CXYwLjRzLCB2MS40cywgdjAu NHMKKyoqCWJzbAl2MC4xNmIsIHYyLjE2YiwgdjMuMTZiCisqKglyZXQKKyovCit2NHNpIGZvbzEg KHY0c2kgYSwgdjRzaSBiLCB2NHNpIGMsIHY0c2kgZCkgeworICAgIHJldHVybiAoKGEgPCBiKSAm IGMpIHwgKChhID49IGIpICYgZCk7Cit9CisKKy8qCisqKmZvbzI6CisqKgljbWd0CXYwLjRzLCB2 MS40cywgdjAuNHMKKyoqCWJzbAl2MC4xNmIsIHYzLjE2YiwgdjIuMTZiCisqKglyZXQKKyovCit2 NHNpIGZvbzIgKHY0c2kgYSwgdjRzaSBiLCB2NHNpIGMsIHY0c2kgZCkgeworICAgIHJldHVybiAo fihhIDwgYikgJiBjKSB8ICh+KGEgPj0gYikgJiBkKTsKK30KKworCisvKioKKyoqYmFyMToKKyoq Li4uCisqKgljbWdlCXZbMC05XSsuNHMsIHZbMC05XSsuNHMsIHZbMC05XSsuNHMKKyoqCWJzbAl2 WzAtOV0rLjE2YiwgdlswLTldKy4xNmIsIHZbMC05XSsuMTZiCisqKglhbmQJdlswLTldKy4xNmIs IHZbMC05XSsuMTZiLCB2WzAtOV0rLjE2YgorKiouLi4KKyovCit2b2lkIGJhcjEgKGludCAqIHJl c3RyaWN0IGEsIGludCAqIHJlc3RyaWN0IGIsIGludCAqIHJlc3RyaWN0IGMsCisJICBpbnQgKiBy ZXN0cmljdCBkLCBpbnQgKiByZXN0cmljdCByZXMsIGludCBuKQoreworICBmb3IgKGludCBpID0g MDsgaSA8IChuICYgLTQpOyBpKyspCisgICAgcmVzW2ldID0gKChhW2ldIDwgYltpXSkgJiBjW2ld KSB8ICgoYVtpXSA+PSBiW2ldKSAmIGRbaV0pOworfQorCisvKioKKyoqYmFyMjoKKyoqLi4uCisq KgljbWdlCXZbMC05XSsuNHMsIHZbMC05XSsuNHMsIHZbMC05XSsuNHMKKyoqCWJzbAl2WzAtOV0r LjE2YiwgdlswLTldKy4xNmIsIHZbMC05XSsuMTZiCisqKi4uLgorKi8KK3ZvaWQgYmFyMiAoaW50 ICogcmVzdHJpY3QgYSwgaW50ICogcmVzdHJpY3QgYiwgaW50ICogcmVzdHJpY3QgYywKKwkgIGlu dCAqIHJlc3RyaWN0IGQsIGludCAqIHJlc3RyaWN0IHJlcywgaW50IG4pCit7CisgIGZvciAoaW50 IGkgPSAwOyBpIDwgKG4gJiAtNCk7IGkrKykKKyAgICByZXNbaV0gPSAoLShhW2ldIDwgYltpXSkg JiBjW2ldKSB8ICgtKGFbaV0gPj0gYltpXSkgJiBkW2ldKTsKK30KKworZXh0ZXJuIHZvaWQgYWJv cnQgKCk7CisKK2ludCBtYWluICgpCit7CisKKyAgdjRzaSBhID0geyAtMywgLTMsIC0zLCAtMyB9 OworICB2NHNpIGIgPSB7IDMsIDMsIDMsIDMgfTsKKyAgdjRzaSBjID0geyA1LCA1LCA1LCA1IH07 CisgIHY0c2kgZCA9IHsgOCwgOCwgOCwgOCB9OworCisgIHY0c2kgcmVzMSA9IGZvbzEgKGEsIGIs IGMsIGQpOworICBpZiAobWVtY21wICgmcmVzMSwgJmMsIDE2VUwpICE9IDApCisgICAgYWJvcnQg KCk7CisKKyAgdjRzaSByZXMyID0gZm9vMiAoYSwgYiwgYywgZCk7CisgIGlmIChtZW1jbXAgKCZy ZXMyLCAmZCwgMTZVTCkgIT0gMCkKKyAgIGFib3J0ICgpOworCisgIGludCBhcls0XSA9IHsgLTMs IC0zLCAtMywgLTMgfTsKKyAgaW50IGJyWzRdID0geyAzLCAzLCAzLCAzIH07CisgIGludCBjcls0 XSA9IHsgNSwgNSwgNSwgNSB9OworICBpbnQgZHJbNF0gPSB7IDgsIDgsIDgsIDggfTsKKworICBp bnQgZXhwMVs0XSA9IHsgMSwgMSwgMSwgMSB9OworICBpbnQgcmVzM1s0XTsKKyAgYmFyMSAoKGlu dCopJmFyLCAoaW50KikmYnIsIChpbnQqKSZjciwgKGludCopJmRyLCAoaW50KikmcmVzMywgNCk7 CisgIGlmIChtZW1jbXAgKCZyZXMzLCAmZXhwMSwgMTZVTCkgIT0gMCkKKyAgICBhYm9ydCAoKTsK KworICBpbnQgcmVzNFs0XTsKKyAgYmFyMiAoKGludCopJmFyLCAoaW50KikmYnIsIChpbnQqKSZj ciwgKGludCopJmRyLCAoaW50KikmcmVzNCwgNCk7CisgIGlmIChtZW1jbXAgKCZyZXM0LCAmY3Is IDE2VUwpICE9IDApCisgICAgYWJvcnQgKCk7CisKKyAgcmV0dXJuIDA7Cit9Cg== --_002_VI1PR08MB532528C7619B621263E65E28FF379VI1PR08MB5325eurp_--