From patchwork Thu Nov 9 11:25:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Carlotti X-Patchwork-Id: 1861941 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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=vjU6XwOt; 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=vjU6XwOt; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.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 ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SR05k55tNz1yQl for ; Thu, 9 Nov 2023 22:26:34 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id F186E3857009 for ; Thu, 9 Nov 2023 11:26:30 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2076.outbound.protection.outlook.com [40.107.21.76]) by sourceware.org (Postfix) with ESMTPS id 48BF63857017 for ; Thu, 9 Nov 2023 11:26:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 48BF63857017 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 48BF63857017 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.21.76 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699529178; cv=pass; b=s8GNrxQUe+KNwqwxNGFVNtDoRUKqtREMSDF+5Cf4mxx+XkjRNRQkT1gSJkS3FvJ2b2F8Y527jBAzvBi6NLMo12Qm7ao/I0mzm8kh4yYJANNYX4TatQlgOLZ1wS6go28GUw2+OLhsvdsZWx1DCn5nXw0c8vf6yTcb+0PqhCZqqWY= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699529178; c=relaxed/simple; bh=UHUX69cvwSTR0rNICagnjtW3XjZtlwfFFt3yFpqLuWA=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=xLvcYtbvVpBqYXZtAdZ+VQGbMK7qHhRXal1rR5ME+8Qb16Ok5vN8EBLkuybJszJxmcyZAo/5xjzQxlqDG3/o/7nbYMJVszz8TqIe5/XMtTY761L93dQpDwtMwxsQUvEf19msW9QScqBNHErtT6DlPk7T/uwD7OevychH5tZVJJc= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=WHck6YjlzGsRhtXF2mYOvRGixhE/XGUT/JtJH9bqYzOug65yIKtfbfq1t380orMTZ2rmHjFUMO26osRtX8gQCeWZWU8+xEUsAWiHTO+XUtDEazah0hzwhVsurIP+bvFZgPXnpLi7xt2Uhd8YWKGtlzNgeb64QAAjgaxUN0B+Fwuy6hk+h2J6KW36HEZ0gjSOo6q8LFXt5pLWrJfNaF/8vx+AconP+0KzmVxHT+az5xpPbmsksr2BR9mwpNfZIMkSatONz35qNNdnjeeKhrZZyqu2dDIgBFU5Dhv8F9EmWhTZexsVV8nkSBnx7W/Wj+i7YA+mwJwyn527w5Oscr8LYQ== ARC-Message-Signature: i=2; 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=XfF0efaFWlRivDWtHeLSuV9W30W3+0KpCpld3Dk/p7s=; b=UYSyOUEvo/1O+bIK3+LIx8fHq2+o3YEzekmHF5KDFPCwCInZQBBViSKYJ6HbDwvfpgTL1u5KGNz4kjXC1nj/bYXUzkFTl7PP7Vo/lQ80RjSU+22WKPxvOakJNvXIPvjh0IP2cwWfvKow4r3f/i4LNtBr4HAn81b3WCPhD9/CPy+19GRYT9RPtXfhPCrNszeAWrc+wLp1BpRumXKxcmSzWuJXsuRTdsIa08M/UykrrtH/mCCXVdb+Mn/sjOG1EtLGdSX2lWl0M3QG3ucdJsJjsz9JEfBXwbsqrsRSLO51L9hG3+phgrKK3yTxNEFtIKrnfEp28ZsXFSmHNQg67BNsXw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=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=XfF0efaFWlRivDWtHeLSuV9W30W3+0KpCpld3Dk/p7s=; b=vjU6XwOteKOpqKNNV5BDk+jqp1xO5akO3C5I62xiP+LPv6jZkdBhR/ZB4rYS2jokONiO8qF/+wCxsn9VmniheJWshVjH5QQ9F4/qcuB0PdedLQ/9Z82VLSOD2TP3OZFu8S6rKNTN7ZVxNii/6fbku/Z9j7Xa1C1LVTbN83iajOI= Received: from AS9PR05CA0012.eurprd05.prod.outlook.com (2603:10a6:20b:488::30) by PAXPR08MB6541.eurprd08.prod.outlook.com (2603:10a6:102:15a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.28; Thu, 9 Nov 2023 11:26:13 +0000 Received: from AMS1EPF00000049.eurprd04.prod.outlook.com (2603:10a6:20b:488:cafe::e) by AS9PR05CA0012.outlook.office365.com (2603:10a6:20b:488::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.19 via Frontend Transport; Thu, 9 Nov 2023 11:26:13 +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 AMS1EPF00000049.mail.protection.outlook.com (10.167.16.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.17 via Frontend Transport; Thu, 9 Nov 2023 11:26:11 +0000 Received: ("Tessian outbound 5d213238733f:v228"); Thu, 09 Nov 2023 11:26:11 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: fca5188d60d7d7cc X-CR-MTA-TID: 64aa7808 Received: from da4be85a6427.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 807563DF-519A-4A72-8C95-CEE0963F5E5D.1; Thu, 09 Nov 2023 11:26:05 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id da4be85a6427.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 09 Nov 2023 11:26:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FoBzmjbFzGxJd0xeQzaGH2IP/DFCTRgOXMDSSDRGpiuuH9YZV3C5CmTQKQhHUtGPoHbVWET5pvT/K2VNxjoVjS8dBmlut0gh4e5qSho7B/ejFamx9Wg/WEWtSU4AYQ5nv9qcZMByGZ9bs+IYXU+vf1Q5eavJw2GN9pK/EohjnKb75wns9MocHlFYRNtRPfUNUWCdTcMugifnvFBBbvnIHPJPScgbxIAup2xI6/JBSp8ecA5gNGcCeL8nhbZJDrzwSyPLefT5s6fj577PG98Ue6H4+2BXdPg/7oMsj9X2zmmUyVc1Dtb7yKqh1y5l0X4qU2xI70eeoFHjWzecI/BAoQ== 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=XfF0efaFWlRivDWtHeLSuV9W30W3+0KpCpld3Dk/p7s=; b=QAGmFKmlPt4Eep+Z5DDib8+V0hJtBxoTpTJeMUnEaS2qU4eMkK5PBDmYM77z5nTgLKaurUCZThyq6e+hQu+y1krxxC2O4uGBf7+a7DCQ0thul9PHd+kgIJrLkAWA1VwqIX8gWAhrH+0rpRkX/Hd30Dcr9Pr/Odp/pOxVmh0jG3PiafmaqV8OcRgzR979H3zRFajEMA6pt9/ZDy+L6t+vqHtoYnM58eLhupcEQ2xHX0w9ic5OSEfbwbhb0icyVSsztlnjGg9Zyimb49DM3Y2HinyEP6Mpr+aqMWHKOSZeFuFkwheoVUkLoumodp7vCURB8GrqKmBNqB4MC0H3gBYG0w== 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=XfF0efaFWlRivDWtHeLSuV9W30W3+0KpCpld3Dk/p7s=; b=vjU6XwOteKOpqKNNV5BDk+jqp1xO5akO3C5I62xiP+LPv6jZkdBhR/ZB4rYS2jokONiO8qF/+wCxsn9VmniheJWshVjH5QQ9F4/qcuB0PdedLQ/9Z82VLSOD2TP3OZFu8S6rKNTN7ZVxNii/6fbku/Z9j7Xa1C1LVTbN83iajOI= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) by PA4PR08MB7548.eurprd08.prod.outlook.com (2603:10a6:102:26e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.28; Thu, 9 Nov 2023 11:26:03 +0000 Received: from AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::af15:c9d7:cd8c:6da2]) by AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::af15:c9d7:cd8c:6da2%7]) with mapi id 15.20.6954.029; Thu, 9 Nov 2023 11:26:03 +0000 Date: Thu, 9 Nov 2023 11:25:59 +0000 From: Andrew Carlotti To: gcc-patches@gcc.gnu.org Cc: richard.earnshaw@arm.com, richard.sandiford@arm.com, kyrylo.tkachov@arm.com Subject: [1/4] aarch64: Refactor check_required_extensions Message-ID: <8079fe11-86e3-b112-7c0b-beccfdbcde97@e124511.cambridge.arm.com> References: <6dccdd32-6c7b-5962-24e4-8acc7910a76d@e124511.cambridge.arm.com> Content-Disposition: inline In-Reply-To: <6dccdd32-6c7b-5962-24e4-8acc7910a76d@e124511.cambridge.arm.com> X-ClientProxiedBy: LO2P265CA0388.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:f::16) To AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6678:EE_|PA4PR08MB7548:EE_|AMS1EPF00000049:EE_|PAXPR08MB6541:EE_ X-MS-Office365-Filtering-Correlation-Id: b9e1b96d-06da-4b05-5f99-08dbe116ad90 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: slTbTbiXamIZvHw9fXo98W4eLk9Kosle2+73ZnvjGgk8vGiYKGc5Qg/NZtvmHSwuYU9V53lMmNOKFwT9gMeikdj4mnQT3rJSm6/V6xfcoofhlRDLPByk1/tenUoWwYMtivqsGe8RJjlp8h4SriMdrgLJT4NGGawMj8auJI3MANinsAJtztXhMlPksw9jjpEcPDQbss2S9onjH3HTkNUn6MmIE/dbdWa0RE4JzMH+1tkYb4WkQvUzUuqm+wa25NJPIJHE0thXOI93j0rqitszKnCY+hsDO1bf7kCq9/LJiISPksANMvJ6na5+lU1wS24gfDtLFs5dlhnvqObO007GWoUbTK7GEkD2UT87DeDKzPBhoRNby7Z32w40WE/mzP3xEoBA/GFGHSGVgcp1L33A7VWzyUfKQDAR9q1b1lBO2n7T5tqxaewx7zYCRq6PwyBAzcmEfzWI4Xl7UzBBizb6Ch188zjt/UppSjHHZ/mXUi3CXLesEUWT6+0AVxwAk4deXF8v0Jn18vbGBAhkxR9N2mTcRZ1fALiPHhEvFSzbigkkwayHkUb3ciLgbq0pte19 X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB6678.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(346002)(376002)(396003)(39860400002)(366004)(136003)(230922051799003)(451199024)(64100799003)(186009)(1800799009)(31686004)(6512007)(6486002)(478600001)(6506007)(6666004)(86362001)(26005)(66476007)(5660300002)(66556008)(44832011)(41300700001)(66946007)(8676002)(2906002)(83380400001)(38100700002)(31696002)(316002)(8936002)(6916009)(4326008); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB7548 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS1EPF00000049.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e1d2d24c-a0b8-400c-8aaf-08dbe116a857 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AemTp0ekJdYRTSA1fokJHpOh1oMWG5hsUkJ+OtEIdPDqR9bqvrvHovpZuvFUEwoRMPuyUMuvCXW0hBfFNyYG3nBIHu3eI1T9EIsWkSBlf4DcBqrZ8uqYm2vYlu3BEtnhEhvHXkpO6FlaIcG8J/AoGvrUWc556Ho3on/E/aLrnvDQwHczyatgQgglTCUIVp8hJLaR5IvBZE6hQCTuiiKkVEpxDSAPUz0ulAgY7WiTYc1C6yUxUODNdO2epzXl0BQiQa6Yg0Iw/b3AoSn5MMxQbw0NbUrl0t/IpT/aHVctZDqJIcq9pMfvNZiCoAf7/DPg88g/FA6l6nMSXU1QPkVGbipnJrdfe91unrHd+0fgc9sn4XIb2VDzUjPm/8EgRpk8DiEAKQyzFgvRGLLKcW+E1HdmdOr41m2zWO52OpZAoxor7Cs3r25yoyf8Kc6yhVt2UIx7qUzZPCImk+fNxiG9S8QBYXv5QAeiLYCx/2zaE1WViC5vvcjkL3SLITTUB/rU00IqHzI6XYq2OcqJ+qgfNtASXEkzWzJBYJC9C6ArX5qhoq8N81QU6IzxO73TXxkKqVtJ1fxExOXJDZ1FFrSZPRN6PkbbflIn7c26PRv7sDU6k1Q6qBI8DWj9AmeOLKDITf+PQuVz0/3vZ8r7WJlZB6UBZJdZR+m7gnHZuJ80yqV95urYDfq3Vl8v/jqD4WSH62n3F8dgYalMcmALTkxfHQcyiQ7/B/1WfcxkGos/LTj8NTMUs559m4EXDyeb0HT0 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:(13230031)(4636009)(376002)(136003)(346002)(396003)(39860400002)(230922051799003)(451199024)(186009)(64100799003)(1800799009)(82310400011)(40470700004)(46966006)(36840700001)(40460700003)(40480700001)(4326008)(8936002)(8676002)(83380400001)(70206006)(6916009)(70586007)(36860700001)(5660300002)(316002)(2906002)(26005)(47076005)(6512007)(478600001)(41300700001)(6486002)(6666004)(6506007)(44832011)(31696002)(31686004)(82740400003)(86362001)(356005)(336012)(81166007); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2023 11:26:11.9882 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b9e1b96d-06da-4b05-5f99-08dbe116ad90 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: AMS1EPF00000049.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6541 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Move SVE extension checking functionality to aarch64-builtins.cc, so that it can be shared by non-SVE intrinsics. gcc/ChangeLog: * config/aarch64/aarch64-sve-builtins.cc (check_builtin_call) (expand_builtin): Update calls to the below. (report_missing_extension, check_required_registers) (check_required_extensions): Move out of aarch64_sve namespace, rename, and move into... * config/aarch64/aarch64-builtins.cc (aarch64_report_missing_extension) (aarch64_check_non_general_registers) (aarch64_check_required_extensions) ...here. * config/aarch64/aarch64-protos.h (aarch64_check_required_extensions): Add prototype. diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc index 04f59fd9a54306d6422b03e32dce79bc00aed4f8..11a9ba2256f105d8cb9cdc4d6decb5b2be3d69af 100644 --- a/gcc/config/aarch64/aarch64-builtins.cc +++ b/gcc/config/aarch64/aarch64-builtins.cc @@ -2054,6 +2054,90 @@ aarch64_general_builtin_decl (unsigned code, bool) return aarch64_builtin_decls[code]; } +/* True if we've already complained about attempts to use functions + when the required extension is disabled. */ +static bool reported_missing_extension_p; + +/* True if we've already complained about attempts to use functions + which require registers that are missing. */ +static bool reported_missing_registers_p; + +/* Report an error against LOCATION that the user has tried to use + function FNDECL when extension EXTENSION is disabled. */ +static void +aarch64_report_missing_extension (location_t location, tree fndecl, + const char *extension) +{ + /* Avoid reporting a slew of messages for a single oversight. */ + if (reported_missing_extension_p) + return; + + error_at (location, "ACLE function %qD requires ISA extension %qs", + fndecl, extension); + inform (location, "you can enable %qs using the command-line" + " option %<-march%>, or by using the %" + " attribute or pragma", extension); + reported_missing_extension_p = true; +} + +/* Check whether non-general registers required by ACLE function fndecl are + * available. Report an error against LOCATION and return false if not. */ +static bool +aarch64_check_non_general_registers (location_t location, tree fndecl) +{ + /* Avoid reporting a slew of messages for a single oversight. */ + if (reported_missing_registers_p) + return false; + + if (TARGET_GENERAL_REGS_ONLY) + { + /* FP/SIMD/SVE registers are not usable when -mgeneral-regs-only option + is specified. */ + error_at (location, + "ACLE function %qD is incompatible with the use of %qs", + fndecl, "-mgeneral-regs-only"); + reported_missing_registers_p = true; + return false; + } + + return true; +} + +/* Check whether all the AARCH64_FL_* values in REQUIRED_EXTENSIONS are + enabled, given that those extensions are required for function FNDECL. + Report an error against LOCATION if not. + If REQUIRES_NON_GENERAL_REGISTERS is true, then also check whether + non-general registers are available. */ +bool +aarch64_check_required_extensions (location_t location, tree fndecl, + aarch64_feature_flags required_extensions, + bool requires_non_general_registers) +{ + auto missing_extensions = required_extensions & ~aarch64_asm_isa_flags; + if (missing_extensions == 0) + return requires_non_general_registers + ? aarch64_check_non_general_registers (location, fndecl) + : true; + + static const struct { + aarch64_feature_flags flag; + const char *name; + } extensions[] = { +#define AARCH64_OPT_EXTENSION(EXT_NAME, IDENT, C, D, E, F) \ + { AARCH64_FL_##IDENT, EXT_NAME }, +#include "aarch64-option-extensions.def" + }; + + for (unsigned int i = 0; i < ARRAY_SIZE (extensions); ++i) + if (missing_extensions & extensions[i].flag) + { + aarch64_report_missing_extension (location, fndecl, extensions[i].name); + return false; + } + gcc_unreachable (); +} + + typedef enum { SIMD_ARG_COPY_TO_REG, diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index 60a55f4bc1956786ea687fc7cad7ec9e4a84e1f0..30726140a6945dcb86b787f8f47952810d99379f 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -988,6 +988,9 @@ tree aarch64_general_builtin_rsqrt (unsigned int); void handle_arm_acle_h (void); void handle_arm_neon_h (void); +bool aarch64_check_required_extensions (location_t, tree, + aarch64_feature_flags, bool = true); + namespace aarch64_sve { void init_builtins (); void handle_arm_sve_h (); diff --git a/gcc/config/aarch64/aarch64-sve-builtins.cc b/gcc/config/aarch64/aarch64-sve-builtins.cc index 161a14edde7c9fb1b13b146cf50463e2d78db264..c72baed08759e143e6b9bc4fabf115a8374af7c8 100644 --- a/gcc/config/aarch64/aarch64-sve-builtins.cc +++ b/gcc/config/aarch64/aarch64-sve-builtins.cc @@ -558,14 +558,6 @@ static GTY(()) vec *registered_functions; overloaded functions. */ static hash_table *function_table; -/* True if we've already complained about attempts to use functions - when the required extension is disabled. */ -static bool reported_missing_extension_p; - -/* True if we've already complained about attempts to use functions - which require registers that are missing. */ -static bool reported_missing_registers_p; - /* Record that TYPE is an ABI-defined SVE type that contains NUM_ZR SVE vectors and NUM_PR SVE predicates. MANGLED_NAME, if nonnull, is the ABI-defined mangling of the type. ACLE_NAME is the name of the type. */ @@ -648,75 +640,6 @@ find_type_suffix_for_scalar_type (const_tree type) return NUM_TYPE_SUFFIXES; } -/* Report an error against LOCATION that the user has tried to use - function FNDECL when extension EXTENSION is disabled. */ -static void -report_missing_extension (location_t location, tree fndecl, - const char *extension) -{ - /* Avoid reporting a slew of messages for a single oversight. */ - if (reported_missing_extension_p) - return; - - error_at (location, "ACLE function %qD requires ISA extension %qs", - fndecl, extension); - inform (location, "you can enable %qs using the command-line" - " option %<-march%>, or by using the %" - " attribute or pragma", extension); - reported_missing_extension_p = true; -} - -/* Check whether the registers required by SVE function fndecl are available. - Report an error against LOCATION and return false if not. */ -static bool -check_required_registers (location_t location, tree fndecl) -{ - /* Avoid reporting a slew of messages for a single oversight. */ - if (reported_missing_registers_p) - return false; - - if (TARGET_GENERAL_REGS_ONLY) - { - /* SVE registers are not usable when -mgeneral-regs-only option - is specified. */ - error_at (location, - "ACLE function %qD is incompatible with the use of %qs", - fndecl, "-mgeneral-regs-only"); - reported_missing_registers_p = true; - return false; - } - - return true; -} - -/* Check whether all the AARCH64_FL_* values in REQUIRED_EXTENSIONS are - enabled, given that those extensions are required for function FNDECL. - Report an error against LOCATION if not. */ -static bool -check_required_extensions (location_t location, tree fndecl, - aarch64_feature_flags required_extensions) -{ - auto missing_extensions = required_extensions & ~aarch64_asm_isa_flags; - if (missing_extensions == 0) - return check_required_registers (location, fndecl); - - static const struct { - aarch64_feature_flags flag; - const char *name; - } extensions[] = { -#define AARCH64_OPT_EXTENSION(EXT_NAME, IDENT, C, D, E, F) \ - { AARCH64_FL_##IDENT, EXT_NAME }, -#include "aarch64-option-extensions.def" - }; - - for (unsigned int i = 0; i < ARRAY_SIZE (extensions); ++i) - if (missing_extensions & extensions[i].flag) - { - report_missing_extension (location, fndecl, extensions[i].name); - return false; - } - gcc_unreachable (); -} /* Report that LOCATION has a call to FNDECL in which argument ARGNO was not an integer constant expression. ARGNO counts from zero. */ @@ -3605,7 +3528,8 @@ check_builtin_call (location_t location, vec, unsigned int code, tree fndecl, unsigned int nargs, tree *args) { const registered_function &rfn = *(*registered_functions)[code]; - if (!check_required_extensions (location, rfn.decl, rfn.required_extensions)) + if (!aarch64_check_required_extensions (location, rfn.decl, + rfn.required_extensions)) return false; return function_checker (location, rfn.instance, fndecl, TREE_TYPE (rfn.decl), nargs, args).check (); @@ -3628,8 +3552,8 @@ rtx expand_builtin (unsigned int code, tree exp, rtx target) { registered_function &rfn = *(*registered_functions)[code]; - if (!check_required_extensions (EXPR_LOCATION (exp), rfn.decl, - rfn.required_extensions)) + if (!aarch64_check_required_extensions (EXPR_LOCATION (exp), rfn.decl, + rfn.required_extensions)) return target; return function_expander (rfn.instance, rfn.decl, exp, target).expand (); } From patchwork Thu Nov 9 11:26:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Carlotti X-Patchwork-Id: 1861942 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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=zj20R7Ur; 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=zj20R7Ur; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SR06C4GCbz1yQl for ; Thu, 9 Nov 2023 22:26:59 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A71163857704 for ; Thu, 9 Nov 2023 11:26:57 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2041.outbound.protection.outlook.com [40.107.21.41]) by sourceware.org (Postfix) with ESMTPS id 0C231385697D for ; Thu, 9 Nov 2023 11:26:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0C231385697D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0C231385697D Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.21.41 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699529206; cv=pass; b=uKNNM7cMbolfMejVDO9sjnIfTmuLOJGGMfuzpIDYxmrG6L+ZFOYYnWR5wKKIpyrhdfVCIvdy0V8yWIwzMx1OSXMvb0y24W4va0sPEYcd7cOXdy6OTqvwcXJQtNRVk24vRqYDNXsZqfAH0wAp8Dbo4P50EwGR7qpzUTzv11O3mKo= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699529206; c=relaxed/simple; bh=eoMps2LSRVUzLOmOtckpB1GRN2hAv3pURDPq+3WsvTs=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=r/kbNQJY8FmUI5UshEBBU7mriz4tz7GZcP+2ybYPLiuNmNgC7C2T4c1G+z1WL2umiFcIXVZ15QEGPjllIz1ViQLObeBcj5BcFZKtHic16O6ZjMisA+Kr3G9Zlceo8+5mb7CWo0ef5dflsR+ddkMyIdAaQIXkwaDJpZ0DY37kQu0= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=byupjsIg+yKBhX43UQHyYno9T060IVeecHI0WmitGeCKs+2t25znGFZ9zOVSQpZiQZ2vv5VwFmQ5fAhTwH1EhB4A61AqLjfnDQ8eCWSr1jkcVrRN9Tovja7/og/axjf09Oc2Xx4olfOTDkOWd9oRelyNNMSXT41EEhzxNsjFn+uckW51UsVNMU1kkYlSeaLWFQn19qFSPXc3ETBRP6molNuhdW12990RFwPJ/4HgNl+EW3rNFqnGCcTRTIS5gtAhLtzsjLOFZ3kb5KyYG6mp4PIbS2uQGCylhBbGB6/0vtlRc+aJLokA+iMQqi8KcHOnKlA+Vr6dDLanXqh8KVJQMw== ARC-Message-Signature: i=2; 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=z8mwBboVtork4Q3qQrAwufvK4WpXOxXXzce041pds8M=; b=CmyHHQLk++21C3FWQDg354WTtjfIox1t9nERvcMqf8nsITg2VnmEzjOaucAhniN8IfjDyCkQPQJZprRSmwPPZmIH8e0LMc/S4E2zGxX4Ne+tOEKVDACUXZa7cR5g0qwgAbp5S5uNzQzKB/qxKx3EFAZl02pVaNbyWafrX3VOvZ8ozu3PjTLerb6MsLpZn1ZsfOBs6a9spXzTkQb06lyPy5ZGL+jqnwf9vtrq6hmrjwSgXTofykGynovcpQ5M2tQLhfg7IVPs5ckXDXN1KwLTu9eZpBIgK0RHc9//Vn9q9FS2bqb4okwwHCOJVimKwM0OUVuM1ibe3bhHtCbRIsnTTQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=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=z8mwBboVtork4Q3qQrAwufvK4WpXOxXXzce041pds8M=; b=zj20R7UrntAGK3aMgZbd/o7lKFt02OXNT9jIPmd83gmOZ2YmD3OV4bKhicGcjdAWd+fe9bzS+OC/NVMOOrHhAOCq7fS4qqqWDnslkB5+4wX97aGIYLgMwkpXTvtAV1BkzcbWn4JOiIemkjvYrgiCNUKIGokKDGzmcVlp3JCRhkk= Received: from AS9PR04CA0156.eurprd04.prod.outlook.com (2603:10a6:20b:48a::28) by DU0PR08MB8138.eurprd08.prod.outlook.com (2603:10a6:10:3ed::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.28; Thu, 9 Nov 2023 11:26:41 +0000 Received: from AMS1EPF00000041.eurprd04.prod.outlook.com (2603:10a6:20b:48a:cafe::fe) by AS9PR04CA0156.outlook.office365.com (2603:10a6:20b:48a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.19 via Frontend Transport; Thu, 9 Nov 2023 11:26:40 +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 AMS1EPF00000041.mail.protection.outlook.com (10.167.16.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.16 via Frontend Transport; Thu, 9 Nov 2023 11:26:40 +0000 Received: ("Tessian outbound 8289ea11ec17:v228"); Thu, 09 Nov 2023 11:26:40 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: db4feb18f7f3abe4 X-CR-MTA-TID: 64aa7808 Received: from 5ca3fdc5605c.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 8474EAC8-9424-4369-9216-5A200738719F.1; Thu, 09 Nov 2023 11:26:33 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5ca3fdc5605c.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 09 Nov 2023 11:26:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VD9ctOl7/HaG2c9d3iwvrOKcL2QN9k7gu5cWyPSWirwQBscQDmtnx/Sez23gOybXfc1yT21nNy9oJsggS7tw24wXxEGMcPiHUYie+BRT5EEfASzMKtI7wmNyKIqtkdrSsIEF/X0hH0loxrc9B5B4cEZlWEHV1i8HCCuql7DiVEO0FT4PXiY5sKT/hhtElDMj6WzsyTmC49hxAViygnS2XgqWKR7Q6w0DUCkKtP7mbVZ+O/i57pKkZYWbL/wHtc5xHpyMeQrtHmRi1kiGg46TiyOHFqC3Uvtc2dM2mJCLCSYQSX1+zA6lkWTNpPgDgEOlqGpvEq4TppExTm/2AMxh9g== 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=z8mwBboVtork4Q3qQrAwufvK4WpXOxXXzce041pds8M=; b=KA+0rA57tuXfADAz83Z7UNvOF+hDdIZDXUaf+YJwJT/KaBfgd9F13G1QE6YQhYLCMitPmB+67KCiGMr4xAoacx+Fcm/STVIVdNENLmn/kojzgw48P6OETWBlShRotOTYmHLfp8/gX0eP2dAk26oZrWMBgb+rM+aO91pZrH+tvg3QAnHgNt0WMo5WKPnr+x2asmUk7oO7ecdhmNpbf1hFglm3jaVOvzsB02SUNFdDzI3bnLYcyMiVUZxihbvdCdgGi5ct2xgglSs9wtk1hlqIVjVmXmJBl3COanQAJL4REQ2USF3ll4hfM/ap29+R/MoCUcQBQ/UMM4e93l8Sczaphw== 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=z8mwBboVtork4Q3qQrAwufvK4WpXOxXXzce041pds8M=; b=zj20R7UrntAGK3aMgZbd/o7lKFt02OXNT9jIPmd83gmOZ2YmD3OV4bKhicGcjdAWd+fe9bzS+OC/NVMOOrHhAOCq7fS4qqqWDnslkB5+4wX97aGIYLgMwkpXTvtAV1BkzcbWn4JOiIemkjvYrgiCNUKIGokKDGzmcVlp3JCRhkk= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) by DBAPR08MB5863.eurprd08.prod.outlook.com (2603:10a6:10:1a1::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.18; Thu, 9 Nov 2023 11:26:29 +0000 Received: from AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::af15:c9d7:cd8c:6da2]) by AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::af15:c9d7:cd8c:6da2%7]) with mapi id 15.20.6954.029; Thu, 9 Nov 2023 11:26:29 +0000 Date: Thu, 9 Nov 2023 11:26:27 +0000 From: Andrew Carlotti To: gcc-patches@gcc.gnu.org Cc: richard.earnshaw@arm.com, richard.sandiford@arm.com, kyrylo.tkachov@arm.com Subject: [2/4] aarch64: Fix tme intrinsic availability Message-ID: <74c28cf9-9a02-c17b-fc97-09ff9abe9096@e124511.cambridge.arm.com> References: <6dccdd32-6c7b-5962-24e4-8acc7910a76d@e124511.cambridge.arm.com> Content-Disposition: inline In-Reply-To: <6dccdd32-6c7b-5962-24e4-8acc7910a76d@e124511.cambridge.arm.com> X-ClientProxiedBy: LO4P123CA0502.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1ab::21) To AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6678:EE_|DBAPR08MB5863:EE_|AMS1EPF00000041:EE_|DU0PR08MB8138:EE_ X-MS-Office365-Filtering-Correlation-Id: 31daf099-a947-4cfc-4e54-08dbe116bea0 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: YwU8mef3oxol2HPLh3Zoy5cMKaL8hRMboT2ADytF3MHnZobRZfAuCSUM8R6oTrL5S0E6Bd0PJp41bxFogYYw6lfYJFaUK30yCqOlsYSrKWUrZyrMLqgy03QnATS4gB+BsVPdmP7bAE6t40DMWQBATqhrITzVsSEIoNHVSlyVUT4XveU7EPuTdyQBjW9hlaSJyRLI/FvtftvLWQTVBxWWR7KaKwNI19AU4byoINPuiC/Jj1O4/iANSENNe10ANsK5kIJzSysKMnKTd6ZktWhLMlWMthK4FFTKZW8cm8dJ5+BvEdmmFNdXVlrGpkJj/Myq81IHcgnV1cX/sNaQ3JKlZ2gik2QC6UXaULOdcf495k1+Fmh8U2EJ4hSzsee9X3rY5U/ESYWzukB2ZdokC0NtFe2ZFS776PWTERAl2Dp5HKP9OzX0UBqCWGT2g3gjRcEdbeJ9z8XbDSwAq4sGmaqHCzYRXXOhtLf+fqUbKJzm670UvxL+vmztCZ19pkUgu3S3sHnlVQNYN+LXpiU7DfQ6SO8elgUaBYwQmwlacRJNNg9xcWhOp55LF63HRcssK8kswVmE/o1bxZOA/s5rRf72hQ== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB6678.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(346002)(366004)(39850400004)(396003)(376002)(136003)(230922051799003)(1800799009)(186009)(64100799003)(451199024)(2906002)(478600001)(6506007)(6486002)(83380400001)(6512007)(26005)(41300700001)(8936002)(66556008)(6916009)(316002)(4326008)(5660300002)(8676002)(66476007)(66946007)(86362001)(44832011)(31696002)(38100700002)(31686004)(84970400001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5863 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS1EPF00000041.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e337f405-ee81-435c-959f-08dbe116b7e7 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XgCTVNaDhM/SXxsMcsThoi8cmmRNQbFG7nXdV1xN9oJG5QL29CmhWDGUOCdcb2QRCrpxkWbOPJrxC/3EgnrjSFoBsAdK7bPfE6nL7DaDmVcK4T78sBcfIcoStJlPjNIkqehsFTqKFU+2o1SrPbD0OirUV42ZI8jqARAHmBdjOPDX3qBhzuOY+lZiiVSfa1v2a6GB5S+emdt9S7PZTldLHfgf5+fpW6cFwoAghRkT4wsOpFUoe1QcoH2Gl9bUAlizO72hw727ujm0nqsJSck6RMx6uFz7Jpbcut0KFKlASr9f4FKXOYVkhyixrAIjmVARA6zSnDXGH/tTLPm31pWVdZB89chdVhyk3tkhsfmCizVc/qqSMMmrdQWnmsqOBvxSARJjE6G/gm1dHqQYrk5q0fyXzi42X3DGbTrE3SPEAEjL5JqfAqAR6j+2JXNqkVZ3k/F8nNhRNTyzDaPXyzdnzaOcNhw6ztinq7zJgX/199OeK5fqJyll3I8x1HAdV2Ia4dI1LO0atPPRzclC8IbOuw1E2x1N7kie3hW2CsSNoNSVM16qRS0uh5uYsji1vBKP3lInRHY1hYqY3JpGxWdCVljcCRpoGwl94FB+PXbLyHTgv01HLRrUv3pTvVWqXb5eml2oqabTlbiDZo98CYIZFDx5zgej8hwpbIEqoXkcG+Nuf6mQjlO783LT8q/pyvgQntMVpwxrANcPb0pnxKpX/PwF4fN6UjNXoaMDMq2UErILUu2r9sDC2WE+DyvRaWGl29i53ZWMKt0HdykSh7FoUA== 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:(13230031)(4636009)(346002)(376002)(136003)(396003)(39860400002)(230922051799003)(451199024)(186009)(82310400011)(1800799009)(64100799003)(36840700001)(46966006)(40470700004)(2906002)(36860700001)(84970400001)(41300700001)(70586007)(316002)(478600001)(6916009)(8676002)(4326008)(8936002)(70206006)(47076005)(40480700001)(31686004)(5660300002)(86362001)(44832011)(31696002)(356005)(6486002)(336012)(83380400001)(81166007)(40460700003)(82740400003)(6506007)(26005)(6512007); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2023 11:26:40.6139 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 31daf099-a947-4cfc-4e54-08dbe116bea0 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: AMS1EPF00000041.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8138 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, KAM_SHORT, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org The availability of tme intrinsics was previously gated at both initialisation time (using global target options) and usage time (accounting for function-specific target options). This patch removes the check at initialisation time, and also moves the intrinsics out of the header file to allow for better error messages (matching the existing error messages for SVE intrinsics). gcc/ChangeLog: PR target/112108 * config/aarch64/aarch64-builtins.cc (aarch64_init_tme_builtins): (aarch64_general_init_builtins): Remove feature check. (aarch64_check_general_builtin_call): New. (aarch64_expand_builtin_tme): Check feature availability. * config/aarch64/aarch64-c.cc (aarch64_check_builtin_call): Add check for non-SVE builtins. * config/aarch64/aarch64-protos.h (aarch64_check_general_builtin_call): New prototype. * config/aarch64/arm_acle.h (__tstart, __tcommit, __tcancel) (__ttest): Remove. (_TMFAILURE_*): Define unconditionally. gcc/testsuite/ChangeLog: PR target/112108 * gcc.target/aarch64/acle/tme_guard-1.c: New test. * gcc.target/aarch64/acle/tme_guard-2.c: New test. * gcc.target/aarch64/acle/tme_guard-3.c: New test. * gcc.target/aarch64/acle/tme_guard-4.c: New test. diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc index 11a9ba2256f105d8cb9cdc4d6decb5b2be3d69af..ac0259a892e16adb5b241032ac3df1e7ab5370ef 100644 --- a/gcc/config/aarch64/aarch64-builtins.cc +++ b/gcc/config/aarch64/aarch64-builtins.cc @@ -1765,19 +1765,19 @@ aarch64_init_tme_builtins (void) = build_function_type_list (void_type_node, uint64_type_node, NULL); aarch64_builtin_decls[AARCH64_TME_BUILTIN_TSTART] - = aarch64_general_add_builtin ("__builtin_aarch64_tstart", + = aarch64_general_add_builtin ("__tstart", ftype_uint64_void, AARCH64_TME_BUILTIN_TSTART); aarch64_builtin_decls[AARCH64_TME_BUILTIN_TTEST] - = aarch64_general_add_builtin ("__builtin_aarch64_ttest", + = aarch64_general_add_builtin ("__ttest", ftype_uint64_void, AARCH64_TME_BUILTIN_TTEST); aarch64_builtin_decls[AARCH64_TME_BUILTIN_TCOMMIT] - = aarch64_general_add_builtin ("__builtin_aarch64_tcommit", + = aarch64_general_add_builtin ("__tcommit", ftype_void_void, AARCH64_TME_BUILTIN_TCOMMIT); aarch64_builtin_decls[AARCH64_TME_BUILTIN_TCANCEL] - = aarch64_general_add_builtin ("__builtin_aarch64_tcancel", + = aarch64_general_add_builtin ("__tcancel", ftype_void_uint64, AARCH64_TME_BUILTIN_TCANCEL); } @@ -2034,8 +2034,7 @@ aarch64_general_init_builtins (void) if (!TARGET_ILP32) aarch64_init_pauth_hint_builtins (); - if (TARGET_TME) - aarch64_init_tme_builtins (); + aarch64_init_tme_builtins (); if (TARGET_MEMTAG) aarch64_init_memtag_builtins (); @@ -2137,6 +2136,24 @@ aarch64_check_required_extensions (location_t location, tree fndecl, gcc_unreachable (); } +bool aarch64_check_general_builtin_call (location_t location, + unsigned int fcode) +{ + tree fndecl = aarch64_builtin_decls[fcode]; + switch (fcode) + { + case AARCH64_TME_BUILTIN_TSTART: + case AARCH64_TME_BUILTIN_TCOMMIT: + case AARCH64_TME_BUILTIN_TTEST: + case AARCH64_TME_BUILTIN_TCANCEL: + return aarch64_check_required_extensions (location, fndecl, + AARCH64_FL_TME, false); + + default: + break; + } + return true; +} typedef enum { @@ -2559,6 +2576,11 @@ aarch64_expand_fcmla_builtin (tree exp, rtx target, int fcode) static rtx aarch64_expand_builtin_tme (int fcode, tree exp, rtx target) { + tree fndecl = aarch64_builtin_decls[fcode]; + if (!aarch64_check_required_extensions (EXPR_LOCATION (exp), fndecl, + AARCH64_FL_TME, false)) + return target; + switch (fcode) { case AARCH64_TME_BUILTIN_TSTART: diff --git a/gcc/config/aarch64/aarch64-c.cc b/gcc/config/aarch64/aarch64-c.cc index ab8844f6049dc95b97648b651bfcd3a4ccd3ca0b..6b6bd77e9e66cd2d9a211387e07d3e20d935fb1a 100644 --- a/gcc/config/aarch64/aarch64-c.cc +++ b/gcc/config/aarch64/aarch64-c.cc @@ -339,7 +339,7 @@ aarch64_check_builtin_call (location_t loc, vec arg_loc, switch (code & AARCH64_BUILTIN_CLASS) { case AARCH64_BUILTIN_GENERAL: - return true; + return aarch64_check_general_builtin_call (loc, subcode); case AARCH64_BUILTIN_SVE: return aarch64_sve::check_builtin_call (loc, arg_loc, subcode, diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index 30726140a6945dcb86b787f8f47952810d99379f..94022f77d7e7bab2533d78965bec241b4070c729 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -991,6 +991,8 @@ void handle_arm_neon_h (void); bool aarch64_check_required_extensions (location_t, tree, aarch64_feature_flags, bool = true); +bool aarch64_check_general_builtin_call (location_t, unsigned int); + namespace aarch64_sve { void init_builtins (); void handle_arm_sve_h (); diff --git a/gcc/config/aarch64/arm_acle.h b/gcc/config/aarch64/arm_acle.h index 7599a32301dadf80760d3cb40a8685d2e6a476fb..f4e35d1e12ac9bbcc4f1b75d8e5baad62f8634a0 100644 --- a/gcc/config/aarch64/arm_acle.h +++ b/gcc/config/aarch64/arm_acle.h @@ -222,10 +222,7 @@ __crc32d (uint32_t __a, uint64_t __b) #pragma GCC pop_options -#ifdef __ARM_FEATURE_TME -#pragma GCC push_options -#pragma GCC target ("+nothing+tme") - +/* Constants for TME failure reason. */ #define _TMFAILURE_REASON 0x00007fffu #define _TMFAILURE_RTRY 0x00008000u #define _TMFAILURE_CNCL 0x00010000u @@ -238,37 +235,6 @@ __crc32d (uint32_t __a, uint64_t __b) #define _TMFAILURE_INT 0x00800000u #define _TMFAILURE_TRIVIAL 0x01000000u -__extension__ extern __inline uint64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__tstart (void) -{ - return __builtin_aarch64_tstart (); -} - -__extension__ extern __inline void -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__tcommit (void) -{ - __builtin_aarch64_tcommit (); -} - -__extension__ extern __inline void -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__tcancel (const uint64_t __reason) -{ - __builtin_aarch64_tcancel (__reason); -} - -__extension__ extern __inline uint64_t -__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) -__ttest (void) -{ - return __builtin_aarch64_ttest (); -} - -#pragma GCC pop_options -#endif - #ifdef __ARM_FEATURE_LS64 typedef __arm_data512_t data512_t; #endif diff --git a/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-1.c b/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-1.c new file mode 100644 index 0000000000000000000000000000000000000000..9894d3341f6bc352c22ad95d4d1e000207ca8d00 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-1.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv8-a" } */ + +#include + +void foo (void) +{ + __tcommit (); /* { dg-error {ACLE function '__tcommit' requires ISA extension 'tme'} } */ +} diff --git a/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-2.c b/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-2.c new file mode 100644 index 0000000000000000000000000000000000000000..4e3d69712b14a8123f45a2ead02b5048883614d9 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-2.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv8-a" } */ + +#include + +#pragma GCC target("arch=armv8-a+tme") +void foo (void) +{ + __tcommit (); +} diff --git a/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-3.c b/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-3.c new file mode 100644 index 0000000000000000000000000000000000000000..5f480ebb8209fdaeb4baa77dbdf5467d16936644 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-3.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv8-a+tme -mgeneral-regs-only" } */ + +#include + +void foo (void) +{ + __tcommit (); +} diff --git a/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-4.c b/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-4.c new file mode 100644 index 0000000000000000000000000000000000000000..bf4d368370c614ffe33035d9ec4f86988f3f1c30 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/tme_guard-4.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv8-a+tme" } */ + +#include + +#pragma GCC target("arch=armv8-a") +void foo (void) +{ + __tcommit (); /* { dg-error {ACLE function '__tcommit' requires ISA extension 'tme'} } */ +} From patchwork Thu Nov 9 11:26:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Carlotti X-Patchwork-Id: 1861943 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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=jX3NS8gG; 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=jX3NS8gG; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SR06s5KT0z1yQl for ; Thu, 9 Nov 2023 22:27:33 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C9D773857704 for ; Thu, 9 Nov 2023 11:27:31 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2080.outbound.protection.outlook.com [40.107.22.80]) by sourceware.org (Postfix) with ESMTPS id CC2873857728 for ; Thu, 9 Nov 2023 11:27:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CC2873857728 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CC2873857728 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.22.80 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699529240; cv=pass; b=x4Sg46C4ch9DeoIQYMP3eGP3AFfy2M6vURne07YMbP23I/L9MVKxgxRleIyUgHhOTKWAeXVfTiFoD714U4qMloomiU7hmgSCf/LuxhZmFCYiEw9gHeUaucpm6Ulw68zcTZddwQKcqHibdUQkttXoiWv2m1ev4XSUX2tio3tHqM8= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699529240; c=relaxed/simple; bh=oxQdhAHBeM4aJGrqSoIHi22Eob1MeAAFvWZaxh13VLc=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=NcZiEhO+GaFPFC7GpYtiR0/+YFwb0tqxm3aKE7KMHr1Uvu2lRZMZ+ey0Tv2OboYuvCp4S8vHrPTVOGdS1wPTwS0MQo9DsimPQ2s9z7R//BY79dG4U6B7TPrIOTPjJgL8Whxw72/4DSSmF0PuLgz1zC8Aki89IcwFnoi+EbP4tNQ= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=JQ65Oqda25IbVATksm2X1RGJnoZEletywBiuleSfEvelrUqFdKZLvO+7T0B8DsiExsArpqmKKpuBhVwEp2DEZN42mTTSS9+C7rQyHKeIct0T3uPdPFQ+PB53k6FWDK36ayionZtiWzIPnQWbtnSCs1+/7Z040wKOTahHyYr1etx93NxZ38P3TGxds0Mb5oKk6/57GwdrCLS2QrNiIvSCV9ve1pZLQ9UckcbjeN5FYdue1aZbAb1kXfBm66P80K1/9rUmvZUl2g7ZZ0oSzknZjh8yvKgvIsx8C2imrkahzyPX6CrOXupiJ9+IaQHSROiB/OcUMmpALqGBOBScAYqjYg== ARC-Message-Signature: i=2; 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=jp3MHkEwb0nkTsS9eYmi4gvNOBcJSH/SoK8Ltbu5QEw=; b=NJSY9mFkhAQK2xkhcNl+ktgdRi6sNX5B3eDFt+PSE1F+H2V1RiRSYeoVFL3k3lbiW+WUYPkoGqccoofsgzRpur+X07y49bMI82871963QlQlYGExm8+4TTpesmO4wYPj22io0oYMjfs8x1s7r/nykXUWR2mUK0yQIR8952FOsyuzdrUp/PrwkuskkaA+yfrWKJoE+7n+4c4+mhvymv+LxWvztqyFZZvPGLHHYvaaVqa9W64lQ2LPFcQapO0AwDrHHVLMzeGZ7rfDHBLkX968R087otjBhFHYncwPTztB+2VX/gXSmTckWnjmhnOhuG6TswupUIEWSo+232WoFQ9w6Q== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=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=jp3MHkEwb0nkTsS9eYmi4gvNOBcJSH/SoK8Ltbu5QEw=; b=jX3NS8gGZsptoGnUYpeKSQWSb8DW0rtJVESSI3q23pPjXmr1D5GqiGoqPm7yrDhhXgIfNK6BtaWFiOWAqWYl2YQUy6Z/lXfS4fOCxmpzJc1scNDlFRbqR/6B7KRhKuGihveye3jSYtDZzxwLF9Y0E+E+34knp9sAvL+DnLvL4fk= Received: from AS9PR06CA0737.eurprd06.prod.outlook.com (2603:10a6:20b:487::13) by AM9PR08MB6241.eurprd08.prod.outlook.com (2603:10a6:20b:281::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.29; Thu, 9 Nov 2023 11:27:12 +0000 Received: from AM3PEPF00009B9D.eurprd04.prod.outlook.com (2603:10a6:20b:487:cafe::cb) by AS9PR06CA0737.outlook.office365.com (2603:10a6:20b:487::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.18 via Frontend Transport; Thu, 9 Nov 2023 11:27:12 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM3PEPF00009B9D.mail.protection.outlook.com (10.167.16.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.16 via Frontend Transport; Thu, 9 Nov 2023 11:27:12 +0000 Received: ("Tessian outbound 7671e7ddc218:v228"); Thu, 09 Nov 2023 11:27:12 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 21a0e3fe60dbe260 X-CR-MTA-TID: 64aa7808 Received: from a40c340d84f0.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id B88FFADB-331E-46D9-9B54-921FD30D5A44.1; Thu, 09 Nov 2023 11:27:01 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id a40c340d84f0.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 09 Nov 2023 11:27:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Iu+9MQcusgrUHW9smt0311MmavC9QUaWPYM7PqhvOXOH7R0MqLotCtmDlf23QbFs/ZhXOvQtPUEMaMEzpd+zurh9PMhv2cG6DkBetHYEVcf7EOEAWaGok8Q6ztSPGYAJ/yQRooAPlE+FaVmGQVnFz3NmChMnR5db7jHqK4PmskDX1q2P2rvC43LrGJmOqk3XUS41w2As4ir2GctdDcg7xhLDajHdNmykXsl+xhWffn2ugRJAyFbuOuT1cO5fm/bhKwrilniG2Ly+2kNkg/m0i1YFMFXJoSd0TY54sjeK85/kHxjeCxUqFM82cV9T6UfFIlaaOJu8eUTmIawiG3YzFA== 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=jp3MHkEwb0nkTsS9eYmi4gvNOBcJSH/SoK8Ltbu5QEw=; b=bCLzVrCcWNqjn3vSYVFefWGpyUX/tlj0P/KFo37Edq1Up02s6+pVXsIKs+nb/LVXzJaJQ0GmV/CGB5kMW8pVMZNDWfwwotsD2qashR6UhxlWyeYmPIHN/mo8MRIqzfzBLXWc6y732m8bJ5mV1oKpC7qLX/MwgGYNsGqb/+J9EOpsAb7odyKvdDhp4/FkXxqXNlH6/9ERdmlUFjvS7azKTgY0gX+kg2kODuBv9T4YNQzmP4inuRNP+0r/jf3E3yTWCedohHofnRMY3gPWEYVeKqK7qjM49EAcke4cxUlxZcAy1kplLF9NXKuB8tNa4+MdS+gXf0kZ8eRI0aNKaaVUDw== 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=jp3MHkEwb0nkTsS9eYmi4gvNOBcJSH/SoK8Ltbu5QEw=; b=jX3NS8gGZsptoGnUYpeKSQWSb8DW0rtJVESSI3q23pPjXmr1D5GqiGoqPm7yrDhhXgIfNK6BtaWFiOWAqWYl2YQUy6Z/lXfS4fOCxmpzJc1scNDlFRbqR/6B7KRhKuGihveye3jSYtDZzxwLF9Y0E+E+34knp9sAvL+DnLvL4fk= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) by AM7PR08MB5479.eurprd08.prod.outlook.com (2603:10a6:20b:104::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.29; Thu, 9 Nov 2023 11:26:58 +0000 Received: from AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::af15:c9d7:cd8c:6da2]) by AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::af15:c9d7:cd8c:6da2%7]) with mapi id 15.20.6954.029; Thu, 9 Nov 2023 11:26:58 +0000 Date: Thu, 9 Nov 2023 11:26:55 +0000 From: Andrew Carlotti To: gcc-patches@gcc.gnu.org Cc: richard.earnshaw@arm.com, richard.sandiford@arm.com, kyrylo.tkachov@arm.com Subject: [3/4] aarch64: Fix memtag intrinsic availability Message-ID: <9e6ff577-22b0-a3fe-6dc0-384d8b426ef0@e124511.cambridge.arm.com> References: <6dccdd32-6c7b-5962-24e4-8acc7910a76d@e124511.cambridge.arm.com> Content-Disposition: inline In-Reply-To: <6dccdd32-6c7b-5962-24e4-8acc7910a76d@e124511.cambridge.arm.com> X-ClientProxiedBy: LO4P265CA0048.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ac::8) To AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6678:EE_|AM7PR08MB5479:EE_|AM3PEPF00009B9D:EE_|AM9PR08MB6241:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d6a2400-03bb-42e0-8aaa-08dbe116d1a2 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: Gt3lFAEMxbiH05vdv7zvYVth3RANhPeBWo6JG2e6XaDVpbBbZXWqD8683Q9KCsaCvRFPyw6+cUNET7/Qte4vd6oUh5rqX93QhUxwv40fMH78hX9zoGNBwW7zAGL2FnVHSeDi7A4FbABQSPShdAs4Cz/w/JEj6f1a6bgjgwcIUVU1OyCxaYkihXkr0swVxOvtFH3SXOWnxn4GY1+Y6JIIQ+B42LGP6c6SRzG4BBAN+7OlLcdaKYr3pDKMtF7Evr5B0fveZQzV6n2XN94xREXNbWt113/nQxovwfz5KigeoXF1UQoUpFKJDrlxy4US0Tjd5hXg1CqDMs1wH00XSDuZlZTlSyXdHZo/JsiYmJuSGjR7ahANpMHkDz1Ec8Qk2NokDEFRHQVHEvVOdvJn4IsST7ZOrJyoviiG3BYJW1OHnrlwi8ahMl1rakMmhCMZtmn0O2EH1hNsFPpHjsKlblGYM4sU2VK4VMaaFe2LGAyMNVJsN/aR7Dr+VFTxcZaf/ag6a6PPYCy2KxXNkaQtskyh00cklMV5s6xTX63C0K4BSWi3iIAWhZPX1vDqpBWF4wNtMYUl+UOUqbVZDDRWsRQ/Kw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB6678.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(39850400004)(396003)(136003)(376002)(346002)(230922051799003)(451199024)(186009)(64100799003)(1800799009)(84970400001)(31686004)(6486002)(31696002)(86362001)(38100700002)(66556008)(6666004)(6506007)(41300700001)(26005)(6512007)(66476007)(66946007)(6916009)(478600001)(4326008)(5660300002)(44832011)(2906002)(8936002)(316002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5479 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM3PEPF00009B9D.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: a64a0efe-2122-49af-41d6-08dbe116c8fc X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4X9wji/f0OpSNHL5r1efJKOV7qK3FRaQWwdKWbpcY+4IErKXTVrK2AwajflvaxLOug7G+x6AoC+UlN7TJ4DZDXAVA/UxvB955vzTVSBz0GDCeHtVu293Jeh/o3u5Gm2wWGnzvTXwM5zA2V//EgZDiaBjjhE/Ifd2Qv4Tmm2cIjJqKc6fRT2wJ8/rwSZXbM9LpK8577bB8bi4C10p0a9NvoolA/JslKV651lDCNrX9WzSfzws4mUsEAG2DAWMVKjQnR9fz3VyfBiCnqQ6L6nDUzVy1LIWkVFiUGfgDWlOQDTBe9YUGLq3d+8Al6ytgslc6aRtsOoj5XI5VZnzGd/XnOVzWqXdVeKUAcQlwlXZB3huqSCE0PfNEdltitAaWquwJtTPTZsWNA9VybQeTEHr4tdHr23ZJfUXAis75pyT/5v8qS5YAQepZ2jlKCD6up9IASdPfijMpGT7jVMhdGqV+1T1GICGPL1mdUAPMOBvCWyVZwfV9PoeZz1AtNE32OVmJkcRu1FsuQFh2pk8/hZqhzjxlE7z+F2t8YCGk1mfkHtsKU+EwFojQ+nAbv7Yfc/Cu19o2sxxvjLkdOI9UJ0nfL57ylbwJFRENQPM4b8kf9dZTQw6O12Vbfbl0zsr9FHSL3lot0PCuPB4ahog+Cf8fmW+gL+sNnGKVdOycCatOYmCxaUl4tlZ+O0fH/7OZBLLK8nH7vH3gLzg+SObROqiEy4gjmksw4JezgXviQ51kqDCtkVZ419pxjpkm2McVipBgDTPdhPqB3EuGmKJT/1Caw== 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:(13230031)(4636009)(396003)(376002)(39860400002)(136003)(346002)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(82310400011)(40470700004)(46966006)(36840700001)(31686004)(478600001)(36860700001)(6486002)(6512007)(70206006)(40480700001)(70586007)(6916009)(26005)(316002)(82740400003)(6506007)(6666004)(356005)(47076005)(336012)(84970400001)(81166007)(8936002)(31696002)(8676002)(4326008)(44832011)(40460700003)(41300700001)(2906002)(86362001)(5660300002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2023 11:27:12.5052 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0d6a2400-03bb-42e0-8aaa-08dbe116d1a2 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: AM3PEPF00009B9D.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6241 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, KAM_SHORT, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org The availability of memtag intrinsics and data types were determined solely by the globally specified architecture features, which did not reflect any changes specified in target pragmas or attributes. This patch removes the initialisation-time guards for the intrinsics, and replaces them with checks at use time. It also removes the macro indirection from the header file - this simplifies the header, and allows the missing extension error reporting to find the user-facing intrinsic names. gcc/ChangeLog: PR target/112108 * config/aarch64/aarch64-builtins.cc (aarch64_init_memtag_builtins): Replace internal builtin names with intrinsic names. (aarch64_general_init_builtins): Remove feature check. (aarch64_check_general_builtin_call): Check memtag intrinsics. (aarch64_expand_builtin_memtag): Add feature check. * config/aarch64/arm_acle.h (__arm_mte_create_random_tag) (__arm_mte_exclude_tag, __arm_mte_ptrdiff) (__arm_mte_increment_tag, __arm_mte_set_tag, __arm_mte_get_tag): Remove. gcc/testsuite/ChangeLog: PR target/112108 * gcc.target/aarch64/acle/memtag_guard-1.c: New test. * gcc.target/aarch64/acle/memtag_guard-2.c: New test. * gcc.target/aarch64/acle/memtag_guard-3.c: New test. * gcc.target/aarch64/acle/memtag_guard-4.c: New test. diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc index ac0259a892e16adb5b241032ac3df1e7ab5370ef..503d8ad98d7de959d8c7c78cef575d29e2132f78 100644 --- a/gcc/config/aarch64/aarch64-builtins.cc +++ b/gcc/config/aarch64/aarch64-builtins.cc @@ -1813,7 +1813,7 @@ aarch64_init_memtag_builtins (void) #define AARCH64_INIT_MEMTAG_BUILTINS_DECL(F, N, I, T) \ aarch64_builtin_decls[AARCH64_MEMTAG_BUILTIN_##F] \ - = aarch64_general_add_builtin ("__builtin_aarch64_memtag_"#N, \ + = aarch64_general_add_builtin ("__arm_mte_"#N, \ T, AARCH64_MEMTAG_BUILTIN_##F); \ aarch64_memtag_builtin_data[AARCH64_MEMTAG_BUILTIN_##F - \ AARCH64_MEMTAG_BUILTIN_START - 1] = \ @@ -1821,19 +1821,19 @@ aarch64_init_memtag_builtins (void) fntype = build_function_type_list (ptr_type_node, ptr_type_node, uint64_type_node, NULL); - AARCH64_INIT_MEMTAG_BUILTINS_DECL (IRG, irg, irg, fntype); + AARCH64_INIT_MEMTAG_BUILTINS_DECL (IRG, create_random_tag, irg, fntype); fntype = build_function_type_list (uint64_type_node, ptr_type_node, uint64_type_node, NULL); - AARCH64_INIT_MEMTAG_BUILTINS_DECL (GMI, gmi, gmi, fntype); + AARCH64_INIT_MEMTAG_BUILTINS_DECL (GMI, exclude_tag, gmi, fntype); fntype = build_function_type_list (ptrdiff_type_node, ptr_type_node, ptr_type_node, NULL); - AARCH64_INIT_MEMTAG_BUILTINS_DECL (SUBP, subp, subp, fntype); + AARCH64_INIT_MEMTAG_BUILTINS_DECL (SUBP, ptrdiff, subp, fntype); fntype = build_function_type_list (ptr_type_node, ptr_type_node, unsigned_type_node, NULL); - AARCH64_INIT_MEMTAG_BUILTINS_DECL (INC_TAG, inc_tag, addg, fntype); + AARCH64_INIT_MEMTAG_BUILTINS_DECL (INC_TAG, increment_tag, addg, fntype); fntype = build_function_type_list (void_type_node, ptr_type_node, NULL); AARCH64_INIT_MEMTAG_BUILTINS_DECL (SET_TAG, set_tag, stg, fntype); @@ -2036,8 +2036,7 @@ aarch64_general_init_builtins (void) aarch64_init_tme_builtins (); - if (TARGET_MEMTAG) - aarch64_init_memtag_builtins (); + aarch64_init_memtag_builtins (); if (in_lto_p) handle_arm_acle_h (); @@ -2152,6 +2151,12 @@ bool aarch64_check_general_builtin_call (location_t location, default: break; } + + if (fcode >= AARCH64_MEMTAG_BUILTIN_START + && fcode <= AARCH64_MEMTAG_BUILTIN_END) + return aarch64_check_required_extensions (location, fndecl, + AARCH64_FL_MEMTAG, false); + return true; } @@ -2716,6 +2721,11 @@ aarch64_expand_builtin_memtag (int fcode, tree exp, rtx target) return const0_rtx; } + tree fndecl = aarch64_builtin_decls[fcode]; + if (!aarch64_check_required_extensions (EXPR_LOCATION (exp), fndecl, + AARCH64_FL_MEMTAG, false)) + return target; + rtx pat = NULL; enum insn_code icode = aarch64_memtag_builtin_data[fcode - AARCH64_MEMTAG_BUILTIN_START - 1].icode; diff --git a/gcc/config/aarch64/arm_acle.h b/gcc/config/aarch64/arm_acle.h index f4e35d1e12ac9bbcc4f1b75d8e5baad62f8634a0..57f16603d22cec81002b00b94afe1201c83b4b94 100644 --- a/gcc/config/aarch64/arm_acle.h +++ b/gcc/config/aarch64/arm_acle.h @@ -257,29 +257,6 @@ __rndrrs (uint64_t *__res) #pragma GCC pop_options -#pragma GCC push_options -#pragma GCC target ("+nothing+memtag") - -#define __arm_mte_create_random_tag(__ptr, __u64_mask) \ - __builtin_aarch64_memtag_irg(__ptr, __u64_mask) - -#define __arm_mte_exclude_tag(__ptr, __u64_excluded) \ - __builtin_aarch64_memtag_gmi(__ptr, __u64_excluded) - -#define __arm_mte_ptrdiff(__ptr_a, __ptr_b) \ - __builtin_aarch64_memtag_subp(__ptr_a, __ptr_b) - -#define __arm_mte_increment_tag(__ptr, __u_offset) \ - __builtin_aarch64_memtag_inc_tag(__ptr, __u_offset) - -#define __arm_mte_set_tag(__tagged_address) \ - __builtin_aarch64_memtag_set_tag(__tagged_address) - -#define __arm_mte_get_tag(__address) \ - __builtin_aarch64_memtag_get_tag(__address) - -#pragma GCC pop_options - #ifdef __cplusplus } #endif diff --git a/gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-1.c b/gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-1.c new file mode 100644 index 0000000000000000000000000000000000000000..4a34c37f44fae590d2a3f947dd1bf404fe8261fa --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-1.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv8.5-a" } */ + +#include + +void foo (int * p) +{ + __arm_mte_set_tag (p); /* { dg-error {ACLE function '__arm_mte_set_tag' requires ISA extension 'memtag'} } */ +} diff --git a/gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-2.c b/gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-2.c new file mode 100644 index 0000000000000000000000000000000000000000..bf06b284dadd2082496cfc0a345f7cf5a783bd3b --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-2.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv8.5-a" } */ + +#include + +#pragma GCC target("arch=armv8.5-a+memtag") +void foo (int * p) +{ + __arm_mte_set_tag (p); +} diff --git a/gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-3.c b/gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-3.c new file mode 100644 index 0000000000000000000000000000000000000000..1f4ffa454a763e6b35bd84af6ef6c7d6474a518b --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-3.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv8.5-a+memtag -mgeneral-regs-only" } */ + +#include + +void foo (int * p) +{ + __arm_mte_set_tag (p); +} diff --git a/gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-4.c b/gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-4.c new file mode 100644 index 0000000000000000000000000000000000000000..a1cd45ec79d242dcf710abdc375c29063866eb5a --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/memtag_guard-4.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv8.5-a+memtag" } */ + +#include + +#pragma GCC target("arch=armv8.5-a") +void foo (int * p) +{ + __arm_mte_set_tag (p); /* { dg-error {ACLE function '__arm_mte_set_tag' requires ISA extension 'memtag'} } */ +} From patchwork Thu Nov 9 11:27:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Carlotti X-Patchwork-Id: 1861944 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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=NReOBqcb; 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=NReOBqcb; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.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 ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4SR07H353Qz1yQl for ; Thu, 9 Nov 2023 22:27:55 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 472B03857017 for ; Thu, 9 Nov 2023 11:27:50 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2077.outbound.protection.outlook.com [40.107.21.77]) by sourceware.org (Postfix) with ESMTPS id 7E9243857026 for ; Thu, 9 Nov 2023 11:27:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7E9243857026 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7E9243857026 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.21.77 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699529259; cv=pass; b=r/+Ey8sPcqiT8J2F2azCERPxtk5yrSdaGeN7Nq6GWxoMR6yIY/+wu+pwncWuWVRaD3YbpniD8kubsotHFMEZ19hdo+4p1zthGaHlbDIoopCrzjfuKeeT/bqflYX8rj+Gz+eDHBVrqYVgSOv6xrst7eOjIimw+lP72qgpNwF3O+g= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699529259; c=relaxed/simple; bh=h1qiPW/AVZ22UL0fyehISU+KX5CZlZAFZKIYeXvaAG0=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=Q0/h/wC69wwGYZmHU0MjLdDVONRvA2W9Hdw4VdCuZePFT77MqUW2yhmOv4F44I0RVf/vxrXAPofz9tBgJCWBrhuOdImEKKIuU1enFH0MjrrRqql4Le4mdILzkPGFwdtIgXAcEpIWl9kdvl1ah9+/nnzIWelu6VWceIHrJ9yoMoI= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=SgxL6X7BG5eDbfhHdtJDSjbinUYFV0pAcKSC+Qf8V09iuq1BOTU6NKCW9o/bPyow4JJU0Nhw6cn2TEQZmnAtqeqcBCYYsJpxCLIMetJ5ATHGapQ5KLpFShrCbGuvq7+tc3HB0Vifk7M3ND8WvswF4vctR3qkkAm0HMaj56oL5w7a2vhOsyV57zmHOgmyBWLvNrw68IrSONOHaHrxbEGheUbxo5FIr0h6z/ZlOU/5yz4+FejsuDFt0CzuEFoVKyBRFSZI/SMQtp5QthLoYF/AMAbuslTlHFGnR1z7WJZL0eqjvFBJzSp6aDZksrCPy1XKzDr4FzPMB1szDPow5wSrIw== ARC-Message-Signature: i=2; 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=OBrpjM59E4o5BOROOpRQpm7QuoOLQh6UpTXCMGfvxBM=; b=gvkaK8c2RrmJpC3hha1LhWUMSi0nJoL+hMAVFJwOO2Y8x2ohqIPLtRpcB/HixWkqIVB1/NFF9nzmdxxIl9gS0dOsz2iEErW3gRtZW0uXUvgh4K27rx8lWnA+iA8soScefRq7kFH08EJ/BsK93lInGfhCaVXfJ1xOFdBspVLHmK7lIZCuzpGp/SPUMdjOgjFJYScQ5jccQQhSSogTWzvfIxNLsjUUuJZFyoc7enlwPTI4BqSZjfm5ALRhYje6gbDk2zsWSegSujjE4iikV3BIY5U3R2sDFU4ZXzChjUD5z8kE95vzJ8xsNx7dNz0oo6c9L76qhlom/jCwmcWQLhDGHQ== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=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=OBrpjM59E4o5BOROOpRQpm7QuoOLQh6UpTXCMGfvxBM=; b=NReOBqcbiFq8JWLW8GaBzFcMFp1pU7RjlLExWZ+SKICAOyD+JI+r/zKWA3/JhmkN5fAmW2ikR6gBEF5tGEZlDFaWF5Cq3Z9FoeRyc4uOk94tDJveoAH6CVtOdDrRBnXh51ys4/aDpl4sL7LM63m5y8tztH72pLouTpkDsWxty+Q= Received: from AM6PR01CA0040.eurprd01.prod.exchangelabs.com (2603:10a6:20b:e0::17) by AS8PR08MB9979.eurprd08.prod.outlook.com (2603:10a6:20b:633::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.19; Thu, 9 Nov 2023 11:27:34 +0000 Received: from AMS1EPF00000040.eurprd04.prod.outlook.com (2603:10a6:20b:e0:cafe::1f) by AM6PR01CA0040.outlook.office365.com (2603:10a6:20b:e0::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.19 via Frontend Transport; Thu, 9 Nov 2023 11:27: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 AMS1EPF00000040.mail.protection.outlook.com (10.167.16.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.16 via Frontend Transport; Thu, 9 Nov 2023 11:27:32 +0000 Received: ("Tessian outbound 385ad2f98d71:v228"); Thu, 09 Nov 2023 11:27:32 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 2f63c3935fd5a7ec X-CR-MTA-TID: 64aa7808 Received: from e8aaaae3886d.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 8A08F8CD-FD53-44CF-9FFC-75EDBFD668F4.1; Thu, 09 Nov 2023 11:27:26 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e8aaaae3886d.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 09 Nov 2023 11:27:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LRMZZV+igxfSoSdsRcKCizwX3/sxuww2omkI18eE3KJjBN6kssq5Ebjh9lwSEZHjnGe7oxfOKZDmCRObR0tX+nWJ0G6D6sl8jwlDhTUWuNDPMQ/a70Vx5Mym4VmxTK9otWVUueEB32EvqjgvSjN5f0d1RciFk1YR2nuthSpvf8Ox9oL20vnSu7fW+pJuHtS+wThaX+1WSWcRzDDxbekQ9bPC87d0VPGW+4Ubk382+uv8uAtNiXTfAc/f/+6QBVHYaNRJAMNDzvKHgXlH5JAKQcVAUR3NjDcD8E58tirTwxk11SybpiSewrpBE2BWLQjqUpNyQYoatJ7muy340MPRuQ== 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=OBrpjM59E4o5BOROOpRQpm7QuoOLQh6UpTXCMGfvxBM=; b=EQ7S6B6Q2CBJzfIY4p7SOII3O1rMBsfIQcRDGY7sRe400cucl4dYEqMlzgYSK70Jn1ydKzfQpW/J+cqbcHxKxVfMp/ziKDc9mh03ulORMdtyyjL9K8lQxXmCDLfdy8wsKax4rH3R9bbC9JjHuKOO9+0tMRodvKZaplwSGgP6BeKAMOlrKO2vQlfOSP63R6KvCv7AYk8bQI5M9EzKbELpQdfyhy38XGEcjlTtSrSvHOsciYqc5y2UcI78qQjTTudWPcKDGk5PDxe3rXlLEtSb5wNN7KKyB7BOUtb49Si72o8mhfFjSeQPqyivRrqs+pkvxqYcNVomojJh25wgQxhrYQ== 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=OBrpjM59E4o5BOROOpRQpm7QuoOLQh6UpTXCMGfvxBM=; b=NReOBqcbiFq8JWLW8GaBzFcMFp1pU7RjlLExWZ+SKICAOyD+JI+r/zKWA3/JhmkN5fAmW2ikR6gBEF5tGEZlDFaWF5Cq3Z9FoeRyc4uOk94tDJveoAH6CVtOdDrRBnXh51ys4/aDpl4sL7LM63m5y8tztH72pLouTpkDsWxty+Q= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) by AM7PR08MB5479.eurprd08.prod.outlook.com (2603:10a6:20b:104::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.29; Thu, 9 Nov 2023 11:27:24 +0000 Received: from AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::af15:c9d7:cd8c:6da2]) by AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::af15:c9d7:cd8c:6da2%7]) with mapi id 15.20.6954.029; Thu, 9 Nov 2023 11:27:24 +0000 Date: Thu, 9 Nov 2023 11:27:20 +0000 From: Andrew Carlotti To: gcc-patches@gcc.gnu.org Cc: richard.earnshaw@arm.com, richard.sandiford@arm.com, kyrylo.tkachov@arm.com Subject: [4/4] aarch64: Fix ls64 intrinsic availability Message-ID: References: <6dccdd32-6c7b-5962-24e4-8acc7910a76d@e124511.cambridge.arm.com> Content-Disposition: inline In-Reply-To: <6dccdd32-6c7b-5962-24e4-8acc7910a76d@e124511.cambridge.arm.com> X-ClientProxiedBy: LO4P123CA0529.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:2c5::6) To AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6678:EE_|AM7PR08MB5479:EE_|AMS1EPF00000040:EE_|AS8PR08MB9979:EE_ X-MS-Office365-Filtering-Correlation-Id: 91019f46-d423-46e9-8df9-08dbe116dd92 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: VEQyVakgiY+v1Q31V9SnVyVTfoNbE9tQ0qEBE93/A7akhL23xj7XzuJ97lb0IBG3q68UhV4xilW8eGvkK9eiiJbd4vK2Moo0xydOPiGd5oX/VUYxP66V5EOujOA7MJKXuIwZTl0SpeYg9hrRnY8G7mThk0VeZTDNkossPpaNSv4uBay8Wk6oZ73ay34O+1+ows4DoInJHrpkUxZ8t3AAG9CMD9AERpKNRaS+hr3Lzq6RVuiXCllh9N6aeN4kyIfn08wlOLcxWDpao2suyIKKvlf7YBNSq8OVbBSMmqENyZ4XGU+kO3BU+CLA3Ax96Mo410qoZDz3YmUxhIqyEgCC8tFII04fhD3wBs2Kxtu3cHTn+nDFkcZ3U54XM/oSjvFVedNkfo+MQDgm9ofHyaO+ceQlO6yFJLas3r3aZGKReqndVioqRh0x2/VvbXK3Q6Th9V5K2HISPmKQaSWDDFt8Nwy8RIKsxDdT3IZac4P0ADbwpc7KQd5ZyhQdAUljqTpCWvWUXxIOUVVM4wv/zJlRfuU2hsD3fPWgifzFsKIBo4P7m7Mw7Bga3C4cCW8Ej8fKucqxQEMDnsiP4+D6bTu3gA== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR08MB6678.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(39850400004)(396003)(136003)(376002)(346002)(230922051799003)(451199024)(186009)(64100799003)(1800799009)(84970400001)(31686004)(6486002)(31696002)(86362001)(38100700002)(83380400001)(66556008)(6666004)(6506007)(41300700001)(26005)(6512007)(66476007)(66946007)(6916009)(478600001)(4326008)(5660300002)(44832011)(2906002)(8936002)(316002)(8676002); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5479 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AMS1EPF00000040.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 46f7e33b-6bdd-4de1-4e60-08dbe116d86d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ClnfNLKUrsei7WL8Ji3RiH6YLAnX5xT2S2r4i6RGzu3IthcHWwywyXeRFmDdetvzByXksQqUwhrxwZhWexmXUsDaHZh1XwBhKHZlew3K3eOicAb2bQsbserYk1tACr1z6QQJvhFPmo8cqZdthHe8ay4FlAF4SU4F5AizxisikX7aphrkQ24oxAPFLfL62yCzoBWcQzTH+HsRStQWo3YIqA+ps9La6HkbeI/nenJwMUO9DV4XsEcM0lARc/eabnMsX3hQW56r1gFlGSfcurxaRNa+VBSGqvyayQQADWM85opvFQIgFsSfpQy3pv1n2MEKEK9A7mI0cl61XUSG/w2ilcFsYyUm9ZF3PS80zd1K6kPNT9TZDisbopizMIjuU/uTQg8vp7mENFaOy3LRz6sIYhHlW5tjulZ5+wQpJfhmlbjJIy2hDq5qGrUdVl3U9GsqpG/4RDzIeTfkcNgSgrhdEMWJzVCPZnxmqTVs54KussBmfulguIzgOK9YAnIkcZBXuIKVfj33LA3IWFiBf5TSCzn12quS5194EHOiZQrmmxuNBT7Nb10visFeReCfuyLTti8GsbDxpTiGOeB1DG0UzXXb+qhW/3QDKui3NdYAxTovgHLJFV+Zu+AGdQmkpA50wQ2bhqdEQ8fp8UKi7O8jZaZRXhOS5kbcb3TexoW7u2kFady54YA+Yae22pjfuVXwLo/woBkHe7NFXukdeCT8rVOZ1GqQUpdj0G/JhnhH7wxDO1L/E9o4J/Js1VwJPZW7T45lmcQ1IjwHln2dgxS2Rg== 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:(13230031)(4636009)(136003)(39860400002)(376002)(396003)(346002)(230922051799003)(451199024)(82310400011)(64100799003)(1800799009)(186009)(36840700001)(46966006)(40470700004)(40460700003)(40480700001)(26005)(6506007)(6666004)(47076005)(6512007)(36860700001)(83380400001)(41300700001)(5660300002)(4326008)(8676002)(8936002)(44832011)(2906002)(6486002)(478600001)(336012)(6916009)(70586007)(70206006)(82740400003)(86362001)(31696002)(356005)(81166007)(316002)(84970400001)(31686004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2023 11:27:32.5331 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 91019f46-d423-46e9-8df9-08dbe116dd92 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: AMS1EPF00000040.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9979 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH, KAM_SHORT, 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.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org The availability of ls64 intrinsics and data types were determined solely by the globally specified architecture features, which did not reflect any changes specified in target pragmas or attributes. This patch removes the initialisation-time guards for the intrinsics, and replaces them with checks at use time. We also get better error messages when ls64 is not available (matching the existing error messages for SVE intrinsics). The data512_t type is made always available; this is consistent with the present behaviour for Neon fp16/bf16 types. gcc/ChangeLog: PR target/112108 * config/aarch64/aarch64-builtins.cc (handle_arm_acle_h): Remove feature check at initialisation. (aarch64_check_general_builtin_call): Check ls64 intrinsics. (aarch64_expand_builtin_ls64): Add feature check. * config/aarch64/arm_acle.h: (data512_t) Make always available. gcc/testsuite/ChangeLog: PR target/112108 * gcc.target/aarch64/acle/ls64_guard-1.c: New test. * gcc.target/aarch64/acle/ls64_guard-2.c: New test. * gcc.target/aarch64/acle/ls64_guard-3.c: New test. * gcc.target/aarch64/acle/ls64_guard-4.c: New test. diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc index 503d8ad98d7de959d8c7c78cef575d29e2132f78..9fd0d5c362815c25793bc04a1d82e32bd30bbc22 100644 --- a/gcc/config/aarch64/aarch64-builtins.cc +++ b/gcc/config/aarch64/aarch64-builtins.cc @@ -1943,8 +1943,7 @@ aarch64_init_data_intrinsics (void) void handle_arm_acle_h (void) { - if (TARGET_LS64) - aarch64_init_ls64_builtins (); + aarch64_init_ls64_builtins (); } /* Initialize fpsr fpcr getters and setters. */ @@ -2148,6 +2147,13 @@ bool aarch64_check_general_builtin_call (location_t location, return aarch64_check_required_extensions (location, fndecl, AARCH64_FL_TME, false); + case AARCH64_LS64_BUILTIN_LD64B: + case AARCH64_LS64_BUILTIN_ST64B: + case AARCH64_LS64_BUILTIN_ST64BV: + case AARCH64_LS64_BUILTIN_ST64BV0: + return aarch64_check_required_extensions (location, fndecl, + AARCH64_FL_LS64, false); + default: break; } @@ -2630,6 +2636,11 @@ aarch64_expand_builtin_ls64 (int fcode, tree exp, rtx target) { expand_operand ops[3]; + tree fndecl = aarch64_builtin_decls[fcode]; + if (!aarch64_check_required_extensions (EXPR_LOCATION (exp), fndecl, + AARCH64_FL_LS64, false)) + return target; + switch (fcode) { case AARCH64_LS64_BUILTIN_LD64B: diff --git a/gcc/config/aarch64/arm_acle.h b/gcc/config/aarch64/arm_acle.h index 57f16603d22cec81002b00b94afe1201c83b4b94..e7aae7e5278691508086e6438b57b8a6fb6df554 100644 --- a/gcc/config/aarch64/arm_acle.h +++ b/gcc/config/aarch64/arm_acle.h @@ -235,9 +235,7 @@ __crc32d (uint32_t __a, uint64_t __b) #define _TMFAILURE_INT 0x00800000u #define _TMFAILURE_TRIVIAL 0x01000000u -#ifdef __ARM_FEATURE_LS64 typedef __arm_data512_t data512_t; -#endif #pragma GCC push_options #pragma GCC target ("+nothing+rng") diff --git a/gcc/testsuite/gcc.target/aarch64/acle/ls64_guard-1.c b/gcc/testsuite/gcc.target/aarch64/acle/ls64_guard-1.c new file mode 100644 index 0000000000000000000000000000000000000000..7dfc193a2934c994220280990316027c07e75ac4 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/ls64_guard-1.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv8.6-a" } */ + +#include + +data512_t foo (void * p) +{ + return __arm_ld64b (p); /* { dg-error {ACLE function '__arm_ld64b' requires ISA extension 'ls64'} } */ +} diff --git a/gcc/testsuite/gcc.target/aarch64/acle/ls64_guard-2.c b/gcc/testsuite/gcc.target/aarch64/acle/ls64_guard-2.c new file mode 100644 index 0000000000000000000000000000000000000000..3ede05a81f026f8606ee2c9cd56f15ce45caa1c8 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/ls64_guard-2.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv8.6-a" } */ + +#include + +#pragma GCC target("arch=armv8-a+ls64") +data512_t foo (void * p) +{ + return __arm_ld64b (p); +} diff --git a/gcc/testsuite/gcc.target/aarch64/acle/ls64_guard-3.c b/gcc/testsuite/gcc.target/aarch64/acle/ls64_guard-3.c new file mode 100644 index 0000000000000000000000000000000000000000..e0fccdad7bec4aa522fb709d010289fd02f91d05 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/ls64_guard-3.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv8-a+ls64 -mgeneral-regs-only" } */ + +#include + +data512_t foo (void * p) +{ + return __arm_ld64b (p); +} diff --git a/gcc/testsuite/gcc.target/aarch64/acle/ls64_guard-4.c b/gcc/testsuite/gcc.target/aarch64/acle/ls64_guard-4.c new file mode 100644 index 0000000000000000000000000000000000000000..af1d9a4241fd0047c52735a8103eeaa45525ffc0 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/ls64_guard-4.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=armv8-a+ls64" } */ + +#include + +#pragma GCC target("arch=armv8.6-a") +data512_t foo (void * p) +{ + return __arm_ld64b (p); /* { dg-error {ACLE function '__arm_ld64b' requires ISA extension 'ls64'} } */ +}