From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on2045.outbound.protection.outlook.com [40.107.7.45]) by sourceware.org (Postfix) with ESMTPS id 56E783858D3C for ; Fri, 10 Nov 2023 12:17:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 56E783858D3C 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 56E783858D3C Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.7.45 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699618644; cv=pass; b=D2ao+1PCCQ9XYy2gcUunJ/wXO3aSR14ltvK4HxWGb0e5ddubrbBIpUv/ywxfwnOiS4qzcAQwZtp7HA1UR4mTbh93Q2DySudxkcT/MhTnkVMHTloK/c4tGzw2bVFLeBbQDxWl+LhcWf6qA+JXpbdBelzKyptRPs66xoU1jE7f9fg= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699618644; c=relaxed/simple; bh=h2pNNvMlkrsxnnsTbDPmdIO2miOOO6Qk2JqIjK3vIDE=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=ZvoL/VY1bKFb6JjNRjusAW24Sek7clagctmny45sTVGl2Hv6/HXMR7Qwbv9V8mAn1A1oVbtWEjBKzm2hrb6i4U7qMUiABwYqRw7T1SpFWJ0qZfJPBpZ6xup8CsFIDGPP47gQUJ8Y6o9sFM9/XR/A3JwZVUg5lvYsqFLLY0koLHc= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=VBE+4IOhp4ahAw+U/tjMX6PiWh/gT5ktK7ejO5i+z/6EEAnbKCZp6CUF77ITuym4tS0VpdeSEtK2kuu8/lZPeojrPe6i2gBZfRDK+g/AmRZRSCsD3ZjuLa9yQ/0xYJlVCAgLAKpJtl+bNE6WQJ0FYXFW8003NuVnx2nPAjvEJngjv5rWCn5F45jEy4tE0RbCnqi+ep0QXxPQfDwVCsShl6aGngKWCQXilAA8VYEBB7jVLQy/IYKKF20S7m/j+MQ71/jEYBc9rbp/GoYmguH/EgjtvTfu1g/lfDqy9UnmU+dtG9zY8cxNQx0rF70zIIw5O368feJUNJ73T1xcw8vxIw== 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=84+Z6dyeHMD/5bwQ8PayD2bdPDOQC1Nfmxh5YFj+Uwg=; b=l85YHOjpsSJ4uh3JbZYKraU5HYoUJi1xoGYwKcz1BqoUQiQthCv/hWhGDkl0iljkHdzFPwfgUaJYbWdDgwGxykyoQUk2xrFKzUU7aRteyTCaC5nPYyPrnO3zS9ZCkwQP7aqG46KxmnNTapKTRQ/cnVX0jtP1QLpNPEgXwEINB5bviLzuVPw9c8iiu/oNjihtOf30W9uJruUHiXSIY2878yVETfAvmTLgIY02qm4n6XlwAL0MYyyeFWRFGbhP7OMJSsDxrxT+fioPQnnoD2uTeZQrLZO7QeLP+jy8nL7z53jTI+VFy7h2+KOv3DSuVEKE7a1UcisWYn+coNdunmPLpw== 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=84+Z6dyeHMD/5bwQ8PayD2bdPDOQC1Nfmxh5YFj+Uwg=; b=UPM5QkLg6SZqX3v36fOVOapcrnTlQdSSrmb15PZYmr3rwMw9lK0rKi9bVJWPit5ypBSiV8UqxuGJS7JSp6cAbNhzlMPShlBZVEkaq2scGbDYLswsQPDAffqLm0uWllch8dIyN25ESZ8GOe1caOY6KsBj11Mbxs1C3FoAxucPtP8= Received: from AS8PR05CA0014.eurprd05.prod.outlook.com (2603:10a6:20b:311::19) by PA4PR08MB6285.eurprd08.prod.outlook.com (2603:10a6:102:e0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.27; Fri, 10 Nov 2023 12:17:18 +0000 Received: from AMS0EPF000001A6.eurprd05.prod.outlook.com (2603:10a6:20b:311:cafe::17) by AS8PR05CA0014.outlook.office365.com (2603:10a6:20b:311::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.18 via Frontend Transport; Fri, 10 Nov 2023 12:17:18 +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 AMS0EPF000001A6.mail.protection.outlook.com (10.167.16.233) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.17 via Frontend Transport; Fri, 10 Nov 2023 12:17:18 +0000 Received: ("Tessian outbound 8289ea11ec17:v228"); Fri, 10 Nov 2023 12:17:17 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 1765e18eb84ba0d7 X-CR-MTA-TID: 64aa7808 Received: from 2a9d4dac94ee.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 15622476-258D-4824-ACC9-7FA4E9CB1DAB.1; Fri, 10 Nov 2023 12:17:11 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2a9d4dac94ee.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 10 Nov 2023 12:17:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jufiY20C5z2kxXS1ds1/5ACVJRYttQHgRAaUdDF4qu+kMW5OyXzNQc1n4ZkfBJV6tb1BPvaQqVCDREGt9ZrWcQR/XERe6OeGOJWnzEUaCvq0AeMoXSeWO0IJU+gNQYVhsMVyHNLoZp044AV2nxbubYJ/Bh4poLnJN6lWPwGonV4csH1v4tfqjYIdPZ3Z1LviCsIcN1ZBhVqyEumHF+I2XqYyT6WR98sfd9nocD1pvBkYna7DUkTGd+o6+BiyJBLH7OAAeiQS/b3zmD+eemcQO28RU1jPfJel0ML0Xov3TED/gLFZbuxzP2zPxMYWVcnAst0b2dpce1Xucq4SIMYu9Q== 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=84+Z6dyeHMD/5bwQ8PayD2bdPDOQC1Nfmxh5YFj+Uwg=; b=ZpOl4m0Du+3VZHh65diWUEc9+WNTTfoaizgBm2hXxFZjMiGpJmtd6IctY0ItPsq7YSRXovbQbKqWOht9gCn/31tceD54bOiSuQlEEyP0mojjvkBnGkvdQZUadQIndMfaKliX/kDBskaEYRigbc18QidxtF5a5kmWwTso4FMi5kTR7D/JLMa+IV3RNp28/qnQH/aLL0T2Yg33Alw15DRYZmTxNNS9d+GX7icRY0tqYEl8lP2iyVfDMjzdw3SQsuH9b9mGPJXXf+fAbMuotpdMIpVsSFYov/kj5Zk5N6tWjcN+s/lldf64iGHv2XwjIQX4vgDm+XqZlSKtjSCS6vxyTw== 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=84+Z6dyeHMD/5bwQ8PayD2bdPDOQC1Nfmxh5YFj+Uwg=; b=UPM5QkLg6SZqX3v36fOVOapcrnTlQdSSrmb15PZYmr3rwMw9lK0rKi9bVJWPit5ypBSiV8UqxuGJS7JSp6cAbNhzlMPShlBZVEkaq2scGbDYLswsQPDAffqLm0uWllch8dIyN25ESZ8GOe1caOY6KsBj11Mbxs1C3FoAxucPtP8= 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 AS4PR08MB7654.eurprd08.prod.outlook.com (2603:10a6:20b:4f0::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.29; Fri, 10 Nov 2023 12:17:09 +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; Fri, 10 Nov 2023 12:17:09 +0000 Date: Fri, 10 Nov 2023 12:17:06 +0000 From: Andrew Carlotti To: gcc-patches@gcc.gnu.org, richard.earnshaw@arm.com, kyrylo.tkachov@arm.com, richard.sandiford@arm.com Subject: Re: [2/4] aarch64: Fix tme intrinsic availability Message-ID: <30f0e1c4-b9db-e8ad-bccb-e69abfa8c4fe@e124511.cambridge.arm.com> References: <6dccdd32-6c7b-5962-24e4-8acc7910a76d@e124511.cambridge.arm.com> <74c28cf9-9a02-c17b-fc97-09ff9abe9096@e124511.cambridge.arm.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-ClientProxiedBy: LO4P265CA0250.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:350::12) To AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6678:EE_|AS4PR08MB7654:EE_|AMS0EPF000001A6:EE_|PA4PR08MB6285:EE_ X-MS-Office365-Filtering-Correlation-Id: b235dde1-dbfe-4837-0902-08dbe1e6fb86 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: SPVBwqVdK4AlkL4BsIcieXDGpjXa2HprWnksqfJj3kOXpPun6zW6HcGDddFTgG4KvifW+GAglwOaaMW92Rs9WcfVfUkVW2HGmcaYjjNgau5oJz3d+C9YKl5UrCLUSYFkxdOJoN+Kh2JAnUYJnTEDHzz2eaQvHr8ET+5pE+moQc9T8yJhmEVYLC/WbHHFIcEeGh+j24teky+xLLpUCvKsuojX8H1qpd4Ot1ydB45Y7tmwXIIXnJAVHAkoZjJ0q/5J3YlaMmfMHJk8U3q0ZsI5Bzk1GasxjCYQXJG/MzY2MYJ1FTDqyrZVbPSxiFNCOwZzT79RY2BUTC74zbgT2saIK+bfnWBieR7ta+86JX6zglxkrUwBpl68r7WdtjrRW64LsNZwmhvuu4ZuVbfs8TMmO0anw9IWm0Ui4Vth9TyeSQTyxXrOuyI1NnkJmeVTBPNnxn0+rIsWXqNXVjCLGmX/IhIzRKHV9gJ3W4fnq/YpM7AYOrbQN9S3FEmJoZC0oq2Z7CHSYmgjQ4yk7mVtCJiRsOUyzKgd4YC7GpTH5qh7GOGUv7kFJmfh+M+7srBX5kDVK8ieccd1k2c1UQkkbO8Y4A== 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)(396003)(136003)(376002)(366004)(39860400002)(346002)(230922051799003)(64100799003)(451199024)(1800799009)(186009)(84970400001)(31686004)(478600001)(6486002)(86362001)(31696002)(38100700002)(66556008)(83380400001)(66476007)(41300700001)(66946007)(6512007)(6666004)(6506007)(44832011)(30864003)(26005)(5660300002)(8936002)(316002)(8676002)(6636002)(2906002);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7654 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: AMS0EPF000001A6.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 3c6f2beb-04e8-4626-d656-08dbe1e6f61d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fdX7N0NbUxCu7Ib4gLL17xJlXRPRSZ86rFKOfi9Z0a8qQBBe8/i+xGWEuj27ecgvLFw3FbtPQim6S2vN+vMixEc6skxtNXzpjUt5TtDfkXbkNTJLtNCKjWIZB8PXqxGBoCk1RUVbZWdr4cN6d8XUDJgsfuBHBHTCGZujR9r9LiO/04RdZtNr0fzqa3zysRPpc7Eo9r2jWtXKGXlRLz0zxysNyqfFGL/Een84Gi2Qep1OkX/gQoddo0vtwgrmQnNyioRCoY18h6KeGsNEJbhsd8goebr5j18k2GDhsaUkfFCWmH6IxPbhtcw8zfhrG5gc6NNwBQOs1PeBmZwNjwbK9ONPPahQN+3uFoCuwxzjc+xnXZsrQ5B2hSG1YozQHzh7T83u0k25y+8MoMaDA92oANiUeAxEF/i5YDkLpEj6OPd7OsY7FtguAWfxPiqs5n3KdaGz+apFzUVOyG2xueFikvIig88vvEsfqWX1ELPcL+wP4F0XaK1sGzUKmvagxG3WS7H15+JUs33vWhWkr/XYH7zlXYt3UQomsK6rS2TUWaNmrDKkFAG+wn1xtVZ8CsqYy/iOQFW1kFrg+MLAUE/57utQ/gOrrILyLbNJ+MBQLuGrXjEssJsmpGYEiVOI7qr+0VaaLLo5A3syhSAVMx82a6hhHajvGOCah2SXLsXA+Cy1hgArxXQh5JV091EOU5xflulqe+PPhm1PisHl8mdrkPqPdvP0Wrw91ZYoK3u6wFLTwt7zAEXjheO+JOMuxIl4SQ8f4TssT4dchQYFMw/nwQ== 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)(136003)(376002)(396003)(39860400002)(230922051799003)(186009)(82310400011)(1800799009)(451199024)(64100799003)(36840700001)(40470700004)(46966006)(2906002)(5660300002)(336012)(41300700001)(6666004)(47076005)(6512007)(26005)(83380400001)(8936002)(6486002)(44832011)(6636002)(30864003)(70586007)(478600001)(316002)(70206006)(8676002)(36860700001)(81166007)(356005)(6506007)(31696002)(86362001)(82740400003)(40460700003)(31686004)(84970400001)(40480700001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2023 12:17:18.1025 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b235dde1-dbfe-4837-0902-08dbe1e6fb86 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: AMS0EPF000001A6.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6285 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 List-Id: On Fri, Nov 10, 2023 at 10:34:29AM +0000, Richard Sandiford wrote: > Andrew Carlotti writes: > > 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. > > My main concern with this is that it makes the functions available > even without including the header file. That's fine from a namespace > pollution PoV, since the functions are in the implementation namespace. > But it might reduce code portability if GCC allows these ACLE functions > to be used without including the header file, while other compilers > require the header file. > > For LS64 we instead used a pragma to trigger the definition of the > functions (requiring aarch64_general_simulate_builtin rather than > aarch64_general_add_builtin). I think it'd be better to do the same here. Good point - this is also the same as some simd intrinsic stuff I changed last year. I'll fix this in an updated patch, which will then also need a slightly different version for backporting. > > 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) > > Formatting trivia: should be a line break after the "bool". Would be > worth having a comment like: > > /* Implement TARGET_CHECK_BUILTIN_CALL for the AARCH64_BUILTIN_GENERAL > group. */ > > "aarch64_general_check_builtin_call" would avoid splitting the name > of the target hook. > > Thanks, > Richard > > > +{ > > + 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'} } */ > > +}