From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2044.outbound.protection.outlook.com [40.107.104.44]) by sourceware.org (Postfix) with ESMTPS id 0F4BB385293D for ; Wed, 10 May 2023 13:31:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0F4BB385293D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=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=HfN3FvTYIxWiqljCq9aUu7Oc788cmMqlPjqOOKUvV+U=; b=kTQq6OhotIY+4wFWQ+OWTQWnpbZRRRxeTrHNXzBOb2O931sNfoIziKnUbq9zJLipOe4YHVQQj+KDrrS7oLOLB5mXXVpearPvqRysa1vMBLCUgIwaDOA3TsLHRIWheRLPdAMKpJmpB86eaqmRSEfk6aeYkgkFLCJWQuQnEv706WA= Received: from DB8PR03CA0018.eurprd03.prod.outlook.com (2603:10a6:10:be::31) by GV1PR08MB7362.eurprd08.prod.outlook.com (2603:10a6:150:21::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.33; Wed, 10 May 2023 13:31:10 +0000 Received: from DBAEUR03FT034.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:be:cafe::3f) by DB8PR03CA0018.outlook.office365.com (2603:10a6:10:be::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.33 via Frontend Transport; Wed, 10 May 2023 13:31:10 +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 DBAEUR03FT034.mail.protection.outlook.com (100.127.142.97) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.20 via Frontend Transport; Wed, 10 May 2023 13:31:10 +0000 Received: ("Tessian outbound 3a01b65b5aad:v136"); Wed, 10 May 2023 13:31:10 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 51611e2da08e88f2 X-CR-MTA-TID: 64aa7808 Received: from fe46d4c9fd88.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 938CDC3F-41F6-459D-9100-96247653C763.1; Wed, 10 May 2023 13:30:58 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id fe46d4c9fd88.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 10 May 2023 13:30:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EJXpWLQ7l4jBmB/sIGlt5vQscNEbD5QgU8di0/qqDutvWcL9OfQknXSzZxeDORj7xxC8NaQdgPQatibvnLxIOtF3V/nJB5XyQarZcEfoXAmhINTpAkK7KpdqN2iImwJV95Os/3nwNRkOALPp0lsm8Nar/D7ziQWoOePHDJPv23TwBh1GmAurMDGuI0ZYwsUdXqM/41IoyBBr5bir6c2J1jlZnBJb4EEIQGGGp4c2EeCmj278iNnsIto2Dt3OwzbHSj8nHdCJE5V2SP+hjN5n1gJWoRj7f7Hlta4ybjF1I9h/9nxuGO5u7+UcwcebahazNVaauI9wMCCC0UUiHaAiEw== 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=HfN3FvTYIxWiqljCq9aUu7Oc788cmMqlPjqOOKUvV+U=; b=WpfQOFaxK3anlwg8MWIvQfPJH1QQ/pP6bKwal8zq+MPyMNLH+gT44/x34DK5ktLa2NmAeHzi5Gc7XmBO8vGkHxLMWeVItBTva6FqfzqjMnHOmkOYMktnHZ7DD7eRiz6mv/cCA6ZYrVqbfhFqlLYQUh+Z7jXa2QbdCETifGllwRey5F6EmrN1N7vY2FfR5kzXU3N1BOE1lYJ9ZreyZt8tWECgPDWcGX/kzro4Aj44jvog2nMr7MwIE+OWfWZKM1Jb0DIB46F4EDLB4AizVWnWVrgR/dCA+hZz1FVOFbQbR5tp8ZAImBBSK72WrdzxLHpdeZ8xXqT+ayTl5akdE2gjTg== 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 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=HfN3FvTYIxWiqljCq9aUu7Oc788cmMqlPjqOOKUvV+U=; b=kTQq6OhotIY+4wFWQ+OWTQWnpbZRRRxeTrHNXzBOb2O931sNfoIziKnUbq9zJLipOe4YHVQQj+KDrrS7oLOLB5mXXVpearPvqRysa1vMBLCUgIwaDOA3TsLHRIWheRLPdAMKpJmpB86eaqmRSEfk6aeYkgkFLCJWQuQnEv706WA= Received: from DB8PR06CA0005.eurprd06.prod.outlook.com (2603:10a6:10:100::18) by VI1PR08MB10147.eurprd08.prod.outlook.com (2603:10a6:800:1ce::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.20; Wed, 10 May 2023 13:30:53 +0000 Received: from DBAEUR03FT031.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:100:cafe::e6) by DB8PR06CA0005.outlook.office365.com (2603:10a6:10:100::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.19 via Frontend Transport; Wed, 10 May 2023 13:30:53 +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 DBAEUR03FT031.mail.protection.outlook.com (100.127.142.173) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6387.20 via Frontend Transport; Wed, 10 May 2023 13:30:53 +0000 Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX04.Arm.com (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 10 May 2023 13:30:44 +0000 Received: from e129018.arm.com (10.57.23.51) by mail.arm.com (10.251.24.31) with Microsoft SMTP Server id 15.1.2507.23 via Frontend Transport; Wed, 10 May 2023 13:30:43 +0000 From: Christophe Lyon To: , , , CC: Christophe Lyon Subject: [PATCH 08/20] arm: [MVE intrinsics] rework vdupq Date: Wed, 10 May 2023 15:30:24 +0200 Message-ID: <20230510133036.596530-8-christophe.lyon@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230510133036.596530-1-christophe.lyon@arm.com> References: <20230510133036.596530-1-christophe.lyon@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DBAEUR03FT031:EE_|VI1PR08MB10147:EE_|DBAEUR03FT034:EE_|GV1PR08MB7362:EE_ X-MS-Office365-Filtering-Correlation-Id: 125bf14f-41a9-4350-6a85-08db515ad15e 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: noXNT5B9+NYy5Qo6Dxyobz4BR+EjYxIurAKLB4bxyt/nWSmekXeaaORH1QlKQSWBFPtQwZNMWaYRDWDP4uRAgHW55KRtXJFJs3AzuMALURr8Jjgfv08uj1uihtmBUqKTSHl3Dj4uvXDctZtDOLUlxWmOP4wqiXOdzDFIeDdQF2nmc+TOthE+kRkd0c611BjuREtO1p7i95DLppJZ0u8uFFioDZ3adkve1xqn/2hB8SiChzy1OaN+IwSa2wIBEmdr0bqliKAhJ4eWbmyfzddo1dZV7nXlRg52Z/uzwUI5SOIt7G21GKve8NLz2G5wAV/KXx0o0iuJUC7PFRf5lIYx0/ul2GrcH/tGh47LpG/0R7E1k9AUjRrAmhVSNVmBqTR8XFXSES7XIcHmlDQHE+hRPhCmi5bA8/TkfZd5/sbj2JJijT6Y10iEFa+U5BhKna26WTlOmnjJzIYiTnWdFGO7vr+Fq2uiUfehVMT2o+cZQ7+ayuGrA6EieER58L0hutvyBRdYc7IF8ZyTc93EWzpZ9BVYD4f9Evi8alLcP7oKkl9hpmhiNdC83jgqkR95QzTTxAFQu99cX/CH4wkOsOx9gJT8NOofoNxtxfxjbCkoGI9ppCMjIMHEVD0D+xarIQDIHVcvJPvQVIY7onWUUQgNfkVtelL1zm3IH2ODX02Q/ovkS83xIMsb3ABCU/24mGa+pTXSs7Z+U3qBUnY+MMENudrnzRbnFz23IibNXmqAG3s= 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)(346002)(376002)(136003)(39860400002)(396003)(451199021)(36840700001)(46966006)(2616005)(8936002)(8676002)(30864003)(2906002)(4001150100001)(36756003)(7696005)(6666004)(86362001)(82310400005)(26005)(1076003)(186003)(5660300002)(40480700001)(478600001)(44832011)(356005)(316002)(81166007)(110136005)(83380400001)(82740400003)(6636002)(4326008)(70586007)(47076005)(70206006)(426003)(336012)(36860700001)(41300700001)(36900700001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB10147 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT034.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 16410c36-c321-4ec2-d00a-08db515ac765 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xsqCjmt/C1+BNfb2V/Xidg7j0ePxeMlx41QD6JFXqpYgBuVshmnuWiMN6OCzorhv0Qui4xBMxYTCdJbcrPkjPilSjZIgpgqIyhTdqFb7aD3wiRxKTzFP9RFRl0P5xZtyLeeaJ+p+ZLWzJ2HPFGx7iFZXqZis9jiE79iGaBm99tDwJxkh8rldAQNEu6gthoi7wwXUJKEugwGTQLnIL4ycjc1x4E5UIt5euPdaHgo6VH0h/Tk9epsBhI6/ITZK/6bXAsgidN8jWcD7gbit7HNHX66I/bIZ+ZH8GnZeXjpDzojNIK04l+0e4FM5KoT9IyiJ7zLfJErnCDT/TmdUv4qHGQ22TsorZSnmy/o54QNEfIC2+BIIdvOSDEc/fYaLW4SK6gqlVlEmMsJcoXaCDhEe1KqLEjx/MXs4qTCMu88LguF+90Xu1NtRfjj+0BV0jxcnc+7DJWSXNOokq0qz8gnZ/sgE/kM8RsVeebUCwRT1IFC/vNxbS6xgaAvCygVm7eyzr6JcmbIdNDbl820JiNNR4hg8NN9aBIYhdZXE1XS99Ds6CT8uPyBWsmlrdJmiVnwaoRnbSdFVHPSEaE4RNEDdOfK822TGwwZanUwlJph6mkpevwYMaTiCAuFq0jGb9ljV/1/yNZcrnrQw6ntIeOJF51zeKnZWiCOBJlosiU1QdPPUFbDyelRA4LuXQIi/GemYFShMiBY+oxXTF25rvVWiZA== 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)(376002)(346002)(136003)(39860400002)(396003)(451199021)(40470700004)(36840700001)(46966006)(70206006)(478600001)(6636002)(44832011)(4326008)(70586007)(8676002)(5660300002)(8936002)(1076003)(26005)(110136005)(30864003)(316002)(6666004)(7696005)(41300700001)(2906002)(40480700001)(83380400001)(4001150100001)(426003)(336012)(2616005)(186003)(40460700003)(36860700001)(82740400003)(81166007)(47076005)(86362001)(82310400005)(36756003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2023 13:31:10.4433 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 125bf14f-41a9-4350-6a85-08db515ad15e 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: DBAEUR03FT034.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB7362 X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,KAM_DMARC_NONE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,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 List-Id: Implement vdupq using the new MVE builtins framework. 2022-10-25 Christophe Lyon gcc/ * config/arm/arm-mve-builtins-base.cc (FUNCTION_ONLY_N): New. (vdupq): New. * config/arm/arm-mve-builtins-base.def (vdupq): New. * config/arm/arm-mve-builtins-base.h: (vdupq): New. * config/arm/arm_mve.h (vdupq_n): Remove. (vdupq_m): Remove. (vdupq_n_f16): Remove. (vdupq_n_f32): Remove. (vdupq_n_s8): Remove. (vdupq_n_s16): Remove. (vdupq_n_s32): Remove. (vdupq_n_u8): Remove. (vdupq_n_u16): Remove. (vdupq_n_u32): Remove. (vdupq_m_n_u8): Remove. (vdupq_m_n_s8): Remove. (vdupq_m_n_u16): Remove. (vdupq_m_n_s16): Remove. (vdupq_m_n_u32): Remove. (vdupq_m_n_s32): Remove. (vdupq_m_n_f16): Remove. (vdupq_m_n_f32): Remove. (vdupq_x_n_s8): Remove. (vdupq_x_n_s16): Remove. (vdupq_x_n_s32): Remove. (vdupq_x_n_u8): Remove. (vdupq_x_n_u16): Remove. (vdupq_x_n_u32): Remove. (vdupq_x_n_f16): Remove. (vdupq_x_n_f32): Remove. (__arm_vdupq_n_s8): Remove. (__arm_vdupq_n_s16): Remove. (__arm_vdupq_n_s32): Remove. (__arm_vdupq_n_u8): Remove. (__arm_vdupq_n_u16): Remove. (__arm_vdupq_n_u32): Remove. (__arm_vdupq_m_n_u8): Remove. (__arm_vdupq_m_n_s8): Remove. (__arm_vdupq_m_n_u16): Remove. (__arm_vdupq_m_n_s16): Remove. (__arm_vdupq_m_n_u32): Remove. (__arm_vdupq_m_n_s32): Remove. (__arm_vdupq_x_n_s8): Remove. (__arm_vdupq_x_n_s16): Remove. (__arm_vdupq_x_n_s32): Remove. (__arm_vdupq_x_n_u8): Remove. (__arm_vdupq_x_n_u16): Remove. (__arm_vdupq_x_n_u32): Remove. (__arm_vdupq_n_f16): Remove. (__arm_vdupq_n_f32): Remove. (__arm_vdupq_m_n_f16): Remove. (__arm_vdupq_m_n_f32): Remove. (__arm_vdupq_x_n_f16): Remove. (__arm_vdupq_x_n_f32): Remove. (__arm_vdupq_n): Remove. (__arm_vdupq_m): Remove. --- gcc/config/arm/arm-mve-builtins-base.cc | 10 + gcc/config/arm/arm-mve-builtins-base.def | 2 + gcc/config/arm/arm-mve-builtins-base.h | 1 + gcc/config/arm/arm_mve.h | 333 ----------------------- 4 files changed, 13 insertions(+), 333 deletions(-) diff --git a/gcc/config/arm/arm-mve-builtins-base.cc b/gcc/config/arm/arm-mve-builtins-base.cc index 76294ddb7fb..cb572130c2b 100644 --- a/gcc/config/arm/arm-mve-builtins-base.cc +++ b/gcc/config/arm/arm-mve-builtins-base.cc @@ -176,6 +176,15 @@ namespace arm_mve { UNSPEC##_M_S, UNSPEC##_M_U, UNSPEC##_M_F, \ -1, -1, -1)) + /* Helper for builtins with only unspec codes, _m predicated + overrides, only _n version. */ +#define FUNCTION_ONLY_N(NAME, UNSPEC) FUNCTION \ + (NAME, unspec_mve_function_exact_insn, \ + (-1, -1, -1, \ + UNSPEC##_N_S, UNSPEC##_N_U, UNSPEC##_N_F, \ + -1, -1, -1, \ + UNSPEC##_M_N_S, UNSPEC##_M_N_U, UNSPEC##_M_N_F)) + /* Helper for builtins with only unspec codes, _m predicated overrides, only _n version, no floating-point. */ #define FUNCTION_ONLY_N_NO_F(NAME, UNSPEC) FUNCTION \ @@ -247,6 +256,7 @@ FUNCTION (vcmpltq, unspec_based_mve_function_exact_insn_vcmp, (LT, UNKNOWN, LT, FUNCTION (vcmpcsq, unspec_based_mve_function_exact_insn_vcmp, (UNKNOWN, GEU, UNKNOWN, UNKNOWN, VCMPCSQ_M_U, UNKNOWN, UNKNOWN, VCMPCSQ_M_N_U, UNKNOWN)) FUNCTION (vcmphiq, unspec_based_mve_function_exact_insn_vcmp, (UNKNOWN, GTU, UNKNOWN, UNKNOWN, VCMPHIQ_M_U, UNKNOWN, UNKNOWN, VCMPHIQ_M_N_U, UNKNOWN)) FUNCTION_WITHOUT_M_N (vcreateq, VCREATEQ) +FUNCTION_ONLY_N (vdupq, VDUPQ) FUNCTION_WITH_RTX_M (veorq, XOR, VEORQ) FUNCTION_WITH_M_N_NO_F (vhaddq, VHADDQ) FUNCTION_WITH_M_N_NO_F (vhsubq, VHSUBQ) diff --git a/gcc/config/arm/arm-mve-builtins-base.def b/gcc/config/arm/arm-mve-builtins-base.def index 2602cbf20e3..30e6aa1e1e6 100644 --- a/gcc/config/arm/arm-mve-builtins-base.def +++ b/gcc/config/arm/arm-mve-builtins-base.def @@ -33,6 +33,7 @@ DEF_MVE_FUNCTION (vcmpleq, cmp, all_signed, m_or_none) DEF_MVE_FUNCTION (vcmpltq, cmp, all_signed, m_or_none) DEF_MVE_FUNCTION (vcmpneq, cmp, all_integer, m_or_none) DEF_MVE_FUNCTION (vcreateq, create, all_integer_with_64, none) +DEF_MVE_FUNCTION (vdupq, unary_n, all_integer, mx_or_none) DEF_MVE_FUNCTION (veorq, binary, all_integer, mx_or_none) DEF_MVE_FUNCTION (vhaddq, binary_opt_n, all_integer, mx_or_none) DEF_MVE_FUNCTION (vhsubq, binary_opt_n, all_integer, mx_or_none) @@ -104,6 +105,7 @@ DEF_MVE_FUNCTION (vcmpleq, cmp, all_float, m_or_none) DEF_MVE_FUNCTION (vcmpltq, cmp, all_float, m_or_none) DEF_MVE_FUNCTION (vcmpneq, cmp, all_float, m_or_none) DEF_MVE_FUNCTION (vcreateq, create, all_float, none) +DEF_MVE_FUNCTION (vdupq, unary_n, all_float, mx_or_none) DEF_MVE_FUNCTION (veorq, binary, all_float, mx_or_none) DEF_MVE_FUNCTION (vmaxnmaq, binary, all_float, m_or_none) DEF_MVE_FUNCTION (vmaxnmavq, binary_maxvminv, all_float, p_or_none) diff --git a/gcc/config/arm/arm-mve-builtins-base.h b/gcc/config/arm/arm-mve-builtins-base.h index eaea466712a..3dc9114045f 100644 --- a/gcc/config/arm/arm-mve-builtins-base.h +++ b/gcc/config/arm/arm-mve-builtins-base.h @@ -38,6 +38,7 @@ extern const function_base *const vcmpleq; extern const function_base *const vcmpltq; extern const function_base *const vcmpneq; extern const function_base *const vcreateq; +extern const function_base *const vdupq; extern const function_base *const veorq; extern const function_base *const vhaddq; extern const function_base *const vhsubq; diff --git a/gcc/config/arm/arm_mve.h b/gcc/config/arm/arm_mve.h index 3692f600b37..c3d18e4cc6f 100644 --- a/gcc/config/arm/arm_mve.h +++ b/gcc/config/arm/arm_mve.h @@ -42,7 +42,6 @@ #ifndef __ARM_MVE_PRESERVE_USER_NAMESPACE #define vst4q(__addr, __value) __arm_vst4q(__addr, __value) -#define vdupq_n(__a) __arm_vdupq_n(__a) #define vaddlvq(__a) __arm_vaddlvq(__a) #define vaddvq(__a) __arm_vaddvq(__a) #define vmovlbq(__a) __arm_vmovlbq(__a) @@ -92,7 +91,6 @@ #define vmlaq(__a, __b, __c) __arm_vmlaq(__a, __b, __c) #define vmladavq_p(__a, __b, __p) __arm_vmladavq_p(__a, __b, __p) #define vmladavaq(__a, __b, __c) __arm_vmladavaq(__a, __b, __c) -#define vdupq_m(__inactive, __a, __p) __arm_vdupq_m(__inactive, __a, __p) #define vaddvaq_p(__a, __b, __p) __arm_vaddvaq_p(__a, __b, __p) #define vsriq(__a, __b, __imm) __arm_vsriq(__a, __b, __imm) #define vsliq(__a, __b, __imm) __arm_vsliq(__a, __b, __imm) @@ -324,17 +322,12 @@ #define vst4q_u32( __addr, __value) __arm_vst4q_u32( __addr, __value) #define vst4q_f16( __addr, __value) __arm_vst4q_f16( __addr, __value) #define vst4q_f32( __addr, __value) __arm_vst4q_f32( __addr, __value) -#define vdupq_n_f16(__a) __arm_vdupq_n_f16(__a) -#define vdupq_n_f32(__a) __arm_vdupq_n_f32(__a) #define vcvttq_f32_f16(__a) __arm_vcvttq_f32_f16(__a) #define vcvtbq_f32_f16(__a) __arm_vcvtbq_f32_f16(__a) #define vcvtq_f16_s16(__a) __arm_vcvtq_f16_s16(__a) #define vcvtq_f32_s32(__a) __arm_vcvtq_f32_s32(__a) #define vcvtq_f16_u16(__a) __arm_vcvtq_f16_u16(__a) #define vcvtq_f32_u32(__a) __arm_vcvtq_f32_u32(__a) -#define vdupq_n_s8(__a) __arm_vdupq_n_s8(__a) -#define vdupq_n_s16(__a) __arm_vdupq_n_s16(__a) -#define vdupq_n_s32(__a) __arm_vdupq_n_s32(__a) #define vaddlvq_s32(__a) __arm_vaddlvq_s32(__a) #define vaddvq_s8(__a) __arm_vaddvq_s8(__a) #define vaddvq_s16(__a) __arm_vaddvq_s16(__a) @@ -361,9 +354,6 @@ #define vmvnq_u8(__a) __arm_vmvnq_u8(__a) #define vmvnq_u16(__a) __arm_vmvnq_u16(__a) #define vmvnq_u32(__a) __arm_vmvnq_u32(__a) -#define vdupq_n_u8(__a) __arm_vdupq_n_u8(__a) -#define vdupq_n_u16(__a) __arm_vdupq_n_u16(__a) -#define vdupq_n_u32(__a) __arm_vdupq_n_u32(__a) #define vaddvq_u8(__a) __arm_vaddvq_u8(__a) #define vaddvq_u16(__a) __arm_vaddvq_u16(__a) #define vaddvq_u32(__a) __arm_vaddvq_u32(__a) @@ -567,7 +557,6 @@ #define vmlaq_n_u8(__a, __b, __c) __arm_vmlaq_n_u8(__a, __b, __c) #define vmladavq_p_u8(__a, __b, __p) __arm_vmladavq_p_u8(__a, __b, __p) #define vmladavaq_u8(__a, __b, __c) __arm_vmladavaq_u8(__a, __b, __c) -#define vdupq_m_n_u8(__inactive, __a, __p) __arm_vdupq_m_n_u8(__inactive, __a, __p) #define vaddvaq_p_u8(__a, __b, __p) __arm_vaddvaq_p_u8(__a, __b, __p) #define vsriq_n_u8(__a, __b, __imm) __arm_vsriq_n_u8(__a, __b, __imm) #define vsliq_n_u8(__a, __b, __imm) __arm_vsliq_n_u8(__a, __b, __imm) @@ -576,7 +565,6 @@ #define vmlsdavq_p_s8(__a, __b, __p) __arm_vmlsdavq_p_s8(__a, __b, __p) #define vmladavxq_p_s8(__a, __b, __p) __arm_vmladavxq_p_s8(__a, __b, __p) #define vmladavq_p_s8(__a, __b, __p) __arm_vmladavq_p_s8(__a, __b, __p) -#define vdupq_m_n_s8(__inactive, __a, __p) __arm_vdupq_m_n_s8(__inactive, __a, __p) #define vaddvaq_p_s8(__a, __b, __p) __arm_vaddvaq_p_s8(__a, __b, __p) #define vqrdmlsdhxq_s8(__inactive, __a, __b) __arm_vqrdmlsdhxq_s8(__inactive, __a, __b) #define vqrdmlsdhq_s8(__inactive, __a, __b) __arm_vqrdmlsdhq_s8(__inactive, __a, __b) @@ -605,7 +593,6 @@ #define vmlaq_n_u16(__a, __b, __c) __arm_vmlaq_n_u16(__a, __b, __c) #define vmladavq_p_u16(__a, __b, __p) __arm_vmladavq_p_u16(__a, __b, __p) #define vmladavaq_u16(__a, __b, __c) __arm_vmladavaq_u16(__a, __b, __c) -#define vdupq_m_n_u16(__inactive, __a, __p) __arm_vdupq_m_n_u16(__inactive, __a, __p) #define vaddvaq_p_u16(__a, __b, __p) __arm_vaddvaq_p_u16(__a, __b, __p) #define vsriq_n_u16(__a, __b, __imm) __arm_vsriq_n_u16(__a, __b, __imm) #define vsliq_n_u16(__a, __b, __imm) __arm_vsliq_n_u16(__a, __b, __imm) @@ -614,7 +601,6 @@ #define vmlsdavq_p_s16(__a, __b, __p) __arm_vmlsdavq_p_s16(__a, __b, __p) #define vmladavxq_p_s16(__a, __b, __p) __arm_vmladavxq_p_s16(__a, __b, __p) #define vmladavq_p_s16(__a, __b, __p) __arm_vmladavq_p_s16(__a, __b, __p) -#define vdupq_m_n_s16(__inactive, __a, __p) __arm_vdupq_m_n_s16(__inactive, __a, __p) #define vaddvaq_p_s16(__a, __b, __p) __arm_vaddvaq_p_s16(__a, __b, __p) #define vqrdmlsdhxq_s16(__inactive, __a, __b) __arm_vqrdmlsdhxq_s16(__inactive, __a, __b) #define vqrdmlsdhq_s16(__inactive, __a, __b) __arm_vqrdmlsdhq_s16(__inactive, __a, __b) @@ -643,7 +629,6 @@ #define vmlaq_n_u32(__a, __b, __c) __arm_vmlaq_n_u32(__a, __b, __c) #define vmladavq_p_u32(__a, __b, __p) __arm_vmladavq_p_u32(__a, __b, __p) #define vmladavaq_u32(__a, __b, __c) __arm_vmladavaq_u32(__a, __b, __c) -#define vdupq_m_n_u32(__inactive, __a, __p) __arm_vdupq_m_n_u32(__inactive, __a, __p) #define vaddvaq_p_u32(__a, __b, __p) __arm_vaddvaq_p_u32(__a, __b, __p) #define vsriq_n_u32(__a, __b, __imm) __arm_vsriq_n_u32(__a, __b, __imm) #define vsliq_n_u32(__a, __b, __imm) __arm_vsliq_n_u32(__a, __b, __imm) @@ -652,7 +637,6 @@ #define vmlsdavq_p_s32(__a, __b, __p) __arm_vmlsdavq_p_s32(__a, __b, __p) #define vmladavxq_p_s32(__a, __b, __p) __arm_vmladavxq_p_s32(__a, __b, __p) #define vmladavq_p_s32(__a, __b, __p) __arm_vmladavq_p_s32(__a, __b, __p) -#define vdupq_m_n_s32(__inactive, __a, __p) __arm_vdupq_m_n_s32(__inactive, __a, __p) #define vaddvaq_p_s32(__a, __b, __p) __arm_vaddvaq_p_s32(__a, __b, __p) #define vqrdmlsdhxq_s32(__inactive, __a, __b) __arm_vqrdmlsdhxq_s32(__inactive, __a, __b) #define vqrdmlsdhq_s32(__inactive, __a, __b) __arm_vqrdmlsdhq_s32(__inactive, __a, __b) @@ -707,7 +691,6 @@ #define vcvtnq_m_s16_f16(__inactive, __a, __p) __arm_vcvtnq_m_s16_f16(__inactive, __a, __p) #define vcvtpq_m_s16_f16(__inactive, __a, __p) __arm_vcvtpq_m_s16_f16(__inactive, __a, __p) #define vcvtq_m_s16_f16(__inactive, __a, __p) __arm_vcvtq_m_s16_f16(__inactive, __a, __p) -#define vdupq_m_n_f16(__inactive, __a, __p) __arm_vdupq_m_n_f16(__inactive, __a, __p) #define vmlaldavq_p_s16(__a, __b, __p) __arm_vmlaldavq_p_s16(__a, __b, __p) #define vmlaldavxq_p_s16(__a, __b, __p) __arm_vmlaldavxq_p_s16(__a, __b, __p) #define vmlsldavq_p_s16(__a, __b, __p) __arm_vmlsldavq_p_s16(__a, __b, __p) @@ -741,7 +724,6 @@ #define vcvtnq_m_s32_f32(__inactive, __a, __p) __arm_vcvtnq_m_s32_f32(__inactive, __a, __p) #define vcvtpq_m_s32_f32(__inactive, __a, __p) __arm_vcvtpq_m_s32_f32(__inactive, __a, __p) #define vcvtq_m_s32_f32(__inactive, __a, __p) __arm_vcvtq_m_s32_f32(__inactive, __a, __p) -#define vdupq_m_n_f32(__inactive, __a, __p) __arm_vdupq_m_n_f32(__inactive, __a, __p) #define vmlaldavq_p_s32(__a, __b, __p) __arm_vmlaldavq_p_s32(__a, __b, __p) #define vmlaldavxq_p_s32(__a, __b, __p) __arm_vmlaldavxq_p_s32(__a, __b, __p) #define vmlsldavq_p_s32(__a, __b, __p) __arm_vmlsldavq_p_s32(__a, __b, __p) @@ -1257,12 +1239,6 @@ #define viwdupq_x_wb_u8(__a, __b, __imm, __p) __arm_viwdupq_x_wb_u8(__a, __b, __imm, __p) #define viwdupq_x_wb_u16(__a, __b, __imm, __p) __arm_viwdupq_x_wb_u16(__a, __b, __imm, __p) #define viwdupq_x_wb_u32(__a, __b, __imm, __p) __arm_viwdupq_x_wb_u32(__a, __b, __imm, __p) -#define vdupq_x_n_s8(__a, __p) __arm_vdupq_x_n_s8(__a, __p) -#define vdupq_x_n_s16(__a, __p) __arm_vdupq_x_n_s16(__a, __p) -#define vdupq_x_n_s32(__a, __p) __arm_vdupq_x_n_s32(__a, __p) -#define vdupq_x_n_u8(__a, __p) __arm_vdupq_x_n_u8(__a, __p) -#define vdupq_x_n_u16(__a, __p) __arm_vdupq_x_n_u16(__a, __p) -#define vdupq_x_n_u32(__a, __p) __arm_vdupq_x_n_u32(__a, __p) #define vmullbq_poly_x_p8(__a, __b, __p) __arm_vmullbq_poly_x_p8(__a, __b, __p) #define vmullbq_poly_x_p16(__a, __b, __p) __arm_vmullbq_poly_x_p16(__a, __b, __p) #define vmullbq_int_x_s8(__a, __b, __p) __arm_vmullbq_int_x_s8(__a, __b, __p) @@ -1333,8 +1309,6 @@ #define vornq_x_u8(__a, __b, __p) __arm_vornq_x_u8(__a, __b, __p) #define vornq_x_u16(__a, __b, __p) __arm_vornq_x_u16(__a, __b, __p) #define vornq_x_u32(__a, __b, __p) __arm_vornq_x_u32(__a, __b, __p) -#define vdupq_x_n_f16(__a, __p) __arm_vdupq_x_n_f16(__a, __p) -#define vdupq_x_n_f32(__a, __p) __arm_vdupq_x_n_f32(__a, __p) #define vcaddq_rot90_x_f16(__a, __b, __p) __arm_vcaddq_rot90_x_f16(__a, __b, __p) #define vcaddq_rot90_x_f32(__a, __b, __p) __arm_vcaddq_rot90_x_f32(__a, __b, __p) #define vcaddq_rot270_x_f16(__a, __b, __p) __arm_vcaddq_rot270_x_f16(__a, __b, __p) @@ -1553,27 +1527,6 @@ __arm_vst4q_u32 (uint32_t * __addr, uint32x4x4_t __value) __builtin_mve_vst4qv4si ((__builtin_neon_si *) __addr, __rv.__o); } -__extension__ extern __inline int8x16_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n_s8 (int8_t __a) -{ - return __builtin_mve_vdupq_n_sv16qi (__a); -} - -__extension__ extern __inline int16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n_s16 (int16_t __a) -{ - return __builtin_mve_vdupq_n_sv8hi (__a); -} - -__extension__ extern __inline int32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n_s32 (int32_t __a) -{ - return __builtin_mve_vdupq_n_sv4si (__a); -} - __extension__ extern __inline int64_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddlvq_s32 (int32x4_t __a) @@ -1686,27 +1639,6 @@ __arm_vmvnq_u32 (uint32x4_t __a) return __builtin_mve_vmvnq_uv4si (__a); } -__extension__ extern __inline uint8x16_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n_u8 (uint8_t __a) -{ - return __builtin_mve_vdupq_n_uv16qi (__a); -} - -__extension__ extern __inline uint16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n_u16 (uint16_t __a) -{ - return __builtin_mve_vdupq_n_uv8hi (__a); -} - -__extension__ extern __inline uint32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n_u32 (uint32_t __a) -{ - return __builtin_mve_vdupq_n_uv4si (__a); -} - __extension__ extern __inline uint32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvq_u8 (uint8x16_t __a) @@ -2824,13 +2756,6 @@ __arm_vmladavaq_u8 (uint32_t __a, uint8x16_t __b, uint8x16_t __c) return __builtin_mve_vmladavaq_uv16qi (__a, __b, __c); } -__extension__ extern __inline uint8x16_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m_n_u8 (uint8x16_t __inactive, uint8_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_uv16qi (__inactive, __a, __p); -} - __extension__ extern __inline uint32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvaq_p_u8 (uint32_t __a, uint8x16_t __b, mve_pred16_t __p) @@ -2887,13 +2812,6 @@ __arm_vmladavq_p_s8 (int8x16_t __a, int8x16_t __b, mve_pred16_t __p) return __builtin_mve_vmladavq_p_sv16qi (__a, __b, __p); } -__extension__ extern __inline int8x16_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m_n_s8 (int8x16_t __inactive, int8_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_sv16qi (__inactive, __a, __p); -} - __extension__ extern __inline int32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvaq_p_s8 (int32_t __a, int8x16_t __b, mve_pred16_t __p) @@ -3090,13 +3008,6 @@ __arm_vmladavaq_u16 (uint32_t __a, uint16x8_t __b, uint16x8_t __c) return __builtin_mve_vmladavaq_uv8hi (__a, __b, __c); } -__extension__ extern __inline uint16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m_n_u16 (uint16x8_t __inactive, uint16_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_uv8hi (__inactive, __a, __p); -} - __extension__ extern __inline uint32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvaq_p_u16 (uint32_t __a, uint16x8_t __b, mve_pred16_t __p) @@ -3153,13 +3064,6 @@ __arm_vmladavq_p_s16 (int16x8_t __a, int16x8_t __b, mve_pred16_t __p) return __builtin_mve_vmladavq_p_sv8hi (__a, __b, __p); } -__extension__ extern __inline int16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m_n_s16 (int16x8_t __inactive, int16_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_sv8hi (__inactive, __a, __p); -} - __extension__ extern __inline int32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvaq_p_s16 (int32_t __a, int16x8_t __b, mve_pred16_t __p) @@ -3356,13 +3260,6 @@ __arm_vmladavaq_u32 (uint32_t __a, uint32x4_t __b, uint32x4_t __c) return __builtin_mve_vmladavaq_uv4si (__a, __b, __c); } -__extension__ extern __inline uint32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m_n_u32 (uint32x4_t __inactive, uint32_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_uv4si (__inactive, __a, __p); -} - __extension__ extern __inline uint32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvaq_p_u32 (uint32_t __a, uint32x4_t __b, mve_pred16_t __p) @@ -3419,13 +3316,6 @@ __arm_vmladavq_p_s32 (int32x4_t __a, int32x4_t __b, mve_pred16_t __p) return __builtin_mve_vmladavq_p_sv4si (__a, __b, __p); } -__extension__ extern __inline int32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m_n_s32 (int32x4_t __inactive, int32_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_sv4si (__inactive, __a, __p); -} - __extension__ extern __inline int32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvaq_p_s32 (int32_t __a, int32x4_t __b, mve_pred16_t __p) @@ -6905,48 +6795,6 @@ __arm_viwdupq_x_wb_u32 (uint32_t *__a, uint32_t __b, const int __imm, mve_pred16 return __res; } -__extension__ extern __inline int8x16_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_x_n_s8 (int8_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_sv16qi (__arm_vuninitializedq_s8 (), __a, __p); -} - -__extension__ extern __inline int16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_x_n_s16 (int16_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_sv8hi (__arm_vuninitializedq_s16 (), __a, __p); -} - -__extension__ extern __inline int32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_x_n_s32 (int32_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_sv4si (__arm_vuninitializedq_s32 (), __a, __p); -} - -__extension__ extern __inline uint8x16_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_x_n_u8 (uint8_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_uv16qi (__arm_vuninitializedq_u8 (), __a, __p); -} - -__extension__ extern __inline uint16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_x_n_u16 (uint16_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_uv8hi (__arm_vuninitializedq_u16 (), __a, __p); -} - -__extension__ extern __inline uint32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_x_n_u32 (uint32_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_uv4si (__arm_vuninitializedq_u32 (), __a, __p); -} - __extension__ extern __inline uint16x8_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vmullbq_poly_x_p8 (uint8x16_t __a, uint8x16_t __b, mve_pred16_t __p) @@ -8157,20 +8005,6 @@ __arm_vst4q_f32 (float32_t * __addr, float32x4x4_t __value) __builtin_mve_vst4qv4sf (__addr, __rv.__o); } -__extension__ extern __inline float16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n_f16 (float16_t __a) -{ - return __builtin_mve_vdupq_n_fv8hf (__a); -} - -__extension__ extern __inline float32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n_f32 (float32_t __a) -{ - return __builtin_mve_vdupq_n_fv4sf (__a); -} - __extension__ extern __inline float32x4_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vcvttq_f32_f16 (float16x8_t __a) @@ -8718,13 +8552,6 @@ __arm_vcvtq_m_s16_f16 (int16x8_t __inactive, float16x8_t __a, mve_pred16_t __p) return __builtin_mve_vcvtq_m_from_f_sv8hi (__inactive, __a, __p); } -__extension__ extern __inline float16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m_n_f16 (float16x8_t __inactive, float16_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_fv8hf (__inactive, __a, __p); -} - __extension__ extern __inline float16x8_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vpselq_f16 (float16x8_t __a, float16x8_t __b, mve_pred16_t __p) @@ -8844,13 +8671,6 @@ __arm_vcvtq_m_s32_f32 (int32x4_t __inactive, float32x4_t __a, mve_pred16_t __p) return __builtin_mve_vcvtq_m_from_f_sv4si (__inactive, __a, __p); } -__extension__ extern __inline float32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m_n_f32 (float32x4_t __inactive, float32_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_fv4sf (__inactive, __a, __p); -} - __extension__ extern __inline float32x4_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vpselq_f32 (float32x4_t __a, float32x4_t __b, mve_pred16_t __p) @@ -9438,20 +9258,6 @@ __arm_vstrwq_scatter_base_wb_p_f32 (uint32x4_t * __addr, const int __offset, flo *__addr = __builtin_mve_vstrwq_scatter_base_wb_p_fv4sf (*__addr, __offset, __value, __p); } -__extension__ extern __inline float16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_x_n_f16 (float16_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_fv8hf (__arm_vuninitializedq_f16 (), __a, __p); -} - -__extension__ extern __inline float32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_x_n_f32 (float32_t __a, mve_pred16_t __p) -{ - return __builtin_mve_vdupq_m_n_fv4sf (__arm_vuninitializedq_f32 (), __a, __p); -} - __extension__ extern __inline float16x8_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vcaddq_rot90_x_f16 (float16x8_t __a, float16x8_t __b, mve_pred16_t __p) @@ -9976,27 +9782,6 @@ __arm_vst4q (uint32_t * __addr, uint32x4x4_t __value) __arm_vst4q_u32 (__addr, __value); } -__extension__ extern __inline int8x16_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n (int8_t __a) -{ - return __arm_vdupq_n_s8 (__a); -} - -__extension__ extern __inline int16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n (int16_t __a) -{ - return __arm_vdupq_n_s16 (__a); -} - -__extension__ extern __inline int32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n (int32_t __a) -{ - return __arm_vdupq_n_s32 (__a); -} - __extension__ extern __inline int64_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddlvq (int32x4_t __a) @@ -10095,27 +9880,6 @@ __arm_vmvnq (uint32x4_t __a) return __arm_vmvnq_u32 (__a); } -__extension__ extern __inline uint8x16_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n (uint8_t __a) -{ - return __arm_vdupq_n_u8 (__a); -} - -__extension__ extern __inline uint16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n (uint16_t __a) -{ - return __arm_vdupq_n_u16 (__a); -} - -__extension__ extern __inline uint32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n (uint32_t __a) -{ - return __arm_vdupq_n_u32 (__a); -} - __extension__ extern __inline uint32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvq (uint8x16_t __a) @@ -11138,13 +10902,6 @@ __arm_vmladavaq (uint32_t __a, uint8x16_t __b, uint8x16_t __c) return __arm_vmladavaq_u8 (__a, __b, __c); } -__extension__ extern __inline uint8x16_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m (uint8x16_t __inactive, uint8_t __a, mve_pred16_t __p) -{ - return __arm_vdupq_m_n_u8 (__inactive, __a, __p); -} - __extension__ extern __inline uint32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvaq_p (uint32_t __a, uint8x16_t __b, mve_pred16_t __p) @@ -11201,13 +10958,6 @@ __arm_vmladavq_p (int8x16_t __a, int8x16_t __b, mve_pred16_t __p) return __arm_vmladavq_p_s8 (__a, __b, __p); } -__extension__ extern __inline int8x16_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m (int8x16_t __inactive, int8_t __a, mve_pred16_t __p) -{ - return __arm_vdupq_m_n_s8 (__inactive, __a, __p); -} - __extension__ extern __inline int32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvaq_p (int32_t __a, int8x16_t __b, mve_pred16_t __p) @@ -11404,13 +11154,6 @@ __arm_vmladavaq (uint32_t __a, uint16x8_t __b, uint16x8_t __c) return __arm_vmladavaq_u16 (__a, __b, __c); } -__extension__ extern __inline uint16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m (uint16x8_t __inactive, uint16_t __a, mve_pred16_t __p) -{ - return __arm_vdupq_m_n_u16 (__inactive, __a, __p); -} - __extension__ extern __inline uint32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvaq_p (uint32_t __a, uint16x8_t __b, mve_pred16_t __p) @@ -11467,13 +11210,6 @@ __arm_vmladavq_p (int16x8_t __a, int16x8_t __b, mve_pred16_t __p) return __arm_vmladavq_p_s16 (__a, __b, __p); } -__extension__ extern __inline int16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m (int16x8_t __inactive, int16_t __a, mve_pred16_t __p) -{ - return __arm_vdupq_m_n_s16 (__inactive, __a, __p); -} - __extension__ extern __inline int32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvaq_p (int32_t __a, int16x8_t __b, mve_pred16_t __p) @@ -11670,13 +11406,6 @@ __arm_vmladavaq (uint32_t __a, uint32x4_t __b, uint32x4_t __c) return __arm_vmladavaq_u32 (__a, __b, __c); } -__extension__ extern __inline uint32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m (uint32x4_t __inactive, uint32_t __a, mve_pred16_t __p) -{ - return __arm_vdupq_m_n_u32 (__inactive, __a, __p); -} - __extension__ extern __inline uint32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvaq_p (uint32_t __a, uint32x4_t __b, mve_pred16_t __p) @@ -11733,13 +11462,6 @@ __arm_vmladavq_p (int32x4_t __a, int32x4_t __b, mve_pred16_t __p) return __arm_vmladavq_p_s32 (__a, __b, __p); } -__extension__ extern __inline int32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m (int32x4_t __inactive, int32_t __a, mve_pred16_t __p) -{ - return __arm_vdupq_m_n_s32 (__inactive, __a, __p); -} - __extension__ extern __inline int32_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vaddvaq_p (int32_t __a, int32x4_t __b, mve_pred16_t __p) @@ -15746,20 +15468,6 @@ __arm_vst4q (float32_t * __addr, float32x4x4_t __value) __arm_vst4q_f32 (__addr, __value); } -__extension__ extern __inline float16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n (float16_t __a) -{ - return __arm_vdupq_n_f16 (__a); -} - -__extension__ extern __inline float32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_n (float32_t __a) -{ - return __arm_vdupq_n_f32 (__a); -} - __extension__ extern __inline float32x4_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vcvttq_f32 (float16x8_t __a) @@ -16124,13 +15832,6 @@ __arm_vcvtq_m (int16x8_t __inactive, float16x8_t __a, mve_pred16_t __p) return __arm_vcvtq_m_s16_f16 (__inactive, __a, __p); } -__extension__ extern __inline float16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m (float16x8_t __inactive, float16_t __a, mve_pred16_t __p) -{ - return __arm_vdupq_m_n_f16 (__inactive, __a, __p); -} - __extension__ extern __inline float16x8_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vpselq (float16x8_t __a, float16x8_t __b, mve_pred16_t __p) @@ -16250,13 +15951,6 @@ __arm_vcvtq_m (int32x4_t __inactive, float32x4_t __a, mve_pred16_t __p) return __arm_vcvtq_m_s32_f32 (__inactive, __a, __p); } -__extension__ extern __inline float32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vdupq_m (float32x4_t __inactive, float32_t __a, mve_pred16_t __p) -{ - return __arm_vdupq_m_n_f32 (__inactive, __a, __p); -} - __extension__ extern __inline float32x4_t __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) __arm_vpselq (float32x4_t __a, float32x4_t __b, mve_pred16_t __p) @@ -17337,11 +17031,6 @@ extern void *__ARM_undef; int (*)[__ARM_mve_type_float16_t_ptr][__ARM_mve_type_float16x8x4_t]: __arm_vst4q_f16 (__ARM_mve_coerce(__p0, float16_t *), __ARM_mve_coerce(__p1, float16x8x4_t)), \ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4x4_t]: __arm_vst4q_f32 (__ARM_mve_coerce(__p0, float32_t *), __ARM_mve_coerce(__p1, float32x4x4_t)));}) -#define __arm_vdupq_n(p0) ({ __typeof(p0) __p0 = (p0); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ - int (*)[__ARM_mve_type_float16x8_t]: __arm_vdupq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t)), \ - int (*)[__ARM_mve_type_float32x4_t]: __arm_vdupq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t)));}) - #define __arm_vcvtbq_f32(p0) ({ __typeof(p0) __p0 = (p0); \ _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ int (*)[__ARM_mve_type_float16x8_t]: __arm_vcvtbq_f32_f16 (__ARM_mve_coerce(__p0, float16x8_t)));}) @@ -17814,18 +17503,6 @@ extern void *__ARM_undef; int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcvtpq_m_u16_f16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcvtpq_m_u32_f32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2));}) -#define __arm_vdupq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vdupq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), (int8_t) __p1, p2), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vdupq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), (int16_t) __p1, p2), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vdupq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), (int32_t) __p1, p2), \ - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vdupq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), (uint8_t) __p1, p2), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vdupq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), (uint16_t) __p1, p2), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vdupq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), (uint32_t) __p1, p2), \ - int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vdupq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), (float16_t) __p1, p2), \ - int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vdupq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), (float32_t) __p1, p2));}) - #define __arm_vfmaq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ __typeof(p1) __p1 = (p1); \ __typeof(p2) __p2 = (p2); \ @@ -18713,16 +18390,6 @@ extern void *__ARM_undef; int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmlsdhxq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmlsdhxq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)));}) -#define __arm_vdupq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ - __typeof(p1) __p1 = (p1); \ - _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \ - int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vdupq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), (int8_t) __p1, p2), \ - int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vdupq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), (int16_t) __p1, p2), \ - int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vdupq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), (int32_t) __p1, p2), \ - int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vdupq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), (uint8_t) __p1, p2), \ - int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vdupq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), (uint16_t) __p1, p2), \ - int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vdupq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), (uint32_t) __p1, p2));}) - #define __arm_vmlaq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \ __typeof(p1) __p1 = (p1); \ __typeof(p2) __p2 = (p2); \ -- 2.34.1