From patchwork Fri May 12 09:38:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Lyon X-Patchwork-Id: 69219 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 CE08938768B9 for ; Fri, 12 May 2023 09:40:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CE08938768B9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1683884449; bh=UlhORb+6DRDqhH1In07vGRFROxlwnHwQOnxLZjhI3yo=; 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=OEW44SaryJQLlRQM9sld5da8kz+Wyf76Lc+NfC9sX9MCd/w/KqQLSr0fV+1yCThmb b1jSP2F1sZXW1Csr31d9/w2yfoN5gJf+Si/i5GZe6IPOV2FxBSQgRY8jNYKGeiYM2o otdu7MAV2/RtPb3X9IuzPGzGA6os/R9x1tcsDeBk= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2050.outbound.protection.outlook.com [40.107.8.50]) by sourceware.org (Postfix) with ESMTPS id 76767385B51C for ; Fri, 12 May 2023 09:39:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 76767385B51C Received: from AM6P195CA0086.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:86::27) by PAVPR08MB9307.eurprd08.prod.outlook.com (2603:10a6:102:304::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.21; Fri, 12 May 2023 09:39:12 +0000 Received: from AM7EUR03FT016.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:86:cafe::17) by AM6P195CA0086.outlook.office365.com (2603:10a6:209:86::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.24 via Frontend Transport; Fri, 12 May 2023 09:39:12 +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 AM7EUR03FT016.mail.protection.outlook.com (100.127.140.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.18 via Frontend Transport; Fri, 12 May 2023 09:39:11 +0000 Received: ("Tessian outbound 5bb4c51d5a1f:v136"); Fri, 12 May 2023 09:39:11 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 9f6d92f80e4f8e6c X-CR-MTA-TID: 64aa7808 Received: from 8f85c4c430c0.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 9682847F-5C39-44F4-96AB-F2D5DF6DC0FD.1; Fri, 12 May 2023 09:39:05 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 8f85c4c430c0.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 12 May 2023 09:39:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G4Y9XC+C3i6WdmxpXZVkVArmzLl6s/7Nl0rrQowJU0B2BNMeFFoH9mXJeo/2qXymO/7GUB/Z9fc9gNMeKM630asHOLwjBPisNqf7Vg5tvcvy9RrMvI4PRoo5TaRxowG1cCkxlWiyKcFPOFNYllrS66hNPZSVeUvHJU0JfD9u+Ed0AHgucyPaeVEElVXrBkwCH0mu3bmDeeDelcJIZQx9PbUi27hbel3SpChpDlzdhVTGdggwQCEhaVYFYum5NnjySb+BCZ28bX52Ck9Tx+NA0iCc9rlZCUfvBT6TXV6siiidL+5FC6MMu3/87hYJebwUVEGD44UccBEgvq5wRj8mrw== 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=UlhORb+6DRDqhH1In07vGRFROxlwnHwQOnxLZjhI3yo=; b=Vms3a5qwrhrR0ujiqFYae4WVZ6alD5hTpMyjT4/oCVuEhbozl0pDYrYHHMeAwzk73EyCRWZh5uZf2dA2IBtYu8vbsNp0td+JNWxnQpbZF4EzFxrlJAVyr/wJpusPRavKd/gflD06yyMC6N5C6v+vYeovn0Zg/okttc8zBaUwXe6h8MXJ+KR33RNiy3DSVITtDZBfYujBozbnrw2gkMwIRfqv6Ecg+9qOmeM53+bLkC7Je0GpEeE9Kc8/MbPuxS1QAHabU3+6MUKkTmv6o9ficLGuHEdXSaS17sTCgQySa1qYhtG/6yJytxrHNPOkSt63TiAE0eKHHGVL/627hZ5QUA== 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 AS9PR04CA0051.eurprd04.prod.outlook.com (2603:10a6:20b:46a::25) by PR3PR08MB5689.eurprd08.prod.outlook.com (2603:10a6:102:90::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.21; Fri, 12 May 2023 09:39:01 +0000 Received: from AM7EUR03FT051.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:46a:cafe::70) by AS9PR04CA0051.outlook.office365.com (2603:10a6:20b:46a::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.23 via Frontend Transport; Fri, 12 May 2023 09:39:01 +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 AM7EUR03FT051.mail.protection.outlook.com (100.127.140.64) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6387.23 via Frontend Transport; Fri, 12 May 2023 09:39:01 +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; Fri, 12 May 2023 09:38:56 +0000 Received: from e129018.arm.com (10.57.21.161) by mail.arm.com (10.251.24.31) with Microsoft SMTP Server id 15.1.2507.23 via Frontend Transport; Fri, 12 May 2023 09:38:56 +0000 To: , , , CC: Christophe Lyon Subject: [PATCH 05/26] arm: [MVE intrinsics] rework vrmlaldavhaq vrmlaldavhaxq vrmlsldavhaq vrmlsldavhaxq Date: Fri, 12 May 2023 11:38:34 +0200 Message-ID: <20230512093855.79529-5-christophe.lyon@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230512093855.79529-1-christophe.lyon@arm.com> References: <20230512093855.79529-1-christophe.lyon@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM7EUR03FT051:EE_|PR3PR08MB5689:EE_|AM7EUR03FT016:EE_|PAVPR08MB9307:EE_ X-MS-Office365-Filtering-Correlation-Id: db4b9f3c-f5c8-4060-f80a-08db52ccbe29 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: YxVCQ2xyitUREky0UDG/KxwNrxOsK6Ucrj0Y+lAUk+z6FdvvYqWugXSQo2BtKUxA5o0LZlJ+ZdefBgOcsUwnXPTSv0hkyCTylcLi8G/qLJYcW+oNc2MULk8uGQM1oJ2mmbPSKH3RLZ6u18ReOwu2Qzor1ZbgCcO8xOf1okB2Ah6CU/JiE+TOffnYMMbSBYgDels8qTAjV7tVoyB1Pz/7XL7aEuLkmjN01i7wvNydKDMqT3snq31LhbkusPk6HRCXHW3rBSedA85b/Qpx8OGkTNatujF5hJaR4G+DeaNQrGNnETqAi4zWTmQVtJ4df++ddFmYdBgb1Ma4BW8fqwOspGPd24s6V1Npl8vQ8flqM8Hx4+pOkpPe2CvV+4KU4E3nn/iSbDVGlkS89aAgBJGeCXSmgt4IdEojrhUKZcuZFNqk2CXzB7HH8u28EMNgXAqsdDF58oupJGqoaCJtp0N6n3IyaduCubh+nZ0XE8uutgj5gQXocG2ZrwHWDVRFW+bAOnCzF4XbpWX7HvSvzYgKxGYXxwkiwEwF/DAQcRoc1t37Tj0KL/5ESOvFSbmUhWesZ620WIarPUmqhpDFDzNU819l5/9r27GMWQRTfqoUivEnJV04TIQMahWxID8mBHryYx2MGRoAbDU8MSOHSk9PIdYszOcIkk9jE4zHTQR1Hkkhh31HXoK2F0Aqg3SapO8Cjf4cZiSSErRaeL5Sw2OHZJWOa+4UZ4sRcel8kJvRSZhoGd5NbTf5WL4y421zY7H6Pt4mNUfosNn2gjuYXKUGAw== 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)(396003)(346002)(136003)(376002)(39860400002)(451199021)(36840700001)(46966006)(336012)(70586007)(4326008)(6636002)(478600001)(70206006)(110136005)(316002)(7696005)(426003)(6666004)(86362001)(26005)(186003)(36860700001)(2616005)(1076003)(36756003)(8936002)(8676002)(5660300002)(4001150100001)(2906002)(44832011)(82310400005)(41300700001)(83380400001)(40480700001)(82740400003)(356005)(81166007)(47076005)(30864003)(156123004)(36900700001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5689 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT016.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: efcf81a6-1a01-495e-9083-08db52ccb7f2 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 10qnbvJIY6RSK3N2qelANAs5OHxyXXMAG8y0+EqMqYmioPW/4efOqmgeZK+ZEB0fzFJxEULweDpLeM/6Q9RMqxTtDCmXqrXALRm1lMkd48cPodMtoGXjtUHwJIYcbcQjqJFuG+4q+PBw7rSwbMUrC/BxL7MlwMvc4F8Yp70M7G//TvGhaQ4HQwTpDSZ05GHfUKI9/ASMUsnu4ZFpn82gB7+LGonYEHkgKH5XWQQbl3YNq8gUCL6zeH2TIyu4AjQ8VMhjFGIHLpjdD+FKutmNFb99FHuKa88kKA2pHxyC6R0lxe4ZlyVlw8peceG7sE/q/laXlx6XdGT8rgnZOHeV8QGZVmyWVaBGtDHxHUCAV37rsH0GsUMemlyOU0I4ob1+ED4I0368PZddUNcdub/tn9RPoOb2kelnMZ5XB1JmXtDgsJFrcozAz3wsJRD6g/Q7JzmnWPnZUbPwbo6VBZPZVr0a2bM9YiQCvEnSPN7NmePdrJ42TuxmhIXeFXt4gIHRFOnKWfRL4PkUQ5TW/mN++fCULQkmaZl/ZP4Dn3s5Dhdm2kNU+AfA/5TfsiONiUhiiIALcwU0wUPTDGqdYpVEOgQhXWbh1VZhrl5O3ES89Ho5z0vaddOGrO7Sq/3lFjZ0bMPPwqXHhIk2NJDW4k5hKivm08wjvv2h7hJolJkaU2M7qLwfnn/lNWMk8GGeQy4YmSufHww3AdaPqKh/PzBKFDPEAFJd3a7PvhaB5sP4vJ8MJyhPhYe6SA5tJST8PMWbOZ3OpIWvZNbFccfVH8oaog== 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)(39860400002)(396003)(136003)(346002)(376002)(451199021)(40470700004)(36840700001)(46966006)(186003)(82310400005)(7696005)(6666004)(40480700001)(36756003)(1076003)(47076005)(426003)(83380400001)(26005)(336012)(36860700001)(2616005)(40460700003)(81166007)(82740400003)(2906002)(4001150100001)(70206006)(70586007)(4326008)(6636002)(110136005)(5660300002)(8936002)(86362001)(8676002)(316002)(41300700001)(44832011)(30864003)(478600001)(156123004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 May 2023 09:39:11.9503 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: db4b9f3c-f5c8-4060-f80a-08db52ccbe29 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: AM7EUR03FT016.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9307 X-Spam-Status: No, score=-12.7 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" Implement vrmlaldavhaq, vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq using the new MVE builtins framework. 2022-12-12 Christophe Lyon gcc/ * config/arm/arm-mve-builtins-base.cc (vrmlaldavhaq) (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New. * config/arm/arm-mve-builtins-base.def (vrmlaldavhaq) (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New. * config/arm/arm-mve-builtins-base.h (vrmlaldavhaq) (vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq): New. * config/arm/arm-mve-builtins-functions.h: Handle vrmlaldavhaq, vrmlaldavhaxq, vrmlsldavhaq, vrmlsldavhaxq. * config/arm/arm_mve.h (vrmlaldavhaq): Remove. (vrmlaldavhaxq): Remove. (vrmlsldavhaq): Remove. (vrmlsldavhaxq): Remove. (vrmlaldavhaq_p): Remove. (vrmlaldavhaxq_p): Remove. (vrmlsldavhaq_p): Remove. (vrmlsldavhaxq_p): Remove. (vrmlaldavhaq_s32): Remove. (vrmlaldavhaq_u32): Remove. (vrmlaldavhaxq_s32): Remove. (vrmlsldavhaq_s32): Remove. (vrmlsldavhaxq_s32): Remove. (vrmlaldavhaq_p_s32): Remove. (vrmlaldavhaq_p_u32): Remove. (vrmlaldavhaxq_p_s32): Remove. (vrmlsldavhaq_p_s32): Remove. (vrmlsldavhaxq_p_s32): Remove. (__arm_vrmlaldavhaq_s32): Remove. (__arm_vrmlaldavhaq_u32): Remove. (__arm_vrmlaldavhaxq_s32): Remove. (__arm_vrmlsldavhaq_s32): Remove. (__arm_vrmlsldavhaxq_s32): Remove. (__arm_vrmlaldavhaq_p_s32): Remove. (__arm_vrmlaldavhaq_p_u32): Remove. (__arm_vrmlaldavhaxq_p_s32): Remove. (__arm_vrmlsldavhaq_p_s32): Remove. (__arm_vrmlsldavhaxq_p_s32): Remove. (__arm_vrmlaldavhaq): Remove. (__arm_vrmlaldavhaxq): Remove. (__arm_vrmlsldavhaq): Remove. (__arm_vrmlsldavhaxq): Remove. (__arm_vrmlaldavhaq_p): Remove. (__arm_vrmlaldavhaxq_p): Remove. (__arm_vrmlsldavhaq_p): Remove. (__arm_vrmlsldavhaxq_p): Remove. --- gcc/config/arm/arm-mve-builtins-base.cc | 4 + gcc/config/arm/arm-mve-builtins-base.def | 4 + gcc/config/arm/arm-mve-builtins-base.h | 4 + gcc/config/arm/arm-mve-builtins-functions.h | 4 + gcc/config/arm/arm_mve.h | 184 -------------------- 5 files changed, 16 insertions(+), 184 deletions(-) diff --git a/gcc/config/arm/arm-mve-builtins-base.cc b/gcc/config/arm/arm-mve-builtins-base.cc index 5ecc61ebf03..a2b227bb2aa 100644 --- a/gcc/config/arm/arm-mve-builtins-base.cc +++ b/gcc/config/arm/arm-mve-builtins-base.cc @@ -346,8 +346,12 @@ FUNCTION_WITHOUT_N_NO_F (vrev16q, VREV16Q) FUNCTION_WITHOUT_N (vrev32q, VREV32Q) FUNCTION_WITHOUT_N (vrev64q, VREV64Q) FUNCTION_WITHOUT_N_NO_F (vrhaddq, VRHADDQ) +FUNCTION_PRED_P_S_U (vrmlaldavhaq, VRMLALDAVHAQ) +FUNCTION_PRED_P_S (vrmlaldavhaxq, VRMLALDAVHAXQ) FUNCTION_PRED_P_S_U (vrmlaldavhq, VRMLALDAVHQ) FUNCTION_PRED_P_S (vrmlaldavhxq, VRMLALDAVHXQ) +FUNCTION_PRED_P_S (vrmlsldavhaq, VRMLSLDAVHAQ) +FUNCTION_PRED_P_S (vrmlsldavhaxq, VRMLSLDAVHAXQ) FUNCTION_PRED_P_S (vrmlsldavhq, VRMLSLDAVHQ) FUNCTION_PRED_P_S (vrmlsldavhxq, VRMLSLDAVHXQ) FUNCTION_WITHOUT_N_NO_F (vrmulhq, VRMULHQ) diff --git a/gcc/config/arm/arm-mve-builtins-base.def b/gcc/config/arm/arm-mve-builtins-base.def index 19cfd9933c0..c4ef74169dd 100644 --- a/gcc/config/arm/arm-mve-builtins-base.def +++ b/gcc/config/arm/arm-mve-builtins-base.def @@ -116,8 +116,12 @@ DEF_MVE_FUNCTION (vrev16q, unary, integer_8, mx_or_none) DEF_MVE_FUNCTION (vrev32q, unary, integer_8_16, mx_or_none) DEF_MVE_FUNCTION (vrev64q, unary, all_integer, mx_or_none) DEF_MVE_FUNCTION (vrhaddq, binary, all_integer, mx_or_none) +DEF_MVE_FUNCTION (vrmlaldavhaq, binary_acca_int64, integer_32, p_or_none) +DEF_MVE_FUNCTION (vrmlaldavhaxq, binary_acca_int64, integer_32, p_or_none) DEF_MVE_FUNCTION (vrmlaldavhq, binary_acc_int64, integer_32, p_or_none) DEF_MVE_FUNCTION (vrmlaldavhxq, binary_acc_int64, signed_32, p_or_none) +DEF_MVE_FUNCTION (vrmlsldavhaq, binary_acca_int64, integer_32, p_or_none) +DEF_MVE_FUNCTION (vrmlsldavhaxq, binary_acca_int64, integer_32, p_or_none) DEF_MVE_FUNCTION (vrmlsldavhq, binary_acc_int64, signed_32, p_or_none) DEF_MVE_FUNCTION (vrmlsldavhxq, binary_acc_int64, signed_32, p_or_none) DEF_MVE_FUNCTION (vrmulhq, binary, all_integer, mx_or_none) diff --git a/gcc/config/arm/arm-mve-builtins-base.h b/gcc/config/arm/arm-mve-builtins-base.h index ca66b3b8caf..41b2e19c2d7 100644 --- a/gcc/config/arm/arm-mve-builtins-base.h +++ b/gcc/config/arm/arm-mve-builtins-base.h @@ -128,8 +128,12 @@ extern const function_base *const vrev16q; extern const function_base *const vrev32q; extern const function_base *const vrev64q; extern const function_base *const vrhaddq; +extern const function_base *const vrmlaldavhaq; +extern const function_base *const vrmlaldavhaxq; extern const function_base *const vrmlaldavhq; extern const function_base *const vrmlaldavhxq; +extern const function_base *const vrmlsldavhaq; +extern const function_base *const vrmlsldavhaxq; extern const function_base *const vrmlsldavhq; extern const function_base *const vrmlsldavhxq; extern const function_base *const vrmulhq; diff --git a/gcc/config/arm/arm-mve-builtins-functions.h b/gcc/config/arm/arm-mve-builtins-functions.h index 77a6269f0da..8f3bae4b7da 100644 --- a/gcc/config/arm/arm-mve-builtins-functions.h +++ b/gcc/config/arm/arm-mve-builtins-functions.h @@ -411,8 +411,12 @@ public: if (m_unspec_for_sint == VADDLVQ_S || m_unspec_for_sint == VADDLVAQ_S + || m_unspec_for_sint == VRMLALDAVHAQ_S + || m_unspec_for_sint == VRMLALDAVHAXQ_S || m_unspec_for_sint == VRMLALDAVHQ_S || m_unspec_for_sint == VRMLALDAVHXQ_S + || m_unspec_for_sint == VRMLSLDAVHAQ_S + || m_unspec_for_sint == VRMLSLDAVHAXQ_S || m_unspec_for_sint == VRMLSLDAVHQ_S || m_unspec_for_sint == VRMLSLDAVHXQ_S) { diff --git a/gcc/config/arm/arm_mve.h b/gcc/config/arm/arm_mve.h index e0025f017ca..c995093e12f 100644 --- a/gcc/config/arm/arm_mve.h +++ b/gcc/config/arm/arm_mve.h @@ -56,15 +56,11 @@ #define vmulltq_poly(__a, __b) __arm_vmulltq_poly(__a, __b) #define vmullbq_poly(__a, __b) __arm_vmullbq_poly(__a, __b) #define vbicq_m_n(__a, __imm, __p) __arm_vbicq_m_n(__a, __imm, __p) -#define vrmlaldavhaq(__a, __b, __c) __arm_vrmlaldavhaq(__a, __b, __c) #define vshlcq(__a, __b, __imm) __arm_vshlcq(__a, __b, __imm) #define vpselq(__a, __b, __p) __arm_vpselq(__a, __b, __p) #define vmvnq_m(__inactive, __a, __p) __arm_vmvnq_m(__inactive, __a, __p) #define vsriq(__a, __b, __imm) __arm_vsriq(__a, __b, __imm) #define vsliq(__a, __b, __imm) __arm_vsliq(__a, __b, __imm) -#define vrmlaldavhaxq(__a, __b, __c) __arm_vrmlaldavhaxq(__a, __b, __c) -#define vrmlsldavhaq(__a, __b, __c) __arm_vrmlsldavhaq(__a, __b, __c) -#define vrmlsldavhaxq(__a, __b, __c) __arm_vrmlsldavhaxq(__a, __b, __c) #define vsriq_m(__a, __b, __imm, __p) __arm_vsriq_m(__a, __b, __imm, __p) #define vqshluq_m(__inactive, __a, __imm, __p) __arm_vqshluq_m(__inactive, __a, __imm, __p) #define vbicq_m(__inactive, __a, __b, __p) __arm_vbicq_m(__inactive, __a, __b, __p) @@ -79,10 +75,6 @@ #define vsliq_m(__a, __b, __imm, __p) __arm_vsliq_m(__a, __b, __imm, __p) #define vmullbq_poly_m(__inactive, __a, __b, __p) __arm_vmullbq_poly_m(__inactive, __a, __b, __p) #define vmulltq_poly_m(__inactive, __a, __b, __p) __arm_vmulltq_poly_m(__inactive, __a, __b, __p) -#define vrmlaldavhaq_p(__a, __b, __c, __p) __arm_vrmlaldavhaq_p(__a, __b, __c, __p) -#define vrmlaldavhaxq_p(__a, __b, __c, __p) __arm_vrmlaldavhaxq_p(__a, __b, __c, __p) -#define vrmlsldavhaq_p(__a, __b, __c, __p) __arm_vrmlsldavhaq_p(__a, __b, __c, __p) -#define vrmlsldavhaxq_p(__a, __b, __c, __p) __arm_vrmlsldavhaxq_p(__a, __b, __c, __p) #define vstrbq_scatter_offset(__base, __offset, __value) __arm_vstrbq_scatter_offset(__base, __offset, __value) #define vstrbq(__addr, __value) __arm_vstrbq(__addr, __value) #define vstrwq_scatter_base(__addr, __offset, __value) __arm_vstrwq_scatter_base(__addr, __offset, __value) @@ -378,8 +370,6 @@ #define vcvtq_m_f16_u16(__inactive, __a, __p) __arm_vcvtq_m_f16_u16(__inactive, __a, __p) #define vcvtq_m_f32_s32(__inactive, __a, __p) __arm_vcvtq_m_f32_s32(__inactive, __a, __p) #define vcvtq_m_f32_u32(__inactive, __a, __p) __arm_vcvtq_m_f32_u32(__inactive, __a, __p) -#define vrmlaldavhaq_s32(__a, __b, __c) __arm_vrmlaldavhaq_s32(__a, __b, __c) -#define vrmlaldavhaq_u32(__a, __b, __c) __arm_vrmlaldavhaq_u32(__a, __b, __c) #define vshlcq_s8(__a, __b, __imm) __arm_vshlcq_s8(__a, __b, __imm) #define vshlcq_u8(__a, __b, __imm) __arm_vshlcq_u8(__a, __b, __imm) #define vshlcq_s16(__a, __b, __imm) __arm_vshlcq_s16(__a, __b, __imm) @@ -412,9 +402,6 @@ #define vsliq_n_s32(__a, __b, __imm) __arm_vsliq_n_s32(__a, __b, __imm) #define vpselq_u64(__a, __b, __p) __arm_vpselq_u64(__a, __b, __p) #define vpselq_s64(__a, __b, __p) __arm_vpselq_s64(__a, __b, __p) -#define vrmlaldavhaxq_s32(__a, __b, __c) __arm_vrmlaldavhaxq_s32(__a, __b, __c) -#define vrmlsldavhaq_s32(__a, __b, __c) __arm_vrmlsldavhaq_s32(__a, __b, __c) -#define vrmlsldavhaxq_s32(__a, __b, __c) __arm_vrmlsldavhaxq_s32(__a, __b, __c) #define vcvtbq_m_f16_f32(__a, __b, __p) __arm_vcvtbq_m_f16_f32(__a, __b, __p) #define vcvtbq_m_f32_f16(__inactive, __a, __p) __arm_vcvtbq_m_f32_f16(__inactive, __a, __p) #define vcvttq_m_f16_f32(__a, __b, __p) __arm_vcvttq_m_f16_f32(__a, __b, __p) @@ -528,11 +515,6 @@ #define vmullbq_poly_m_p16(__inactive, __a, __b, __p) __arm_vmullbq_poly_m_p16(__inactive, __a, __b, __p) #define vmulltq_poly_m_p8(__inactive, __a, __b, __p) __arm_vmulltq_poly_m_p8(__inactive, __a, __b, __p) #define vmulltq_poly_m_p16(__inactive, __a, __b, __p) __arm_vmulltq_poly_m_p16(__inactive, __a, __b, __p) -#define vrmlaldavhaq_p_s32(__a, __b, __c, __p) __arm_vrmlaldavhaq_p_s32(__a, __b, __c, __p) -#define vrmlaldavhaq_p_u32(__a, __b, __c, __p) __arm_vrmlaldavhaq_p_u32(__a, __b, __c, __p) -#define vrmlaldavhaxq_p_s32(__a, __b, __c, __p) __arm_vrmlaldavhaxq_p_s32(__a, __b, __c, __p) -#define vrmlsldavhaq_p_s32(__a, __b, __c, __p) __arm_vrmlsldavhaq_p_s32(__a, __b, __c, __p) -#define vrmlsldavhaxq_p_s32(__a, __b, __c, __p) __arm_vrmlsldavhaxq_p_s32(__a, __b, __c, __p) #define vbicq_m_f32(__inactive, __a, __b, __p) __arm_vbicq_m_f32(__inactive, __a, __b, __p) #define vbicq_m_f16(__inactive, __a, __b, __p) __arm_vbicq_m_f16(__inactive, __a, __b, __p) #define vbrsrq_m_n_f32(__inactive, __a, __b, __p) __arm_vbrsrq_m_n_f32(__inactive, __a, __b, __p) @@ -1729,20 +1711,6 @@ __arm_vbicq_m_n_u32 (uint32x4_t __a, const int __imm, mve_pred16_t __p) return __builtin_mve_vbicq_m_n_uv4si (__a, __imm, __p); } -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlaldavhaq_s32 (int64_t __a, int32x4_t __b, int32x4_t __c) -{ - return __builtin_mve_vrmlaldavhaq_sv4si (__a, __b, __c); -} - -__extension__ extern __inline uint64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlaldavhaq_u32 (uint64_t __a, uint32x4_t __b, uint32x4_t __c) -{ - return __builtin_mve_vrmlaldavhaq_uv4si (__a, __b, __c); -} - __extension__ extern __inline int8x16_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vshlcq_s8 (int8x16_t __a, uint32_t * __b, const int __imm) @@ -1979,27 +1947,6 @@ __arm_vpselq_s64 (int64x2_t __a, int64x2_t __b, mve_pred16_t __p) return __builtin_mve_vpselq_sv2di (__a, __b, __p); } -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlaldavhaxq_s32 (int64_t __a, int32x4_t __b, int32x4_t __c) -{ - return __builtin_mve_vrmlaldavhaxq_sv4si (__a, __b, __c); -} - -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlsldavhaq_s32 (int64_t __a, int32x4_t __b, int32x4_t __c) -{ - return __builtin_mve_vrmlsldavhaq_sv4si (__a, __b, __c); -} - -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlsldavhaxq_s32 (int64_t __a, int32x4_t __b, int32x4_t __c) -{ - return __builtin_mve_vrmlsldavhaxq_sv4si (__a, __b, __c); -} - __extension__ extern __inline int16x8_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vmvnq_m_n_s16 (int16x8_t __inactive, const int __imm, mve_pred16_t __p) @@ -2497,41 +2444,6 @@ __arm_vmulltq_poly_m_p16 (uint32x4_t __inactive, uint16x8_t __a, uint16x8_t __b, return __builtin_mve_vmulltq_poly_m_pv8hi (__inactive, __a, __b, __p); } -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlaldavhaq_p_s32 (int64_t __a, int32x4_t __b, int32x4_t __c, mve_pred16_t __p) -{ - return __builtin_mve_vrmlaldavhaq_p_sv4si (__a, __b, __c, __p); -} - -__extension__ extern __inline uint64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlaldavhaq_p_u32 (uint64_t __a, uint32x4_t __b, uint32x4_t __c, mve_pred16_t __p) -{ - return __builtin_mve_vrmlaldavhaq_p_uv4si (__a, __b, __c, __p); -} - -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlaldavhaxq_p_s32 (int64_t __a, int32x4_t __b, int32x4_t __c, mve_pred16_t __p) -{ - return __builtin_mve_vrmlaldavhaxq_p_sv4si (__a, __b, __c, __p); -} - -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlsldavhaq_p_s32 (int64_t __a, int32x4_t __b, int32x4_t __c, mve_pred16_t __p) -{ - return __builtin_mve_vrmlsldavhaq_p_sv4si (__a, __b, __c, __p); -} - -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlsldavhaxq_p_s32 (int64_t __a, int32x4_t __b, int32x4_t __c, mve_pred16_t __p) -{ - return __builtin_mve_vrmlsldavhaxq_p_sv4si (__a, __b, __c, __p); -} - __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vstrbq_scatter_offset_s8 (int8_t * __base, uint8x16_t __offset, int8x16_t __value) @@ -7857,20 +7769,6 @@ __arm_vbicq_m_n (uint32x4_t __a, const int __imm, mve_pred16_t __p) return __arm_vbicq_m_n_u32 (__a, __imm, __p); } -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlaldavhaq (int64_t __a, int32x4_t __b, int32x4_t __c) -{ - return __arm_vrmlaldavhaq_s32 (__a, __b, __c); -} - -__extension__ extern __inline uint64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlaldavhaq (uint64_t __a, uint32x4_t __b, uint32x4_t __c) -{ - return __arm_vrmlaldavhaq_u32 (__a, __b, __c); -} - __extension__ extern __inline int8x16_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vshlcq (int8x16_t __a, uint32_t * __b, const int __imm) @@ -8095,27 +7993,6 @@ __arm_vpselq (int64x2_t __a, int64x2_t __b, mve_pred16_t __p) return __arm_vpselq_s64 (__a, __b, __p); } -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlaldavhaxq (int64_t __a, int32x4_t __b, int32x4_t __c) -{ - return __arm_vrmlaldavhaxq_s32 (__a, __b, __c); -} - -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlsldavhaq (int64_t __a, int32x4_t __b, int32x4_t __c) -{ - return __arm_vrmlsldavhaq_s32 (__a, __b, __c); -} - -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlsldavhaxq (int64_t __a, int32x4_t __b, int32x4_t __c) -{ - return __arm_vrmlsldavhaxq_s32 (__a, __b, __c); -} - __extension__ extern __inline int16x8_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vmvnq_m (int16x8_t __inactive, const int __imm, mve_pred16_t __p) @@ -8613,41 +8490,6 @@ __arm_vmulltq_poly_m (uint32x4_t __inactive, uint16x8_t __a, uint16x8_t __b, mve return __arm_vmulltq_poly_m_p16 (__inactive, __a, __b, __p); } -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlaldavhaq_p (int64_t __a, int32x4_t __b, int32x4_t __c, mve_pred16_t __p) -{ - return __arm_vrmlaldavhaq_p_s32 (__a, __b, __c, __p); -} - -__extension__ extern __inline uint64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlaldavhaq_p (uint64_t __a, uint32x4_t __b, uint32x4_t __c, mve_pred16_t __p) -{ - return __arm_vrmlaldavhaq_p_u32 (__a, __b, __c, __p); -} - -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlaldavhaxq_p (int64_t __a, int32x4_t __b, int32x4_t __c, mve_pred16_t __p) -{ - return __arm_vrmlaldavhaxq_p_s32 (__a, __b, __c, __p); -} - -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlsldavhaq_p (int64_t __a, int32x4_t __b, int32x4_t __c, mve_pred16_t __p) -{ - return __arm_vrmlsldavhaq_p_s32 (__a, __b, __c, __p); -} - -__extension__ extern __inline int64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vrmlsldavhaxq_p (int64_t __a, int32x4_t __b, int32x4_t __c, mve_pred16_t __p) -{ - return __arm_vrmlsldavhaxq_p_s32 (__a, __b, __c, __p); -} - __extension__ extern __inline void __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vstrbq_scatter_offset (int8_t * __base, uint8x16_t __offset, int8x16_t __value) @@ -14305,12 +14147,6 @@ extern void *__ARM_undef; int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vsliq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2, p3), \ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vsliq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2, p3));}) -#define __arm_vrmlaldavhaxq_p(p0,p1,p2,p3) __arm_vrmlaldavhaxq_p_s32(p0,p1,p2,p3) - -#define __arm_vrmlsldavhaq_p(p0,p1,p2,p3) __arm_vrmlsldavhaq_p_s32(p0,p1,p2,p3) - -#define __arm_vrmlsldavhaxq_p(p0,p1,p2,p3) __arm_vrmlsldavhaxq_p_s32(p0,p1,p2,p3) - #define __arm_vmvnq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ __typeof(p1) __p1 = (p1); \ _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ @@ -14544,12 +14380,6 @@ extern void *__ARM_undef; int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmulltq_poly_x_p8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmulltq_poly_x_p16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3));}) -#define __arm_vrmlaldavhaxq(p0,p1,p2) __arm_vrmlaldavhaxq_s32(p0,p1,p2) - -#define __arm_vrmlsldavhaq(p0,p1,p2) __arm_vrmlsldavhaq_s32(p0,p1,p2) - -#define __arm_vrmlsldavhaxq(p0,p1,p2) __arm_vrmlsldavhaxq_s32(p0,p1,p2) - #define __arm_vstrbq(p0,p1) ({ __typeof(p1) __p1 = (p1); \ _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \ int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vstrbq_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t)), \ @@ -14579,20 +14409,6 @@ extern void *__ARM_undef; int (*)[__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_base_p_s64 (p0, p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \ int (*)[__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_base_p_u64 (p0, p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));}) -#define __arm_vrmlaldavhaq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ - int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \ - int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));}) - -#define __arm_vrmlaldavhaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - __typeof(p2) __p2 = (p2); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \ - int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_p_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \ - int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_p_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));}) - #define __arm_vstrbq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ __typeof(p1) __p1 = (p1); \ __typeof(p2) __p2 = (p2); \