From patchwork Tue Sep 3 15:39:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 1157075 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-508238-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="nk6uXIi2"; dkim=pass (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.b="SeMD6psQ"; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.b="SeMD6psQ"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46NB3l6rj0z9s7T for ; Wed, 4 Sep 2019 01:40:19 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:content-type :content-transfer-encoding:mime-version; q=dns; s=default; b=FEc hAJXK9Wy10xSLPju4MuhQYEbBrysyfQVs9ruiosppVv1giDrOwN/WZ55dz8pqIU6 +jQjgCyGYqjYxlmArSYWkc4Pv+ho0m1vLKVbKtwOrltVYGOg5AZFyIZAvUdXy2E9 EN3qGp+8PzCRwp40bYWwsQGvyCnKYETlM17tbE5U= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:content-type :content-transfer-encoding:mime-version; s=default; bh=qJCq6eSGx L3VxXO66FCLwsHwbJg=; b=nk6uXIi2jju5D5rMKLJMscmt/b+/Z1TzcPLdZ7pQj jmEJnnZVUrSVdUZ20Ua2CikVX61BEz1y1trYCuRqkeavga1NBSOTWevGTpHvnN0d Cdbis9wVPNHo5b++0JMeBJh2lQ7t+ffyxIzCy2ZpHeosO7Ptd4EvUgXc8EP8inO6 Zc= Received: (qmail 56662 invoked by alias); 3 Sep 2019 15:40:12 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 56652 invoked by uid 89); 3 Sep 2019 15:40:12 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-19.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: EUR03-AM5-obe.outbound.protection.outlook.com Received: from mail-eopbgr30064.outbound.protection.outlook.com (HELO EUR03-AM5-obe.outbound.protection.outlook.com) (40.107.3.64) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 03 Sep 2019 15:40:10 +0000 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=0Pa6D8ngpy3SXoO71Q1qS8faat5i8A4Q9hE5KmIHRvY=; b=SeMD6psQ3GHc+/jlPnqJhUTS3LgzVlkXHZXk/inhGL1U7ZDg/hH599P4idYFK9W1T4XNjL+0MJQNrSCsLnU/kvjNMsLZlhXDmVhjy2wnTcjFLUtEucpO/YggJwpYdbTxx8zyNbJYfmDn+VrwMvH5PBZgE3PWSa/wFxZtm5eNqZA= Received: from VI1PR08CA0174.eurprd08.prod.outlook.com (2603:10a6:800:d1::28) by VI1PR0801MB1855.eurprd08.prod.outlook.com (2603:10a6:800:59::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.14; Tue, 3 Sep 2019 15:40:06 +0000 Received: from VE1EUR03FT030.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::207) by VI1PR08CA0174.outlook.office365.com (2603:10a6:800:d1::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2220.19 via Frontend Transport; Tue, 3 Sep 2019 15:40:06 +0000 Authentication-Results: spf=temperror (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=temperror action=none header.from=arm.com; Received-SPF: TempError (protection.outlook.com: error in processing during lookup of arm.com: DNS Timeout) Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT030.mail.protection.outlook.com (10.152.18.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2220.16 via Frontend Transport; Tue, 3 Sep 2019 15:40:05 +0000 Received: ("Tessian outbound eec90fc31dfb:v27"); Tue, 03 Sep 2019 15:40:05 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: ea78bdb8a505d897 X-CR-MTA-TID: 64aa7808 Received: from 4b749d118ff4.2 (ip-172-16-0-2.eu-west-1.compute.internal [104.47.6.59]) by 64aa7808-outbound-1.mta.getcheckrecipient.com id 8BB29487-2259-4547-AE1A-5051D6DBDD7F.1; Tue, 03 Sep 2019 15:39:59 +0000 Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2059.outbound.protection.outlook.com [104.47.6.59]) by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 4b749d118ff4.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 03 Sep 2019 15:39:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cLwn2sIUG5+qm/c0Dlc/6mFBy3w3bGPZD4bLbEsTU/3XmeQvLcv1Pz8Gqt0EqKxdcABHh6E0H254QYeoXpxRazEeEbm6ft81sNcRbtJwjM2RprDJbLRG1I4luK6C7z8xjpmFWJKE0fXEup7QL0yY8/u/7BmyX3gJlUiKTeZBRpaqpI74rQxgl2LWpRuRYFDbxCWr9Ht8H30Ik0qlO7VRf/FClkk+s+0Ul6Dc6shlZy7dhIQHhcSW1jRrz6nyhoDI7pXpbUUNQaL8YgO0AIqHX72OmjSS4/w+9gSph5SUHRZLfmvnPqBTx4KalwxVBdSDrYvzwC3WUq5m9NK5dNLOpw== 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=0Pa6D8ngpy3SXoO71Q1qS8faat5i8A4Q9hE5KmIHRvY=; b=JSLXgnBA66eEa+rFIbw/N65M+IbbPxo75m4jDI/i6/crkcx3f7DuWAbiMM3H8pG2EsTve147iQsYjZslMEI1WCAZWLJxxiN5Qysh9bX7nMn7j8a7f5MqgELF8pTPsaX5eY14xeKO10F9MhAjgdu52NE1WhdB6eN5fYcC+aeHy3ZQide43Z8w/X+VyZMYrYMSOmbwIjIavyJpK4o67rwd9iCN6lOrKGmOY9TZChdlhVCa2KRtViKHyxIa4E8S6VPVSA3f7cnbWX/kwxqN7r4ZJ3K9QF2CpvxcURqvZwVuUNTMUq9quWFFJe5ChVNVqr2JJuF93b1nx10NuiB2wGIAHA== 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=0Pa6D8ngpy3SXoO71Q1qS8faat5i8A4Q9hE5KmIHRvY=; b=SeMD6psQ3GHc+/jlPnqJhUTS3LgzVlkXHZXk/inhGL1U7ZDg/hH599P4idYFK9W1T4XNjL+0MJQNrSCsLnU/kvjNMsLZlhXDmVhjy2wnTcjFLUtEucpO/YggJwpYdbTxx8zyNbJYfmDn+VrwMvH5PBZgE3PWSa/wFxZtm5eNqZA= Received: from VI1PR0801MB2127.eurprd08.prod.outlook.com (10.168.62.22) by VI1PR0801MB1792.eurprd08.prod.outlook.com (10.168.62.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2220.21; Tue, 3 Sep 2019 15:39:58 +0000 Received: from VI1PR0801MB2127.eurprd08.prod.outlook.com ([fe80::51f4:7d44:9734:ae0c]) by VI1PR0801MB2127.eurprd08.prod.outlook.com ([fe80::51f4:7d44:9734:ae0c%5]) with mapi id 15.20.2220.021; Tue, 3 Sep 2019 15:39:58 +0000 From: Wilco Dijkstra To: GCC Patches , Kyrylo Tkachov , Richard Earnshaw CC: nd Subject: [PATCH][ARM] Cleanup highpart multiply patterns Date: Tue, 3 Sep 2019 15:39:58 +0000 Message-ID: Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Wilco.Dijkstra@arm.com; X-Microsoft-Antispam-Untrusted: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600166)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020); SRVR:VI1PR0801MB1792; x-ms-exchange-transport-forked: True x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:386;OLM:386; X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(136003)(346002)(396003)(366004)(376002)(54534003)(199004)(189003)(6506007)(7696005)(6436002)(9686003)(71200400001)(71190400001)(5660300002)(99286004)(8676002)(53936002)(6636002)(478600001)(14444005)(3846002)(6116002)(102836004)(55016002)(256004)(110136005)(25786009)(486006)(74316002)(66476007)(14454004)(66556008)(64756008)(76116006)(66946007)(26005)(33656002)(66446008)(66066001)(2906002)(81166006)(81156014)(52536014)(186003)(305945005)(7736002)(86362001)(316002)(4326008)(476003)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0801MB1792; H:VI1PR0801MB2127.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info-Original: i2pUopmw3/1hXR1K3Cvi3iDt4cKZug3ZvhGiO0n655Mo75ICx8Mkm2S51jSOhY1YdrLutAHp9y/BnhzZxOXeS/7w8bskDbcqG6lhcHqIjJx8ftoHNACE+vGQXvsO+ZQ3t151xs+mF/4v2UIwZlzYdj6UutbmW2c9xcKIY8P8o/bhTvp1bpr8iNJkGmWPqGoJckTaSRI5/fepjS4irfma5waBlMbgjrKiSPhqW/elthba+l+ETd5Q6tHi0Z/K8zYcGbyvZkhDv3ar9xY9gpKaUru7ELcAKYre2YQDS/42AqLaUK+0iIYSXrm186n7YVlzNaMpoYyscEJfPVbwoSpdBIFKgMoElfRmElFpPm4ObCRUYp+XDYlCy7JERWDI1HwMKj/1YjVKxaoGhsvMf5cdenWZE6kwyUwQkSgwLz8/D4o= MIME-Version: 1.0 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Wilco.Dijkstra@arm.com; X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT030.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: e5a69e46-a0f2-4b45-be20-08d73084f9ec Cleanup the various highpart multiply patterns using iterators. As a result the signed and unsigned variants and the pre-Armv6 multiply operand constraints are all handled in a single pattern and simple expander. Bootstrap OK on armhf, regress passes. ChangeLog: 2019-09-03 Wilco Dijkstra * config/arm/arm.md (smulsi3_highpart): Use and iterators. (smulsi3_highpart_nov6): Remove pattern. (smulsi3_highpart_v6): Likewise. (umulsi3_highpart): Likewise. (umulsi3_highpart_nov6): Likewise. (umulsi3_highpart_v6): Likewise. (mull_high): Add new combined multiply pattern. diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 681358512e88f6823d1b6d59038f387daaec226e..1ab203810bf143927a8afa0d00d82537cd7c75ed 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -1776,92 +1776,34 @@ (define_insn "*umulsidi3adddi_v6" (set_attr "predicable" "yes")] ) -(define_expand "smulsi3_highpart" +(define_expand "mulsi3_highpart" [(parallel [(set (match_operand:SI 0 "s_register_operand") (truncate:SI (lshiftrt:DI (mult:DI - (sign_extend:DI (match_operand:SI 1 "s_register_operand")) - (sign_extend:DI (match_operand:SI 2 "s_register_operand"))) + (SE:DI (match_operand:SI 1 "s_register_operand")) + (SE:DI (match_operand:SI 2 "s_register_operand"))) (const_int 32)))) (clobber (match_scratch:SI 3 ""))])] "TARGET_32BIT" "" ) -(define_insn "*smulsi3_highpart_nov6" - [(set (match_operand:SI 0 "s_register_operand" "=&r,&r") +(define_insn "*mull_high" + [(set (match_operand:SI 0 "s_register_operand" "=r,&r,&r") (truncate:SI (lshiftrt:DI (mult:DI - (sign_extend:DI (match_operand:SI 1 "s_register_operand" "%0,r")) - (sign_extend:DI (match_operand:SI 2 "s_register_operand" "r,r"))) + (SE:DI (match_operand:SI 1 "s_register_operand" "%r,0,r")) + (SE:DI (match_operand:SI 2 "s_register_operand" "r,r,r"))) (const_int 32)))) - (clobber (match_scratch:SI 3 "=&r,&r"))] - "TARGET_32BIT && !arm_arch6" - "smull%?\\t%3, %0, %2, %1" - [(set_attr "type" "smull") - (set_attr "predicable" "yes")] -) - -(define_insn "*smulsi3_highpart_v6" - [(set (match_operand:SI 0 "s_register_operand" "=r") - (truncate:SI - (lshiftrt:DI - (mult:DI - (sign_extend:DI (match_operand:SI 1 "s_register_operand" "r")) - (sign_extend:DI (match_operand:SI 2 "s_register_operand" "r"))) - (const_int 32)))) - (clobber (match_scratch:SI 3 "=r"))] - "TARGET_32BIT && arm_arch6" - "smull%?\\t%3, %0, %2, %1" - [(set_attr "type" "smull") - (set_attr "predicable" "yes")] -) - -(define_expand "umulsi3_highpart" - [(parallel - [(set (match_operand:SI 0 "s_register_operand") - (truncate:SI - (lshiftrt:DI - (mult:DI - (zero_extend:DI (match_operand:SI 1 "s_register_operand")) - (zero_extend:DI (match_operand:SI 2 "s_register_operand"))) - (const_int 32)))) - (clobber (match_scratch:SI 3 ""))])] + (clobber (match_scratch:SI 3 "=r,&r,&r"))] "TARGET_32BIT" - "" -) - -(define_insn "*umulsi3_highpart_nov6" - [(set (match_operand:SI 0 "s_register_operand" "=&r,&r") - (truncate:SI - (lshiftrt:DI - (mult:DI - (zero_extend:DI (match_operand:SI 1 "s_register_operand" "%0,r")) - (zero_extend:DI (match_operand:SI 2 "s_register_operand" "r,r"))) - (const_int 32)))) - (clobber (match_scratch:SI 3 "=&r,&r"))] - "TARGET_32BIT && !arm_arch6" - "umull%?\\t%3, %0, %2, %1" + "mull%?\\t%3, %0, %2, %1" [(set_attr "type" "umull") - (set_attr "predicable" "yes")] -) - -(define_insn "*umulsi3_highpart_v6" - [(set (match_operand:SI 0 "s_register_operand" "=r") - (truncate:SI - (lshiftrt:DI - (mult:DI - (zero_extend:DI (match_operand:SI 1 "s_register_operand" "r")) - (zero_extend:DI (match_operand:SI 2 "s_register_operand" "r"))) - (const_int 32)))) - (clobber (match_scratch:SI 3 "=r"))] - "TARGET_32BIT && arm_arch6" - "umull%?\\t%3, %0, %2, %1" - [(set_attr "type" "umull") - (set_attr "predicable" "yes")] + (set_attr "predicable" "yes") + (set_attr "arch" "v6,nov6,nov6")] ) (define_insn "mulhisi3"