From patchwork Thu Mar 19 17:59:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinath Parvathaneni X-Patchwork-Id: 1258362 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=n5rCHWN8; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=n5rCHWN8; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 48jw3910DSz9sRN for ; Fri, 20 Mar 2020 05:11:47 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BF4A73945C06; Thu, 19 Mar 2020 18:11:43 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70082.outbound.protection.outlook.com [40.107.7.82]) by sourceware.org (Postfix) with ESMTPS id DAFB6381DCEA for ; Thu, 19 Mar 2020 18:11:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org DAFB6381DCEA Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Srinath.Parvathaneni@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=lPpbLthCx3DIF/CcESAhCDKrXlTQY5AxSw/XXKVnjxM=; b=n5rCHWN8+0v+uvEp4STMHRQQfdlWcYNQV0if+ibY3nYultjfRBlAIa17ZB+5TeRQGt5lmCgKbvUSzOGvdONWTbjcdzCrp5e7n7sjpx1p4IIId4b2Y2k2qGk9Vks39PlOM1E9r6Yz/hwmOwRHmYz1slsobq1uaACworvyL+4ngdg= Received: from AM4PR0101CA0058.eurprd01.prod.exchangelabs.com (2603:10a6:200:41::26) by VI1PR08MB3501.eurprd08.prod.outlook.com (2603:10a6:803:85::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2814.19; Thu, 19 Mar 2020 18:11:30 +0000 Received: from VE1EUR03FT049.eop-EUR03.prod.protection.outlook.com (2603:10a6:200:41:cafe::22) by AM4PR0101CA0058.outlook.office365.com (2603:10a6:200:41::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2835.20 via Frontend Transport; Thu, 19 Mar 2020 18:11:30 +0000 Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; gcc.gnu.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT049.mail.protection.outlook.com (10.152.19.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2814.13 via Frontend Transport; Thu, 19 Mar 2020 18:11:29 +0000 Received: ("Tessian outbound 0e34ea672d09:v48"); Thu, 19 Mar 2020 18:11:29 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 1d5025dfb257b29d X-CR-MTA-TID: 64aa7808 Received: from e1f9f675c70e.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 60BEB3C1-2FAA-4680-91D9-57FD0AC1BE5E.1; Thu, 19 Mar 2020 18:11:24 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e1f9f675c70e.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 19 Mar 2020 18:11:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RYRxHrWNTRN+QLP1YdFh+KNxlXB9B7rhV/kVgN4qD32l3YhmUX7TWXbhgSlPTcWoSZIrsC8QUkpdjVVIVPTwaXGIYY+sIDBHmE9T2qM5IwLkPJMZCHP7v7C08LcMzF4o9MDxUyxSXvJgdgOTbyfW6ZaxvPDSNKudH5MxsgDolhwgodivwY0HXL7phB9bvRvVSIc1qanxrQMN19lTidsz5fZ1+M6UkNYPhlOsxT7nGMtqN23mIJtFpHbwO+Ie2XMXjWeLRK8uHHbGoTyUOvug3gJOjsYRyXUi7nwHsQ6OHHI8idm/zkM4j5gFNEMEcpzw0w8w17yQaWD2/LEvFpDMeg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lPpbLthCx3DIF/CcESAhCDKrXlTQY5AxSw/XXKVnjxM=; b=GoFKWaJ9ZKs0aBBKGG3H6y+V+I4+r23cwFMEgFqQw1qn9KT3S/8K/sL5Cmj5i1waUgRyE/JDeqHcxXsrGp6wTyWdFcXszT8s8HGfZYY2vVonQuxMcOqrNDGJSCelCYiOr3sReezAaIgJJjfYxYY0dBTewxe4O+Oe9Ni+KkJdNQnXQF08FxTW8ECnCn7BkOK0w4AQCcg52bTmymmIBKcFkzf5AQuhMBTeBEOjF6uF/Ew9+VbZUvyhZRABRvxincmSyFpROsxWR1UcMxefXPWHsjqe6Xq+rPVQrud/W1/pu0ERekg0B80V4ZxvDLEYRHR+ma7ooI9thpr4uR5cMPkaCQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lPpbLthCx3DIF/CcESAhCDKrXlTQY5AxSw/XXKVnjxM=; b=n5rCHWN8+0v+uvEp4STMHRQQfdlWcYNQV0if+ibY3nYultjfRBlAIa17ZB+5TeRQGt5lmCgKbvUSzOGvdONWTbjcdzCrp5e7n7sjpx1p4IIId4b2Y2k2qGk9Vks39PlOM1E9r6Yz/hwmOwRHmYz1slsobq1uaACworvyL+4ngdg= Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Srinath.Parvathaneni@arm.com; Received: from AM0PR08MB5380.eurprd08.prod.outlook.com (52.132.213.136) by AM0PR08MB4497.eurprd08.prod.outlook.com (20.179.35.213) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2835.20; Thu, 19 Mar 2020 18:11:19 +0000 Received: from AM0PR08MB5380.eurprd08.prod.outlook.com ([fe80::e016:9e56:512d:b9ae]) by AM0PR08MB5380.eurprd08.prod.outlook.com ([fe80::e016:9e56:512d:b9ae%7]) with mapi id 15.20.2835.017; Thu, 19 Mar 2020 18:11:19 +0000 From: Srinath Parvathaneni Date: Thu, 19 Mar 2020 17:59:24 +0000 To: gcc-patches@gcc.gnu.org Subject: [PATCH v2][ARM][GCC][7x]: MVE vreinterpretq and vuninitializedq intrinsics. X-ClientProxiedBy: LO2P265CA0108.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:c::24) To AM0PR08MB5380.eurprd08.prod.outlook.com (2603:10a6:208:183::8) Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from e120703-lin.cambridge.arm.com (217.140.106.50) by LO2P265CA0108.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:c::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2835.18 via Frontend Transport; Thu, 19 Mar 2020 18:11:19 +0000 X-Originating-IP: [217.140.106.50] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: fc24ae0b-ba6e-4bfc-7a1a-08d7cc30f2d9 X-MS-TrafficTypeDiagnostic: AM0PR08MB4497:|AM0PR08MB4497:|VI1PR08MB3501: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:751;OLM:751; X-Forefront-PRVS: 0347410860 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(4636009)(346002)(136003)(376002)(366004)(396003)(39860400002)(199004)(33656002)(66616009)(316002)(81166006)(81156014)(8676002)(8936002)(4326008)(235185007)(26005)(16526019)(5660300002)(186003)(52536014)(66556008)(66476007)(52116002)(66946007)(6486002)(6512007)(9686003)(44832011)(956004)(30864003)(86362001)(6916009)(6666004)(2906002)(966005)(478600001)(579004)(559001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR08MB4497; H:AM0PR08MB5380.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 5plMmCPpu4ykqshgcYfIhESmkAEXhd5ZoehRUPkJv3RpSulJft7pZ/Hbq5raKGGvLmG+UJgfMdPCi/CmC/7fzpqXq3QDXr3/ZUr8XqH8idpIV1Hmw6f/+YwWy2DTiSLDXs2zE53i1L8CwuxLAqDX3itMUmdq0DeKp33gj2S5Uh2ChAHiKsmFi98vcSgUsdJMgkazd++W8ic/EsuQZRfd9DFUYrj4WdddIXPAmP3vSlxkfU/6nCghmjOk2Ek1hYsrYz4zkuVf3v1O7IOiV61YE8g0L7I78grbe1l5ESwoLkPN4tpWGPFvBfZAsOPO9M4pv27OUeEYcRsgz2Pfwl9TyLkHVoI56/SxBNi9FA65jbiNcja/ecOxyFq0VFWj3Ur2Hh2eS5X/klrgpnIpA30fjUwus6guZLG47gFGLqMiN4QQmAsWQmdEJhJ5wevLEQofz3TKXIJDESviBqIcAbQT6vcP5JtC9350q9BYp1Ez7W8l3Pf4Ht/HHr3JguxKp/arxyH0lYKoGYDt5GyPI+Ey0Q== X-MS-Exchange-AntiSpam-MessageData: nMTX9+a1DqylsOxlgCKEqbHqKTdIx+iduAerMRcOjNoWQygB9kIonnbVgBZ1SDHk/iI4YlYNEXqqHgbCV+PeM6EK4rlFMWqUkfW7qOR7Yn1chHGT9fyVWlScfHbpZpclp2f1fPFn27hhFGE1ldD6gw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4497 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Srinath.Parvathaneni@arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT049.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123; IPV:CAL; SCL:-1; CTRY:IE; EFV:NLI; SFV:NSPM; SFS:(10009020)(4636009)(376002)(346002)(136003)(396003)(39860400002)(199004)(46966005)(86362001)(186003)(52536014)(26005)(2906002)(336012)(16526019)(4326008)(66616009)(70586007)(70206006)(8676002)(33656002)(47076004)(6916009)(478600001)(26826003)(5660300002)(81156014)(9686003)(235185007)(30864003)(81166006)(6486002)(6512007)(8936002)(956004)(36906005)(6666004)(316002)(966005)(44832011)(356004)(559001)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR08MB3501; H:64aa7808-outbound-1.mta.getcheckrecipient.com; FPR:; SPF:Pass; LANG:en; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; A:1; X-MS-Office365-Filtering-Correlation-Id-Prvs: 54bbe0a6-1c9e-49a7-288d-08d7cc30ec5a X-Forefront-PRVS: 0347410860 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VTOGV+szKSyIr0t/cZR6oDBuhgBCe8OdirTIKL6RCepoDG/Mfa7OfQD4yWzRtUWFudi9JNfof3Q6gnR0kT8kH10eXhmIo/Jp/8SPCq4Cgd2TVI00THC8lx4coTlovoeVupDwxJ3k0Ud3porXt92cQv6JhsnaYkVTbmubiSr2tnz66tHreWJx3Sd3MNg1VUDEagLS4WZNGSHHCNUEPqcZpEeEZb69bC1o0NhqZxOantSz9JfifX3IesTuzj6FZKm3EYhScKTc29MSdvhURPta2qgntH0TA+dDT4WOWrQgjqYOs05QbTwHarouiaFz9lnzR3TUZBsAgBgHsV4xA1iNUHJBth/xSt0vHijXuecL92gr1YkgLypJSw/Gn15aEg+umWBVJ06fVnaqBLRGzncbXimZH8485y6/BOcwqnqzkMgOhL3xTCYwfe1awZOGGPF2l87ogfXV99DkekY9pgjBg5WwPTJo+UvNnCQkeEMuUdszUiN/q3L/0RXRAQaIyaOgaFV4L8JM7Q3/Ubxm2Ekx+7oEpXT6UuvPSHur3knws+futfID85y+2pYuy7uytJoYI/I0s5dwLxuuPy2Og4yqw8aB9dBKWZWEgMySAGCiIus= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Mar 2020 18:11:29.9568 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fc24ae0b-ba6e-4bfc-7a1a-08d7cc30f2d9 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-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3501 X-Spam-Status: No, score=-24.8 required=5.0 tests=DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LOTSOFHASH, KAM_SHORT, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" Hello Kyrill, This patch addresses all the comments in patch version v2. (version v2) https://gcc.gnu.org/pipermail/gcc-patches/2019-November/534351.html #### Hello, This patch supports following MVE ACLE intrinsics. vreinterpretq_s16_s32, vreinterpretq_s16_s64, vreinterpretq_s16_s8, vreinterpretq_s16_u16, vreinterpretq_s16_u32, vreinterpretq_s16_u64, vreinterpretq_s16_u8, vreinterpretq_s32_s16, vreinterpretq_s32_s64, vreinterpretq_s32_s8, vreinterpretq_s32_u16, vreinterpretq_s32_u32, vreinterpretq_s32_u64, vreinterpretq_s32_u8, vreinterpretq_s64_s16, vreinterpretq_s64_s32, vreinterpretq_s64_s8, vreinterpretq_s64_u16, vreinterpretq_s64_u32, vreinterpretq_s64_u64, vreinterpretq_s64_u8, vreinterpretq_s8_s16, vreinterpretq_s8_s32, vreinterpretq_s8_s64, vreinterpretq_s8_u16, vreinterpretq_s8_u32, vreinterpretq_s8_u64, vreinterpretq_s8_u8, vreinterpretq_u16_s16, vreinterpretq_u16_s32, vreinterpretq_u16_s64, vreinterpretq_u16_s8, vreinterpretq_u16_u32, vreinterpretq_u16_u64, vreinterpretq_u16_u8, vreinterpretq_u32_s16, vreinterpretq_u32_s32, vreinterpretq_u32_s64, vreinterpretq_u32_s8, vreinterpretq_u32_u16, vreinterpretq_u32_u64, vreinterpretq_u32_u8, vreinterpretq_u64_s16, vreinterpretq_u64_s32, vreinterpretq_u64_s64, vreinterpretq_u64_s8, vreinterpretq_u64_u16, vreinterpretq_u64_u32, vreinterpretq_u64_u8, vreinterpretq_u8_s16, vreinterpretq_u8_s32, vreinterpretq_u8_s64, vreinterpretq_u8_s8, vreinterpretq_u8_u16, vreinterpretq_u8_u32, vreinterpretq_u8_u64, vreinterpretq_s32_f16, vreinterpretq_s32_f32, vreinterpretq_u16_f16, vreinterpretq_u16_f32, vreinterpretq_u32_f16, vreinterpretq_u32_f32, vreinterpretq_u64_f16, vreinterpretq_u64_f32, vreinterpretq_u8_f16, vreinterpretq_u8_f32, vreinterpretq_f16_f32, vreinterpretq_f16_s16, vreinterpretq_f16_s32, vreinterpretq_f16_s64, vreinterpretq_f16_s8, vreinterpretq_f16_u16, vreinterpretq_f16_u32, vreinterpretq_f16_u64, vreinterpretq_f16_u8, vreinterpretq_f32_f16, vreinterpretq_f32_s16, vreinterpretq_f32_s32, vreinterpretq_f32_s64, vreinterpretq_f32_s8, vreinterpretq_f32_u16, vreinterpretq_f32_u32, vreinterpretq_f32_u64, vreinterpretq_f32_u8, vreinterpretq_s16_f16, vreinterpretq_s16_f32, vreinterpretq_s64_f16, vreinterpretq_s64_f32, vreinterpretq_s8_f16, vreinterpretq_s8_f32, vuninitializedq_u8, vuninitializedq_u16, vuninitializedq_u32, vuninitializedq_u64, vuninitializedq_s8, vuninitializedq_s16, vuninitializedq_s32, vuninitializedq_s64, vuninitializedq_f16, vuninitializedq_f32 and vuninitializedq. Please refer to M-profile Vector Extension (MVE) intrinsics [1] for more details. [1] https://developer.arm.com/architectures/instruction-sets/simd-isas/helium/mve-intrinsics Regression tested on arm-none-eabi and found no regressions. Ok for trunk? Thanks, Srinath. gcc/ChangeLog: 2020-03-19 Srinath Parvathaneni * config/arm/arm_mve.h (vreinterpretq_s16_s32): Define macro. (vreinterpretq_s16_s64): Likewise. (vreinterpretq_s16_s8): Likewise. (vreinterpretq_s16_u16): Likewise. (vreinterpretq_s16_u32): Likewise. (vreinterpretq_s16_u64): Likewise. (vreinterpretq_s16_u8): Likewise. (vreinterpretq_s32_s16): Likewise. (vreinterpretq_s32_s64): Likewise. (vreinterpretq_s32_s8): Likewise. (vreinterpretq_s32_u16): Likewise. (vreinterpretq_s32_u32): Likewise. (vreinterpretq_s32_u64): Likewise. (vreinterpretq_s32_u8): Likewise. (vreinterpretq_s64_s16): Likewise. (vreinterpretq_s64_s32): Likewise. (vreinterpretq_s64_s8): Likewise. (vreinterpretq_s64_u16): Likewise. (vreinterpretq_s64_u32): Likewise. (vreinterpretq_s64_u64): Likewise. (vreinterpretq_s64_u8): Likewise. (vreinterpretq_s8_s16): Likewise. (vreinterpretq_s8_s32): Likewise. (vreinterpretq_s8_s64): Likewise. (vreinterpretq_s8_u16): Likewise. (vreinterpretq_s8_u32): Likewise. (vreinterpretq_s8_u64): Likewise. (vreinterpretq_s8_u8): Likewise. (vreinterpretq_u16_s16): Likewise. (vreinterpretq_u16_s32): Likewise. (vreinterpretq_u16_s64): Likewise. (vreinterpretq_u16_s8): Likewise. (vreinterpretq_u16_u32): Likewise. (vreinterpretq_u16_u64): Likewise. (vreinterpretq_u16_u8): Likewise. (vreinterpretq_u32_s16): Likewise. (vreinterpretq_u32_s32): Likewise. (vreinterpretq_u32_s64): Likewise. (vreinterpretq_u32_s8): Likewise. (vreinterpretq_u32_u16): Likewise. (vreinterpretq_u32_u64): Likewise. (vreinterpretq_u32_u8): Likewise. (vreinterpretq_u64_s16): Likewise. (vreinterpretq_u64_s32): Likewise. (vreinterpretq_u64_s64): Likewise. (vreinterpretq_u64_s8): Likewise. (vreinterpretq_u64_u16): Likewise. (vreinterpretq_u64_u32): Likewise. (vreinterpretq_u64_u8): Likewise. (vreinterpretq_u8_s16): Likewise. (vreinterpretq_u8_s32): Likewise. (vreinterpretq_u8_s64): Likewise. (vreinterpretq_u8_s8): Likewise. (vreinterpretq_u8_u16): Likewise. (vreinterpretq_u8_u32): Likewise. (vreinterpretq_u8_u64): Likewise. (vreinterpretq_s32_f16): Likewise. (vreinterpretq_s32_f32): Likewise. (vreinterpretq_u16_f16): Likewise. (vreinterpretq_u16_f32): Likewise. (vreinterpretq_u32_f16): Likewise. (vreinterpretq_u32_f32): Likewise. (vreinterpretq_u64_f16): Likewise. (vreinterpretq_u64_f32): Likewise. (vreinterpretq_u8_f16): Likewise. (vreinterpretq_u8_f32): Likewise. (vreinterpretq_f16_f32): Likewise. (vreinterpretq_f16_s16): Likewise. (vreinterpretq_f16_s32): Likewise. (vreinterpretq_f16_s64): Likewise. (vreinterpretq_f16_s8): Likewise. (vreinterpretq_f16_u16): Likewise. (vreinterpretq_f16_u32): Likewise. (vreinterpretq_f16_u64): Likewise. (vreinterpretq_f16_u8): Likewise. (vreinterpretq_f32_f16): Likewise. (vreinterpretq_f32_s16): Likewise. (vreinterpretq_f32_s32): Likewise. (vreinterpretq_f32_s64): Likewise. (vreinterpretq_f32_s8): Likewise. (vreinterpretq_f32_u16): Likewise. (vreinterpretq_f32_u32): Likewise. (vreinterpretq_f32_u64): Likewise. (vreinterpretq_f32_u8): Likewise. (vreinterpretq_s16_f16): Likewise. (vreinterpretq_s16_f32): Likewise. (vreinterpretq_s64_f16): Likewise. (vreinterpretq_s64_f32): Likewise. (vreinterpretq_s8_f16): Likewise. (vreinterpretq_s8_f32): Likewise. (vuninitializedq_u8): Likewise. (vuninitializedq_u16): Likewise. (vuninitializedq_u32): Likewise. (vuninitializedq_u64): Likewise. (vuninitializedq_s8): Likewise. (vuninitializedq_s16): Likewise. (vuninitializedq_s32): Likewise. (vuninitializedq_s64): Likewise. (vuninitializedq_f16): Likewise. (vuninitializedq_f32): Likewise. (__arm_vuninitializedq_u8): Define intrinsic. (__arm_vuninitializedq_u16): Likewise. (__arm_vuninitializedq_u32): Likewise. (__arm_vuninitializedq_u64): Likewise. (__arm_vuninitializedq_s8): Likewise. (__arm_vuninitializedq_s16): Likewise. (__arm_vuninitializedq_s32): Likewise. (__arm_vuninitializedq_s64): Likewise. (__arm_vreinterpretq_s16_s32): Likewise. (__arm_vreinterpretq_s16_s64): Likewise. (__arm_vreinterpretq_s16_s8): Likewise. (__arm_vreinterpretq_s16_u16): Likewise. (__arm_vreinterpretq_s16_u32): Likewise. (__arm_vreinterpretq_s16_u64): Likewise. (__arm_vreinterpretq_s16_u8): Likewise. (__arm_vreinterpretq_s32_s16): Likewise. (__arm_vreinterpretq_s32_s64): Likewise. (__arm_vreinterpretq_s32_s8): Likewise. (__arm_vreinterpretq_s32_u16): Likewise. (__arm_vreinterpretq_s32_u32): Likewise. (__arm_vreinterpretq_s32_u64): Likewise. (__arm_vreinterpretq_s32_u8): Likewise. (__arm_vreinterpretq_s64_s16): Likewise. (__arm_vreinterpretq_s64_s32): Likewise. (__arm_vreinterpretq_s64_s8): Likewise. (__arm_vreinterpretq_s64_u16): Likewise. (__arm_vreinterpretq_s64_u32): Likewise. (__arm_vreinterpretq_s64_u64): Likewise. (__arm_vreinterpretq_s64_u8): Likewise. (__arm_vreinterpretq_s8_s16): Likewise. (__arm_vreinterpretq_s8_s32): Likewise. (__arm_vreinterpretq_s8_s64): Likewise. (__arm_vreinterpretq_s8_u16): Likewise. (__arm_vreinterpretq_s8_u32): Likewise. (__arm_vreinterpretq_s8_u64): Likewise. (__arm_vreinterpretq_s8_u8): Likewise. (__arm_vreinterpretq_u16_s16): Likewise. (__arm_vreinterpretq_u16_s32): Likewise. (__arm_vreinterpretq_u16_s64): Likewise. (__arm_vreinterpretq_u16_s8): Likewise. (__arm_vreinterpretq_u16_u32): Likewise. (__arm_vreinterpretq_u16_u64): Likewise. (__arm_vreinterpretq_u16_u8): Likewise. (__arm_vreinterpretq_u32_s16): Likewise. (__arm_vreinterpretq_u32_s32): Likewise. (__arm_vreinterpretq_u32_s64): Likewise. (__arm_vreinterpretq_u32_s8): Likewise. (__arm_vreinterpretq_u32_u16): Likewise. (__arm_vreinterpretq_u32_u64): Likewise. (__arm_vreinterpretq_u32_u8): Likewise. (__arm_vreinterpretq_u64_s16): Likewise. (__arm_vreinterpretq_u64_s32): Likewise. (__arm_vreinterpretq_u64_s64): Likewise. (__arm_vreinterpretq_u64_s8): Likewise. (__arm_vreinterpretq_u64_u16): Likewise. (__arm_vreinterpretq_u64_u32): Likewise. (__arm_vreinterpretq_u64_u8): Likewise. (__arm_vreinterpretq_u8_s16): Likewise. (__arm_vreinterpretq_u8_s32): Likewise. (__arm_vreinterpretq_u8_s64): Likewise. (__arm_vreinterpretq_u8_s8): Likewise. (__arm_vreinterpretq_u8_u16): Likewise. (__arm_vreinterpretq_u8_u32): Likewise. (__arm_vreinterpretq_u8_u64): Likewise. (__arm_vuninitializedq_f16): Likewise. (__arm_vuninitializedq_f32): Likewise. (__arm_vreinterpretq_s32_f16): Likewise. (__arm_vreinterpretq_s32_f32): Likewise. (__arm_vreinterpretq_s16_f16): Likewise. (__arm_vreinterpretq_s16_f32): Likewise. (__arm_vreinterpretq_s64_f16): Likewise. (__arm_vreinterpretq_s64_f32): Likewise. (__arm_vreinterpretq_s8_f16): Likewise. (__arm_vreinterpretq_s8_f32): Likewise. (__arm_vreinterpretq_u16_f16): Likewise. (__arm_vreinterpretq_u16_f32): Likewise. (__arm_vreinterpretq_u32_f16): Likewise. (__arm_vreinterpretq_u32_f32): Likewise. (__arm_vreinterpretq_u64_f16): Likewise. (__arm_vreinterpretq_u64_f32): Likewise. (__arm_vreinterpretq_u8_f16): Likewise. (__arm_vreinterpretq_u8_f32): Likewise. (__arm_vreinterpretq_f16_f32): Likewise. (__arm_vreinterpretq_f16_s16): Likewise. (__arm_vreinterpretq_f16_s32): Likewise. (__arm_vreinterpretq_f16_s64): Likewise. (__arm_vreinterpretq_f16_s8): Likewise. (__arm_vreinterpretq_f16_u16): Likewise. (__arm_vreinterpretq_f16_u32): Likewise. (__arm_vreinterpretq_f16_u64): Likewise. (__arm_vreinterpretq_f16_u8): Likewise. (__arm_vreinterpretq_f32_f16): Likewise. (__arm_vreinterpretq_f32_s16): Likewise. (__arm_vreinterpretq_f32_s32): Likewise. (__arm_vreinterpretq_f32_s64): Likewise. (__arm_vreinterpretq_f32_s8): Likewise. (__arm_vreinterpretq_f32_u16): Likewise. (__arm_vreinterpretq_f32_u32): Likewise. (__arm_vreinterpretq_f32_u64): Likewise. (__arm_vreinterpretq_f32_u8): Likewise. (vuninitializedq): Define polymorphic variant. (vreinterpretq_f16): Likewise. (vreinterpretq_f32): Likewise. (vreinterpretq_s16): Likewise. (vreinterpretq_s32): Likewise. (vreinterpretq_s64): Likewise. (vreinterpretq_s8): Likewise. (vreinterpretq_u16): Likewise. (vreinterpretq_u32): Likewise. (vreinterpretq_u64): Likewise. (vreinterpretq_u8): Likewise. gcc/testsuite/ChangeLog: 2020-03-19 Srinath Parvathaneni * gcc.target/arm/mve/intrinsics/vuninitializedq_float.c: New test. * gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c: Likewise. * gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise. * gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c: Likewise. * gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c: Likewise. * gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c: Likewise. * gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vreinterpretq_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vreinterpretq_s64.c: Likewise. * gcc.target/arm/mve/intrinsics/vreinterpretq_s8.c: Likewise. * gcc.target/arm/mve/intrinsics/vreinterpretq_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vreinterpretq_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vreinterpretq_u64.c: Likewise. * gcc.target/arm/mve/intrinsics/vreinterpretq_u8.c: Likewise. * gcc.target/arm/mve/intrinsics/vuninitializedq_float.c: Likewise. * gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c: Likewise. * gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise. * gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c: Likewise. ############### Attachment also inlined for ease of reply ############### diff --git a/gcc/config/arm/arm_mve.h b/gcc/config/arm/arm_mve.h index 55c256910bb7f4c616ea592be699f7f4fc3f17f7..916565c9b55bae77869669fd1e8f8b7f4a37b52e 100644 --- a/gcc/config/arm/arm_mve.h +++ b/gcc/config/arm/arm_mve.h @@ -1906,6 +1906,106 @@ typedef struct { uint8x16_t val[4]; } uint8x16x4_t; #define vaddq_u32(__a, __b) __arm_vaddq_u32(__a, __b) #define vaddq_f16(__a, __b) __arm_vaddq_f16(__a, __b) #define vaddq_f32(__a, __b) __arm_vaddq_f32(__a, __b) +#define vreinterpretq_s16_s32(__a) __arm_vreinterpretq_s16_s32(__a) +#define vreinterpretq_s16_s64(__a) __arm_vreinterpretq_s16_s64(__a) +#define vreinterpretq_s16_s8(__a) __arm_vreinterpretq_s16_s8(__a) +#define vreinterpretq_s16_u16(__a) __arm_vreinterpretq_s16_u16(__a) +#define vreinterpretq_s16_u32(__a) __arm_vreinterpretq_s16_u32(__a) +#define vreinterpretq_s16_u64(__a) __arm_vreinterpretq_s16_u64(__a) +#define vreinterpretq_s16_u8(__a) __arm_vreinterpretq_s16_u8(__a) +#define vreinterpretq_s32_s16(__a) __arm_vreinterpretq_s32_s16(__a) +#define vreinterpretq_s32_s64(__a) __arm_vreinterpretq_s32_s64(__a) +#define vreinterpretq_s32_s8(__a) __arm_vreinterpretq_s32_s8(__a) +#define vreinterpretq_s32_u16(__a) __arm_vreinterpretq_s32_u16(__a) +#define vreinterpretq_s32_u32(__a) __arm_vreinterpretq_s32_u32(__a) +#define vreinterpretq_s32_u64(__a) __arm_vreinterpretq_s32_u64(__a) +#define vreinterpretq_s32_u8(__a) __arm_vreinterpretq_s32_u8(__a) +#define vreinterpretq_s64_s16(__a) __arm_vreinterpretq_s64_s16(__a) +#define vreinterpretq_s64_s32(__a) __arm_vreinterpretq_s64_s32(__a) +#define vreinterpretq_s64_s8(__a) __arm_vreinterpretq_s64_s8(__a) +#define vreinterpretq_s64_u16(__a) __arm_vreinterpretq_s64_u16(__a) +#define vreinterpretq_s64_u32(__a) __arm_vreinterpretq_s64_u32(__a) +#define vreinterpretq_s64_u64(__a) __arm_vreinterpretq_s64_u64(__a) +#define vreinterpretq_s64_u8(__a) __arm_vreinterpretq_s64_u8(__a) +#define vreinterpretq_s8_s16(__a) __arm_vreinterpretq_s8_s16(__a) +#define vreinterpretq_s8_s32(__a) __arm_vreinterpretq_s8_s32(__a) +#define vreinterpretq_s8_s64(__a) __arm_vreinterpretq_s8_s64(__a) +#define vreinterpretq_s8_u16(__a) __arm_vreinterpretq_s8_u16(__a) +#define vreinterpretq_s8_u32(__a) __arm_vreinterpretq_s8_u32(__a) +#define vreinterpretq_s8_u64(__a) __arm_vreinterpretq_s8_u64(__a) +#define vreinterpretq_s8_u8(__a) __arm_vreinterpretq_s8_u8(__a) +#define vreinterpretq_u16_s16(__a) __arm_vreinterpretq_u16_s16(__a) +#define vreinterpretq_u16_s32(__a) __arm_vreinterpretq_u16_s32(__a) +#define vreinterpretq_u16_s64(__a) __arm_vreinterpretq_u16_s64(__a) +#define vreinterpretq_u16_s8(__a) __arm_vreinterpretq_u16_s8(__a) +#define vreinterpretq_u16_u32(__a) __arm_vreinterpretq_u16_u32(__a) +#define vreinterpretq_u16_u64(__a) __arm_vreinterpretq_u16_u64(__a) +#define vreinterpretq_u16_u8(__a) __arm_vreinterpretq_u16_u8(__a) +#define vreinterpretq_u32_s16(__a) __arm_vreinterpretq_u32_s16(__a) +#define vreinterpretq_u32_s32(__a) __arm_vreinterpretq_u32_s32(__a) +#define vreinterpretq_u32_s64(__a) __arm_vreinterpretq_u32_s64(__a) +#define vreinterpretq_u32_s8(__a) __arm_vreinterpretq_u32_s8(__a) +#define vreinterpretq_u32_u16(__a) __arm_vreinterpretq_u32_u16(__a) +#define vreinterpretq_u32_u64(__a) __arm_vreinterpretq_u32_u64(__a) +#define vreinterpretq_u32_u8(__a) __arm_vreinterpretq_u32_u8(__a) +#define vreinterpretq_u64_s16(__a) __arm_vreinterpretq_u64_s16(__a) +#define vreinterpretq_u64_s32(__a) __arm_vreinterpretq_u64_s32(__a) +#define vreinterpretq_u64_s64(__a) __arm_vreinterpretq_u64_s64(__a) +#define vreinterpretq_u64_s8(__a) __arm_vreinterpretq_u64_s8(__a) +#define vreinterpretq_u64_u16(__a) __arm_vreinterpretq_u64_u16(__a) +#define vreinterpretq_u64_u32(__a) __arm_vreinterpretq_u64_u32(__a) +#define vreinterpretq_u64_u8(__a) __arm_vreinterpretq_u64_u8(__a) +#define vreinterpretq_u8_s16(__a) __arm_vreinterpretq_u8_s16(__a) +#define vreinterpretq_u8_s32(__a) __arm_vreinterpretq_u8_s32(__a) +#define vreinterpretq_u8_s64(__a) __arm_vreinterpretq_u8_s64(__a) +#define vreinterpretq_u8_s8(__a) __arm_vreinterpretq_u8_s8(__a) +#define vreinterpretq_u8_u16(__a) __arm_vreinterpretq_u8_u16(__a) +#define vreinterpretq_u8_u32(__a) __arm_vreinterpretq_u8_u32(__a) +#define vreinterpretq_u8_u64(__a) __arm_vreinterpretq_u8_u64(__a) +#define vreinterpretq_s32_f16(__a) __arm_vreinterpretq_s32_f16(__a) +#define vreinterpretq_s32_f32(__a) __arm_vreinterpretq_s32_f32(__a) +#define vreinterpretq_u16_f16(__a) __arm_vreinterpretq_u16_f16(__a) +#define vreinterpretq_u16_f32(__a) __arm_vreinterpretq_u16_f32(__a) +#define vreinterpretq_u32_f16(__a) __arm_vreinterpretq_u32_f16(__a) +#define vreinterpretq_u32_f32(__a) __arm_vreinterpretq_u32_f32(__a) +#define vreinterpretq_u64_f16(__a) __arm_vreinterpretq_u64_f16(__a) +#define vreinterpretq_u64_f32(__a) __arm_vreinterpretq_u64_f32(__a) +#define vreinterpretq_u8_f16(__a) __arm_vreinterpretq_u8_f16(__a) +#define vreinterpretq_u8_f32(__a) __arm_vreinterpretq_u8_f32(__a) +#define vreinterpretq_f16_f32(__a) __arm_vreinterpretq_f16_f32(__a) +#define vreinterpretq_f16_s16(__a) __arm_vreinterpretq_f16_s16(__a) +#define vreinterpretq_f16_s32(__a) __arm_vreinterpretq_f16_s32(__a) +#define vreinterpretq_f16_s64(__a) __arm_vreinterpretq_f16_s64(__a) +#define vreinterpretq_f16_s8(__a) __arm_vreinterpretq_f16_s8(__a) +#define vreinterpretq_f16_u16(__a) __arm_vreinterpretq_f16_u16(__a) +#define vreinterpretq_f16_u32(__a) __arm_vreinterpretq_f16_u32(__a) +#define vreinterpretq_f16_u64(__a) __arm_vreinterpretq_f16_u64(__a) +#define vreinterpretq_f16_u8(__a) __arm_vreinterpretq_f16_u8(__a) +#define vreinterpretq_f32_f16(__a) __arm_vreinterpretq_f32_f16(__a) +#define vreinterpretq_f32_s16(__a) __arm_vreinterpretq_f32_s16(__a) +#define vreinterpretq_f32_s32(__a) __arm_vreinterpretq_f32_s32(__a) +#define vreinterpretq_f32_s64(__a) __arm_vreinterpretq_f32_s64(__a) +#define vreinterpretq_f32_s8(__a) __arm_vreinterpretq_f32_s8(__a) +#define vreinterpretq_f32_u16(__a) __arm_vreinterpretq_f32_u16(__a) +#define vreinterpretq_f32_u32(__a) __arm_vreinterpretq_f32_u32(__a) +#define vreinterpretq_f32_u64(__a) __arm_vreinterpretq_f32_u64(__a) +#define vreinterpretq_f32_u8(__a) __arm_vreinterpretq_f32_u8(__a) +#define vreinterpretq_s16_f16(__a) __arm_vreinterpretq_s16_f16(__a) +#define vreinterpretq_s16_f32(__a) __arm_vreinterpretq_s16_f32(__a) +#define vreinterpretq_s64_f16(__a) __arm_vreinterpretq_s64_f16(__a) +#define vreinterpretq_s64_f32(__a) __arm_vreinterpretq_s64_f32(__a) +#define vreinterpretq_s8_f16(__a) __arm_vreinterpretq_s8_f16(__a) +#define vreinterpretq_s8_f32(__a) __arm_vreinterpretq_s8_f32(__a) +#define vuninitializedq_u8(void) __arm_vuninitializedq_u8(void) +#define vuninitializedq_u16(void) __arm_vuninitializedq_u16(void) +#define vuninitializedq_u32(void) __arm_vuninitializedq_u32(void) +#define vuninitializedq_u64(void) __arm_vuninitializedq_u64(void) +#define vuninitializedq_s8(void) __arm_vuninitializedq_s8(void) +#define vuninitializedq_s16(void) __arm_vuninitializedq_s16(void) +#define vuninitializedq_s32(void) __arm_vuninitializedq_s32(void) +#define vuninitializedq_s64(void) __arm_vuninitializedq_s64(void) +#define vuninitializedq_f16(void) __arm_vuninitializedq_f16(void) +#define vuninitializedq_f32(void) __arm_vuninitializedq_f32(void) #endif __extension__ extern __inline void @@ -12391,6 +12491,471 @@ __arm_vaddq_u32 (uint32x4_t __a, uint32x4_t __b) return __a + __b; } +__extension__ extern __inline uint8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq_u8 (void) +{ + uint8x16_t __uninit; + __asm__ ("": "=w"(__uninit)); + return __uninit; +} + +__extension__ extern __inline uint16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq_u16 (void) +{ + uint16x8_t __uninit; + __asm__ ("": "=w"(__uninit)); + return __uninit; +} + +__extension__ extern __inline uint32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq_u32 (void) +{ + uint32x4_t __uninit; + __asm__ ("": "=w"(__uninit)); + return __uninit; +} + +__extension__ extern __inline uint64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq_u64 (void) +{ + uint64x2_t __uninit; + __asm__ ("": "=w"(__uninit)); + return __uninit; +} + +__extension__ extern __inline int8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq_s8 (void) +{ + int8x16_t __uninit; + __asm__ ("": "=w"(__uninit)); + return __uninit; +} + +__extension__ extern __inline int16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq_s16 (void) +{ + int16x8_t __uninit; + __asm__ ("": "=w"(__uninit)); + return __uninit; +} + +__extension__ extern __inline int32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq_s32 (void) +{ + int32x4_t __uninit; + __asm__ ("": "=w"(__uninit)); + return __uninit; +} + +__extension__ extern __inline int64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq_s64 (void) +{ + int64x2_t __uninit; + __asm__ ("": "=w"(__uninit)); + return __uninit; +} + +__extension__ extern __inline int16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s16_s32 (int32x4_t __a) +{ + return (int16x8_t) __a; +} + +__extension__ extern __inline int16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s16_s64 (int64x2_t __a) +{ + return (int16x8_t) __a; +} + +__extension__ extern __inline int16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s16_s8 (int8x16_t __a) +{ + return (int16x8_t) __a; +} + +__extension__ extern __inline int16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s16_u16 (uint16x8_t __a) +{ + return (int16x8_t) __a; +} + +__extension__ extern __inline int16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s16_u32 (uint32x4_t __a) +{ + return (int16x8_t) __a; +} + +__extension__ extern __inline int16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s16_u64 (uint64x2_t __a) +{ + return (int16x8_t) __a; +} + +__extension__ extern __inline int16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s16_u8 (uint8x16_t __a) +{ + return (int16x8_t) __a; +} + +__extension__ extern __inline int32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s32_s16 (int16x8_t __a) +{ + return (int32x4_t) __a; +} + +__extension__ extern __inline int32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s32_s64 (int64x2_t __a) +{ + return (int32x4_t) __a; +} + +__extension__ extern __inline int32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s32_s8 (int8x16_t __a) +{ + return (int32x4_t) __a; +} + +__extension__ extern __inline int32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s32_u16 (uint16x8_t __a) +{ + return (int32x4_t) __a; +} + +__extension__ extern __inline int32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s32_u32 (uint32x4_t __a) +{ + return (int32x4_t) __a; +} + +__extension__ extern __inline int32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s32_u64 (uint64x2_t __a) +{ + return (int32x4_t) __a; +} + +__extension__ extern __inline int32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s32_u8 (uint8x16_t __a) +{ + return (int32x4_t) __a; +} + +__extension__ extern __inline int64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s64_s16 (int16x8_t __a) +{ + return (int64x2_t) __a; +} + +__extension__ extern __inline int64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s64_s32 (int32x4_t __a) +{ + return (int64x2_t) __a; +} + +__extension__ extern __inline int64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s64_s8 (int8x16_t __a) +{ + return (int64x2_t) __a; +} + +__extension__ extern __inline int64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s64_u16 (uint16x8_t __a) +{ + return (int64x2_t) __a; +} + +__extension__ extern __inline int64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s64_u32 (uint32x4_t __a) +{ + return (int64x2_t) __a; +} + +__extension__ extern __inline int64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s64_u64 (uint64x2_t __a) +{ + return (int64x2_t) __a; +} + +__extension__ extern __inline int64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s64_u8 (uint8x16_t __a) +{ + return (int64x2_t) __a; +} + +__extension__ extern __inline int8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s8_s16 (int16x8_t __a) +{ + return (int8x16_t) __a; +} + +__extension__ extern __inline int8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s8_s32 (int32x4_t __a) +{ + return (int8x16_t) __a; +} + +__extension__ extern __inline int8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s8_s64 (int64x2_t __a) +{ + return (int8x16_t) __a; +} + +__extension__ extern __inline int8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s8_u16 (uint16x8_t __a) +{ + return (int8x16_t) __a; +} + +__extension__ extern __inline int8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s8_u32 (uint32x4_t __a) +{ + return (int8x16_t) __a; +} + +__extension__ extern __inline int8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s8_u64 (uint64x2_t __a) +{ + return (int8x16_t) __a; +} + +__extension__ extern __inline int8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s8_u8 (uint8x16_t __a) +{ + return (int8x16_t) __a; +} + +__extension__ extern __inline uint16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u16_s16 (int16x8_t __a) +{ + return (uint16x8_t) __a; +} + +__extension__ extern __inline uint16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u16_s32 (int32x4_t __a) +{ + return (uint16x8_t) __a; +} + +__extension__ extern __inline uint16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u16_s64 (int64x2_t __a) +{ + return (uint16x8_t) __a; +} + +__extension__ extern __inline uint16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u16_s8 (int8x16_t __a) +{ + return (uint16x8_t) __a; +} + +__extension__ extern __inline uint16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u16_u32 (uint32x4_t __a) +{ + return (uint16x8_t) __a; +} + +__extension__ extern __inline uint16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u16_u64 (uint64x2_t __a) +{ + return (uint16x8_t) __a; +} + +__extension__ extern __inline uint16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u16_u8 (uint8x16_t __a) +{ + return (uint16x8_t) __a; +} + + +__extension__ extern __inline uint32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u32_s16 (int16x8_t __a) +{ + return (uint32x4_t) __a; +} + +__extension__ extern __inline uint32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u32_s32 (int32x4_t __a) +{ + return (uint32x4_t) __a; +} + +__extension__ extern __inline uint32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u32_s64 (int64x2_t __a) +{ + return (uint32x4_t) __a; +} + +__extension__ extern __inline uint32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u32_s8 (int8x16_t __a) +{ + return (uint32x4_t) __a; +} + +__extension__ extern __inline uint32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u32_u16 (uint16x8_t __a) +{ + return (uint32x4_t) __a; +} + +__extension__ extern __inline uint32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u32_u64 (uint64x2_t __a) +{ + return (uint32x4_t) __a; +} + +__extension__ extern __inline uint32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u32_u8 (uint8x16_t __a) +{ + return (uint32x4_t) __a; +} + +__extension__ extern __inline uint64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u64_s16 (int16x8_t __a) +{ + return (uint64x2_t) __a; +} + +__extension__ extern __inline uint64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u64_s32 (int32x4_t __a) +{ + return (uint64x2_t) __a; +} + +__extension__ extern __inline uint64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u64_s64 (int64x2_t __a) +{ + return (uint64x2_t) __a; +} + +__extension__ extern __inline uint64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u64_s8 (int8x16_t __a) +{ + return (uint64x2_t) __a; +} + +__extension__ extern __inline uint64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u64_u16 (uint16x8_t __a) +{ + return (uint64x2_t) __a; +} + +__extension__ extern __inline uint64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u64_u32 (uint32x4_t __a) +{ + return (uint64x2_t) __a; +} + +__extension__ extern __inline uint64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u64_u8 (uint8x16_t __a) +{ + return (uint64x2_t) __a; +} + +__extension__ extern __inline uint8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u8_s16 (int16x8_t __a) +{ + return (uint8x16_t) __a; +} + +__extension__ extern __inline uint8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u8_s32 (int32x4_t __a) +{ + return (uint8x16_t) __a; +} + +__extension__ extern __inline uint8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u8_s64 (int64x2_t __a) +{ + return (uint8x16_t) __a; +} + +__extension__ extern __inline uint8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u8_s8 (int8x16_t __a) +{ + return (uint8x16_t) __a; +} + +__extension__ extern __inline uint8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u8_u16 (uint16x8_t __a) +{ + return (uint8x16_t) __a; +} + +__extension__ extern __inline uint8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u8_u32 (uint32x4_t __a) +{ + return (uint8x16_t) __a; +} + +__extension__ extern __inline uint8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u8_u64 (uint64x2_t __a) +{ + return (uint8x16_t) __a; +} + #if (__ARM_FEATURE_MVE & 2) /* MVE Floating point. */ __extension__ extern __inline void @@ -14771,6 +15336,262 @@ __arm_vaddq_f32 (float32x4_t __a, float32x4_t __b) return __a + __b; } +__extension__ extern __inline float16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq_f16 (void) +{ + float16x8_t __uninit; + __asm__ ("": "=w" (__uninit)); + return __uninit; +} + +__extension__ extern __inline float32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq_f32 (void) +{ + float32x4_t __uninit; + __asm__ ("": "=w" (__uninit)); + return __uninit; +} + +__extension__ extern __inline int32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s32_f16 (float16x8_t __a) +{ + return (int32x4_t) __a; +} + +__extension__ extern __inline int32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s32_f32 (float32x4_t __a) +{ + return (int32x4_t) __a; +} + +__extension__ extern __inline int16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s16_f16 (float16x8_t __a) +{ + return (int16x8_t) __a; +} + +__extension__ extern __inline int16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s16_f32 (float32x4_t __a) +{ + return (int16x8_t) __a; +} + +__extension__ extern __inline int64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s64_f16 (float16x8_t __a) +{ + return (int64x2_t) __a; +} + +__extension__ extern __inline int64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s64_f32 (float32x4_t __a) +{ + return (int64x2_t) __a; +} + +__extension__ extern __inline int8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s8_f16 (float16x8_t __a) +{ + return (int8x16_t) __a; +} + +__extension__ extern __inline int8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_s8_f32 (float32x4_t __a) +{ + return (int8x16_t) __a; +} + +__extension__ extern __inline uint16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u16_f16 (float16x8_t __a) +{ + return (uint16x8_t) __a; +} + +__extension__ extern __inline uint16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u16_f32 (float32x4_t __a) +{ + return (uint16x8_t) __a; +} + +__extension__ extern __inline uint32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u32_f16 (float16x8_t __a) +{ + return (uint32x4_t) __a; +} + +__extension__ extern __inline uint32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u32_f32 (float32x4_t __a) +{ + return (uint32x4_t) __a; +} + +__extension__ extern __inline uint64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u64_f16 (float16x8_t __a) +{ + return (uint64x2_t) __a; +} + +__extension__ extern __inline uint64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u64_f32 (float32x4_t __a) +{ + return (uint64x2_t) __a; +} + +__extension__ extern __inline uint8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u8_f16 (float16x8_t __a) +{ + return (uint8x16_t) __a; +} + +__extension__ extern __inline uint8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_u8_f32 (float32x4_t __a) +{ + return (uint8x16_t) __a; +} + +__extension__ extern __inline float16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f16_f32 (float32x4_t __a) +{ + return (float16x8_t) __a; +} + +__extension__ extern __inline float16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f16_s16 (int16x8_t __a) +{ + return (float16x8_t) __a; +} + +__extension__ extern __inline float16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f16_s32 (int32x4_t __a) +{ + return (float16x8_t) __a; +} + +__extension__ extern __inline float16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f16_s64 (int64x2_t __a) +{ + return (float16x8_t) __a; +} + +__extension__ extern __inline float16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f16_s8 (int8x16_t __a) +{ + return (float16x8_t) __a; +} + +__extension__ extern __inline float16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f16_u16 (uint16x8_t __a) +{ + return (float16x8_t) __a; +} + +__extension__ extern __inline float16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f16_u32 (uint32x4_t __a) +{ + return (float16x8_t) __a; +} + +__extension__ extern __inline float16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f16_u64 (uint64x2_t __a) +{ + return (float16x8_t) __a; +} + +__extension__ extern __inline float16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f16_u8 (uint8x16_t __a) +{ + return (float16x8_t) __a; +} + +__extension__ extern __inline float32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f32_f16 (float16x8_t __a) +{ + return (float32x4_t) __a; +} + +__extension__ extern __inline float32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f32_s16 (int16x8_t __a) +{ + return (float32x4_t) __a; +} + +__extension__ extern __inline float32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f32_s32 (int32x4_t __a) +{ + return (float32x4_t) __a; +} + +__extension__ extern __inline float32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f32_s64 (int64x2_t __a) +{ + return (float32x4_t) __a; +} + +__extension__ extern __inline float32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f32_s8 (int8x16_t __a) +{ + return (float32x4_t) __a; +} + +__extension__ extern __inline float32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f32_u16 (uint16x8_t __a) +{ + return (float32x4_t) __a; +} + +__extension__ extern __inline float32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f32_u32 (uint32x4_t __a) +{ + return (float32x4_t) __a; +} + +__extension__ extern __inline float32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f32_u64 (uint64x2_t __a) +{ + return (float32x4_t) __a; +} + +__extension__ extern __inline float32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vreinterpretq_f32_u8 (uint8x16_t __a) +{ + return (float32x4_t) __a; +} + #endif enum { @@ -17543,6 +18364,150 @@ extern void *__ARM_undef; int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_u32 (__ARM_mve_coerce(__p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t)), \ int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_shifted_offset_f32 (__ARM_mve_coerce(__p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t)));}) +#define vuninitializedq(p0) __arm_vuninitializedq(p0) +#define __arm_vuninitializedq(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vuninitializedq_s8 (), \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vuninitializedq_s16 (), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vuninitializedq_s32 (), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vuninitializedq_s64 (), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vuninitializedq_u8 (), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vuninitializedq_u16 (), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vuninitializedq_u32 (), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vuninitializedq_u64 (), \ + int (*)[__ARM_mve_type_float16x8_t]: __arm_vuninitializedq_f16 (), \ + int (*)[__ARM_mve_type_float32x4_t]: __arm_vuninitializedq_f32 ());}) + +#define vreinterpretq_f16(p0) __arm_vreinterpretq_f16(p0) +#define __arm_vreinterpretq_f16(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_f16_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_f16_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_f16_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_f16_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_f16_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_f16_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_f16_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_f16_u64 (__ARM_mve_coerce(__p0, uint64x2_t)), \ + int (*)[__ARM_mve_type_float32x4_t]: __arm_vreinterpretq_f16_f32 (__ARM_mve_coerce(__p0, float32x4_t)));}) + +#define vreinterpretq_f32(p0) __arm_vreinterpretq_f32(p0) +#define __arm_vreinterpretq_f32(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_f32_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_f32_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_f32_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_f32_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_f32_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_f32_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_f32_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_f32_u64 (__ARM_mve_coerce(__p0, uint64x2_t)), \ + int (*)[__ARM_mve_type_float16x8_t]: __arm_vreinterpretq_f32_f16 (__ARM_mve_coerce(__p0, float16x8_t)));}) + +#define vreinterpretq_s16(p0) __arm_vreinterpretq_s16(p0) +#define __arm_vreinterpretq_s16(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_float16x8_t]: __arm_vreinterpretq_s16_f16 (__ARM_mve_coerce(__p0, float16x8_t)), \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_s16_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_s16_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_s16_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_s16_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_s16_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_s16_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_s16_u64 (__ARM_mve_coerce(__p0, uint64x2_t)), \ + int (*)[__ARM_mve_type_float32x4_t]: __arm_vreinterpretq_s16_f32 (__ARM_mve_coerce(__p0, float32x4_t)));}) + +#define vreinterpretq_s32(p0) __arm_vreinterpretq_s32(p0) +#define __arm_vreinterpretq_s32(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_float16x8_t]: __arm_vreinterpretq_s32_f16 (__ARM_mve_coerce(__p0, float16x8_t)), \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_s32_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_s32_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_s32_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_s32_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_s32_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_s32_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_s32_u64 (__ARM_mve_coerce(__p0, uint64x2_t)), \ + int (*)[__ARM_mve_type_float32x4_t]: __arm_vreinterpretq_s32_f32 (__ARM_mve_coerce(__p0, float32x4_t)));}) + +#define vreinterpretq_s64(p0) __arm_vreinterpretq_s64(p0) +#define __arm_vreinterpretq_s64(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_float16x8_t]: __arm_vreinterpretq_s64_f16 (__ARM_mve_coerce(__p0, float16x8_t)), \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_s64_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_s64_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_s64_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_s64_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_s64_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_s64_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_s64_u64 (__ARM_mve_coerce(__p0, uint64x2_t)), \ + int (*)[__ARM_mve_type_float32x4_t]: __arm_vreinterpretq_s64_f32 (__ARM_mve_coerce(__p0, float32x4_t)));}) + +#define vreinterpretq_s8(p0) __arm_vreinterpretq_s8(p0) +#define __arm_vreinterpretq_s8(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_float16x8_t]: __arm_vreinterpretq_s8_f16 (__ARM_mve_coerce(__p0, float16x8_t)), \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_s8_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_s8_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_s8_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_s8_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_s8_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_s8_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_s8_u64 (__ARM_mve_coerce(__p0, uint64x2_t)), \ + int (*)[__ARM_mve_type_float32x4_t]: __arm_vreinterpretq_s8_f32 (__ARM_mve_coerce(__p0, float32x4_t)));}) + +#define vreinterpretq_u16(p0) __arm_vreinterpretq_u16(p0) +#define __arm_vreinterpretq_u16(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_float16x8_t]: __arm_vreinterpretq_u16_f16 (__ARM_mve_coerce(__p0, float16x8_t)), \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_u16_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_u16_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_u16_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_u16_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_u16_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_u16_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_u16_u64 (__ARM_mve_coerce(__p0, uint64x2_t)), \ + int (*)[__ARM_mve_type_float32x4_t]: __arm_vreinterpretq_u16_f32 (__ARM_mve_coerce(__p0, float32x4_t)));}) + +#define vreinterpretq_u32(p0) __arm_vreinterpretq_u32(p0) +#define __arm_vreinterpretq_u32(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_float16x8_t]: __arm_vreinterpretq_u32_f16 (__ARM_mve_coerce(__p0, float16x8_t)), \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_u32_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_u32_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_u32_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_u32_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_u32_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_u32_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_u32_u64 (__ARM_mve_coerce(__p0, uint64x2_t)), \ + int (*)[__ARM_mve_type_float32x4_t]: __arm_vreinterpretq_u32_f32 (__ARM_mve_coerce(__p0, float32x4_t)));}) + +#define vreinterpretq_u64(p0) __arm_vreinterpretq_u64(p0) +#define __arm_vreinterpretq_u64(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_float16x8_t]: __arm_vreinterpretq_u64_f16 (__ARM_mve_coerce(__p0, float16x8_t)), \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_u64_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_u64_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_u64_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_u64_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_u64_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_u64_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_u64_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_float32x4_t]: __arm_vreinterpretq_u64_f32 (__ARM_mve_coerce(__p0, float32x4_t)));}) + +#define vreinterpretq_u8(p0) __arm_vreinterpretq_u8(p0) +#define __arm_vreinterpretq_u8(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_float16x8_t]: __arm_vreinterpretq_u8_f16 (__ARM_mve_coerce(__p0, float16x8_t)), \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_u8_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_u8_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_u8_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_u8_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_u8_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_u8_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_u8_u64 (__ARM_mve_coerce(__p0, uint64x2_t)), \ + int (*)[__ARM_mve_type_float32x4_t]: __arm_vreinterpretq_u8_f32 (__ARM_mve_coerce(__p0, float32x4_t)));}) + #else /* MVE Integer. */ #define vst4q(p0,p1) __arm_vst4q(p0,p1) @@ -19925,6 +20890,106 @@ extern void *__ARM_undef; int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_s32 (__ARM_mve_coerce(__p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \ int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce(__p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t), p3));}) +#define vuninitializedq(p0) __arm_vuninitializedq(p0) +#define __arm_vuninitializedq(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vuninitializedq_s8 (), \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vuninitializedq_s16 (), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vuninitializedq_s32 (), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vuninitializedq_s64 (), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vuninitializedq_u8 (), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vuninitializedq_u16 (), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vuninitializedq_u32 (), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vuninitializedq_u64 ());}) + +#define vreinterpretq_s16(p0) __arm_vreinterpretq_s16(p0) +#define __arm_vreinterpretq_s16(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_s16_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_s16_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_s16_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_s16_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_s16_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_s16_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_s16_u64 (__ARM_mve_coerce(__p0, uint64x2_t)));}) + +#define vreinterpretq_s32(p0) __arm_vreinterpretq_s32(p0) +#define __arm_vreinterpretq_s32(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_s32_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_s32_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_s32_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_s32_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_s32_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_s32_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_s32_u64 (__ARM_mve_coerce(__p0, uint64x2_t)));}) + +#define vreinterpretq_s64(p0) __arm_vreinterpretq_s64(p0) +#define __arm_vreinterpretq_s64(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_s64_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_s64_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_s64_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_s64_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_s64_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_s64_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_s64_u64 (__ARM_mve_coerce(__p0, uint64x2_t)));}) + +#define vreinterpretq_s8(p0) __arm_vreinterpretq_s8(p0) +#define __arm_vreinterpretq_s8(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_s8_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_s8_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_s8_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_s8_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_s8_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_s8_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_s8_u64 (__ARM_mve_coerce(__p0, uint64x2_t)));}) + +#define vreinterpretq_u16(p0) __arm_vreinterpretq_u16(p0) +#define __arm_vreinterpretq_u16(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_u16_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_u16_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_u16_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_u16_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_u16_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_u16_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_u16_u64 (__ARM_mve_coerce(__p0, uint64x2_t)));}) + +#define vreinterpretq_u32(p0) __arm_vreinterpretq_u32(p0) +#define __arm_vreinterpretq_u32(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_u32_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_u32_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_u32_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_u32_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_u32_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_u32_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_u32_u64 (__ARM_mve_coerce(__p0, uint64x2_t)));}) + +#define vreinterpretq_u64(p0) __arm_vreinterpretq_u64(p0) +#define __arm_vreinterpretq_u64(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_u64_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_u64_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_u64_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_uint8x16_t]: __arm_vreinterpretq_u64_u8 (__ARM_mve_coerce(__p0, uint8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_u64_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_u64_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_u64_s64 (__ARM_mve_coerce(__p0, int64x2_t)));}) + +#define vreinterpretq_u8(p0) __arm_vreinterpretq_u8(p0) +#define __arm_vreinterpretq_u8(p0) ({ __typeof(p0) __p0 = (p0); \ + _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \ + int (*)[__ARM_mve_type_int16x8_t]: __arm_vreinterpretq_u8_s16 (__ARM_mve_coerce(__p0, int16x8_t)), \ + int (*)[__ARM_mve_type_int32x4_t]: __arm_vreinterpretq_u8_s32 (__ARM_mve_coerce(__p0, int32x4_t)), \ + int (*)[__ARM_mve_type_int64x2_t]: __arm_vreinterpretq_u8_s64 (__ARM_mve_coerce(__p0, int64x2_t)), \ + int (*)[__ARM_mve_type_int8x16_t]: __arm_vreinterpretq_u8_s8 (__ARM_mve_coerce(__p0, int8x16_t)), \ + int (*)[__ARM_mve_type_uint16x8_t]: __arm_vreinterpretq_u8_u16 (__ARM_mve_coerce(__p0, uint16x8_t)), \ + int (*)[__ARM_mve_type_uint32x4_t]: __arm_vreinterpretq_u8_u32 (__ARM_mve_coerce(__p0, uint32x4_t)), \ + int (*)[__ARM_mve_type_uint64x2_t]: __arm_vreinterpretq_u8_u64 (__ARM_mve_coerce(__p0, uint64x2_t)));}) + #endif /* MVE Integer. */ #define vldrdq_gather_offset(p0,p1) __arm_vldrdq_gather_offset(p0,p1) diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c new file mode 100644 index 0000000000000000000000000000000000000000..bc40440296522a96a7c6fb0a7732c735ea37b266 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c @@ -0,0 +1,45 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O2" } */ + +#include "arm_mve.h" +int8x16_t value1; +int64x2_t value2; +int32x4_t value3; +uint8x16_t value4; +uint16x8_t value5; +uint64x2_t value6; +uint32x4_t value7; +int16x8_t value8; +float32x4_t value9; + +float16x8_t +foo () +{ + float16x8_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_f16 (vreinterpretq_f16_s8 (value1), vreinterpretq_f16_s64 (value2)); + r2 = vaddq_f16 (r1, vreinterpretq_f16_s32 (value3)); + r3 = vaddq_f16 (r2, vreinterpretq_f16_u8 (value4)); + r4 = vaddq_f16 (r3, vreinterpretq_f16_u16 (value5)); + r5 = vaddq_f16 (r4, vreinterpretq_f16_u64 (value6)); + r6 = vaddq_f16 (r5, vreinterpretq_f16_u32 (value7)); + r7 = vaddq_f16 (r6, vreinterpretq_f16_s16 (value8)); + return vaddq_f16 (r7, vreinterpretq_f16_f32 (value9)); +} + +float16x8_t +foo1 () +{ + float16x8_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_f16 (vreinterpretq_f16 (value1), vreinterpretq_f16 (value2)); + r2 = vaddq_f16 (r1, vreinterpretq_f16 (value3)); + r3 = vaddq_f16 (r2, vreinterpretq_f16 (value4)); + r4 = vaddq_f16 (r3, vreinterpretq_f16 (value5)); + r5 = vaddq_f16 (r4, vreinterpretq_f16 (value6)); + r6 = vaddq_f16 (r5, vreinterpretq_f16 (value7)); + r7 = vaddq_f16 (r6, vreinterpretq_f16 (value8)); + return vaddq_f16 (r7, vreinterpretq_f16 (value9)); +} + +/* { dg-final { scan-assembler-times "vadd.f16" 8 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c new file mode 100644 index 0000000000000000000000000000000000000000..d30818b0f3d896f7e9f30227b8578f90d2731209 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c @@ -0,0 +1,45 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O2" } */ + +#include "arm_mve.h" +int16x8_t value1; +int64x2_t value2; +int8x16_t value3; +uint8x16_t value4; +uint16x8_t value5; +uint64x2_t value6; +uint32x4_t value7; +float16x8_t value8; +int32x4_t value9; + +float32x4_t +foo () +{ + float32x4_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_f32 (vreinterpretq_f32_s16 (value1), vreinterpretq_f32_s64 (value2)); + r2 = vaddq_f32 (r1, vreinterpretq_f32_s8 (value3)); + r3 = vaddq_f32 (r2, vreinterpretq_f32_u8 (value4)); + r4 = vaddq_f32 (r3, vreinterpretq_f32_u16 (value5)); + r5 = vaddq_f32 (r4, vreinterpretq_f32_u64 (value6)); + r6 = vaddq_f32 (r5, vreinterpretq_f32_u32 (value7)); + r7 = vaddq_f32 (r6, vreinterpretq_f32_f16 (value8)); + return vaddq_f32 (r7, vreinterpretq_f32_s32 (value9)); +} + +float32x4_t +foo1 () +{ + float32x4_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_f32 (vreinterpretq_f32 (value1), vreinterpretq_f32 (value2)); + r2 = vaddq_f32 (r1, vreinterpretq_f32 (value3)); + r3 = vaddq_f32 (r2, vreinterpretq_f32 (value4)); + r4 = vaddq_f32 (r3, vreinterpretq_f32 (value5)); + r5 = vaddq_f32 (r4, vreinterpretq_f32 (value6)); + r6 = vaddq_f32 (r5, vreinterpretq_f32 (value7)); + r7 = vaddq_f32 (r6, vreinterpretq_f32 (value8)); + return vaddq_f32 (r7, vreinterpretq_f32 (value9)); +} + +/* { dg-final { scan-assembler-times "vadd.f32" 8 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c new file mode 100644 index 0000000000000000000000000000000000000000..627a9d8de7c7ac850c3b9f1049057264d908b34d --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c @@ -0,0 +1,45 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O2" } */ + +#include "arm_mve.h" +int8x16_t value1; +int64x2_t value2; +int32x4_t value3; +uint8x16_t value4; +uint16x8_t value5; +uint64x2_t value6; +uint32x4_t value7; +float16x8_t value8; +float32x4_t value9; + +int16x8_t +foo () +{ + int16x8_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_s16 (vreinterpretq_s16_s8 (value1), vreinterpretq_s16_s64 (value2)); + r2 = vaddq_s16 (r1, vreinterpretq_s16_s32 (value3)); + r3 = vaddq_s16 (r2, vreinterpretq_s16_u8 (value4)); + r4 = vaddq_s16 (r3, vreinterpretq_s16_u16 (value5)); + r5 = vaddq_s16 (r4, vreinterpretq_s16_u64 (value6)); + r6 = vaddq_s16 (r5, vreinterpretq_s16_u32 (value7)); + r7 = vaddq_s16 (r6, vreinterpretq_s16_f16 (value8)); + return vaddq_s16 (r7, vreinterpretq_s16_f32 (value9)); +} + +int16x8_t +foo1 () +{ + int16x8_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_s16 (vreinterpretq_s16 (value1), vreinterpretq_s16 (value2)); + r2 = vaddq_s16 (r1, vreinterpretq_s16 (value3)); + r3 = vaddq_s16 (r2, vreinterpretq_s16 (value4)); + r4 = vaddq_s16 (r3, vreinterpretq_s16 (value5)); + r5 = vaddq_s16 (r4, vreinterpretq_s16 (value6)); + r6 = vaddq_s16 (r5, vreinterpretq_s16 (value7)); + r7 = vaddq_s16 (r6, vreinterpretq_s16 (value8)); + return vaddq_s16 (r7, vreinterpretq_s16 (value9)); +} + +/* { dg-final { scan-assembler-times "vadd.i16" 8 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s32.c new file mode 100644 index 0000000000000000000000000000000000000000..1b905e1095348e1e4376e0ef695f4b607a29f8b0 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s32.c @@ -0,0 +1,45 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O2" } */ + +#include "arm_mve.h" +int16x8_t value1; +int64x2_t value2; +int8x16_t value3; +uint8x16_t value4; +uint16x8_t value5; +uint64x2_t value6; +uint32x4_t value7; +float16x8_t value8; +float32x4_t value9; + +int32x4_t +foo () +{ + int32x4_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_s32 (vreinterpretq_s32_s16 (value1), vreinterpretq_s32_s64 (value2)); + r2 = vaddq_s32 (r1, vreinterpretq_s32_s8 (value3)); + r3 = vaddq_s32 (r2, vreinterpretq_s32_u8 (value4)); + r4 = vaddq_s32 (r3, vreinterpretq_s32_u16 (value5)); + r5 = vaddq_s32 (r4, vreinterpretq_s32_u64 (value6)); + r6 = vaddq_s32 (r5, vreinterpretq_s32_u32 (value7)); + r7 = vaddq_s32 (r6, vreinterpretq_s32_f16 (value8)); + return vaddq_s32 (r7, vreinterpretq_s32_f32 (value9)); +} + +int32x4_t +foo1 () +{ + int32x4_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_s32 (vreinterpretq_s32 (value1), vreinterpretq_s32 (value2)); + r2 = vaddq_s32 (r1, vreinterpretq_s32 (value3)); + r3 = vaddq_s32 (r2, vreinterpretq_s32 (value4)); + r4 = vaddq_s32 (r3, vreinterpretq_s32 (value5)); + r5 = vaddq_s32 (r4, vreinterpretq_s32 (value6)); + r6 = vaddq_s32 (r5, vreinterpretq_s32 (value7)); + r7 = vaddq_s32 (r6, vreinterpretq_s32 (value8)); + return vaddq_s32 (r7, vreinterpretq_s32 (value9)); +} + +/* { dg-final { scan-assembler-times "vadd.i32" 8 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s64.c new file mode 100644 index 0000000000000000000000000000000000000000..3a9fa0b414c202c77890e0cf061102b19fb7e623 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s64.c @@ -0,0 +1,46 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O2" } */ + +#include "arm_mve.h" +int16x8_t value1; +int8x16_t value2; +int32x4_t value3; +uint8x16_t value4; +uint16x8_t value5; +uint64x2_t value6; +uint32x4_t value7; +float16x8_t value8; +float32x4_t value9; + +int64x2_t +foo (mve_pred16_t __p) +{ + int64x2_t r1,r2,r3,r4,r5,r6,r7; + r1 = vpselq_s64 (vreinterpretq_s64_s16 (value1), vreinterpretq_s64_s8 (value2), + __p); + r2 = vpselq_s64 (r1, vreinterpretq_s64_s32 (value3), __p); + r3 = vpselq_s64 (r2, vreinterpretq_s64_u8 (value4), __p); + r4 = vpselq_s64 (r3, vreinterpretq_s64_u16 (value5), __p); + r5 = vpselq_s64 (r4, vreinterpretq_s64_u64 (value6), __p); + r6 = vpselq_s64 (r5, vreinterpretq_s64_u32 (value7), __p); + r7 = vpselq_s64 (r6, vreinterpretq_s64_f16 (value8), __p); + return vpselq_s64 (r7, vreinterpretq_s64_f32 (value9), __p); +} + +int64x2_t +foo1 (mve_pred16_t __p) +{ + int64x2_t r1,r2,r3,r4,r5,r6,r7; + r1 = vpselq_s64 (vreinterpretq_s64 (value1), vreinterpretq_s64 (value2), __p); + r2 = vpselq_s64 (r1, vreinterpretq_s64 (value3), __p); + r3 = vpselq_s64 (r2, vreinterpretq_s64 (value4), __p); + r4 = vpselq_s64 (r3, vreinterpretq_s64 (value5), __p); + r5 = vpselq_s64 (r4, vreinterpretq_s64 (value6), __p); + r6 = vpselq_s64 (r5, vreinterpretq_s64 (value7), __p); + r7 = vpselq_s64 (r6, vreinterpretq_s64 (value8), __p); + return vpselq_s64 (r7, vreinterpretq_s64 (value9), __p); +} + +/* { dg-final { scan-assembler-times "vpsel" 8 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s8.c new file mode 100644 index 0000000000000000000000000000000000000000..522a935c72f81bad63bdf2f56db135fc4261c766 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s8.c @@ -0,0 +1,45 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O2" } */ + +#include "arm_mve.h" +int16x8_t value1; +int64x2_t value2; +int32x4_t value3; +uint8x16_t value4; +uint16x8_t value5; +uint64x2_t value6; +uint32x4_t value7; +float16x8_t value8; +float32x4_t value9; + +int8x16_t +foo () +{ + int8x16_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_s8 (vreinterpretq_s8_s16 (value1), vreinterpretq_s8_s64 (value2)); + r2 = vaddq_s8 (r1, vreinterpretq_s8_s32 (value3)); + r3 = vaddq_s8 (r2, vreinterpretq_s8_u8 (value4)); + r4 = vaddq_s8 (r3, vreinterpretq_s8_u16 (value5)); + r5 = vaddq_s8 (r4, vreinterpretq_s8_u64 (value6)); + r6 = vaddq_s8 (r5, vreinterpretq_s8_u32 (value7)); + r7 = vaddq_s8 (r6, vreinterpretq_s8_f16 (value8)); + return vaddq_s8 (r7, vreinterpretq_s8_f32 (value9)); +} + +int8x16_t +foo1 () +{ + int8x16_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_s8 (vreinterpretq_s8 (value1), vreinterpretq_s8 (value2)); + r2 = vaddq_s8 (r1, vreinterpretq_s8 (value3)); + r3 = vaddq_s8 (r2, vreinterpretq_s8 (value4)); + r4 = vaddq_s8 (r3, vreinterpretq_s8 (value5)); + r5 = vaddq_s8 (r4, vreinterpretq_s8 (value6)); + r6 = vaddq_s8 (r5, vreinterpretq_s8 (value7)); + r7 = vaddq_s8 (r6, vreinterpretq_s8 (value8)); + return vaddq_s8 (r7, vreinterpretq_s8 (value9)); +} + +/* { dg-final { scan-assembler-times "vadd.i8" 8 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u16.c new file mode 100644 index 0000000000000000000000000000000000000000..402c0ef61df85be4115f14fdf195548ecd15b25f --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u16.c @@ -0,0 +1,45 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O2" } */ + +#include "arm_mve.h" +int8x16_t value1; +int64x2_t value2; +int32x4_t value3; +uint8x16_t value4; +int16x8_t value5; +uint64x2_t value6; +uint32x4_t value7; +float16x8_t value8; +float32x4_t value9; + +uint16x8_t +foo () +{ + uint16x8_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_u16 (vreinterpretq_u16_s8 (value1), vreinterpretq_u16_s64 (value2)); + r2 = vaddq_u16 (r1, vreinterpretq_u16_s32 (value3)); + r3 = vaddq_u16 (r2, vreinterpretq_u16_u8 (value4)); + r4 = vaddq_u16 (r3, vreinterpretq_u16_s16 (value5)); + r5 = vaddq_u16 (r4, vreinterpretq_u16_u64 (value6)); + r6 = vaddq_u16 (r5, vreinterpretq_u16_u32 (value7)); + r7 = vaddq_u16 (r6, vreinterpretq_u16_f16 (value8)); + return vaddq_u16 (r7, vreinterpretq_u16_f32 (value9)); +} + +uint16x8_t +foo1 () +{ + uint16x8_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_u16 (vreinterpretq_u16 (value1), vreinterpretq_u16 (value2)); + r2 = vaddq_u16 (r1, vreinterpretq_u16 (value3)); + r3 = vaddq_u16 (r2, vreinterpretq_u16 (value4)); + r4 = vaddq_u16 (r3, vreinterpretq_u16 (value5)); + r5 = vaddq_u16 (r4, vreinterpretq_u16 (value6)); + r6 = vaddq_u16 (r5, vreinterpretq_u16 (value7)); + r7 = vaddq_u16 (r6, vreinterpretq_u16 (value8)); + return vaddq_u16 (r7, vreinterpretq_u16 (value9)); +} + +/* { dg-final { scan-assembler-times "vadd.i16" 8 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u32.c new file mode 100644 index 0000000000000000000000000000000000000000..985d776831e7235002a62e88ba9bdf128e31bfd9 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u32.c @@ -0,0 +1,45 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O2" } */ + +#include "arm_mve.h" +int16x8_t value1; +int64x2_t value2; +int8x16_t value3; +uint8x16_t value4; +uint16x8_t value5; +uint64x2_t value6; +int32x4_t value7; +float16x8_t value8; +float32x4_t value9; + +uint32x4_t +foo () +{ + uint32x4_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_u32 (vreinterpretq_u32_s16 (value1), vreinterpretq_u32_s64 (value2)); + r2 = vaddq_u32 (r1, vreinterpretq_u32_s8 (value3)); + r3 = vaddq_u32 (r2, vreinterpretq_u32_u8 (value4)); + r4 = vaddq_u32 (r3, vreinterpretq_u32_u16 (value5)); + r5 = vaddq_u32 (r4, vreinterpretq_u32_u64 (value6)); + r6 = vaddq_u32 (r5, vreinterpretq_u32_s32 (value7)); + r7 = vaddq_u32 (r6, vreinterpretq_u32_f16 (value8)); + return vaddq_u32 (r7, vreinterpretq_u32_f32 (value9)); +} + +uint32x4_t +foo1 () +{ + uint32x4_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_u32 (vreinterpretq_u32 (value1), vreinterpretq_u32 (value2)); + r2 = vaddq_u32 (r1, vreinterpretq_u32 (value3)); + r3 = vaddq_u32 (r2, vreinterpretq_u32 (value4)); + r4 = vaddq_u32 (r3, vreinterpretq_u32 (value5)); + r5 = vaddq_u32 (r4, vreinterpretq_u32 (value6)); + r6 = vaddq_u32 (r5, vreinterpretq_u32 (value7)); + r7 = vaddq_u32 (r6, vreinterpretq_u32 (value8)); + return vaddq_u32 (r7, vreinterpretq_u32 (value9)); +} + +/* { dg-final { scan-assembler-times "vadd.i32" 8 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u64.c new file mode 100644 index 0000000000000000000000000000000000000000..e77d253a993d13bd17b107fd68f0149c7714742a --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u64.c @@ -0,0 +1,46 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O2" } */ + +#include "arm_mve.h" +int16x8_t value1; +int8x16_t value2; +int32x4_t value3; +uint8x16_t value4; +uint16x8_t value5; +int64x2_t value6; +uint32x4_t value7; +float16x8_t value8; +float32x4_t value9; + +uint64x2_t +foo (mve_pred16_t __p) +{ + uint64x2_t r1,r2,r3,r4,r5,r6,r7; + r1 = vpselq_u64 (vreinterpretq_u64_s16 (value1), vreinterpretq_u64_s8 (value2), + __p); + r2 = vpselq_u64 (r1, vreinterpretq_u64_s32 (value3), __p); + r3 = vpselq_u64 (r2, vreinterpretq_u64_u8 (value4), __p); + r4 = vpselq_u64 (r3, vreinterpretq_u64_u16 (value5), __p); + r5 = vpselq_u64 (r4, vreinterpretq_u64_s64 (value6), __p); + r6 = vpselq_u64 (r5, vreinterpretq_u64_u32 (value7), __p); + r7 = vpselq_u64 (r6, vreinterpretq_u64_f16 (value8), __p); + return vpselq_u64 (r7, vreinterpretq_u64_f32 (value9), __p); +} + +uint64x2_t +foo1 (mve_pred16_t __p) +{ + uint64x2_t r1,r2,r3,r4,r5,r6,r7; + r1 = vpselq_u64 (vreinterpretq_u64 (value1), vreinterpretq_u64 (value2), __p); + r2 = vpselq_u64 (r1, vreinterpretq_u64 (value3), __p); + r3 = vpselq_u64 (r2, vreinterpretq_u64 (value4), __p); + r4 = vpselq_u64 (r3, vreinterpretq_u64 (value5), __p); + r5 = vpselq_u64 (r4, vreinterpretq_u64 (value6), __p); + r6 = vpselq_u64 (r5, vreinterpretq_u64 (value7), __p); + r7 = vpselq_u64 (r6, vreinterpretq_u64 (value8), __p); + return vpselq_u64 (r7, vreinterpretq_u64 (value9), __p); +} + +/* { dg-final { scan-assembler-times "vpsel" 8 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u8.c new file mode 100644 index 0000000000000000000000000000000000000000..9075dea900899dd599df565aa4f5a7c0c9be2a2d --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_u8.c @@ -0,0 +1,45 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O2" } */ + +#include "arm_mve.h" +int16x8_t value1; +int64x2_t value2; +int32x4_t value3; +int8x16_t value4; +uint16x8_t value5; +uint64x2_t value6; +uint32x4_t value7; +float16x8_t value8; +float32x4_t value9; + +uint8x16_t +foo () +{ + uint8x16_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_u8 (vreinterpretq_u8_s16 (value1), vreinterpretq_u8_s64 (value2)); + r2 = vaddq_u8 (r1, vreinterpretq_u8_s32 (value3)); + r3 = vaddq_u8 (r2, vreinterpretq_u8_s8 (value4)); + r4 = vaddq_u8 (r3, vreinterpretq_u8_u16 (value5)); + r5 = vaddq_u8 (r4, vreinterpretq_u8_u64 (value6)); + r6 = vaddq_u8 (r5, vreinterpretq_u8_u32 (value7)); + r7 = vaddq_u8 (r6, vreinterpretq_u8_f16 (value8)); + return vaddq_u8 (r7, vreinterpretq_u8_f32 (value9)); +} + +uint8x16_t +foo1 () +{ + uint8x16_t r1,r2,r3,r4,r5,r6,r7; + r1 = vaddq_u8 (vreinterpretq_u8 (value1), vreinterpretq_u8 (value2)); + r2 = vaddq_u8 (r1, vreinterpretq_u8 (value3)); + r3 = vaddq_u8 (r2, vreinterpretq_u8 (value4)); + r4 = vaddq_u8 (r3, vreinterpretq_u8 (value5)); + r5 = vaddq_u8 (r4, vreinterpretq_u8 (value6)); + r6 = vaddq_u8 (r5, vreinterpretq_u8 (value7)); + r7 = vaddq_u8 (r6, vreinterpretq_u8 (value8)); + return vaddq_u8 (r7, vreinterpretq_u8 (value9)); +} + +/* { dg-final { scan-assembler-times "vadd.i8" 8 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float.c new file mode 100644 index 0000000000000000000000000000000000000000..761d569c2c0cd2363f80b2abc257b53c37b68697 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O0" } */ + +#include "arm_mve.h" + +void +foo () +{ + float16x8_t fa; + float32x4_t fb; + fa = vuninitializedq_f16 (); + fb = vuninitializedq_f32 (); +} + +/* { dg-final { scan-assembler-times "vstrb.8" 4 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c new file mode 100644 index 0000000000000000000000000000000000000000..173b978488a540e5502cc05efb97a5ea008ccf3b --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ +/* { dg-add-options arm_v8_1m_mve_fp } */ +/* { dg-additional-options "-O0" } */ + +#include "arm_mve.h" + +void +foo () +{ + float16x8_t fa, faa; + float32x4_t fb, fbb; + fa = vuninitializedq (faa); + fb = vuninitializedq (fbb); +} + +/* { dg-final { scan-assembler-times "vstrb.8" 4444} */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int.c new file mode 100644 index 0000000000000000000000000000000000000000..2969f331d80a0fa5f56a6f76077900db2af9a8e2 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_ok } */ +/* { dg-add-options arm_v8_1m_mve } */ +/* { dg-additional-options "-O0" } */ + +#include "arm_mve.h" + +void +foo () +{ + int8x16_t a; + int16x8_t b; + int32x4_t c; + int64x2_t d; + uint8x16_t ua; + uint16x8_t ub; + uint32x4_t uc; + uint64x2_t ud; + a = vuninitializedq_s8 (); + b = vuninitializedq_s16 (); + c = vuninitializedq_s32 (); + d = vuninitializedq_s64 (); + ua = vuninitializedq_u8 (); + ub = vuninitializedq_u16 (); + uc = vuninitializedq_u32 (); + ud = vuninitializedq_u64 (); +} + +/* { dg-final { scan-assembler-times "vstrb.8" 16 } } */ diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c new file mode 100644 index 0000000000000000000000000000000000000000..555019011a38842911177aa645516cee80c4abb0 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_v8_1m_mve_ok } */ +/* { dg-add-options arm_v8_1m_mve } */ +/* { dg-additional-options "-O0" } */ + +#include "arm_mve.h" + +void +foo () +{ + int8x16_t a, aa; + int16x8_t b, bb; + int32x4_t c, cc; + int64x2_t d, dd; + uint8x16_t ua, uaa; + uint16x8_t ub, ubb; + uint32x4_t uc, ucc; + uint64x2_t ud, udd; + a = vuninitializedq (aa); + b = vuninitializedq (bb); + c = vuninitializedq (cc); + d = vuninitializedq (dd); + ua = vuninitializedq (uaa); + ub = vuninitializedq (ubb); + uc = vuninitializedq (ucc); + ud = vuninitializedq (udd); +} + +/* { dg-final { scan-assembler-times "vstrb.8" 24 } } */