From patchwork Tue Aug 4 16:09:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Omar Tahir X-Patchwork-Id: 1340907 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=1yqiHko6; dkim=fail reason="signature verification failed" (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=1yqiHko6; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BLfqB5lQtz9sPC for ; Wed, 5 Aug 2020 02:10:14 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CEAFB3840C2A; Tue, 4 Aug 2020 16:10:12 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30085.outbound.protection.outlook.com [40.107.3.85]) by sourceware.org (Postfix) with ESMTPS id B90833840C1B for ; Tue, 4 Aug 2020 16:10:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B90833840C1B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Omar.Tahir@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=zkFWZAnotthS80f6/zHjaC7SdQocqhXHPkhIiGxQL50=; b=1yqiHko6UQlpJdToE4O4dzvxVFpu1NKUVjZTjXDYrQHiYpfBzQ8EvwNM2dA5bM1v2MT5Ki6beT5NFGdjURe48pSpdd1HatzYdBGcp8AsuVNAyGf8RRSSrZeMMviHPU6mKhMTulPT6rJRW7/+SsTMHY6x/P+QUlwjqJ3y9FACvvU= Received: from DB3PR06CA0023.eurprd06.prod.outlook.com (2603:10a6:8:1::36) by DB8PR08MB5289.eurprd08.prod.outlook.com (2603:10a6:10:b2::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.15; Tue, 4 Aug 2020 16:10:06 +0000 Received: from DB5EUR03FT039.eop-EUR03.prod.protection.outlook.com (2603:10a6:8:1:cafe::31) by DB3PR06CA0023.outlook.office365.com (2603:10a6:8:1::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.15 via Frontend Transport; Tue, 4 Aug 2020 16:10:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=bestguesspass 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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT039.mail.protection.outlook.com (10.152.21.120) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.20 via Frontend Transport; Tue, 4 Aug 2020 16:10:06 +0000 Received: ("Tessian outbound cbf1bd92df60:v64"); Tue, 04 Aug 2020 16:10:06 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 1b65c0ebe6604112 X-CR-MTA-TID: 64aa7808 Received: from f09c871794e7.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 84036E98-D53D-4022-A9C7-59C3C49A3DA1.1; Tue, 04 Aug 2020 16:09:59 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f09c871794e7.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 04 Aug 2020 16:09:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V68SuFLqRZuUeP28oDUIxCfugcn0VM0Y7XtWI58OKmQ9Ft5tFr+XLgxwZRMcTPM8KUtVuPIswAZsXVio48pbMLGcqJKZM0Dqh2f2SsV/N/+hsXpV1xitAHooss7p02Nud8as1GM+RpnR0BWaw8hagJLSJyRTzQn7FVigWQjGA2QMWOfQyjG2eWADRc8JwjlZoZf62LBLNr64IFUZvcyI5H5FBc5D7dWfVdLzyv4Xk9Iyofoy3KSAI3X6Oo6wyMRZfomauqMgXQzpt6W3pZ+VH9C3svVvyjzKSazRFgy0zXKsSKNCutsT00xw/HHK9s/fcPZvNOJ9vNCquaouWvC1LQ== 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-SenderADCheck; bh=zkFWZAnotthS80f6/zHjaC7SdQocqhXHPkhIiGxQL50=; b=PYELVaPmjlRlBbkb0b21l4cLJtcNoNX94KQ3RgGnkzMIKLK/Rg20eBQyOzLqvgC4jZCkfXi1KIuItVLmfkEE4rqcIBk4EMX5HiaEdez3cFV4dFJU9upHS6hDaD8brAd0LUfBkyn2UQ2efG4q1wBLuYqlXPg7zgWX5O+o8UxgBiQpc4nhxwPFIYtdxvqI00IspnZCDqQ7z9agFq/1cahvOCa12BpcBSNfrqSbpRz4wSCsGlSFWT5me/YK36OBjrt8IEbxXgGhPL97RIokQqUj4wsIn3YpfCWIFIIV68zNW/7/tW4rlRzqkJ92CbAU5ANAZAuVwxikqsoxXtc1XZfmkw== 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=zkFWZAnotthS80f6/zHjaC7SdQocqhXHPkhIiGxQL50=; b=1yqiHko6UQlpJdToE4O4dzvxVFpu1NKUVjZTjXDYrQHiYpfBzQ8EvwNM2dA5bM1v2MT5Ki6beT5NFGdjURe48pSpdd1HatzYdBGcp8AsuVNAyGf8RRSSrZeMMviHPU6mKhMTulPT6rJRW7/+SsTMHY6x/P+QUlwjqJ3y9FACvvU= Received: from AM0PR08MB5121.eurprd08.prod.outlook.com (2603:10a6:208:159::23) by AM0PR08MB4465.eurprd08.prod.outlook.com (2603:10a6:208:139::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.15; Tue, 4 Aug 2020 16:09:57 +0000 Received: from AM0PR08MB5121.eurprd08.prod.outlook.com ([fe80::8963:a047:a9d1:d7f1]) by AM0PR08MB5121.eurprd08.prod.outlook.com ([fe80::8963:a047:a9d1:d7f1%7]) with mapi id 15.20.3239.022; Tue, 4 Aug 2020 16:09:57 +0000 From: Omar Tahir To: Kyrylo Tkachov , "nickc@redhat.com" , Ramana Radhakrishnan , Richard Earnshaw , "gcc-patches@gcc.gnu.org" Subject: [PATCH 1/5][Arm] Modify default tuning of armv8.1-m.main to use Cortex-M55 Thread-Topic: [PATCH 1/5][Arm] Modify default tuning of armv8.1-m.main to use Cortex-M55 Thread-Index: AdZqeW2QNu1jRYBhRM22mWs4QV21Jg== Date: Tue, 4 Aug 2020 16:09:57 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: 4BF91729E9E210488F99ED18D78C254F.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [2a00:23a8:4295:3f00:e516:6096:362d:77aa] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: e81861bb-7dea-46ce-428c-08d83890da45 x-ms-traffictypediagnostic: AM0PR08MB4465:|DB8PR08MB5289: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:8273;OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 8gz32ckV7+1r0cMVFWN9fycP0kPIK67fml4k3VQTApPlp3gVZ++KpNQ+RjeQ+F6V4ZTwcW0KD87HHja8khMsLKzvS243iTDbTrox+yle580ZEhbW0IUyP4/gYb7rnNmkdwWMAMSo51g80uV1W1FnHOCIxGUzA8fBJFXqT8btdIa92bJm9OTRNDWkFbyD19FnFKHQBfh+flyXHAwyJY4TpPrOltL+VqFr2P10XabYyznRzfJ53cJlrf5a0TLrWESJDoHvtWmaHFsfq20nQMT2Qd7/O1QxbNpZMCZQ6nXSk09osguqSVJVYFyQsTxUCwWQD/ZIpsCqoHmrQ7LeJ5nNCQ== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR08MB5121.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(346002)(396003)(376002)(136003)(39850400004)(316002)(4744005)(86362001)(99936003)(6506007)(478600001)(110136005)(66446008)(66476007)(66616009)(64756008)(66556008)(66946007)(76116006)(2906002)(5660300002)(7696005)(8936002)(71200400001)(55016002)(33656002)(52536014)(8676002)(9686003)(186003)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: fXoUpAkxQ20yuj/vvhM+9vK35cL99ShcFP8q9An2nEXtwe7uzrkCExOwKJ110XXopg3IWllz/tyMwsPZevzK7YQv97R/SEg/Ppt1T1cmZLSRVNf9e/aI4QndoDccOLe2O8eVXKlYAbAeyFkMM5IDxzmBhlV7GgxiSdSMbKejA52rZgx0X27JPtrdaSxFwDf4HykSsINgftVc/I+VeN2clvF3R9/EPt8PdXsdcf/oSC/IbfeaRFBRzqQEsU+IZtNgIxrkf4Kkyc9lozgnmXG/FQjPdVSVc1viOAoZsyflcGdNVrxRyYAnnupAb69XJ6pqriQZ3mn5RUbkkiBq9g1W3AH2dgQOfitzmEBKQ6MqNBNDCbJS0MCDwc3zmLlHsYHKVU3uKwHbtVU1g62ZG8RD09iz5txXeM6Qi38HGl3GEwUOuoAZbCWO8PghL2kLLs89hKMLs6ypEeZMGQoFTmzVB+uDT5gLy0d4R3OeMGOXP2tJKRQpq9UZs317lbFS/12rsxxKm8uY02MFAlFGozoNuPL2t80Ul4m1m6OviedIrABT8KkEzxSroNp8SbhQASj1Gh9wYvQaH+vxP4RVaKGPtdRzVHQu+qIXvdJ7cLIsroXMyRIhUn8L9wJK3TDkmRoucXJe6HbFXzgTYVrcH7/YSa4+3ZIqzIjg+av3E8DZyWkkgzzAnHoQhmuvzd/1eroi8KtZQrEhSvO7OT+cbqX2gA== MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4465 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT039.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: d4fea76e-8519-4cd4-b9ce-08d83890d4ef X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ls58+xslM+6Rxh1fY7OMt6xyH+/fpAM09wDuGCJ2iVfd5Fa062n2z4Qd8jhOatoeq4Con9GN+ccTOleGble9ib+dYT4JUF4OSPCjqUka2uFR/Qv0Rb5JhyEqhePGmkbmfBGxaZVQ4CYLs6FTcn0hfW0fsxS9MtV9bQMVQAlVy+o7Fra2BNgiuIMjKWIMkpSweCzrI3OoMCTW+PkHBdRRVfjd+nkeuuxJhbAhf7ipFI+myCXFF2X1M41GKeCjIcIX3eAUbgfW5BviARlSc5hCbgJGKsPiQ83LtIexQi47DpTuIfcpqH2Fj79FtWf5Qk87Ev1yb5m5eWwbuXpD0NrD3nYwyGqCuG8BpsX2HOETCDh5wneNRCHBk5h/2S3/SUwNZt8sK9RtCbTrIzhIGJM+Nw== 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; SFTY:; SFS:(4636009)(39850400004)(346002)(376002)(136003)(396003)(46966005)(336012)(47076004)(82740400003)(66616009)(99936003)(82310400002)(356005)(110136005)(81166007)(86362001)(5660300002)(478600001)(7696005)(9686003)(8676002)(26005)(55016002)(316002)(2906002)(235185007)(70206006)(70586007)(33656002)(8936002)(6506007)(52536014)(186003)(579004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2020 16:10:06.1263 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e81861bb-7dea-46ce-428c-08d83890da45 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: DB5EUR03FT039.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5289 X-Spam-Status: No, score=-13.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, HTML_MESSAGE, KAM_NUMSUBJECT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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: , Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" Previously, compiling with -march=armv8.1-m.main would tune for Cortex-M7. However, the Cortex-M7 only supports up to Armv7e-M. The Cortex-M55 is the earliest CPU that supports Armv8.1-M Mainline so is more appropriate. This also has the effect of changing the branch cost function used, which will be necessary to correctly prioritise conditional instructions over branches in the rest of this patch series. Regression tested on arm-none-eabi. gcc/ChangeLog: 2020-07-30: Omar Tahir * config/arm/arm-cpus.in (armv8.1-m.main): Tune for Cortex-M55. diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in index 728be500b80..c98f8ede8fd 100644 --- a/gcc/config/arm/arm-cpus.in +++ b/gcc/config/arm/arm-cpus.in @@ -716,7 +716,7 @@ begin arch armv8-r end arch armv8-r begin arch armv8.1-m.main - tune for cortex-m7 + tune for cortex-m55 tune flags CO_PROC base 8M_MAIN profile M From patchwork Tue Aug 4 16:11:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Omar Tahir X-Patchwork-Id: 1340910 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=rTe0Q+3c; dkim=fail reason="signature verification failed" (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=rTe0Q+3c; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BLfs71bZMz9sPC for ; Wed, 5 Aug 2020 02:11:54 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 611AC384407D; Tue, 4 Aug 2020 16:11:52 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60055.outbound.protection.outlook.com [40.107.6.55]) by sourceware.org (Postfix) with ESMTPS id D775E385ED4B for ; Tue, 4 Aug 2020 16:11:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D775E385ED4B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Omar.Tahir@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=wJbypAWUKBR8VXQdb6vL+T0QIV3rffh598uqwjwgcd4=; b=rTe0Q+3c24cWQguTJpkp74jLk5MrTcog8cCIx761juq5G0MCpoHEUV6DdeUyqpMspjTwFjoFOaX9lgib9q4A2TJPo+NxEySzHnuv+x7TpoOLKqaOIsM98PwJqlux7ey9GQGpjWHbLiFdDzcefWr7qBkpGry9RvsZCdiwJrvFMUU= Received: from DB8PR06CA0022.eurprd06.prod.outlook.com (2603:10a6:10:100::35) by AM0PR08MB3668.eurprd08.prod.outlook.com (2603:10a6:208:d8::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.20; Tue, 4 Aug 2020 16:11:45 +0000 Received: from DB5EUR03FT017.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:100:cafe::2c) by DB8PR06CA0022.outlook.office365.com (2603:10a6:10:100::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.17 via Frontend Transport; Tue, 4 Aug 2020 16:11:45 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=bestguesspass 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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT017.mail.protection.outlook.com (10.152.20.114) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.20 via Frontend Transport; Tue, 4 Aug 2020 16:11:45 +0000 Received: ("Tessian outbound cadacd461517:v64"); Tue, 04 Aug 2020 16:11:44 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 976fa43778f38611 X-CR-MTA-TID: 64aa7808 Received: from e8dc242154c3.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 909AC4F8-0D77-4194-885C-69F92FD3C905.1; Tue, 04 Aug 2020 16:11:39 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e8dc242154c3.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 04 Aug 2020 16:11:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hCXgpFECt0f5E+avPq97K7aX9uKRhigyEp3tGInq4aHCsgS2jLB3ZOqQaUEhuUmtFxvIPpSp+l80Vj78Fcsz8kmRlzBrdenlrqjxt37ED/D3x17IHMcKPqlsFmEEqs12AU7US5zygI91X6NE3PmTDeHCr5Ldb99zT/SRPusSL9Hg4AY1pq7JyICFBGio4mYMb2Sjj4LvBUNl68cJ+B2og5n710bA/nyCbM/FVncA7QiUp+H6JNNlERwyHc5nQIhSf5OeQwJUiP2p/Ns1AYGS87sAZGV0cGGN9h1uV95jThhCQ8McOEvm8VKdTTFDx20Jn3M5e3WllPp54CuGPxuO9Q== 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-SenderADCheck; bh=wJbypAWUKBR8VXQdb6vL+T0QIV3rffh598uqwjwgcd4=; b=AVnnvXIuLFxnXDl4882nKXkNveh4+bB7KFCIKXA5D0o0l3TknfvCTzBmw0X1g/f19g2U7mQKEpJs7J5Qd11XuvichiGU8g9Jo7/bX5yDd5oFtFQ9JMzQamA3OXtkxmkFTvv1ateOgWpg5VoyJfJpWaHFReUTgLwY59A1W7PR2XUsRIF57Dp6ad3YbfvNStbhMQNgFr/+bksrrldoCDhgoDSf00ZsiI5ytzpZUBerZlPCyRB+9ZqmFVcjyomdRz2vcNtQNKGDTMb8r1k2hQ9gQCc7TYOzf0FoXIf6R0AFtcD75W2+H0OEpMoYIi0B5M3dzFJpnN700WoQZEd/dtoSFQ== 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=wJbypAWUKBR8VXQdb6vL+T0QIV3rffh598uqwjwgcd4=; b=rTe0Q+3c24cWQguTJpkp74jLk5MrTcog8cCIx761juq5G0MCpoHEUV6DdeUyqpMspjTwFjoFOaX9lgib9q4A2TJPo+NxEySzHnuv+x7TpoOLKqaOIsM98PwJqlux7ey9GQGpjWHbLiFdDzcefWr7qBkpGry9RvsZCdiwJrvFMUU= Received: from AM0PR08MB5121.eurprd08.prod.outlook.com (2603:10a6:208:159::23) by AM0PR08MB4465.eurprd08.prod.outlook.com (2603:10a6:208:139::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.15; Tue, 4 Aug 2020 16:11:36 +0000 Received: from AM0PR08MB5121.eurprd08.prod.outlook.com ([fe80::8963:a047:a9d1:d7f1]) by AM0PR08MB5121.eurprd08.prod.outlook.com ([fe80::8963:a047:a9d1:d7f1%7]) with mapi id 15.20.3239.022; Tue, 4 Aug 2020 16:11:36 +0000 From: Omar Tahir To: Kyrylo Tkachov , "nickc@redhat.com" , Ramana Radhakrishnan , Richard Earnshaw , "gcc-patches@gcc.gnu.org" Subject: [PATCH 2/5][Arm] New pattern for CSINV instructions Thread-Topic: [PATCH 2/5][Arm] New pattern for CSINV instructions Thread-Index: AdZqecQ52B52IqQlR2mT4Ik+lPBfew== Date: Tue, 4 Aug 2020 16:11:36 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: F34A2E1BB03A43488FCC3E9C4CD25255.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [2a00:23a8:4295:3f00:e516:6096:362d:77aa] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 34d61513-b9d7-419e-fb71-08d838911535 x-ms-traffictypediagnostic: AM0PR08MB4465:|AM0PR08MB3668: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:3383;OLM:3383; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: sQ98JKtIlrBQSkNqfC+vMkKPx5Z0ighcYbh5y9VMD5bZNOMwmUgDE7BdlsnshYuVPdd5OgqVU2A4YTgeQlE7p7Bqv7u341wHk1sNrp+fTOhBPYNFUCV3Si0ocqiXdxw5eQkqFzHNFxGCTDNr6/ZueSeVd0sDL31qWuiHhlQiZ8jR2vXbMFxbL/23EPlSBB1jfNFeBFHYyJWu7zP4aTPYPJcsR1OirsAXkT8RUaRwuwYtnSluFYDj+9PGv/q84ow/xYERGNmQUwq143A1dJbruSF4UlbZbLVBo/qQrXbGT/275TMH7twG45i2bYaeLDqN2JIPzUf/hoH/+sN9Cgxgag== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR08MB5121.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(346002)(396003)(376002)(136003)(39850400004)(316002)(86362001)(99936003)(6506007)(83380400001)(478600001)(110136005)(66446008)(66476007)(66616009)(64756008)(66556008)(66946007)(76116006)(2906002)(5660300002)(7696005)(8936002)(71200400001)(55016002)(33656002)(52536014)(8676002)(9686003)(186003)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: GqSMg2w69MU7NplzWM+BRZm4HuNI1gQpmaRGyt/0PCOqVMN7Aufy4jXpPApkDsWYmGyMlrqv5F8eUeErU8EAvw1R2DBswm7+/MjAKIWPcTNhX+QESR+AXsFciTHOwdfDpLb+VuuXrB6Be18B4GPl2uSW9Zd4ycel1Q2vKXu8GWIZJx7H3dWWAVz+iMNyturPi8Gs7RTBYA51HjxhhUY+tCOh/gZdgbC+LT5yzl9Aho4s5TYXFl3z3nh6RqcZCUHUAHFtWjKHvYNhCyBKE+XMNCMw8+46aXxLgWmkB4fVjHB83RLdJxK/zFMYplTFLABVm9NLmzJvz7zHvbf+Qr8+uOmMKjPnnF2yaJGBfkxErD1kbF54dNGI7+XIjJVpRquoeFurUiAAus2pKw71jOTsOCTCbb84oJdVwomTDIRNfzMdDsdn0xfofbR72L/4Ag175ME+t65b97NuXsKAfpodpWArUgxoUNxic9jDfKr0NUnu/BtwygfokIhO1abQBQ4Y77EMgCIYyTvuJGmOU+6qHXDyLW4M9GDgbRbNhsY678EG1L86nw9hepNlv25ShcSLPX0wvN5hEPYdvCAJtaB/6PE+1JZuDtxZ29UMw19HS9GX1lP+aHjGO00vIkEl7eMWay+hmYdTzW2eBWdgsn9Z04GA0rwK+bMNT4fBXzyqpgG/2HjOB7+PVFWjIeEBhdwY9qShCUjf2eTfzrcuYj98ng== MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4465 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT017.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: e57a3ee7-9774-4c0f-7299-08d838910fff X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: X80bb9eKwD7Egptn5T9Xg/DMXbG/AK0k4wdg3F/rB3briH9dBHvN9uAMu4vLM85JyKU3LMVX0qvq/loafskAAZcD2mp8SFlC6wRpE/BTntwm49j7yL/MMsclBvfq+PA4LqBqbm55SPKejXivgZS6zYB5GbZJXwBGT074bwHfTMtoGhy3JPPpZT3Xg25veuB6sJ8C1dj5JqJIJdECST9wDRI/Md5P63zIJ9WLgVi3bWHfyYSt3jaA1lkHdah0uat+8EmrOZFHenQYks0VrvVwKh0eg8T+0ciTfHRRIk0RcY+lV08cA1eNKSSv0zlddzEyCnMEfQtdU1Kboirk7z/VZG25uzmSFwSSdoJFZBhgR8WelTn+a/Dw6FofeuSTaKG1m9jr2+k7DrtFScZyZkm56A== 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; SFTY:; SFS:(4636009)(39850400004)(396003)(376002)(136003)(346002)(46966005)(30864003)(26005)(8936002)(186003)(52536014)(33656002)(8676002)(316002)(110136005)(5660300002)(2906002)(235185007)(99936003)(66616009)(70586007)(70206006)(55016002)(82740400003)(83380400001)(478600001)(356005)(6506007)(7696005)(86362001)(82310400002)(81166007)(47076004)(336012)(9686003)(579004)(559001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2020 16:11:45.0117 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 34d61513-b9d7-419e-fb71-08d838911535 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: DB5EUR03FT017.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3668 X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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: , Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" This patch adds a new pattern, *thumb2_csinv, for generating CSINV nstructions. This pattern relies on a few general changes that will be used throughout the following patches: - A new macro, TARGET_COND_ARITH, which is only true on 8.1-M Mainline and represents the existence of these conditional instructions. - A change to the cond exec hook, arm_have_conditional_execution, which now returns false if TARGET_COND_ARITH before reload. This allows for some ifcvt transformations when they would usually be disabled. I've written a rather verbose comment (with the risk of over-explaining) as it's a bit of a confusing change. - One new predicate and one new constraint. - *thumb2_movcond has been restricted to only match if !TARGET_COND_ARITH, otherwise it triggers undesirable combines. 2020-07-30: Sudakshina Das Omar Tahir * config/arm/arm.h (TARGET_COND_ARITH): New macro. * config/arm/arm.c (arm_have_conditional_execution): Return false if TARGET_COND_ARITH before reload. * config/arm/constraints.md: (Z): New constant zero. * config/arm/predicates.md(arm_comparison_operation): Returns true if comparing CC_REGNUM with constant zero. * config/arm/thumb2.md (*thumb2_csinv): New. (*thumb2_movcond): Don't match if TARGET_COND_ARITH. Regression tested on arm-none-eabi. gcc/testsuite/ChangeLog: 2020-07-30: Sudakshina Das Omar Tahir * gcc.target/arm/csinv-1.c: New test. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index dac9a6fb5c4..3a9684cdcd8 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -29833,12 +29833,20 @@ arm_frame_pointer_required (void) return false; } -/* Only thumb1 can't support conditional execution, so return true if - the target is not thumb1. */ static bool arm_have_conditional_execution (void) { - return !TARGET_THUMB1; + bool has_cond_exec, enable_ifcvt_trans; + + /* Only THUMB1 cannot support conditional execution. */ + has_cond_exec = !TARGET_THUMB1; + + /* When TARGET_COND_ARITH is defined we'd like to turn on some ifcvt + transformations before reload. */ + enable_ifcvt_trans = TARGET_COND_ARITH && !reload_completed; + + /* The ifcvt transformations are only turned on if we return false. */ + return has_cond_exec && !enable_ifcvt_trans; } /* The AAPCS sets the maximum alignment of a vector to 64 bits. */ diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 30e1d6dc994..d67c91796e4 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -177,6 +177,10 @@ emission of floating point pcs attributes. */ #define TARGET_CRC32 (arm_arch_crc) +/* Thumb-2 but also has some conditional arithmetic instructions like csinc, + csinv, etc. */ +#define TARGET_COND_ARITH (arm_arch8_1m_main) + /* The following two macros concern the ability to execute coprocessor instructions for VFPv3 or NEON. TARGET_VFP3/TARGET_VFPD32 are currently only ever tested when we know we are generating for VFP hardware; we need diff --git a/gcc/config/arm/constraints.md b/gcc/config/arm/constraints.md index 011badc9957..048b25ef4a1 100644 --- a/gcc/config/arm/constraints.md +++ b/gcc/config/arm/constraints.md @@ -28,6 +28,7 @@ ;; The following normal constraints have been used: ;; in ARM/Thumb-2 state: G, I, j, J, K, L, M ;; in Thumb-1 state: I, J, K, L, M, N, O +;; in all states: Z ;; 'H' was previously used for FPA. ;; The following multi-letter normal constraints have been used: @@ -479,6 +480,11 @@ (and (match_code "mem") (match_test "TARGET_32BIT && neon_vector_mem_operand (op, 1, true)"))) +(define_constraint "Z" + "@internal + Integer constant zero." + (match_test "op == const0_rtx")) + (define_memory_constraint "Ux" "@internal In ARM/Thumb-2 state a valid address and load into CORE regs or only to diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md index 981eec520ba..2144520829c 100644 --- a/gcc/config/arm/predicates.md +++ b/gcc/config/arm/predicates.md @@ -485,6 +485,18 @@ (and (match_operand 0 "expandable_comparison_operator") (match_test "maybe_get_arm_condition_code (op) != ARM_NV"))) +(define_special_predicate "arm_comparison_operation" + (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu,unordered, + ordered,unlt,unle,unge,ungt") +{ + if (XEXP (op, 1) != const0_rtx) + return false; + rtx op0 = XEXP (op, 0); + if (!REG_P (op0) || REGNO (op0) != CC_REGNUM) + return false; + return maybe_get_arm_condition_code (op) != ARM_NV; +}) + (define_special_predicate "lt_ge_comparison_operator" (match_code "lt,ge")) diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index 793f6706868..0b00aef7ef7 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -938,6 +938,20 @@ (set_attr "type" "multiple")] ) +(define_insn "*thumb2_csinv" + [(set (match_operand:SI 0 "arm_general_register_operand" "=r, r") + (if_then_else:SI + (match_operand 1 "arm_comparison_operation" "") + (not:SI (match_operand:SI 2 "arm_general_register_operand" "r, r")) + (match_operand:SI 3 "reg_or_zero_operand" "r, Z")))] + "TARGET_COND_ARITH" + "@ + csinv\\t%0, %3, %2, %D1 + csinv\\t%0, zr, %2, %D1" + [(set_attr "type" "csel") + (set_attr "predicable" "no")] +) + (define_insn "*thumb2_movcond" [(set (match_operand:SI 0 "s_register_operand" "=Ts,Ts,Ts") (if_then_else:SI @@ -947,7 +961,7 @@ (match_operand:SI 1 "arm_rhs_operand" "0,TsI,?TsI") (match_operand:SI 2 "arm_rhs_operand" "TsI,0,TsI"))) (clobber (reg:CC CC_REGNUM))] - "TARGET_THUMB2" + "TARGET_THUMB2 && !TARGET_COND_ARITH" "* if (GET_CODE (operands[5]) == LT && (operands[4] == const0_rtx)) diff --git a/gcc/testsuite/gcc.target/arm/csinv-1.c b/gcc/testsuite/gcc.target/arm/csinv-1.c new file mode 100644 index 00000000000..6b5383aa913 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/csinv-1.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_arch_v8_1m_main_ok } */ +/* { dg-options "-O2 -march=armv8.1-m.main" } */ + +int +test_csinv32_condasn1(int w0, int w1, int w2, int w3) +{ + int w4; + + /* { dg-final { scan-assembler "csinv\tr\[0-9\]*.*ne" } } */ + w4 = (w0 == w1) ? ~w2 : w3; + return w4; +} + +int +test_csinv32_condasn2(int w0, int w1, int w2, int w3) +{ + int w4; + + /* { dg-final { scan-assembler "csinv\tr\[0-9\]*.*eq" } } */ + w4 = (w0 == w1) ? w3 : ~w2; + return w4; +} From patchwork Tue Aug 4 16:13:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Omar Tahir X-Patchwork-Id: 1340911 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=koZtaHkc; dkim=fail reason="signature verification failed" (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=koZtaHkc; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BLftt1yfYz9sPC for ; Wed, 5 Aug 2020 02:13:26 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 613383870854; Tue, 4 Aug 2020 16:13:24 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2082.outbound.protection.outlook.com [40.107.21.82]) by sourceware.org (Postfix) with ESMTPS id D3C48385ED4B for ; Tue, 4 Aug 2020 16:13:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D3C48385ED4B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Omar.Tahir@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=1OMdURE7dn/2au+YxJp5MEn/8JhgOiU7fEyRY5uGym8=; b=koZtaHkcblmrn9OIBdHOVRgDHnd9rWnEeSmL++69dxuyMeOj00JZIy6NGQCGR9nQPae33xVAXNk0/2jWDE/lMzir9mtdvKxUdAkWUj+iiTR6g1+5nSBhA7Wo3nEFXbMyu9A46GA5bRPEoSoO1a7/TOxVi9NdSKUtq/qRvcgmLJQ= Received: from DB3PR06CA0025.eurprd06.prod.outlook.com (2603:10a6:8:1::38) by DBBPR08MB4265.eurprd08.prod.outlook.com (2603:10a6:10:cf::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.18; Tue, 4 Aug 2020 16:13:17 +0000 Received: from DB5EUR03FT064.eop-EUR03.prod.protection.outlook.com (2603:10a6:8:1:cafe::6f) by DB3PR06CA0025.outlook.office365.com (2603:10a6:8:1::38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.15 via Frontend Transport; Tue, 4 Aug 2020 16:13:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=bestguesspass 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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT064.mail.protection.outlook.com (10.152.21.199) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.20 via Frontend Transport; Tue, 4 Aug 2020 16:13:17 +0000 Received: ("Tessian outbound 6ad80ee94e7f:v64"); Tue, 04 Aug 2020 16:13:17 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: f87e90473fd4add5 X-CR-MTA-TID: 64aa7808 Received: from d78388ae220d.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id CA6FB705-52EE-466C-B86D-BBBAE7056904.1; Tue, 04 Aug 2020 16:13:11 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id d78388ae220d.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 04 Aug 2020 16:13:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z3jAd1gjEOdInmgXo0r3ZHCJ1ld3MK439MJAKs3MXOJ9zKaumjAX3TT6kdOU9ht5ijEx7nX9hJ75e/ZzhvltopxNSkJOWXhrbmY6q8/FMlaCW3Zc8OoTClyQ0frA40sxyyQxrp+0ZcGQpvFiXQncro3n5iAW8H6yo1U39KEYOPJGuYVsgIBJYeFSLmjAJrbj8dh6CgUnHt7Ycq1KDKsPlNVf9jXVS+CiirzLBtWMgyRT9rsQsm/D9q+/bHxB9ZvPGbk/X3suUO8lLDISGYyRlBffk5MJ6Ios2WLQBvIECrD3PUgqElE6HhhXcOrQnR4iuiS1J9dDy/Xg11FB92EhRA== 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-SenderADCheck; bh=1OMdURE7dn/2au+YxJp5MEn/8JhgOiU7fEyRY5uGym8=; b=MjCUUuXaDrm2QsVprLe19wxdPyqbCQky0TJb3XW9cl95qJQzpMAl8qIn46zsmq3xlrRDm1Qan12qk4dcj3InfSDTwuZi1cEtjWdSLyX+7dv148aHQoWsg86gz0xqz6aSqPkokqPqzbmq8Z9nKEPZAOYNsz7vYzKqyKdNk2jMAN9Qf1dS6kcEXKUXY69bnqrs1gvrJPbsDhQXX82f48NzWTbBaM2ACNcsPWHbMs4BDih/OMVxxiqu681E3U3g7sgsZ6mFn29yFS8TeQORkYpTFu74rIDQwLoGa2Wtijx8YX1yAi+rXQwyYs9Zt/la62nHGzj4hF5sWDzYoVN0+drjhA== 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=1OMdURE7dn/2au+YxJp5MEn/8JhgOiU7fEyRY5uGym8=; b=koZtaHkcblmrn9OIBdHOVRgDHnd9rWnEeSmL++69dxuyMeOj00JZIy6NGQCGR9nQPae33xVAXNk0/2jWDE/lMzir9mtdvKxUdAkWUj+iiTR6g1+5nSBhA7Wo3nEFXbMyu9A46GA5bRPEoSoO1a7/TOxVi9NdSKUtq/qRvcgmLJQ= Received: from AM0PR08MB5121.eurprd08.prod.outlook.com (2603:10a6:208:159::23) by AM0PR08MB4948.eurprd08.prod.outlook.com (2603:10a6:208:163::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.15; Tue, 4 Aug 2020 16:13:09 +0000 Received: from AM0PR08MB5121.eurprd08.prod.outlook.com ([fe80::8963:a047:a9d1:d7f1]) by AM0PR08MB5121.eurprd08.prod.outlook.com ([fe80::8963:a047:a9d1:d7f1%7]) with mapi id 15.20.3239.022; Tue, 4 Aug 2020 16:13:09 +0000 From: Omar Tahir To: Kyrylo Tkachov , "nickc@redhat.com" , Ramana Radhakrishnan , Richard Earnshaw , "gcc-patches@gcc.gnu.org" Subject: [PATCH 3/5][Arm] New pattern for CSINC instructions Thread-Topic: [PATCH 3/5][Arm] New pattern for CSINC instructions Thread-Index: AdZqef4iUtYNV/e8SbuTpFz2jlc5DA== Date: Tue, 4 Aug 2020 16:13:09 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: 7EA6123D37F7074EA43610E22C0D93BA.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [2a00:23a8:4295:3f00:e516:6096:362d:77aa] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 2d12d213-cf20-42a5-a17e-08d838914c2d x-ms-traffictypediagnostic: AM0PR08MB4948:|DBBPR08MB4265: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:308;OLM:308; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: ncizVvcPwhnZUBL8/8FrBVsYt/hwVWjVp9JkTP2H19w7kpLGbTrwq/7QWdRMte/1/Ifmx0ur/+d3W1j8dlHV/ZwS1FJ9XaydQHTeW+oO0xauQVFE9RSgIWLEztShsE4mBVjDLi9AIkh3yEwwVtd9To4/12gBdPuixAZ9ZalENbaKbyUA4G3DYq4/aii9GegteSPEFtMTQ/DgBNx2YaY+YcEELut+5NSg4o97pdDBtXwGdvYO3gFAsjF52LmqfdB0VG/BfuDfVgA74JpS0QsLXUbVFcEy3AIKYixzvUSMstQW287YOVhY7pbsJwzYhmcH X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR08MB5121.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(396003)(136003)(376002)(346002)(39860400002)(478600001)(8936002)(9686003)(6506007)(8676002)(2906002)(5660300002)(52536014)(186003)(99936003)(55016002)(76116006)(66616009)(66946007)(71200400001)(66476007)(33656002)(7696005)(66446008)(64756008)(66556008)(316002)(86362001)(110136005)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: 1MDc/Ni0ecLIFOy/fhx17hbQRpMSE7dzjYoC2uZtJiQ+aTmmpBPadMNq4aS8/SpZPMuEkhvU1GtoRS0y2r172U9NRnyeASjuz7HEytC3T8b47WOfI42VAeTgxqjALvSEFkOC78LeJsdhjjR4C3rtFEIRaSCmg+jAF00apKqJaiyUDqFn/HZiVipKvptECCL5QlZIWrE5aVGg6XP9J3fm977oMM7MDFdSHMc9ZC1fUoojDte/AuS5Oe+lmW8h1j223Jqql6fGZ6Fl1IoZ+EpnQ7Gk7ulOZ5dkiyb9KX0h8AbIIaqfz+gBafHVNZprAkJ1eTL8fXvLsrYdbJEmC9IPz980Ph5PKlwA59wjohP8ZpvMar/26ozfZOm8a2PbIWdkqSmpruI3kIStJy0KAER8m6uT1qd/oARMJ1SK73vOLVTcYfHAOuAJincUVmB8yI2ygX2eZ/CUwTrJBfGeGEHTgYi7RYdk8RzF1A4k4+eiGvqSbJMokPISPcLK/85wY62z3D3TDeBDAeVOcIW1N/78GdtHFM+FWvsAlSYpXoqLWDlkxA7SIOG6BCWzFwZMYaFY7Oe99xpjcpoED5DW2WsAtZvAVWAUfyjWfvQSqttoEu01sRE9ajQWKn2oIuThJJm3m3yXfkWrT9ElP44cNpjJURVNsQP2vVQtHEhZemsEDDtAJihlYl1se+CYYxspknQyPc54RyDKMTqgks+PaNDNTQ== MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4948 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT064.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 1b40291b-8e0b-4061-c86e-08d8389147c1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0bdoFMXSY8Ft2m0CPuMWmO+bbEHvWHD03gRsHeTeG2ASJ1gTviumFljjDHr5cx7xtu0bH9ERejyk/G7/CdxkH/x3ABF/r21aac/4p1ktJbJXe2Va4vtnAw5Zvi6j5eNaTvR6O6BkXI0E3IDq0Ev4Zgf5t+s1kHXn8FWNjd8LkG9UvumOr5Bk0IhTvPQMvm2rjZhMYKIRNQ0MntgP5VV2jKpwIGC6lht0Da2Q1WlNu9XZPsgJg5yVywLHESvumzktqslIMTq7BsayKubC7eHzKM5p/mu9eqQwzhBJDUL+shlNmAZPbO828Xy5z/IbzFeXmtGOyzXdDtPmow5plDWo7ZAJ99/FM5kFzIXIiqPg6xTcF0tAeILhScyvD9TLM9Qdk0KmZIAg9+RmE8DZaWw6QA== 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; SFTY:; SFS:(4636009)(136003)(39860400002)(376002)(346002)(396003)(46966005)(316002)(110136005)(66616009)(356005)(70206006)(7696005)(99936003)(8936002)(70586007)(186003)(478600001)(81166007)(336012)(55016002)(6506007)(33656002)(9686003)(52536014)(26005)(82310400002)(5660300002)(8676002)(2906002)(86362001)(235185007)(82740400003)(47076004)(559001)(579004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2020 16:13:17.2317 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2d12d213-cf20-42a5-a17e-08d838914c2d 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: DB5EUR03FT064.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB4265 X-Spam-Status: No, score=-14.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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: , Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" This patch adds a new pattern, *thumb2_csinc, for generating CSINC instructions. It also modifies an existing pattern, *thumb2_cond_arith, to output CINC when the operation is an addition and TARGET_COND_ARITH is true. Regression tested on arm-none-eabi. 2020-07-30: Sudakshina Das Omar Tahir * config/arm/thumb2.md (*thumb2_csinc): New. (*thumb2_cond_arith): Generate CINC where possible. gcc/testsuite/ChangeLog: 2020-07-30: Sudakshina Das Omar Tahir * gcc.target/arm/csinc-1.c: New test. diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index 0b00aef7ef7..79cf684e5cb 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -743,6 +743,9 @@ if (GET_CODE (operands[4]) == LT && operands[3] == const0_rtx) return \"%i5\\t%0, %1, %2, lsr #31\"; + if (GET_CODE (operands[5]) == PLUS && TARGET_COND_ARITH) + return \"cinc\\t%0, %1, %d4\"; + output_asm_insn (\"cmp\\t%2, %3\", operands); if (GET_CODE (operands[5]) == AND) { @@ -952,6 +955,21 @@ (set_attr "predicable" "no")] ) +(define_insn "*thumb2_csinc" + [(set (match_operand:SI 0 "arm_general_register_operand" "=r, r") + (if_then_else:SI + (match_operand 1 "arm_comparison_operation" "") + (plus:SI (match_operand:SI 2 "arm_general_register_operand" "r, r") + (const_int 1)) + (match_operand:SI 3 "reg_or_zero_operand" "r, Z")))] + "TARGET_COND_ARITH" + "@ + csinc\\t%0, %3, %2, %D1 + csinc\\t%0, zr, %2, %D1" + [(set_attr "type" "csel") + (set_attr "predicable" "no")] +) + (define_insn "*thumb2_movcond" [(set (match_operand:SI 0 "s_register_operand" "=Ts,Ts,Ts") (if_then_else:SI diff --git a/gcc/testsuite/gcc.target/arm/csinc-1.c b/gcc/testsuite/gcc.target/arm/csinc-1.c new file mode 100644 index 00000000000..b9928493862 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/csinc-1.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_arch_v8_1m_main_ok } */ +/* { dg-options "-O2 -march=armv8.1-m.main" } */ + +int +test_csinc32_condasn1(int w0, int w1, int w2, int w3) +{ + int w4; + + /* { dg-final { scan-assembler "csinc\tr\[0-9\]*.*ne" } } */ + w4 = (w0 == w1) ? (w2 + 1) : w3; + return w4; +} + +int +test_csinc32_condasn2(int w0, int w1, int w2, int w3) +{ + int w4; + + /* { dg-final { scan-assembler "csinc\tr\[0-9\]*.*eq" } } */ + w4 = (w0 == w1) ? w3 : (w2 + 1); + return w4; +} From patchwork Tue Aug 4 16:14:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Omar Tahir X-Patchwork-Id: 1340912 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=AaSnJjW1; dkim=fail reason="signature verification failed" (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=AaSnJjW1; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BLfwj15W2z9sPC for ; Wed, 5 Aug 2020 02:15:01 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 101C13840C1B; Tue, 4 Aug 2020 16:14:59 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60068.outbound.protection.outlook.com [40.107.6.68]) by sourceware.org (Postfix) with ESMTPS id 9B7A2385ED4B for ; Tue, 4 Aug 2020 16:14:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 9B7A2385ED4B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Omar.Tahir@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=5+Q6kThLbNUhMJsC4+wl6NORINX7Owk7Tl+2clZ2STg=; b=AaSnJjW1pFiFlLRb/OXW94bk6sU/kGc1dXnk2CbGNHZwvLp48ehN4bvRwj7SDM8VdyhDFM6GvINHKOTzPDvchef+VjNjUnmutPQSpW0yMsbxeFQqSmJU6LU1H8W/+8OuxccnHDV5hnv+D5KazfAMoqunplIcyP7ypWiaSqJzzc8= Received: from DB7PR03CA0074.eurprd03.prod.outlook.com (2603:10a6:10:72::15) by AM0PR08MB3922.eurprd08.prod.outlook.com (2603:10a6:208:128::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.21; Tue, 4 Aug 2020 16:14:53 +0000 Received: from DB5EUR03FT018.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:72:cafe::20) by DB7PR03CA0074.outlook.office365.com (2603:10a6:10:72::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.16 via Frontend Transport; Tue, 4 Aug 2020 16:14:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=bestguesspass 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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT018.mail.protection.outlook.com (10.152.20.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.20 via Frontend Transport; Tue, 4 Aug 2020 16:14:53 +0000 Received: ("Tessian outbound cbf1bd92df60:v64"); Tue, 04 Aug 2020 16:14:53 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: c3a60369485d2c2d X-CR-MTA-TID: 64aa7808 Received: from 95a6e87b1c6f.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 2B5C4010-053F-49EE-8712-ADCD131486D6.1; Tue, 04 Aug 2020 16:14:40 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 95a6e87b1c6f.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 04 Aug 2020 16:14:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VefzC0jPCekVHh1EvifbPSiZCmQZpUb9+AZtV1pymvWsUTuzjdvOd+TrlQswAN7auOXQWha6IhZc15Iuv11/NqcdZkHuAico9Z59AxCe6yulnH+U+YLsjDo7yZIf2avErJD7ptHhOoLqqc4XIQSX+GSkCGLElyp+xjzejlFDE2wcRFQQQ4yz8HgUC81dmFKXWes58L8pyUgCT9QGJSgQAXMB4N3hoFHMLwyNW7MBZhpTa2qGt4vtMQ6THF3npbQ0CTaovUw0RsoMNd5jP8gSr3V3mCPtyGNJf4QNo/wn18eiFhn9m7XzrWROrBqifdvDWxyUmsdp24hG6Bp4QBNDTg== 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-SenderADCheck; bh=5+Q6kThLbNUhMJsC4+wl6NORINX7Owk7Tl+2clZ2STg=; b=MZ+5qKE77OuQ3da87Zvkl6Xa/h2FUIlcg7E/uQE2hKqPalq7rcoCloguNSXZ6o6E15dsQJlVz/aN4bQmAQ8usl928sHRg0B59cUCEOvdflOqynQQqgAf0vQYndSRgjLh0ulJvk5n73z0kQ+gevbp57UfkJk3m2m7MJvnl00wQilUfAqQyGeVAx1zFBVE3yeh4peg3hDM5orRedxyaVNaOIZ22LzQ12SomliAO6a0H5pMYot6RXxUy+RLx9VEQiVr4jgr+FMiYIE9HfRbabFmuASby9q50UHsangur2fWnEwWd2Vqq0AU4T+wg1dOTEEcAA3E1uJnBkwRXOpAsRjJFg== 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=5+Q6kThLbNUhMJsC4+wl6NORINX7Owk7Tl+2clZ2STg=; b=AaSnJjW1pFiFlLRb/OXW94bk6sU/kGc1dXnk2CbGNHZwvLp48ehN4bvRwj7SDM8VdyhDFM6GvINHKOTzPDvchef+VjNjUnmutPQSpW0yMsbxeFQqSmJU6LU1H8W/+8OuxccnHDV5hnv+D5KazfAMoqunplIcyP7ypWiaSqJzzc8= Received: from AM0PR08MB5121.eurprd08.prod.outlook.com (2603:10a6:208:159::23) by AM0PR08MB4948.eurprd08.prod.outlook.com (2603:10a6:208:163::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.15; Tue, 4 Aug 2020 16:14:38 +0000 Received: from AM0PR08MB5121.eurprd08.prod.outlook.com ([fe80::8963:a047:a9d1:d7f1]) by AM0PR08MB5121.eurprd08.prod.outlook.com ([fe80::8963:a047:a9d1:d7f1%7]) with mapi id 15.20.3239.022; Tue, 4 Aug 2020 16:14:38 +0000 From: Omar Tahir To: Kyrylo Tkachov , "nickc@redhat.com" , Ramana Radhakrishnan , Richard Earnshaw , "gcc-patches@gcc.gnu.org" Subject: [PATCH 4/5][Arm] New pattern for CSNEG instructions Thread-Topic: [PATCH 4/5][Arm] New pattern for CSNEG instructions Thread-Index: AdZqejAmiShvoSYMS9KTpjyfWp3zUQ== Date: Tue, 4 Aug 2020 16:14:38 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: 00713CBDFD959F4FB266167681ED7948.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [2a00:23a8:4295:3f00:e516:6096:362d:77aa] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6ead4e33-465a-4ec0-1daf-08d838918563 x-ms-traffictypediagnostic: AM0PR08MB4948:|AM0PR08MB3922: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:40;OLM:40; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 6QbjGXJRD6OCqTHe7quB07wTY8nri3Vo1LOyqrr2BsYMWvuTzPZEaJcpJ66G2/RQv5X4t5GlLvXSimXLjfyInagrxiiMhcxcF7GyCX/EiiTaU3WRFJony7kTt1hf6dQIxIzxB48WCxvmZMzOT4A9PEo3boCAlfJu8oGEdi0S0jphuAVgqWP4CCbrNO+s42rNSX2yzJvvKlpudeXiISkb0WPUoOsokz0IdVqTiIZWL/v7kvoTGXBPtf3/ogkfoQHyGx4FFIUuDYc/KkitLXTOfgCGiceYnd+kM8QaikaXvWVoSzhfD1sO8hgUEGEm/U5xAnaxrOfU76gA3XPNpJ/FBw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR08MB5121.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(396003)(136003)(376002)(346002)(39860400002)(478600001)(8936002)(9686003)(6506007)(8676002)(2906002)(5660300002)(52536014)(186003)(99936003)(55016002)(76116006)(66616009)(66946007)(71200400001)(66476007)(33656002)(7696005)(66446008)(64756008)(66556008)(316002)(86362001)(110136005)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: 9IFd8vhWBCrcDDOxAYDgF40i9kCc4PqjdeXkeAH9oy1aj0TTqVVzrPGZ9UvRclO87BkMQu/sCRHU13ixWvoyYKyncpsxLj2FsMM1POj3lKSWXuMmqWIi0kiYm4GIVG0Pp602wjVdAYR0VrwqNDQ6GxsBH0zQUV89P8SPogTkmEbhJO7c7DkL2fVme8WSpdci/r7kRA/SOT3czyi81QGadWaafZE4GhTOpZtrzIJB4RfWp7wK+GfT9WEiKIbuj8bUucaYYZRTkXsUThRQGSxOFWPonEYCVO4jjQEBPbWwoB3jtV/45lhiXH5pwsg3s7CgaEN2BKLlbZzKhnWloTo/r+8M1J/q44z3bdXgcDnN+zXuy6nZ+xIt6LyxacRF1cRNAUI+8SjCYKoQliStP1yBouc5HC4YzJfWEQvWtFNcR26vEI+1kspwjVBXzi9lu4FzebQYCtNcMx60O7zz0aQD4l407SXW4czvhPB7wMIVFMTol9uDdVV2uk7T0HZK1q4vMzETdwkG36jIhrYM8VRc3u+b2cguIaBjOKAs/CxcMgvcREtOlFthgxdGUIx73UNG3X/YE10qPdTQ2n5rE7EEIQxSiFuRaAFXh7Vy4LD0ykBJX+8PvUpyewypM/vmP8eCK+CvthGPz9BV/A4eaLzSbZY+tH9i2CstDV+4+WKivyrjIOoFwSz0lQ/gUB5ZcZFtPEr0FXM04gPRlsRImBtilw== MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4948 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT018.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 0b46eca6-7e1f-41a1-25ba-08d838917ca5 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nHRYb/RSWy+lYRey2nxqRvsasdAbWRBo1WxWDM0UxnBhCqjSSKw1T+uCxUkebLhGbg/j/XhFwJgll9L9j1D19zpM6K68ydDKB2MmjBYg90IEKD7OWWwPKL6/Xn6gdynJQYHeErrHQ3M6uATdABP1Bu7RqismBBVVI6IgfFnlEFsuR7vS3a5j/EijcNkDyV6v/KkibSxW7Em0pY4m5a6G9ZO3OWa6oEAAPq7Znk+wLPaU8VuC8K/WcYk1lJop79t7lxwXtQLG3Evue+drksylRHgZQNFfKMBcNsNMHKNt5jJAR70tcweTkJotw6+0nFeEITrYaJJGRMStZQ9jcU//YPeTBLkWPHZ7e+5dcmkl5svjOsKOYuJ1gl2GGZJE3/poFWnkSxLEKZ1g+Ei4PzfeBg== 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; SFTY:; SFS:(4636009)(39850400004)(346002)(376002)(136003)(396003)(46966005)(2906002)(235185007)(99936003)(478600001)(81166007)(52536014)(86362001)(47076004)(356005)(5660300002)(8676002)(82310400002)(110136005)(82740400003)(186003)(66616009)(70586007)(6506007)(316002)(336012)(55016002)(8936002)(26005)(33656002)(9686003)(70206006)(7696005)(559001)(579004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2020 16:14:53.2123 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6ead4e33-465a-4ec0-1daf-08d838918563 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: DB5EUR03FT018.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3922 X-Spam-Status: No, score=-14.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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: , Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" This patch adds a new pattern, *thumb2_csneg, for generating CSNEG instructions. It also restricts *if_neg_move and *thumb2_negscc to only match if !TARGET_COND_ARITH which prevents undesirable matches during ifcvt. Regression tested on arm-none-eabi. 2020-07-30: Sudakshina Das Omar Tahir * config/arm/thumb2.md (*thumb2_csneg): New. (*thumb2_negscc): Don't match if TARGET_COND_ARITH. * config/arm/arm.md (*if_neg_move): Don't match if TARGET_COND_ARITH. gcc/testsuite/ChangeLog: 2020-07-30: Sudakshina Das Omar Tahir * gcc.target/arm/csneg.c: New test. diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index a6a31f8f4ef..950e46edfee 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -11211,7 +11211,7 @@ [(match_operand 3 "cc_register" "") (const_int 0)]) (neg:SI (match_operand:SI 2 "s_register_operand" "l,r")) (match_operand:SI 1 "s_register_operand" "0,0")))] - "TARGET_32BIT" + "TARGET_32BIT && !TARGET_COND_ARITH" "#" "&& reload_completed" [(cond_exec (match_op_dup 4 [(match_dup 3) (const_int 0)]) diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index 79cf684e5cb..d12467d7644 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -880,7 +880,7 @@ [(match_operand:SI 1 "s_register_operand" "r") (match_operand:SI 2 "arm_rhs_operand" "rI")]))) (clobber (reg:CC CC_REGNUM))] - "TARGET_THUMB2" + "TARGET_THUMB2 && !TARGET_COND_ARITH" "#" "&& reload_completed" [(const_int 0)] @@ -970,6 +970,20 @@ (set_attr "predicable" "no")] ) +(define_insn "*thumb2_csneg" + [(set (match_operand:SI 0 "arm_general_register_operand" "=r, r") + (if_then_else:SI + (match_operand 1 "arm_comparison_operation" "") + (neg:SI (match_operand:SI 2 "arm_general_register_operand" "r, r")) + (match_operand:SI 3 "reg_or_zero_operand" "r, Z")))] + "TARGET_COND_ARITH" + "@ + csneg\\t%0, %3, %2, %D1 + csneg\\t%0, zr, %2, %D1" + [(set_attr "type" "csel") + (set_attr "predicable" "no")] +) + (define_insn "*thumb2_movcond" [(set (match_operand:SI 0 "s_register_operand" "=Ts,Ts,Ts") (if_then_else:SI diff --git a/gcc/testsuite/gcc.target/arm/csneg.c b/gcc/testsuite/gcc.target/arm/csneg.c new file mode 100644 index 00000000000..e48606265af --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/csneg.c @@ -0,0 +1,33 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_arch_v8_1m_main_ok } */ +/* { dg-options "-O2 -march=armv8.1-m.main" } */ + +int +test_csneg32_condasn1(int w0, int w1, int w2, int w3) +{ + int w4; + + /* { dg-final { scan-assembler "csneg\tr\[0-9\]*.*ne" } } */ + w4 = (w0 == w1) ? -w2 : w3; + return w4; +} + +int +test_csneg32_condasn2(int w0, int w1, int w2, int w3) +{ + int w4; + + /* { dg-final { scan-assembler "csneg\tr\[0-9\]*.*eq" } } */ + w4 = (w0 == w1) ? w3 : -w2; + return w4; +} + +unsigned long long +test_csneg_uxtw (unsigned int a, unsigned int b, unsigned int c) +{ + unsigned int val; + + /* { dg-final { scan-assembler "csneg\tr\[0-9\]*.*ne" } } */ + val = a ? b : -c; + return val; +} From patchwork Tue Aug 4 16:16:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Omar Tahir X-Patchwork-Id: 1340914 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=GQ1EGhjz; dkim=fail reason="signature verification failed" (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=GQ1EGhjz; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BLfyR12SSz9sTC for ; Wed, 5 Aug 2020 02:16:31 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1C6B63870924; Tue, 4 Aug 2020 16:16:29 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60054.outbound.protection.outlook.com [40.107.6.54]) by sourceware.org (Postfix) with ESMTPS id 505CD385ED4B for ; Tue, 4 Aug 2020 16:16:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 505CD385ED4B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Omar.Tahir@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=27kGjh6cIgiouzE4XlIAk5SOk/IVeq7y5CK2G6JgijM=; b=GQ1EGhjzXKasvZNpUjY+BcZUkXM2qSnRJHbKzBPV3luURc1e3lSp9sRddsRDQRK+vcf8Vs0jpT+t/FNkx04tH1mpEa5yLTBadYYVK7D0GB5CTJtFxnVbzC5N7lrShUq+I31WNhLPE5PcXlT/0cZX3uFGdnD1ubSqzvINqHzLZc4= Received: from AM6P191CA0090.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:8a::31) by DB7PR08MB2988.eurprd08.prod.outlook.com (2603:10a6:5:18::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.20; Tue, 4 Aug 2020 16:16:21 +0000 Received: from AM5EUR03FT049.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:8a:cafe::fe) by AM6P191CA0090.outlook.office365.com (2603:10a6:209:8a::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.15 via Frontend Transport; Tue, 4 Aug 2020 16:16:21 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=bestguesspass 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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT049.mail.protection.outlook.com (10.152.17.130) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.20 via Frontend Transport; Tue, 4 Aug 2020 16:16:21 +0000 Received: ("Tessian outbound cadacd461517:v64"); Tue, 04 Aug 2020 16:16:21 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 1fcfeb8b7039fdaf X-CR-MTA-TID: 64aa7808 Received: from 033486908c75.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F8BC505F-DA1E-4733-9E3B-277FC4BC2BF0.1; Tue, 04 Aug 2020 16:16:16 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 033486908c75.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 04 Aug 2020 16:16:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EW2jHUnRsUK3fWffBtIT/FvrLr589ZyPHQHxV02ecfVfgW0qyb9XHHHoPqN1DCdNhnbzD3g1ogb0L1oCr8T1yIsePDsIzXP5CHx6zWWl9iGYKUBig0qkA6Y4OeyK9WKyUbAd7C/JQwsnHrLCG7OVViaDNFgFWmhBVDdo2C00fyKQ1ySPViFO9kVz8658+8894uKpfiymeWDF0NqShXnCjRNOee5wDdcmlc1eDQvon3247OTnSOhj1Mroivto9CymMQsbRj1BOkpXYt6rGoH3/dOKVMCosJ2Q30IMzA7+t/MHH+ZhVMHNUMw0KdBsW908OfZfAkJArjA03R63T/dTCA== 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-SenderADCheck; bh=27kGjh6cIgiouzE4XlIAk5SOk/IVeq7y5CK2G6JgijM=; b=BF0/Jy3I84Pws7CIPSJBcAdJUK/EMXt3YeABcN6GxlnP4T5JDHgYFWfFO6DOhHR347BwLBAWzro6LtfWXw4wLumYn5EYQ1IVegtnkoaoXXEtSnQMUwEDG6Gpu188A3VwAjt6sIRGM8sssZx0uSLS6KFszQScYD4VNVkqF8gui0NqI9QhZRsSndwOlTr1zNG/Ay5fnuui3rt0PgZr4Cs592bvMZNzVQs6JTrFaz3+g8S5lJjXKUd6OjCpHHdkpSC00/I8gsZaMzIUBuTI2/xOWNBuWE2YXsKFZlrK0qhUYUfWPwydINZ5mZrcKW5de6roKh6r8wlnQyRMKCZYwsnqbg== 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=27kGjh6cIgiouzE4XlIAk5SOk/IVeq7y5CK2G6JgijM=; b=GQ1EGhjzXKasvZNpUjY+BcZUkXM2qSnRJHbKzBPV3luURc1e3lSp9sRddsRDQRK+vcf8Vs0jpT+t/FNkx04tH1mpEa5yLTBadYYVK7D0GB5CTJtFxnVbzC5N7lrShUq+I31WNhLPE5PcXlT/0cZX3uFGdnD1ubSqzvINqHzLZc4= Received: from AM0PR08MB5121.eurprd08.prod.outlook.com (2603:10a6:208:159::23) by AM0PR08MB4948.eurprd08.prod.outlook.com (2603:10a6:208:163::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.15; Tue, 4 Aug 2020 16:16:14 +0000 Received: from AM0PR08MB5121.eurprd08.prod.outlook.com ([fe80::8963:a047:a9d1:d7f1]) by AM0PR08MB5121.eurprd08.prod.outlook.com ([fe80::8963:a047:a9d1:d7f1%7]) with mapi id 15.20.3239.022; Tue, 4 Aug 2020 16:16:13 +0000 From: Omar Tahir To: Kyrylo Tkachov , "nickc@redhat.com" , Ramana Radhakrishnan , Richard Earnshaw , "gcc-patches@gcc.gnu.org" Subject: [PATCH 5/5][Arm] New pattern for CSEL, CSET and CSETM instructions Thread-Topic: [PATCH 5/5][Arm] New pattern for CSEL, CSET and CSETM instructions Thread-Index: AdZqemC0RIYITHcZRZacbujLa6f44A== Date: Tue, 4 Aug 2020 16:16:13 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: 8581C3863933FA4EB80814293158F45E.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [2a00:23a8:4295:3f00:e516:6096:362d:77aa] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 70d6ad8a-a1d1-4c6e-5cb7-08d83891ba29 x-ms-traffictypediagnostic: AM0PR08MB4948:|DB7PR08MB2988: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:2657;OLM:2657; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: QtuoWl8F6NSDdS84VZmiVi2VpJDVxXMWXMg6SLnohCnWTxaCfh9QxFIybkyg7blVAEbZZFKMHDDSGbaIsnAa1aMM77T+VG2HjWRXY1CvNCmTOmyEVrkqD+I0lgdLgt9OJ8u4APqoJNn/1jcu2MjQmDK/p3cKymWb3CH5IjJGpQb3ciPaD34GVick/vv9p29n1THM0RSVVyq8uaCeRzOCrDr+V4zyD7wiZfUmd0DcFtz21OYd77SajuTSQ1zJ3v0TJX3XTlE0/vbMqknk4J6Iu8xz4lnJxwqEh3oso7xo8I1/w/E63UX4DoPa7XHwNwnLd/tfdh0t8mG41r/QVQ/p0Q== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR08MB5121.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(396003)(136003)(376002)(346002)(39860400002)(478600001)(8936002)(9686003)(6506007)(8676002)(2906002)(5660300002)(52536014)(186003)(99936003)(55016002)(76116006)(66616009)(66946007)(71200400001)(66476007)(33656002)(7696005)(66446008)(64756008)(66556008)(83380400001)(316002)(86362001)(110136005)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: EBJ9OyyXvz59uhej2Vg7kPIN0JOJiQQB96c0PeoRrUC9QwHrwUkMR3SYdXL2zB2J/NVs0vMp0KuVqM1rI2dqAvuCIaPcGGV0WzfobQhCzOngrbX40iOtfcR9cwyU9HOMYFSfitzSWRRaob9Oy5/5kAwESEVcQqtAF3lN+f9hKMqDEUON3HOqibwhSLMqDsNo1fC08El2D7wMNkAl58601bvOoxSPviW3U8ev0x2mm/QKa5PuG/f9iX5RBkIN5PefNk3N8HSmL/oGVOdtfaRhaarnx4Rw0bGm2MMwIixJp2Ba0WGjThegR30qUMwfwOImDlq8RRnVJ1xZnPb20DKYEqdI91ChHX8oixwLo6j/Gn9HsaVin+ZNDcx3Q35Cs13KrIf5kIdpNq3NxC5KnSbKgjqtz3FIhcTvsMmhtUytrx7EXOYQsD90K5I3ZfseqYi8zPCOvk+VuV5FheQawzcUzjP63IVluhJf9Tj55qUsGM/IPYDk46XBKfZF4nM9CHFSt0WcJItFuUkekWukFqxW+hC5Wvyfnkqa5ir/Iaoac4qMyfsIPE9B/5wll7EvYBV0VkpUvNvFZwn5f4wp0XchdY5ekKLdJzJAG75t5H1Mf2mcwCbBwR3hLKZMYoY66uRI+BHEz0I3m6FsXwVfWplIPtA5y9gGoDzsyNRvhkOuejKQhkG+8hzOSp62atQYuEAaqMcYQeYBSb3gXLht8o2vOg== MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4948 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT049.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 6e50488c-1fee-4a21-305d-08d83891b583 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FMhDtqgEmWRFUWFb+wp6HrSwQuxWhh7qwR788JXn1psNIFLD6errlZdyd5z9u6BRWgwZ0rjRLlPLqRS/Qa+c052jkAKbrAypk+S/dHiXRgOE/wH4QUDuChInClhtvGmYBz/YMdAj3Xx/MvdCtpNDlE3k6OvM9yJy7DMkXRdeMPnK3FtdvabFnb3ZzbCmfonhhlcGFj9HYDTqVMWvk1rjuSU7xaskC6o67DpQGwXH9RumSWC2Oi2D3kle49dGpRdTQOHES0UC9U+6hvGxTBkUfrgt3pQ5EgjOX5CdhQZckWsG1xKmWmjR1xobXjvZR1YlUQ2yQTM8KGm0ECt8/CRwIyoOGvnWDRx2Z32+oCDrIS/H5mIEWPK+3P1La34hwTnv2fY/OXNmjqFNETcf4gyQJw== 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; SFTY:; SFS:(4636009)(396003)(136003)(346002)(39860400002)(376002)(46966005)(110136005)(186003)(8936002)(30864003)(26005)(8676002)(235185007)(52536014)(316002)(5660300002)(36906005)(2906002)(33656002)(47076004)(55016002)(336012)(83380400001)(356005)(66616009)(70206006)(70586007)(82740400003)(478600001)(82310400002)(6506007)(99936003)(86362001)(81166007)(9686003)(7696005)(579004)(559001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2020 16:16:21.6771 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 70d6ad8a-a1d1-4c6e-5cb7-08d83891ba29 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: AM5EUR03FT049.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB2988 X-Spam-Status: No, score=-14.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org 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: , Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" This patch adds a new pattern, *cmovsi_insn, for generating CSEL, CSET and CSETM instructions. It also generates CSINV and CSINC instructions in specific cases where one of the operands is constant. To facilitate this, one new predicate and two new constraints are added, and *compare_scc is restricted to only match if !TARGET_COND_ARITH to prevent an unwanted split. Additionally, alternatives 8-10 are re-enabled in *thumnb2_movsicc_insn and splitting only occurs if !TARGET_COND_ARITH. This forces the new pattern to be used when possible, but for more complex cases that can't directly use CSEL it falls back to using IT blocks. Regression tested on arm-none-eabi. The entire patch set was regression tested on arm-linux-gnueabi also. That's all folks! Thanks, Omar 2020-07-30: Sudakshina Das Omar Tahir * config/arm/thumb2.md (*cmovsi_insn): New. (*thumb2_movsicc_insn): Don't split if TARGET_COND_ARITH, re-enable alternatives 8-10. * config/arm/arm.md (*compare_scc): Don't match if TARGET_COND_ARITH. gcc/testsuite/ChangeLog: 2020-07-30: Omar Tahir * gcc.target/arm/csel.c: New test. * gcc.target/arm/cset.c: New test. * gcc.target/arm/csetm.c: New test. * gcc.target/arm/csinv-2.c: New test. * gcc.target/arm/csinc-2.c: New test. diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 950e46edfee..b8dd6af50a8 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -9760,7 +9760,7 @@ [(match_operand:SI 2 "s_register_operand" "r,r") (match_operand:SI 3 "arm_add_operand" "rI,L")])) (clobber (reg:CC CC_REGNUM))] - "TARGET_32BIT" + "TARGET_32BIT && !TARGET_COND_ARITH" "#" "&& reload_completed" [(set (reg:CC CC_REGNUM) (compare:CC (match_dup 2) (match_dup 3))) diff --git a/gcc/config/arm/constraints.md b/gcc/config/arm/constraints.md index 048b25ef4a1..37d240d139b 100644 --- a/gcc/config/arm/constraints.md +++ b/gcc/config/arm/constraints.md @@ -37,7 +37,7 @@ ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe ;; in Thumb-2 state: Ha, Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py, Pz, Rd, Rf, Rb, Ra, ;; Rg, Ri -;; in all states: Pf, Pg +;; in all states: Pf, Pg, UM, U1 ;; The following memory constraints have been used: ;; in ARM/Thumb-2 state: Uh, Ut, Uv, Uy, Un, Um, Us, Up, Uf, Ux, Ul @@ -485,6 +485,16 @@ Integer constant zero." (match_test "op == const0_rtx")) +(define_constraint "UM" + "@internal + A constraint that matches the immediate constant -1." + (match_test "op == constm1_rtx")) + +(define_constraint "U1" + "@internal + A constraint that matches the immediate constant +1." + (match_test "op == const1_rtx")) + (define_memory_constraint "Ux" "@internal In ARM/Thumb-2 state a valid address and load into CORE regs or only to diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md index 2144520829c..5d75341c9ef 100644 --- a/gcc/config/arm/predicates.md +++ b/gcc/config/arm/predicates.md @@ -454,6 +454,13 @@ && arm_general_register_operand (op, GET_MODE (op))") (match_test "satisfies_constraint_Pg (op)"))) +(define_predicate "arm_reg_or_m1_or_1_or_zero" + (and (match_code "reg,subreg,const_int") + (ior (match_operand 0 "arm_general_register_operand") + (match_test "op == constm1_rtx") + (match_test "op == const1_rtx") + (match_test "op == const0_rtx")))) + ;; True for MULT, to identify which variant of shift_operator is in use. (define_special_predicate "mult_operator" (match_code "mult")) diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index d12467d7644..bc6f2a52004 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -432,6 +432,30 @@ (set_attr "type" "multiple")] ) +(define_insn "*cmovsi_insn" + [(set (match_operand:SI 0 "arm_general_register_operand" "=r,r,r,r,r,r,r,r,r") + (if_then_else:SI + (match_operator 1 "arm_comparison_operator" + [(match_operand 2 "cc_register" "") (const_int 0)]) + (match_operand:SI 3 "arm_reg_or_m1_or_1_or_zero" "r, r,UM, r,U1,U1, Z,UM, Z") + (match_operand:SI 4 "arm_reg_or_m1_or_1_or_zero" "r,UM, r,U1, r, Z,U1, Z,UM")))] + "TARGET_THUMB2 && TARGET_COND_ARITH + && (!((operands[3] == const1_rtx && operands[4] == constm1_rtx) + || (operands[3] == constm1_rtx && operands[4] == const1_rtx)))" + "@ + csel\\t%0, %3, %4, %d1 + csinv\\t%0, %3, zr, %d1 + csinv\\t%0, %4, zr, %D1 + csinc\\t%0, %3, zr, %d1 + csinc\\t%0, %4, zr, %D1 + cset\\t%0, %d1 + cset\\t%0, %D1 + csetm\\t%0, %d1 + csetm\\t%0, %D1" + [(set_attr "type" "csel") + (set_attr "predicable" "no")] +) + (define_insn_and_split "*thumb2_movsicc_insn" [(set (match_operand:SI 0 "s_register_operand" "=l,l,r,r,r,r,r,r,r,r,r,r") (if_then_else:SI @@ -449,17 +473,14 @@ it\\t%d3\;mvn%d3\\t%0, #%B1 # # - # - # - # + ite\\t%d3\;mov%d3\\t%0, %1\;mvn%D3\\t%0, #%B2 + ite\\t%d3\;mvn%d3\\t%0, #%B1\;mov%D3\\t%0, %2 + ite\\t%d3\;mvn%d3\\t%0, #%B1\;mvn%D3\\t%0, #%B2 #" ; alt 6: ite\\t%d3\;mov%d3\\t%0, %1\;mov%D3\\t%0, %2 ; alt 7: ite\\t%d3\;mov%d3\\t%0, %1\;mov%D3\\t%0, %2 - ; alt 8: ite\\t%d3\;mov%d3\\t%0, %1\;mvn%D3\\t%0, #%B2 - ; alt 9: ite\\t%d3\;mvn%d3\\t%0, #%B1\;mov%D3\\t%0, %2 - ; alt 10: ite\\t%d3\;mvn%d3\\t%0, #%B1\;mvn%D3\\t%0, #%B2 ; alt 11: ite\\t%d3\;mov%d3\\t%0, %1\;mov%D3\\t%0, %2 - "&& reload_completed" + "&& reload_completed && !TARGET_COND_ARITH" [(const_int 0)] { enum rtx_code rev_code; diff --git a/gcc/testsuite/gcc.target/arm/csel.c b/gcc/testsuite/gcc.target/arm/csel.c new file mode 100644 index 00000000000..79a4c161eb5 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/csel.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_arch_v8_1m_main_ok } */ +/* { dg-options "-O2 -march=armv8.1-m.main" } */ + +int +test_csel32_condasn(int w0, int w1, int w2, int w3) +{ + int w4; + + /* { dg-final { scan-assembler "csel\tr\[0-9\]*.*eq" } } */ + w4 = (w0 == w1) ? w2 : w3; + return w4; +} diff --git a/gcc/testsuite/gcc.target/arm/cset.c b/gcc/testsuite/gcc.target/arm/cset.c new file mode 100644 index 00000000000..e63b7b5041e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/cset.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_arch_v8_1m_main_ok } */ +/* { dg-options "-O2 -march=armv8.1-m.main" } */ + +int +test_cset32_condasn1(int w0, int w1) +{ + int w2; + + /* { dg-final { scan-assembler "cset\tr\[0-9\]*.*eq" } } */ + w2 = (w0 == w1) ? 1 : 0; + return w2; +} + +int +test_cset32_condasn2(int w0, int w1) +{ + int w2; + + /* { dg-final { scan-assembler "cset\tr\[0-9\]*.*ne" } } */ + w2 = (w0 == w1) ? 0 : 1; + return w2; +} diff --git a/gcc/testsuite/gcc.target/arm/csetm.c b/gcc/testsuite/gcc.target/arm/csetm.c new file mode 100644 index 00000000000..c04520c2f65 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/csetm.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_arch_v8_1m_main_ok } */ +/* { dg-options "-O2 -march=armv8.1-m.main" } */ + +int +test_csetm32_condasn1(int w0, int w1) +{ + int w2; + + /* { dg-final { scan-assembler "csetm\tr\[0-9\]*.*eq" } } */ + w2 = (w0 == w1) ? -1 : 0; + return w2; +} + +int +test_csetm32_condasn2(int w0, int w1) +{ + int w2; + + /* { dg-final { scan-assembler "csetm\tr\[0-9\]*.*ne" } } */ + w2 = (w0 == w1) ? 0 : -1; + return w2; +} diff --git a/gcc/testsuite/gcc.target/arm/csinc-2.c b/gcc/testsuite/gcc.target/arm/csinc-2.c new file mode 100644 index 00000000000..45e3815eb0c --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/csinc-2.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_arch_v8_1m_main_ok } */ +/* { dg-options "-O2 -march=armv8.1-m.main" } */ + +int +test_csinc32_condasn1(int w0, int w1, int w2) +{ + int w3; + + /* { dg-final { scan-assembler "csinc\tr\[0-9\]*.*zr.*eq" } } */ + w3 = (w0 == w1) ? w2 : 1; + return w3; +} + +int +test_csinc32_condasn2(int w0, int w1, int w2) +{ + int w3; + + /* { dg-final { scan-assembler "csinc\tr\[0-9\]*.*zr.*ne" } } */ + w3 = (w0 == w1) ? 1 : w2; + return w3; +} diff --git a/gcc/testsuite/gcc.target/arm/csinv-2.c b/gcc/testsuite/gcc.target/arm/csinv-2.c new file mode 100644 index 00000000000..d55de1b5a33 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/csinv-2.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_arch_v8_1m_main_ok } */ +/* { dg-options "-O2 -march=armv8.1-m.main" } */ + +int +test_csinv32_condasn1(int w0, int w1, int w2) +{ + int w3; + + /* { dg-final { scan-assembler "csinv\tr\[0-9\]*.*zr.*eq" } } */ + w3 = (w0 == w1) ? w2 : -1; + return w3; +} + +int +test_csinv32_condasn2(int w0, int w1, int w2) +{ + int w3; + + /* { dg-final { scan-assembler "csinv\tr\[0-9\]*.*zr.*ne" } } */ + w3 = (w0 == w1) ? -1 : w2; + return w3; +}