From patchwork Tue Apr 18 13:45:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Lyon X-Patchwork-Id: 84856 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2866536vqo; Tue, 18 Apr 2023 06:51:16 -0700 (PDT) X-Google-Smtp-Source: AKy350a5XYjZwTNOiDu6C/NJi6LI6qsgJRQSeBbMIDCsIpKoUFhk+aqTKJUd7zcBtMnHtYLw288e X-Received: by 2002:a17:906:2c14:b0:92b:e1ff:be30 with SMTP id e20-20020a1709062c1400b0092be1ffbe30mr10244243ejh.4.1681825876310; Tue, 18 Apr 2023 06:51:16 -0700 (PDT) Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id up39-20020a170907cca700b0094f564d295bsi5317576ejc.197.2023.04.18.06.51.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Apr 2023 06:51:16 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=JxeknI9L; arc=fail (signature failed); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4A8F538768A0 for ; Tue, 18 Apr 2023 13:49:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4A8F538768A0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1681825763; bh=Jr3nnJto0R2CNwKjaAI4+pKiXvseY8TCJwlfdVPmR94=; h=To:CC:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=JxeknI9L9eC/G5plBaNdg1iEIuBn7aHXTcgN/gMEnWtfmG2bockeP4j6IRy533QfF YgTPy1/l1iHz260Dgxb4pFUPN9omcfoo4w7FUeexpjCPH/1tZz1mU3rWe9lBEPCKGM BOtADbJNxtzBBMtLJM2GTihUQG8my4A4o6cG2ejU= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2054.outbound.protection.outlook.com [40.107.8.54]) by sourceware.org (Postfix) with ESMTPS id DE0A3385694B for ; Tue, 18 Apr 2023 13:47:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DE0A3385694B Received: from DB9PR06CA0021.eurprd06.prod.outlook.com (2603:10a6:10:1db::26) by DU0PR08MB9725.eurprd08.prod.outlook.com (2603:10a6:10:447::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.30; Tue, 18 Apr 2023 13:47:33 +0000 Received: from DBAEUR03FT004.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:1db:cafe::f5) by DB9PR06CA0021.outlook.office365.com (2603:10a6:10:1db::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.47 via Frontend Transport; Tue, 18 Apr 2023 13:47:33 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT004.mail.protection.outlook.com (100.127.142.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.20 via Frontend Transport; Tue, 18 Apr 2023 13:47:32 +0000 Received: ("Tessian outbound 3570909035da:v136"); Tue, 18 Apr 2023 13:47:32 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: d2350143ff459a54 X-CR-MTA-TID: 64aa7808 Received: from 8b7a7f2d2d41.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 7BE6C8B9-7019-4729-86CF-07D8B97A7C86.1; Tue, 18 Apr 2023 13:47:26 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 8b7a7f2d2d41.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 18 Apr 2023 13:47:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nvgC6leUuyso3ONnHXkvIA9WVqW2jBk0dA/7IFFWYxd5rqSQQayATqU+elb9yPEA80h8EY52QGiqZ3un1PZvNzg7L+qi4LCYiZRx7oGbSnIC0ig5U0IwfnXH+SJHREU9yiadbh/pYZStk+exuo73l3A4D/dZskRCH2ZwlvsbGRwCoZbSMg8590stF+A2yMDA5VQADeQRSiBue9WolBEb5v5ysZGQxEqPh0mygfEYJAATKWcV/jIH/Ab7husQygA0gQljHhpQ5hRwRsA6zpweQznGAoExTHNg7tGmAJ342nfGQXgu0fgQ/pk4Wh4l96coKwEOTMATlImXPPXXVwi9XQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Jr3nnJto0R2CNwKjaAI4+pKiXvseY8TCJwlfdVPmR94=; b=U9BmCoyY9NuCAgY44kf26bm0HEdz5phQLjIP+rCoTpGIxAyyXnJOuo1+YO1MyWF+mHQr7M68KfRScL0M6ivysUXVTIEsu5N9YT3wMbjZldgJnQVLjD5QRLIawsnwm1ZnGW0+PlzlDzq58+nXMip+KlWQRzWuPpGhKdfnhxDdVvrs4qrnXJVNMcrr3BYB8oL7x0l5pgpQge/moFYa+5bXIBgcBwevPmaRJMPQQC661ySuJkSiVuALFiIQiA1VpAofRHuVR4/rgh3f2772npF3t0rE/Tdw4NJT8QysDoA0cYCnWyV6UTyzEVCmze2dEo+OBRWaO9UFoa991MQ9aNtr2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none Received: from AS9PR04CA0046.eurprd04.prod.outlook.com (2603:10a6:20b:46a::26) by DB4PR08MB8151.eurprd08.prod.outlook.com (2603:10a6:10:381::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Tue, 18 Apr 2023 13:47:10 +0000 Received: from AM7EUR03FT056.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:46a:cafe::96) by AS9PR04CA0046.outlook.office365.com (2603:10a6:20b:46a::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.47 via Frontend Transport; Tue, 18 Apr 2023 13:47:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (40.67.248.234) by AM7EUR03FT056.mail.protection.outlook.com (100.127.140.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6319.20 via Frontend Transport; Tue, 18 Apr 2023 13:47:10 +0000 Received: from AZ-NEU-EX03.Arm.com (10.251.24.31) by AZ-NEU-EX03.Arm.com (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 18 Apr 2023 13:47:06 +0000 Received: from e129018.arm.com (10.57.54.117) by mail.arm.com (10.251.24.31) with Microsoft SMTP Server id 15.1.2507.23 via Frontend Transport; Tue, 18 Apr 2023 13:47:06 +0000 To: , , , CC: Christophe Lyon Subject: [PATCH 04/22] arm: [MVE intrinsics] Rework vuninitialized Date: Tue, 18 Apr 2023 15:45:50 +0200 Message-ID: <20230418134608.244751-5-christophe.lyon@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230418134608.244751-1-christophe.lyon@arm.com> References: <20230418134608.244751-1-christophe.lyon@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM7EUR03FT056:EE_|DB4PR08MB8151:EE_|DBAEUR03FT004:EE_|DU0PR08MB9725:EE_ X-MS-Office365-Filtering-Correlation-Id: 113003b4-a0d0-4f32-6d98-08db401375ed x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: g3fH3zsGeElyJb5La5mc8Iupv9AHVGwsEXtXE9v9gYqTw4E0qVKEh3Gh5maHwXV6rTmbpgc/iTqX3keju+MPXLhvnFERaXDxvRTkpahnopPfoeUxXRjS0nRAngmZY8sjLbon1/g7zO9XvlI/4tCkhEzs5IdAq2zrfAdA+hAiEwJ0ZQOBxugOV9Fl/wCDC1YfRDAWp6aA+bOTWlXbt65aQtGMhMCKiKu9X6LzqcbyvBblWZnbgUU3wlz3Nkd9blZL1j726SdmMO02wvCnFLQhPneLXxia0MAiAZccoNVW6tTxfj2zruIYsyAspAcvkLjMnJf3k2azSeC7giGUnFTSWXS8ADhc2p/9V5jyMjp2BckpCpmfeHTVRdNDeYaAEb9cTUZ2SIFU8OymyNbly0dkb/RPpXdI7nU3NW+fEmdS//Wyp0OFygB+r6dVRIf4Sf0RX1AyjP8C9RzRIRcRDpI56S2NMLTSIBYpFu9Aoi1z2avjLmXgSOwOepPh6z2hlKRCtaDeYGx36UVEXBmLf7JdM+x5lszO87WurJZCa3tsr2vLI+04CburFZOcJ9mE2Jx7MeyKQsj/Suu6eu+kB44weid+ZdCsTciDeVkKHUPxAkTn071iB6NgjnHIc0LYFCy8h3fnQd5mX0dcd3hmp+C9nRu5ewtyKHXpBkm42RZVl22PDNugTkLNGLfk+d3YshZW4/YEH+YznobbYp32lOgBng== X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230028)(4636009)(396003)(39850400004)(376002)(136003)(346002)(451199021)(46966006)(36840700001)(36756003)(82310400005)(86362001)(30864003)(2906002)(40480700001)(7696005)(2616005)(6666004)(186003)(36860700001)(47076005)(336012)(83380400001)(426003)(1076003)(26005)(316002)(4326008)(478600001)(70586007)(70206006)(81166007)(41300700001)(356005)(82740400003)(6636002)(110136005)(5660300002)(44832011)(8936002)(8676002)(36900700001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB8151 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT004.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 08ef4b5e-db62-452a-c7c0-08db40136851 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pd0HzjXGbLXzD0oRa0dnB2S5qOnMAAlMhxvn3Vuel/tZFJCj77fTcQxe7sdaDLXgw+r8wppim88rEsSQAavk+TFkP4L5oSehip5vI8U/fJfbsLddyb5gt/NNk4wAroXBNqQ+n1MBo3z2jEtvIec4cpO58P43DWNf7tzZzl3bafx9ZZ4IJJwfrfpmiMUint0c/SajFLc0j/8sPZvue0lvlg9iQChF6DElY7C+fgs/IRwVp4BzHMRuUY2E5vOFiWE7clew+HqCqRZWD+LEn3KCEWlYp90BFQBfscKNUEbAfQ1DSXtYBLm+AL8nsbZ2Za/R/jAPa1lSbqBciT3bl33B+/hHVRHPxlSetWCkje4EfQY7IPBrSU96saDlA/UhdQrTOTs5S7X9JALEdfPAuGrnDC7eOlF4rPmkXeGuWoAamAHffu9fSOntDwbYB2zUODe8PBBS5LXLcFtF8Tws0SLTPHpV+v/CYEXcU3Fo5efxo39Limavge2jkBc6vTV4jfeiZkz0+acdsN3kGx5POyT4/yRdn8VCcTGtw1Vksb7nCSa6aSG9cM+lscp/z/PM8FIVZEi1+cvSsbDimxcsB69x7DtFuLxiSJOH7oCJg1mJQ0BavSTpUIfjarqJq43MFQfxQcM+8gR7AzXcmyziKP0+xw43ZVl+PCLXs6+lKezLv0HVyqjj1TxuqtR/iaWwEgV7prsTHoS811/bdNeSzY9Oug== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230028)(4636009)(136003)(346002)(396003)(39860400002)(376002)(451199021)(46966006)(36840700001)(40470700004)(86362001)(110136005)(478600001)(83380400001)(36756003)(36860700001)(47076005)(2616005)(40480700001)(336012)(26005)(40460700003)(1076003)(82740400003)(7696005)(6666004)(186003)(82310400005)(316002)(4326008)(81166007)(30864003)(70206006)(70586007)(41300700001)(2906002)(426003)(8936002)(8676002)(44832011)(5660300002)(6636002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2023 13:47:32.9951 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 113003b4-a0d0-4f32-6d98-08db401375ed X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT004.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9725 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Christophe Lyon via Gcc-patches From: Christophe Lyon Reply-To: Christophe Lyon Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1763522249959798046?= X-GMAIL-MSGID: =?utf-8?q?1763522249959798046?= Implement vuninitialized using the new MVE builtins framework. We need to keep the overloaded __arm_vuninitializedq definitions because their resolution depends on the result type only, which is not currently supported by the resolver. 2022-09-08 Murray Steele Christophe Lyon gcc/ChangeLog: * config/arm/arm-mve-builtins-base.cc (class vuninitializedq_impl): New. * config/arm/arm-mve-builtins-base.def (vuninitializedq): New. * config/arm/arm-mve-builtins-base.h (vuninitializedq): New declaration. * config/arm/arm-mve-builtins-shapes.cc (inherent): New. * config/arm/arm-mve-builtins-shapes.h (inherent): New declaration. * config/arm/arm_mve_types.h (__arm_vuninitializedq): Move to ... * config/arm/arm_mve.h (__arm_vuninitializedq): ... here. (__arm_vuninitializedq_u8): Remove. (__arm_vuninitializedq_u16): Remove. (__arm_vuninitializedq_u32): Remove. (__arm_vuninitializedq_u64): Remove. (__arm_vuninitializedq_s8): Remove. (__arm_vuninitializedq_s16): Remove. (__arm_vuninitializedq_s32): Remove. (__arm_vuninitializedq_s64): Remove. (__arm_vuninitializedq_f16): Remove. (__arm_vuninitializedq_f32): Remove. --- gcc/config/arm/arm-mve-builtins-base.cc | 14 ++ gcc/config/arm/arm-mve-builtins-base.def | 2 + gcc/config/arm/arm-mve-builtins-base.h | 1 + gcc/config/arm/arm-mve-builtins-shapes.cc | 16 ++ gcc/config/arm/arm-mve-builtins-shapes.h | 7 +- gcc/config/arm/arm_mve.h | 73 ++++++++++ gcc/config/arm/arm_mve_types.h | 169 ---------------------- 7 files changed, 112 insertions(+), 170 deletions(-) diff --git a/gcc/config/arm/arm-mve-builtins-base.cc b/gcc/config/arm/arm-mve-builtins-base.cc index ad8d500afc6..02a3b23865c 100644 --- a/gcc/config/arm/arm-mve-builtins-base.cc +++ b/gcc/config/arm/arm-mve-builtins-base.cc @@ -65,10 +65,24 @@ class vreinterpretq_impl : public quiet } }; +/* Implements vuninitializedq_* intrinsics. */ +class vuninitializedq_impl : public quiet +{ + + rtx + expand (function_expander &e) const override + { + rtx target = e.get_reg_target (); + emit_clobber (copy_rtx (target)); + return target; + } +}; + } /* end anonymous namespace */ namespace arm_mve { FUNCTION (vreinterpretq, vreinterpretq_impl,) +FUNCTION (vuninitializedq, vuninitializedq_impl,) } /* end namespace arm_mve */ diff --git a/gcc/config/arm/arm-mve-builtins-base.def b/gcc/config/arm/arm-mve-builtins-base.def index 5c0c1b9cee7..f669642a259 100644 --- a/gcc/config/arm/arm-mve-builtins-base.def +++ b/gcc/config/arm/arm-mve-builtins-base.def @@ -19,8 +19,10 @@ #define REQUIRES_FLOAT false DEF_MVE_FUNCTION (vreinterpretq, unary_convert, reinterpret_integer, none) +DEF_MVE_FUNCTION (vuninitializedq, inherent, all_integer_with_64, none) #undef REQUIRES_FLOAT #define REQUIRES_FLOAT true DEF_MVE_FUNCTION (vreinterpretq, unary_convert, reinterpret_float, none) +DEF_MVE_FUNCTION (vuninitializedq, inherent, all_float, none) #undef REQUIRES_FLOAT diff --git a/gcc/config/arm/arm-mve-builtins-base.h b/gcc/config/arm/arm-mve-builtins-base.h index 60e7bd24eda..ec309cbe572 100644 --- a/gcc/config/arm/arm-mve-builtins-base.h +++ b/gcc/config/arm/arm-mve-builtins-base.h @@ -24,6 +24,7 @@ namespace arm_mve { namespace functions { extern const function_base *const vreinterpretq; +extern const function_base *const vuninitializedq; } /* end namespace arm_mve::functions */ } /* end namespace arm_mve */ diff --git a/gcc/config/arm/arm-mve-builtins-shapes.cc b/gcc/config/arm/arm-mve-builtins-shapes.cc index d0da0ffef91..ce476aa196e 100644 --- a/gcc/config/arm/arm-mve-builtins-shapes.cc +++ b/gcc/config/arm/arm-mve-builtins-shapes.cc @@ -338,6 +338,22 @@ struct overloaded_base : public function_shape } }; +/* [xN]_t vfoo_t0(). + + Example: vuninitializedq. + int8x16_t [__arm_]vuninitializedq_s8(void) + int8x16_t [__arm_]vuninitializedq(int8x16_t t) */ +struct inherent_def : public nonoverloaded_base +{ + void + build (function_builder &b, const function_group_info &group, + bool preserve_user_namespace) const override + { + build_all (b, "t0", group, MODE_none, preserve_user_namespace); + } +}; +SHAPE (inherent) + /* _t foo_t0[_t1](_t) where the target type must be specified explicitly but the source diff --git a/gcc/config/arm/arm-mve-builtins-shapes.h b/gcc/config/arm/arm-mve-builtins-shapes.h index 04d19a02890..a491369425c 100644 --- a/gcc/config/arm/arm-mve-builtins-shapes.h +++ b/gcc/config/arm/arm-mve-builtins-shapes.h @@ -25,11 +25,16 @@ namespace arm_mve /* The naming convention is: - to use names like "unary" etc. if the rules are somewhat generic, - especially if there are no ranges involved. */ + especially if there are no ranges involved. + + Also: + + - "inherent" means that the function takes no arguments. */ namespace shapes { + extern const function_shape *const inherent; extern const function_shape *const unary_convert; } /* end namespace arm_mve::shapes */ diff --git a/gcc/config/arm/arm_mve.h b/gcc/config/arm/arm_mve.h index 7688b5a7e53..5dc5ecef134 100644 --- a/gcc/config/arm/arm_mve.h +++ b/gcc/config/arm/arm_mve.h @@ -35382,6 +35382,79 @@ __arm_vgetq_lane (float32x4_t __a, const int __idx) } #endif /* MVE Floating point. */ + +__extension__ extern __inline uint8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq (uint8x16_t /* __v ATTRIBUTE UNUSED */) +{ + return __arm_vuninitializedq_u8 (); +} + +__extension__ extern __inline uint16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq (uint16x8_t /* __v ATTRIBUTE UNUSED */) +{ + return __arm_vuninitializedq_u16 (); +} + +__extension__ extern __inline uint32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq (uint32x4_t /* __v ATTRIBUTE UNUSED */) +{ + return __arm_vuninitializedq_u32 (); +} + +__extension__ extern __inline uint64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq (uint64x2_t /* __v ATTRIBUTE UNUSED */) +{ + return __arm_vuninitializedq_u64 (); +} + +__extension__ extern __inline int8x16_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq (int8x16_t /* __v ATTRIBUTE UNUSED */) +{ + return __arm_vuninitializedq_s8 (); +} + +__extension__ extern __inline int16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq (int16x8_t /* __v ATTRIBUTE UNUSED */) +{ + return __arm_vuninitializedq_s16 (); +} + +__extension__ extern __inline int32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq (int32x4_t /* __v ATTRIBUTE UNUSED */) +{ + return __arm_vuninitializedq_s32 (); +} + +__extension__ extern __inline int64x2_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq (int64x2_t /* __v ATTRIBUTE UNUSED */) +{ + return __arm_vuninitializedq_s64 (); +} + +#if (__ARM_FEATURE_MVE & 2) /* MVE Floating point. */ +__extension__ extern __inline float16x8_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq (float16x8_t /* __v ATTRIBUTE UNUSED */) +{ + return __arm_vuninitializedq_f16 (); +} + +__extension__ extern __inline float32x4_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__arm_vuninitializedq (float32x4_t /* __v ATTRIBUTE UNUSED */) +{ + return __arm_vuninitializedq_f32 (); +} +#endif /* __ARM_FEATURE_MVE & 2 (MVE floating point) */ + #else enum { __ARM_mve_type_fp_n = 1, diff --git a/gcc/config/arm/arm_mve_types.h b/gcc/config/arm/arm_mve_types.h index ae2591faa03..32942e51a74 100644 --- a/gcc/config/arm/arm_mve_types.h +++ b/gcc/config/arm/arm_mve_types.h @@ -29,173 +29,4 @@ typedef float float32_t; #pragma GCC arm "arm_mve_types.h" -__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; -} - -#if (__ARM_FEATURE_MVE & 2) /* MVE Floating point. */ - -__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; -} - -#endif - -#ifdef __cplusplus - -__extension__ extern __inline uint8x16_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vuninitializedq (uint8x16_t /* __v ATTRIBUTE UNUSED */) -{ - return __arm_vuninitializedq_u8 (); -} - -__extension__ extern __inline uint16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vuninitializedq (uint16x8_t /* __v ATTRIBUTE UNUSED */) -{ - return __arm_vuninitializedq_u16 (); -} - -__extension__ extern __inline uint32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vuninitializedq (uint32x4_t /* __v ATTRIBUTE UNUSED */) -{ - return __arm_vuninitializedq_u32 (); -} - -__extension__ extern __inline uint64x2_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vuninitializedq (uint64x2_t /* __v ATTRIBUTE UNUSED */) -{ - return __arm_vuninitializedq_u64 (); -} - -__extension__ extern __inline int8x16_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vuninitializedq (int8x16_t /* __v ATTRIBUTE UNUSED */) -{ - return __arm_vuninitializedq_s8 (); -} - -__extension__ extern __inline int16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vuninitializedq (int16x8_t /* __v ATTRIBUTE UNUSED */) -{ - return __arm_vuninitializedq_s16 (); -} - -__extension__ extern __inline int32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vuninitializedq (int32x4_t /* __v ATTRIBUTE UNUSED */) -{ - return __arm_vuninitializedq_s32 (); -} - -__extension__ extern __inline int64x2_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vuninitializedq (int64x2_t /* __v ATTRIBUTE UNUSED */) -{ - return __arm_vuninitializedq_s64 (); -} - -#if (__ARM_FEATURE_MVE & 2) /* MVE Floating point. */ -__extension__ extern __inline float16x8_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vuninitializedq (float16x8_t /* __v ATTRIBUTE UNUSED */) -{ - return __arm_vuninitializedq_f16 (); -} - -__extension__ extern __inline float32x4_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__arm_vuninitializedq (float32x4_t /* __v ATTRIBUTE UNUSED */) -{ - return __arm_vuninitializedq_f32 (); -} -#endif /* __ARM_FEATURE_MVE & 2 (MVE floating point) */ -#endif /* __cplusplus */ - #endif /* _GCC_ARM_MVE_H. */