From patchwork Tue Apr 18 13:46:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Lyon X-Patchwork-Id: 67939 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 756003850235 for ; Tue, 18 Apr 2023 13:54:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 756003850235 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1681826077; bh=Rd2YAKU3pCcLGshQtFj2FD4AeYbgB+9ihKm0xT8jWI0=; h=To:CC:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=fSR/K6qfreg+Ne5QFdwokWhNZXDPAbkF+TXKleJHf1tHYm8F3hqqY+bMNyTNgqEkL cplvKbQfIApU7RK0Zq1jtauWyUOlMvxTmKpY2JNbXWon4flgMjyf4QH/2GNr6WSHRt 56LrM6BM9yHD7Tvg9tVhgSaScGHu6nuIzihgDmy8= 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-vi1eur05on2055.outbound.protection.outlook.com [40.107.21.55]) by sourceware.org (Postfix) with ESMTPS id 1D20A3856248 for ; Tue, 18 Apr 2023 13:47:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1D20A3856248 Received: from DB6PR0301CA0054.eurprd03.prod.outlook.com (2603:10a6:4:54::22) by AM9PR08MB6034.eurprd08.prod.outlook.com (2603:10a6:20b:2db::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Tue, 18 Apr 2023 13:47:46 +0000 Received: from DBAEUR03FT049.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:54:cafe::dc) by DB6PR0301CA0054.outlook.office365.com (2603:10a6:4:54::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.47 via Frontend Transport; Tue, 18 Apr 2023 13:47:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT049.mail.protection.outlook.com (100.127.142.192) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.20 via Frontend Transport; Tue, 18 Apr 2023 13:47:46 +0000 Received: ("Tessian outbound 99a3040377ca:v136"); Tue, 18 Apr 2023 13:47:46 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: d636ea010c9529d1 X-CR-MTA-TID: 64aa7808 Received: from f4fee172851b.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 69F103E5-A78F-48A0-B1BC-3A246CCC34D4.1; Tue, 18 Apr 2023 13:47:36 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f4fee172851b.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 18 Apr 2023 13:47:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KRdeHy2OQjZX6d9zda116+/e5JGcqjKoBldF3x3VGwi+Fzv/mYoXJeYst/qFuH3jDt7gW8gQBj/aOQRgybsOfsXK91TTDK8AWMmgTgydw5XxSDO4QJQYU6B5s3R0NJrjrfawPbwKrnnxn9gLCBR+U7ep9wWY0avdXTKGSUaYYm77xReIaDRWwB1QJFuGRIu5PMxWkvv1y12Y2o/ss578uFH9PQX+LDA5DiaAMX8zhuX0D+EalUE9UQltuQvv61kztEm2zbB+C+ClsqklHVc3fhPCPyJZ2MCEpRmx0eTmWqe0ZuYIdDq0rgCy4tj9hHUXpRn1lgo4WgLxAiHoGIbAyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Rd2YAKU3pCcLGshQtFj2FD4AeYbgB+9ihKm0xT8jWI0=; b=YB46ft7xaRYNLxWw/MPuS+GIBdlRp6JEmK82SIkVy8f6f6+83FYuOLqi5agWLC8RWDOyxnOP5ndKGToyAo4utzZbVlkYlpc3xbcIopwSc907dwQ+yEhhdRdUYrje/AywfuSZNiel40muDYeme9blb7JTinrsjow/2UShw6lcYVs/GFwcQKHALI/YTX/TZNz+3Bkr9r8OgQY7LsRS+0Mw+O1j1ASvI/wyLIifPrYkfrlm3+kDt2nvNPSYL629I7BxVJzWn9sQn9Rg5z4ZKnjy27zAlcVvgg90tQchJf1VZux1HqHNN6Iu4SnGNUFsGh3izj82PanFztPLO2jQHx4L4g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none Received: from AS8PR04CA0130.eurprd04.prod.outlook.com (2603:10a6:20b:127::15) by DB9PR08MB6410.eurprd08.prod.outlook.com (2603:10a6:10:262::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Tue, 18 Apr 2023 13:47:27 +0000 Received: from AM7EUR03FT060.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:127:cafe::8) by AS8PR04CA0130.outlook.office365.com (2603:10a6:20b:127::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.47 via Frontend Transport; Tue, 18 Apr 2023 13:47:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (40.67.248.234) by AM7EUR03FT060.mail.protection.outlook.com (100.127.140.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6319.20 via Frontend Transport; Tue, 18 Apr 2023 13:47:27 +0000 Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 18 Apr 2023 13:47:26 +0000 Received: from e129018.arm.com (10.57.54.117) by mail.arm.com (10.251.24.31) with Microsoft SMTP Server id 15.1.2507.23 via Frontend Transport; Tue, 18 Apr 2023 13:47:25 +0000 To: , , , CC: Christophe Lyon Subject: [PATCH 18/22] arm: [MVE intrinsics] factorize several binary_m operations Date: Tue, 18 Apr 2023 15:46:04 +0200 Message-ID: <20230418134608.244751-19-christophe.lyon@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230418134608.244751-1-christophe.lyon@arm.com> References: <20230418134608.244751-1-christophe.lyon@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM7EUR03FT060:EE_|DB9PR08MB6410:EE_|DBAEUR03FT049:EE_|AM9PR08MB6034:EE_ X-MS-Office365-Filtering-Correlation-Id: 50ba02f3-6893-43f5-96a5-08db40137dce x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: mMKGpNJug7BA5++mvFTCkSozcFypg1ZABwnVTvmKLmgY0zJPELBvH4O+xooMhHMdXWpUW4rkd1NZUEpIJp1x05Pxyqeqx1Y3zxQlPw4tpIyXCm8TBbRTwUcF3pn1pLgMzNzrEK/f/89INPKn4A/zT7aVWoFjW63nBVJ5JG0bSDlwDGKpK+jlSDPvTzDXSpkbJbhaCCfiivS/2F1NUJywP4Z20t876Eo8LqtwCCpDzieV2TeY1hvXm0r5TZopuV3Sp5o2dXToXhsaCRJICQEY10nHE3BKIcrXUYGgrWHu2qBg3HYQqrqCeWlLHhxFC4zxe6RFQunQans6fsXp3KNMLt+tSl0p3gvMWAjHOytu+UF2wSXa5VS0PnS61YIyvp1GoyCb/mvOk1KLD4pSKTJip+JbQX/6me8Fof1vqop0deoxTJOBKnfn2wX4QV30VTz8kIZTGYC/gg+kVASLAmFU65PwvH4xE7z+E8QNvFKDPyAOqtFsPMwIurSPo6ie2f9l/bknOW78tB3Uqocc1y/Fk1ZpbLXZ3MkLkMnBGUvAnYxcgOYk8jLZ1TL5hhWJRrTRoZWft/aN30O/ko49KSk98xfrJbZr9E3ALKubXzjQa/vlxK1jxJyGjhiMvwUnugaQKGw7Q4uUGznuxtbFz0UL6n/6KekmMlA5RTBv6IEqNstddEF8sGtfhb4IghWTO+rD8CTOCJSoFni3DaX/QmK2O43dUzWy0FmNDE4m3o5Z6hVIAc5//p9B+0zoDDsQuJae X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230028)(4636009)(39860400002)(136003)(376002)(396003)(346002)(451199021)(36840700001)(46966006)(4326008)(6636002)(316002)(110136005)(70206006)(70586007)(6666004)(7696005)(478600001)(40480700001)(82310400005)(8676002)(8936002)(41300700001)(5660300002)(2906002)(30864003)(44832011)(81166007)(356005)(82740400003)(36756003)(86362001)(426003)(2616005)(336012)(1076003)(26005)(186003)(36860700001)(47076005)(83380400001)(36900700001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6410 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT049.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 40ffc9f8-9c0c-41c3-4f58-08db4013726a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qQrpgVIwwukvHsIbqYe4fJ/ZZsjHUq4+XBuYF7rJBdeiqf9CQCZnOzbeyJc06aTMmeZD/fUGGRfF+BavgGgTOxltljnM9+1whZk2g2ImSx428xrwbjuwcwP4CIiOlLO2bxdoIKZRneX530SFMT/izG4rnzDcp8ViAGERxeG8Eb0FKRE/ljXok4vPr7g4g9UhAHfoMT39Rp/PDm4iegw4hufLqNMoZvrP5Au6sL3WEiip9pZRo72elA+dWqQqdGsPjP0Pe29mxpURV2R+WtyTgEbrozsPwt9QzVZ95bWCLoYcNLEUTv8LUS1HaQ7yBaCfUzYNX3oVvI4QjB9KsALCpL8qhwO8jOTpv5JOphHDVNnf0ZceUgnyp+FFa+72t0UzY+gTYuqiAWNSHoR4tKgFdKPsR31w1gCA2Ixuno5VRJup5J/3ixZIxc9PNtiEAkvtHp4q3drvUojMffDkPENAXwCtM56wWpw5D3+Gk4J2Sbd+i+KYZVOfFKMccbo9qa/2Eu8lkZDx49g7SO6AC8429aObmvBHThtF80oy8QNRXmS4xQUEkjjLQ/G9G+q88QN2DqF8CRTPx8xBZGic3mcpxnI9ez/lhR9d0+UCt7iogzNkDwdx1SLAB5yF+QRnaNLz5GAVDiOh/Ui7VzJIABhjTJwOa9q5+7lF8jGQL5iG72ydJ5DmA52yhuA22nAfjaajBbDX2rOHzpoCXJ33yo+l4Q== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230028)(4636009)(396003)(136003)(346002)(376002)(39860400002)(451199021)(36840700001)(46966006)(40470700004)(5660300002)(44832011)(86362001)(2616005)(426003)(336012)(82310400005)(6636002)(47076005)(83380400001)(186003)(1076003)(81166007)(82740400003)(26005)(40480700001)(36860700001)(8676002)(8936002)(478600001)(110136005)(6666004)(7696005)(316002)(41300700001)(40460700003)(36756003)(4326008)(70586007)(70206006)(2906002)(30864003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2023 13:47:46.2148 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 50ba02f3-6893-43f5-96a5-08db40137dce 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: DBAEUR03FT049.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6034 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org 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: , X-Patchwork-Original-From: Christophe Lyon via Gcc-patches From: Christophe Lyon Reply-To: Christophe Lyon Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Factorize m-predicated versions of vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq, vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq so that they use the same pattern. 2022-09-08 Christophe Lyon gcc/ * config/arm/iterators.md (MVE_INT_SU_M_BINARY): New. (mve_insn): Add vabdq, vhaddq, vhsubq, vmaxq, vminq, vmulhq, vqaddq, vqdmladhq, vqdmladhxq, vqdmlsdhq, vqdmlsdhxq, vqdmulhq, vqrdmladhq, vqrdmladhxq, vqrdmlsdhq, vqrdmlsdhxq, vqrdmulhq, vqrshlq, vqshlq, vqsubq, vrhaddq, vrmulhq, vrshlq, vshlq. (supf): Add VQDMLADHQ_M_S, VQDMLADHXQ_M_S, VQDMLSDHQ_M_S, VQDMLSDHXQ_M_S, VQDMULHQ_M_S, VQRDMLADHQ_M_S, VQRDMLADHXQ_M_S, VQRDMLSDHQ_M_S, VQRDMLSDHXQ_M_S, VQRDMULHQ_M_S. * config/arm/mve.md (@mve_q_m_): New. (mve_vshlq_m_): Merged into @mve_q_m_. (mve_vabdq_m_): Likewise. (mve_vhaddq_m_): Likewise. (mve_vhsubq_m_): Likewise. (mve_vmaxq_m_): Likewise. (mve_vminq_m_): Likewise. (mve_vmulhq_m_): Likewise. (mve_vqaddq_m_): Likewise. (mve_vqrshlq_m_): Likewise. (mve_vqshlq_m_): Likewise. (mve_vqsubq_m_): Likewise. (mve_vrhaddq_m_): Likewise. (mve_vrmulhq_m_): Likewise. (mve_vrshlq_m_): Likewise. (mve_vqdmladhq_m_s): Likewise. (mve_vqdmladhxq_m_s): Likewise. (mve_vqdmlsdhq_m_s): Likewise. (mve_vqdmlsdhxq_m_s): Likewise. (mve_vqdmulhq_m_s): Likewise. (mve_vqrdmladhq_m_s): Likewise. (mve_vqrdmladhxq_m_s): Likewise. (mve_vqrdmlsdhq_m_s): Likewise. (mve_vqrdmlsdhxq_m_s): Likewise. (mve_vqrdmulhq_m_s): Likewise. --- gcc/config/arm/iterators.md | 65 +++++- gcc/config/arm/mve.md | 420 +++--------------------------------- 2 files changed, 91 insertions(+), 394 deletions(-) diff --git a/gcc/config/arm/iterators.md b/gcc/config/arm/iterators.md index 5a531d77a33..18d70350bbe 100644 --- a/gcc/config/arm/iterators.md +++ b/gcc/config/arm/iterators.md @@ -339,6 +339,33 @@ (define_int_iterator MVE_INT_M_BINARY [ VSUBQ_M_S VSUBQ_M_U ]) +(define_int_iterator MVE_INT_SU_M_BINARY [ + VABDQ_M_S VABDQ_M_U + VHADDQ_M_S VHADDQ_M_U + VHSUBQ_M_S VHSUBQ_M_U + VMAXQ_M_S VMAXQ_M_U + VMINQ_M_S VMINQ_M_U + VMULHQ_M_S VMULHQ_M_U + VQADDQ_M_S VQADDQ_M_U + VQDMLADHQ_M_S + VQDMLADHXQ_M_S + VQDMLSDHQ_M_S + VQDMLSDHXQ_M_S + VQDMULHQ_M_S + VQRDMLADHQ_M_S + VQRDMLADHXQ_M_S + VQRDMLSDHQ_M_S + VQRDMLSDHXQ_M_S + VQRDMULHQ_M_S + VQRSHLQ_M_S VQRSHLQ_M_U + VQSHLQ_M_S VQSHLQ_M_U + VQSUBQ_M_S VQSUBQ_M_U + VRHADDQ_M_S VRHADDQ_M_U + VRMULHQ_M_S VRMULHQ_M_U + VRSHLQ_M_S VRSHLQ_M_U + VSHLQ_M_S VSHLQ_M_U + ]) + (define_int_iterator MVE_INT_M_BINARY_LOGIC [ VANDQ_M_S VANDQ_M_U VBICQ_M_S VBICQ_M_U @@ -404,6 +431,7 @@ (define_code_attr mve_addsubmul [ ]) (define_int_attr mve_insn [ + (VABDQ_M_S "vabd") (VABDQ_M_U "vabd") (VADDQ_M_N_S "vadd") (VADDQ_M_N_U "vadd") (VADDQ_M_N_F "vadd") (VADDQ_M_S "vadd") (VADDQ_M_U "vadd") (VADDQ_M_F "vadd") (VADDQ_N_S "vadd") (VADDQ_N_U "vadd") (VADDQ_N_F "vadd") @@ -413,12 +441,35 @@ (define_int_attr mve_insn [ (VBICQ_N_S "vbic") (VBICQ_N_U "vbic") (VCREATEQ_S "vcreate") (VCREATEQ_U "vcreate") (VCREATEQ_F "vcreate") (VEORQ_M_S "veor") (VEORQ_M_U "veor") (VEORQ_M_F "veor") + (VHADDQ_M_S "vhadd") (VHADDQ_M_U "vhadd") + (VHSUBQ_M_S "vhsub") (VHSUBQ_M_U "vhsub") + (VMAXQ_M_S "vmax") (VMAXQ_M_U "vmax") + (VMINQ_M_S "vmin") (VMINQ_M_U "vmin") + (VMULHQ_M_S "vmulh") (VMULHQ_M_U "vmulh") (VMULQ_M_N_S "vmul") (VMULQ_M_N_U "vmul") (VMULQ_M_N_F "vmul") (VMULQ_M_S "vmul") (VMULQ_M_U "vmul") (VMULQ_M_F "vmul") (VMULQ_N_S "vmul") (VMULQ_N_U "vmul") (VMULQ_N_F "vmul") (VORRQ_M_N_S "vorr") (VORRQ_M_N_U "vorr") (VORRQ_M_S "vorr") (VORRQ_M_U "vorr") (VORRQ_M_F "vorr") (VORRQ_N_S "vorr") (VORRQ_N_U "vorr") + (VQADDQ_M_S "vqadd") (VQADDQ_M_U "vqadd") + (VQDMLADHQ_M_S "vqdmladh") + (VQDMLADHXQ_M_S "vqdmladhx") + (VQDMLSDHQ_M_S "vqdmlsdh") + (VQDMLSDHXQ_M_S "vqdmlsdhx") + (VQDMULHQ_M_S "vqdmulh") + (VQRDMLADHQ_M_S "vqrdmladh") + (VQRDMLADHXQ_M_S "vqrdmladhx") + (VQRDMLSDHQ_M_S "vqrdmlsdh") + (VQRDMLSDHXQ_M_S "vqrdmlsdhx") + (VQRDMULHQ_M_S "vqrdmulh") + (VQRSHLQ_M_S "vqrshl") (VQRSHLQ_M_U "vqrshl") + (VQSHLQ_M_S "vqshl") (VQSHLQ_M_U "vqshl") + (VQSUBQ_M_S "vqsub") (VQSUBQ_M_U "vqsub") + (VRHADDQ_M_S "vrhadd") (VRHADDQ_M_U "vrhadd") + (VRMULHQ_M_S "vrmulh") (VRMULHQ_M_U "vrmulh") + (VRSHLQ_M_S "vrshl") (VRSHLQ_M_U "vrshl") + (VSHLQ_M_S "vshl") (VSHLQ_M_U "vshl") (VSUBQ_M_N_S "vsub") (VSUBQ_M_N_U "vsub") (VSUBQ_M_N_F "vsub") (VSUBQ_M_S "vsub") (VSUBQ_M_U "vsub") (VSUBQ_M_F "vsub") (VSUBQ_N_S "vsub") (VSUBQ_N_U "vsub") (VSUBQ_N_F "vsub") @@ -1557,7 +1608,19 @@ (define_int_attr supf [(VCVTQ_TO_F_S "s") (VCVTQ_TO_F_U "u") (VREV16Q_S "s") (VADCIQ_U "u") (VADCIQ_M_U "u") (VADCIQ_S "s") (VADCIQ_M_S "s") (SQRSHRL_64 "64") (SQRSHRL_48 "48") (UQRSHLL_64 "64") (UQRSHLL_48 "48") (VSHLCQ_M_S "s") - (VSHLCQ_M_U "u")]) + (VSHLCQ_M_U "u") + (VQDMLADHQ_M_S "s") + (VQDMLADHXQ_M_S "s") + (VQDMLSDHQ_M_S "s") + (VQDMLSDHXQ_M_S "s") + (VQDMULHQ_M_S "s") + (VQRDMLADHQ_M_S "s") + (VQRDMLADHXQ_M_S "s") + (VQRDMLSDHQ_M_S "s") + (VQRDMLSDHXQ_M_S "s") + (VQRDMULHQ_M_S "s") + ]) + ;; Both kinds of return insn. (define_code_iterator RETURNS [return simple_return]) (define_code_attr return_str [(return "") (simple_return "simple_")]) diff --git a/gcc/config/arm/mve.md b/gcc/config/arm/mve.md index f7f0ba65251..21c54197db5 100644 --- a/gcc/config/arm/mve.md +++ b/gcc/config/arm/mve.md @@ -4867,23 +4867,6 @@ (define_insn "mve_vqshluq_m_n_s" [(set_attr "type" "mve_move") (set_attr "length" "8")]) -;; -;; [vshlq_m_s, vshlq_m_u]) -;; -(define_insn "mve_vshlq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VSHLQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vshlt.%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length" "8")]) - ;; ;; [vsriq_m_n_s, vsriq_m_n_u]) ;; @@ -4917,20 +4900,44 @@ (define_insn "mve_vcvtq_m_n_to_f_" "vpst\;vcvtt.f%#.%#\t%q0, %q2, %3" [(set_attr "type" "mve_move") (set_attr "length""8")]) + ;; ;; [vabdq_m_s, vabdq_m_u]) +;; [vhaddq_m_s, vhaddq_m_u]) +;; [vhsubq_m_s, vhsubq_m_u]) +;; [vmaxq_m_s, vmaxq_m_u]) +;; [vminq_m_s, vminq_m_u]) +;; [vmulhq_m_s, vmulhq_m_u]) +;; [vqaddq_m_u, vqaddq_m_s]) +;; [vqdmladhq_m_s]) +;; [vqdmladhxq_m_s]) +;; [vqdmlsdhq_m_s]) +;; [vqdmlsdhxq_m_s]) +;; [vqdmulhq_m_s]) +;; [vqrdmladhq_m_s]) +;; [vqrdmladhxq_m_s]) +;; [vqrdmlsdhq_m_s]) +;; [vqrdmlsdhxq_m_s]) +;; [vqrdmulhq_m_s]) +;; [vqrshlq_m_u, vqrshlq_m_s]) +;; [vqshlq_m_u, vqshlq_m_s]) +;; [vqsubq_m_u, vqsubq_m_s]) +;; [vrhaddq_m_u, vrhaddq_m_s]) +;; [vrmulhq_m_u, vrmulhq_m_s]) +;; [vrshlq_m_s, vrshlq_m_u]) +;; [vshlq_m_s, vshlq_m_u]) ;; -(define_insn "mve_vabdq_m_" +(define_insn "@mve_q_m_" [ (set (match_operand:MVE_2 0 "s_register_operand" "=w") (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") (match_operand:MVE_2 2 "s_register_operand" "w") (match_operand:MVE_2 3 "s_register_operand" "w") (match_operand: 4 "vpr_register_operand" "Up")] - VABDQ_M)) + MVE_INT_SU_M_BINARY)) ] "TARGET_HAVE_MVE" - "vpst\;vabdt.%# %q0, %q2, %q3" + "vpst\;t.%#\t%q0, %q2, %q3" [(set_attr "type" "mve_move") (set_attr "length""8")]) @@ -5060,23 +5067,6 @@ (define_insn "mve_vhaddq_m_n_" [(set_attr "type" "mve_move") (set_attr "length""8")]) -;; -;; [vhaddq_m_s, vhaddq_m_u]) -;; -(define_insn "mve_vhaddq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VHADDQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vhaddt.%# %q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; ;; [vhsubq_m_n_s, vhsubq_m_n_u]) ;; @@ -5095,56 +5085,6 @@ (define_insn "mve_vhsubq_m_n_" (set_attr "length""8")]) ;; -;; [vhsubq_m_s, vhsubq_m_u]) -;; -(define_insn "mve_vhsubq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VHSUBQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vhsubt.%# %q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -;; -;; [vmaxq_m_s, vmaxq_m_u]) -;; -(define_insn "mve_vmaxq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VMAXQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vmaxt.%# %q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -;; -;; [vminq_m_s, vminq_m_u]) -;; -(define_insn "mve_vminq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VMINQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vmint.%# %q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; ;; [vmladavaq_p_u, vmladavaq_p_s]) ;; @@ -5196,23 +5136,6 @@ (define_insn "mve_vmlasq_m_n_" [(set_attr "type" "mve_move") (set_attr "length""8")]) -;; -;; [vmulhq_m_s, vmulhq_m_u]) -;; -(define_insn "mve_vmulhq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VMULHQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vmulht.%# %q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; ;; [vmullbq_int_m_u, vmullbq_int_m_s]) ;; @@ -5281,23 +5204,6 @@ (define_insn "mve_vqaddq_m_n_" [(set_attr "type" "mve_move") (set_attr "length""8")]) -;; -;; [vqaddq_m_u, vqaddq_m_s]) -;; -(define_insn "mve_vqaddq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQADDQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqaddt.%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; ;; [vqdmlahq_m_n_s]) ;; @@ -5366,23 +5272,6 @@ (define_insn "mve_vqrdmlashq_m_n_s" [(set_attr "type" "mve_move") (set_attr "length""8")]) -;; -;; [vqrshlq_m_u, vqrshlq_m_s]) -;; -(define_insn "mve_vqrshlq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQRSHLQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqrshlt.%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; ;; [vqshlq_m_n_s, vqshlq_m_n_u]) ;; @@ -5400,23 +5289,6 @@ (define_insn "mve_vqshlq_m_n_" [(set_attr "type" "mve_move") (set_attr "length""8")]) -;; -;; [vqshlq_m_u, vqshlq_m_s]) -;; -(define_insn "mve_vqshlq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQSHLQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqshlt.%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; ;; [vqsubq_m_n_u, vqsubq_m_n_s]) ;; @@ -5434,74 +5306,6 @@ (define_insn "mve_vqsubq_m_n_" [(set_attr "type" "mve_move") (set_attr "length""8")]) -;; -;; [vqsubq_m_u, vqsubq_m_s]) -;; -(define_insn "mve_vqsubq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQSUBQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqsubt.%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -;; -;; [vrhaddq_m_u, vrhaddq_m_s]) -;; -(define_insn "mve_vrhaddq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VRHADDQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vrhaddt.%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -;; -;; [vrmulhq_m_u, vrmulhq_m_s]) -;; -(define_insn "mve_vrmulhq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VRMULHQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vrmulht.%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -;; -;; [vrshlq_m_s, vrshlq_m_u]) -;; -(define_insn "mve_vrshlq_m_" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VRSHLQ_M)) - ] - "TARGET_HAVE_MVE" - "vpst\;vrshlt.%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; ;; [vrshrq_m_n_s, vrshrq_m_n_u]) ;; @@ -5655,74 +5459,6 @@ (define_insn "mve_vmlsdavaxq_p_s" [(set_attr "type" "mve_move") (set_attr "length""8")]) -;; -;; [vqdmladhq_m_s]) -;; -(define_insn "mve_vqdmladhq_m_s" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQDMLADHQ_M_S)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqdmladht.s%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -;; -;; [vqdmladhxq_m_s]) -;; -(define_insn "mve_vqdmladhxq_m_s" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQDMLADHXQ_M_S)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqdmladhxt.s%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -;; -;; [vqdmlsdhq_m_s]) -;; -(define_insn "mve_vqdmlsdhq_m_s" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQDMLSDHQ_M_S)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqdmlsdht.s%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -;; -;; [vqdmlsdhxq_m_s]) -;; -(define_insn "mve_vqdmlsdhxq_m_s" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQDMLSDHXQ_M_S)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqdmlsdhxt.s%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; ;; [vqdmulhq_m_n_s]) ;; @@ -5740,91 +5476,6 @@ (define_insn "mve_vqdmulhq_m_n_s" [(set_attr "type" "mve_move") (set_attr "length""8")]) -;; -;; [vqdmulhq_m_s]) -;; -(define_insn "mve_vqdmulhq_m_s" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQDMULHQ_M_S)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqdmulht.s%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -;; -;; [vqrdmladhq_m_s]) -;; -(define_insn "mve_vqrdmladhq_m_s" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQRDMLADHQ_M_S)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqrdmladht.s%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -;; -;; [vqrdmladhxq_m_s]) -;; -(define_insn "mve_vqrdmladhxq_m_s" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQRDMLADHXQ_M_S)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqrdmladhxt.s%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -;; -;; [vqrdmlsdhq_m_s]) -;; -(define_insn "mve_vqrdmlsdhq_m_s" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQRDMLSDHQ_M_S)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqrdmlsdht.s%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - -;; -;; [vqrdmlsdhxq_m_s]) -;; -(define_insn "mve_vqrdmlsdhxq_m_s" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQRDMLSDHXQ_M_S)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqrdmlsdhxt.s%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; ;; [vqrdmulhq_m_n_s]) ;; @@ -5842,23 +5493,6 @@ (define_insn "mve_vqrdmulhq_m_n_s" [(set_attr "type" "mve_move") (set_attr "length""8")]) -;; -;; [vqrdmulhq_m_s]) -;; -(define_insn "mve_vqrdmulhq_m_s" - [ - (set (match_operand:MVE_2 0 "s_register_operand" "=w") - (unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0") - (match_operand:MVE_2 2 "s_register_operand" "w") - (match_operand:MVE_2 3 "s_register_operand" "w") - (match_operand: 4 "vpr_register_operand" "Up")] - VQRDMULHQ_M_S)) - ] - "TARGET_HAVE_MVE" - "vpst\;vqrdmulht.s%#\t%q0, %q2, %q3" - [(set_attr "type" "mve_move") - (set_attr "length""8")]) - ;; ;; [vmlaldavaq_p_u, vmlaldavaq_p_s]) ;;