From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2085.outbound.protection.outlook.com [40.107.6.85]) by sourceware.org (Postfix) with ESMTPS id E744C3875460 for ; Tue, 14 May 2024 14:57:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E744C3875460 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 E744C3875460 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.6.85 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1715698683; cv=pass; b=Wy8rgpP7u+1ppXmRG2WD66/DBDRc9f8KGOkk92HuAhxPVTwkRJOGI99T8tZWl5kUlGE1Le2HKgCim3gVfCO/I5KFB0VxZvpqgmRPqy59S8pEPfRzI55o3dV0Gd+6DsFIpT9dqnjgTlmKl0wg/WQdVfE865iHyoaV5fhmNj9F0Gg= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1715698683; c=relaxed/simple; bh=1fCRgjCk6fURgps0ZaTGVqy/+o6i8tzj+/vbozB7aPs=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=TqKc7c7y7pv0bkwPigbW6AWPKGJMb0rz1PjW2q+7utYB1Y6G70FgNZ8gzaKkO13zhkDEddKHBNv2RZeDr1PXB7wncE1cAEbbfB3QQQPRuMKFAZYPnE4/wnoG0CqO4fI1S3tLHaCCkRu71ZfELs3VrfnCqaWG5PsM1I9oYNuIiEo= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=F7mnaOfw1pwd8ge2NdLbz2St7eA6Ff+/EN6M92DiuQliVdhTonL0YkhETHZ2UAJASZ+FvsP91q1oYABagPUN/Ks6uT7C1SR56nvs0K+sNvd3AEELR8VD5JceaSnnUs0KPMnjOpbG8ZUJ8Cn/+OcrWnvasn5K9o3R0/Vbps+pGFkqFf7zMbQ9d9HMDgrHkQCtUschhr/d7Voit+0pla6Uk6ssnxnVCVooB1uQILiNSMcWvf2Uh/9LDg2eE3C3pjvNCmR5R0872XowbuOB6bAyvwBXau/2rE5FutjQ2BcFkwRxxuT2EheN6FdRPEGVMZkie4rmJbHYW3jkezB5rWHOxQ== 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=Ii/QHCgsd+oMkwsnPdcbFoYi7X+ke8WdjP7vFRGgAxo=; b=SbcWzrhuLELHOXUBEBDanir9oUmre6m80uFFD8eghGwPSycZvs5G7I9SqtDUHzZSNCpjEVqeN41K11UhFdfCHQwvMVZSzIgkfJF7NzruCTWDSp5dwWgp98gwykFbcTelsnTkgxHao8rWrKAYEZmARIQAmYist9/3bd/cj0Y5PthkEDJsxWUFTaBE1/Gp4UCAzDO2WYXf8aGN0RG7t08xgeoXxcFJPoRQnroKOViZ+UuQu9fjojAJXglE+N+Dt1CTdTMDm31edzXqekYyKRSBJMMNY5qdJw/+qNLx7m7/S87aXcRS9c61QwKGW2NPbGDYmKLZEYJCPjabd34VLy8mVw== 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=arm.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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ii/QHCgsd+oMkwsnPdcbFoYi7X+ke8WdjP7vFRGgAxo=; b=l9oXsKnzfsXWjB2P8IRTAEKMLLSOw/SvoXBg7PvRKxcZ1RbJUDttnI6DyENAdH2jKxTr7Sd0V9iZ65n2bkYoL4plnbQpUglgn6NfqlY0e1OR7Xb+wQHz2PLLDdnhUJ4TSnvj7XsXGhr+HKYKXFPlEcpsAB+bKl0oALj1mBUr/KM= Received: from AM0PR02CA0136.eurprd02.prod.outlook.com (2603:10a6:20b:28c::33) by GV2PR08MB9423.eurprd08.prod.outlook.com (2603:10a6:150:df::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Tue, 14 May 2024 14:57:42 +0000 Received: from AM4PEPF00027A68.eurprd04.prod.outlook.com (2603:10a6:20b:28c:cafe::1f) by AM0PR02CA0136.outlook.office365.com (2603:10a6:20b:28c::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55 via Frontend Transport; Tue, 14 May 2024 14:57:42 +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=arm.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 AM4PEPF00027A68.mail.protection.outlook.com (10.167.16.85) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7587.21 via Frontend Transport; Tue, 14 May 2024 14:57:42 +0000 Received: ("Tessian outbound b7675f20d34d:v315"); Tue, 14 May 2024 14:57:41 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: eddd902ee3342458 X-CR-MTA-TID: 64aa7808 Received: from d9eda0b58807.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id FBEE3BEB-82A3-45B7-8F3A-F5EA6F9098B2.1; Tue, 14 May 2024 14:57:31 +0000 Received: from EUR02-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id d9eda0b58807.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 14 May 2024 14:57:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jbclLzCg5yW+13j8rEz04rK4w41W90xaqRXTQ60R2yCksBenilBB548nLaNtNwDXYQyWBvfcOGBiZi3JaUiY1vHJ+yoW5KfAJxkpX55BH/clcSzhg18J9WAqc7xD4m9ho86Wx8vOVkZgCfABctpaaZeNxk4KHLDht9qmcGIqpWLYYZjHDSAn+u56bqIE2eopgBbIk/H2nWj/Oq57iWpV9cS2f89PWifQcYPpZIfM/Ger2S5KfCypKUNUgNi3PIs9GJdY9nWMgUh03rR5TorAPNMoNis4U3voVaqo3BJ1dbE4jWEuJDufjQ+AUyl8qDBgrY9xs22bHszlWlkTad3wpQ== 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=Ii/QHCgsd+oMkwsnPdcbFoYi7X+ke8WdjP7vFRGgAxo=; b=HD7gq9bRIrqTGSRsS5rKSUigaUWNPl/fNHc8mNAFQHbx2jrgGq+PfrzA/jqXcTfKQkRSkDaPgAC/KjZa3I/jJ/3SMUqkjSPTUEagqMb7ee/YfPq8uLpW5fKHEojq5AHa8esWTG9XzaaY7W+yQbMIjytojCRcizlBf6qi5qG/344IzCmuVutAC9x0tsc46uaPOD5hqPAzSZ8boeDqUupDdhfBt4z9Qhu9wV0uMevBXRsq237Wr8Ox1CjfNIILuZXSQxDA0Lk6b4n5gJh/MKdazIhwTpfAXBLfOXCU8NcqgWQSonrntN+5SaZi6v3bmekuHhrtIKNHAI8Tbo53LE2owQ== 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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ii/QHCgsd+oMkwsnPdcbFoYi7X+ke8WdjP7vFRGgAxo=; b=l9oXsKnzfsXWjB2P8IRTAEKMLLSOw/SvoXBg7PvRKxcZ1RbJUDttnI6DyENAdH2jKxTr7Sd0V9iZ65n2bkYoL4plnbQpUglgn6NfqlY0e1OR7Xb+wQHz2PLLDdnhUJ4TSnvj7XsXGhr+HKYKXFPlEcpsAB+bKl0oALj1mBUr/KM= 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 AS2PR08MB9894.eurprd08.prod.outlook.com (2603:10a6:20b:5fc::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Tue, 14 May 2024 14:57:25 +0000 Received: from AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::3b48:ae45:5b79:cc29]) by AS8PR08MB6678.eurprd08.prod.outlook.com ([fe80::3b48:ae45:5b79:cc29%5]) with mapi id 15.20.7544.052; Tue, 14 May 2024 14:57:25 +0000 Date: Tue, 14 May 2024 15:57:21 +0100 From: Andrew Carlotti To: gcc-patches@gcc.gnu.org Cc: Richard Sandiford Subject: [PATCH 06/12] aarch64: Introduce aarch64_isa_mode type Message-ID: <5b3263e8-4d6a-d63f-67eb-0c3a1424cb5a@e124511.cambridge.arm.com> References: <0c99ec88-434d-a9de-0e0e-c281cb2dff4d@e124511.cambridge.arm.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <0c99ec88-434d-a9de-0e0e-c281cb2dff4d@e124511.cambridge.arm.com> X-ClientProxiedBy: LO4P123CA0381.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18f::8) To AS8PR08MB6678.eurprd08.prod.outlook.com (2603:10a6:20b:398::8) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6678:EE_|AS2PR08MB9894:EE_|AM4PEPF00027A68:EE_|GV2PR08MB9423:EE_ X-MS-Office365-Filtering-Correlation-Id: 75c49a26-92ab-4399-5365-08dc742634b9 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230031|376005|366007|1800799015; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?ClNRru0RzY65uiTE2C35p5Xe2Y+D8uxyXgiBG99KP1TveXWUP0pWOE7E4/Cy?= =?us-ascii?Q?HyuAjiDhwApMKMkXVndSFGeEw7UiCMyP459Zn7pL2sfXWVHADkYteEak9TY8?= =?us-ascii?Q?m+X8wNYvntyT6jLmDEk+NjDeDXixLe8eppXtY2zBs2YB6te3J6Zf0vnaRfYW?= =?us-ascii?Q?dXtDCOCaMvoMO6qUSfMdsS6+ROUNwTu97yZiBdN1+mDbg+CEb4yJzQuSUasl?= =?us-ascii?Q?MZ/sAMifQlPOfSBL/ewSsjvKTe53BeCQS+Ar/keH51qTP0KGp6hg0G53+1Kg?= =?us-ascii?Q?T+DvoeBSxP7vIsr2ob8L6ngSsdvNnqOwFRb66mO03vNjoa0kbk0fMpddDJZM?= =?us-ascii?Q?WA7EtCs7GL5pz6DrEdhBH/E4tqXPjgafICrybExx5M53eU+M0IphDoEMsFg5?= =?us-ascii?Q?hHDKE05d/sbOBmVDPLHvTTCBpowJzvV+XNaYWZaFbxIh6aqObHHz532pPYQR?= =?us-ascii?Q?VgE/mtPpcngOE0yTedeWhtLdM6oNMQwf10akxrNApr5Bm35z9FvZMf/aArhw?= =?us-ascii?Q?zf6JLvqgeKs82qCn64tYQ4Y+b2PtwedKlcuMqfRGSsHbaiySp7Nau5Nm06CC?= =?us-ascii?Q?8e5j115SXWc35sXXNNgMmcXTdo6Z38G8Cr+o/ElCZeUVv8rvRKO/1xYBKFa7?= =?us-ascii?Q?QLgW3Jf74zqdrMJAJjZzeDAU7v8PMj2SpqU4OEtp9+SjEhlyNT9daT28aWzt?= =?us-ascii?Q?orDOEixKbrsMGvj0uF6tUJ8YEfIqzCdcvb2LWOE+Q/eOlbhsotFF0/2zOsPs?= =?us-ascii?Q?X5gTbEK80TBe9IENj5f9fUxkA77HLlNZg6cJ4NxZucSeHoDga8i21i0XN0SA?= =?us-ascii?Q?O5qCsGlozQAqBhTpyNQql7UZt5y+U2a6BxaOy0m/x3PDYVHEZGeooHNCcLZe?= =?us-ascii?Q?OVFoV0FP8qsPEC4Ew6HZ8A9EvmBdfjpn7mubaqUOpfdbHqRHcYq4cvYe1wKZ?= =?us-ascii?Q?D4eYURktGzECNTd1nhYugIvwtGzE8nP8d4WPPeCpN4EgNZZCE0OTsLjK4ilV?= =?us-ascii?Q?9NdPr3LcvDfOowO0vbaD5Em60w3OyCTsK0Uunh4IRm0olRU70u2lCbaE4diu?= =?us-ascii?Q?JyOPzuT6w+CqoWcXABbbLHoMH/ZklyeC8kP9bt/qICCPgPBGAedA4lMGykjZ?= =?us-ascii?Q?VAEGoUubzDK1l+bBctW+dqdzdvWR5NazWx8aX601SizfTJOeFO8fpk2utfbc?= =?us-ascii?Q?R3giv6b/Kz0EHO+1ZDu9ArjAdfhBPIzEv3qCZcL1yJ+IQXZDTbuJd/ckJMIV?= =?us-ascii?Q?vTTxMV5wMuTMVwbNkWyCnXhDoag4hsk9raxbh4fzYw=3D=3D?= 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)(376005)(366007)(1800799015);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9894 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: AM4PEPF00027A68.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 6525b990-f939-4bf0-adb1-08dc74262a65 X-Microsoft-Antispam: BCL:0;ARA:13230031|376005|82310400017|36860700004|1800799015|35042699013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?WkOHsy81Rqh1LZ4SeQMC/mK7tEO1MUDFDcntdwN1L30bMB3olsG5HkwPg24B?= =?us-ascii?Q?WMPEXXDmcKcL9g6f4ibvKzozrPnjaUI7jZNO4CF54DO6KYChHHq3XihQppTd?= =?us-ascii?Q?det0ZJxwejpcuZPCS2WmhUk3n+ab2SpST6Q5/HN6rouMovnl94uqDK9tyrb6?= =?us-ascii?Q?CPVJNXrrLDHy2u+OlbiUax1qAU2BGO9/byn+CB3AHEXRC968pdX9LeDAyHDp?= =?us-ascii?Q?RBbcimzqcCon14oYAQR3SePDREBATl0CvzYM0upMibbO3UfY01+4xNFk4+xE?= =?us-ascii?Q?bPH+JVuf0zMGneV6+N+FeOW2tP0OvwjM3l9/6rqkzsyqNccu0+o4nSZwxqXA?= =?us-ascii?Q?kCI9uIcOcklQHZag4oLw0UuxxFhTbO89Gvcr6PiW7dTleST3f2DNCWAFIO6O?= =?us-ascii?Q?2zbedgCkGPQ7rTXT9zhr/kN7whpfUN2WzqmFl2G16auXUnOgVqgtBKqjqCC4?= =?us-ascii?Q?E/TRs8n3xdTOHSgL962g44v+OX4H8jfwL5PPk3kn1/zsKn4hy9UsFXMMdoVJ?= =?us-ascii?Q?BaRmREvdvQ3z6RdIZjxEy46vDDm6ebyIZjFmd9j5i4dfjj2qlyRn87nIpz1V?= =?us-ascii?Q?kRcQAKXUNL4WqKazHFNh9w0oc7oUcXXGZGqTOamT+O9bZutjkxGgQ2ZWcsjR?= =?us-ascii?Q?8rIDRzB2kSRcnHbci4Zr1oV7CiVvxcInd1IpZRm+H4pZGpE0xp8A8fl4vEF+?= =?us-ascii?Q?BsAmYu+SbA+G4GyLB9iMW4zNFllLy72jXvXHxa26ukVYuuhXJRX+XzCJ1eVP?= =?us-ascii?Q?YSlaBRHkJMoMALZGNkbSUL45RvcfbTMFjInlpMG4iJjWXKQcYdXKJKQlHJeL?= =?us-ascii?Q?gQbQWtCSuA2q2X/ALvk9HfxwAGWfe2/JQe/ekw6DUDoLB7j24Rzf+hx28ym6?= =?us-ascii?Q?TFdCjxbA9b6E6bmZYv3jTM4bCrpKXv9qRPMVdPyC8otIQbeLvNI3rETeIhpr?= =?us-ascii?Q?NM4OE6tGUvLAOxUEbnQvove8IdGrT5lenE6f4+Kp0HtQXBleG/xM3kQd1IJ4?= =?us-ascii?Q?s4zr1Ic22opuREnmPx6McKX+ZYHU7onYKTNaWCKSspb9e4dQXKmJNqX0eHSr?= =?us-ascii?Q?f3upXH/kwDRD1KfltwdXITNMugXZ3UxgEY/3qocEtkhbXGYfznsiL/BDtJU0?= =?us-ascii?Q?8F3cks4lsdtxxLi0jhdaZhBl6gINRqeh5JscIeEBzRd/1TU43+7SornfnvMo?= =?us-ascii?Q?C/Fa/vbHIhWk0tVB0EDa9HsNpG3CqXJnb42bboSwxsPn65JnyN8t1JWpORpZ?= =?us-ascii?Q?tclXPjU9v209dM9cx0h5m0XIzWCL+yPpudJnXdmA3MKWyGZaIjovfOqMETFm?= =?us-ascii?Q?2QZumJLXIze5Hoj+rGWWFsELVQ1vYQS9nDloKLTEIyhFpcMwu0tdraEwedlk?= =?us-ascii?Q?hEe+ii4Dqnl95DVK9P3VhI+G9+1t?= 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)(376005)(82310400017)(36860700004)(1800799015)(35042699013);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 May 2024 14:57:42.1126 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 75c49a26-92ab-4399-5365-08dc742634b9 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: AM4PEPF00027A68.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB9423 X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,GIT_PATCH_0,KAM_LOTSOFHASH,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_FILL_THIS_FORM_SHORT,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: Currently there are many places where an aarch64_feature_flags variable is used, but only the bottom three isa mode bits are set and read. Using a separate data type for these value makes it more clear that they're not expected or required to have any of their upper feature bits set. It will also make things simpler and more efficient when we extend aarch64_feature_flags to 128 bits. This patch uses explicit casts whenever converting from an aarch64_feature_flags value to an aarch64_isa_mode value. This isn't strictly necessary, but serves to highlight the locations where an explicit conversion will become necessary later. gcc/ChangeLog: * config/aarch64/aarch64-opts.h: Add aarch64_isa_mode typedef. * config/aarch64/aarch64-protos.h (aarch64_gen_callee_cookie): Use aarch64_isa_mode parameter. (aarch64_sme_vq_immediate): Ditto. * config/aarch64/aarch64.cc (aarch64_fntype_pstate_sm): Use aarch64_isa_mode values. (aarch64_fntype_pstate_za): Ditto. (aarch64_fndecl_pstate_sm): Ditto. (aarch64_fndecl_pstate_za): Ditto. (aarch64_fndecl_isa_mode): Ditto. (aarch64_cfun_incoming_pstate_sm): Ditto. (aarch64_cfun_enables_pstate_sm): Ditto. (aarch64_call_switches_pstate_sm): Ditto. (aarch64_gen_callee_cookie): Ditto. (aarch64_callee_isa_mode): Ditto. (aarch64_insn_callee_abi): Ditto. (aarch64_sme_vq_immediate): Ditto. (aarch64_add_offset_temporaries): Ditto. (aarch64_add_offset): Ditto. (aarch64_add_sp): Ditto. (aarch64_sub_sp): Ditto. (aarch64_guard_switch_pstate_sm): Ditto. (aarch64_switch_pstate_sm): Ditto. (aarch64_init_cumulative_args): Ditto. (aarch64_allocate_and_probe_stack_space): Ditto. (aarch64_expand_prologue): Ditto. (aarch64_expand_epilogue): Ditto. (aarch64_start_call_args): Ditto. (aarch64_expand_call): Ditto. (aarch64_end_call_args): Ditto. (aarch64_set_current_function): Ditto, with added conversions. (aarch64_handle_attr_arch): Avoid macro with changed type. (aarch64_handle_attr_cpu): Ditto. (aarch64_handle_attr_isa_flags): Ditto. (aarch64_switch_pstate_sm_for_landing_pad): Use arch64_isa_mode values. (aarch64_switch_pstate_sm_for_jump): Ditto. (pass_switch_pstate_sm::gate): Ditto. * config/aarch64/aarch64.h (AARCH64_ISA_MODE_{SM_ON|SM_OFF|ZA_ON}): New macros. (AARCH64_FL_SM_STATE): Mark as possibly unused. (AARCH64_ISA_MODE_SM_STATE): New aarch64_isa_mode mask. (AARCH64_DEFAULT_ISA_MODE): New aarch64_isa_mode value. (AARCH64_FL_DEFAULT_ISA_MODE): Define using above value. (AARCH64_ISA_MODE): Change type to aarch64_isa_mode. (arm_pcs): Use aarch64_isa_mode value. diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h index 376d7b5ad25e8838bc83fd9ab1c6f09c6de10835..c2d68716857b49db8f9c1393f11b3377f51fb60c 100644 --- a/gcc/config/aarch64/aarch64-opts.h +++ b/gcc/config/aarch64/aarch64-opts.h @@ -23,6 +23,8 @@ #define GCC_AARCH64_OPTS_H #ifndef USED_FOR_TARGET +typedef uint64_t aarch64_isa_mode; + typedef uint64_t aarch64_feature_flags; constexpr unsigned int AARCH64_NUM_ISA_MODES = (0 diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index 4b1fefdd53843e97d3249bfb4d9fed2ffe60f865..585beee44d51275545775420905e7c7b37e2ce5c 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -768,7 +768,7 @@ bool aarch64_constant_address_p (rtx); bool aarch64_emit_approx_div (rtx, rtx, rtx); bool aarch64_emit_approx_sqrt (rtx, rtx, bool); tree aarch64_vector_load_decl (tree); -rtx aarch64_gen_callee_cookie (aarch64_feature_flags, arm_pcs); +rtx aarch64_gen_callee_cookie (aarch64_isa_mode, arm_pcs); void aarch64_expand_call (rtx, rtx, rtx, bool); bool aarch64_expand_cpymem_mops (rtx *, bool); bool aarch64_expand_cpymem (rtx *, bool); @@ -809,7 +809,7 @@ int aarch64_add_offset_temporaries (rtx); void aarch64_split_add_offset (scalar_int_mode, rtx, rtx, rtx, rtx, rtx); bool aarch64_rdsvl_immediate_p (const_rtx); rtx aarch64_sme_vq_immediate (machine_mode mode, HOST_WIDE_INT, - aarch64_feature_flags); + aarch64_isa_mode); char *aarch64_output_rdsvl (const_rtx); bool aarch64_addsvl_addspl_immediate_p (const_rtx); char *aarch64_output_addsvl_addspl (rtx); diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index f4ab220271239ce5a750cf211120d5b37d7f8b27..773cc12d5a88f774ab78af8a9099312335c19513 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -187,7 +187,17 @@ enum class aarch64_feature : unsigned char { #include "aarch64-arches.def" #undef HANDLE -constexpr auto AARCH64_FL_SM_STATE = AARCH64_FL_SM_ON | AARCH64_FL_SM_OFF; +/* Define aarch64_isa_mode masks. */ +#define DEF_AARCH64_ISA_MODE(IDENT) \ + constexpr auto AARCH64_ISA_MODE_##IDENT ATTRIBUTE_UNUSED \ + = aarch64_isa_mode (1) << int (aarch64_feature::IDENT); +#include "aarch64-isa-modes.def" +#undef HANDLE + +constexpr auto AARCH64_FL_SM_STATE ATTRIBUTE_UNUSED + = AARCH64_FL_SM_ON | AARCH64_FL_SM_OFF; +constexpr auto AARCH64_ISA_MODE_SM_STATE ATTRIBUTE_UNUSED + = AARCH64_ISA_MODE_SM_ON | AARCH64_ISA_MODE_SM_OFF; /* The mask of all ISA modes. */ constexpr auto AARCH64_FL_ISA_MODES @@ -195,7 +205,10 @@ constexpr auto AARCH64_FL_ISA_MODES /* The default ISA mode, for functions with no attributes that specify something to the contrary. */ -constexpr auto AARCH64_FL_DEFAULT_ISA_MODE = AARCH64_FL_SM_OFF; +constexpr auto AARCH64_DEFAULT_ISA_MODE ATTRIBUTE_UNUSED + = AARCH64_ISA_MODE_SM_OFF; +constexpr auto AARCH64_FL_DEFAULT_ISA_MODE ATTRIBUTE_UNUSED + = aarch64_feature_flags (AARCH64_DEFAULT_ISA_MODE); #endif @@ -208,7 +221,7 @@ constexpr auto AARCH64_FL_DEFAULT_ISA_MODE = AARCH64_FL_SM_OFF; #define AARCH64_ISA_SM_OFF (aarch64_isa_flags & AARCH64_FL_SM_OFF) #define AARCH64_ISA_SM_ON (aarch64_isa_flags & AARCH64_FL_SM_ON) #define AARCH64_ISA_ZA_ON (aarch64_isa_flags & AARCH64_FL_ZA_ON) -#define AARCH64_ISA_MODE (aarch64_isa_flags & AARCH64_FL_ISA_MODES) +#define AARCH64_ISA_MODE (aarch64_isa_mode) (aarch64_isa_flags & AARCH64_FL_ISA_MODES) #define AARCH64_ISA_V8A (aarch64_isa_flags & AARCH64_FL_V8A) #define AARCH64_ISA_V8_1A (aarch64_isa_flags & AARCH64_FL_V8_1A) #define AARCH64_ISA_CRC (aarch64_isa_flags & AARCH64_FL_CRC) @@ -1123,7 +1136,7 @@ enum arm_pcs typedef struct { enum arm_pcs pcs_variant; - aarch64_feature_flags isa_mode; + aarch64_isa_mode isa_mode; int aapcs_arg_processed; /* No need to lay out this argument again. */ int aapcs_ncrn; /* Next Core register number. */ int aapcs_nextncrn; /* Next next core register number. */ diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 7b4e625190018dc3f16ef45c6eaf8fd3af10c784..b6300fc24c0d674edbb0df8e2d10121f2d39e7d6 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -2157,17 +2157,17 @@ aarch64_fntype_abi (const_tree fntype) /* Return the state of PSTATE.SM on entry to functions of type FNTYPE. */ -static aarch64_feature_flags +static aarch64_isa_mode aarch64_fntype_pstate_sm (const_tree fntype) { if (lookup_attribute ("arm", "streaming", TYPE_ATTRIBUTES (fntype))) - return AARCH64_FL_SM_ON; + return AARCH64_ISA_MODE_SM_ON; if (lookup_attribute ("arm", "streaming_compatible", TYPE_ATTRIBUTES (fntype))) return 0; - return AARCH64_FL_SM_OFF; + return AARCH64_ISA_MODE_SM_OFF; } /* Return state flags that describe whether and how functions of type @@ -2182,19 +2182,19 @@ aarch64_fntype_shared_flags (const_tree fntype, const char *state_name) /* Return the state of PSTATE.ZA on entry to functions of type FNTYPE. */ -static aarch64_feature_flags +static aarch64_isa_mode aarch64_fntype_pstate_za (const_tree fntype) { if (aarch64_fntype_shared_flags (fntype, "za") || aarch64_fntype_shared_flags (fntype, "zt0")) - return AARCH64_FL_ZA_ON; + return AARCH64_ISA_MODE_ZA_ON; return 0; } /* Return the ISA mode on entry to functions of type FNTYPE. */ -static aarch64_feature_flags +static aarch64_isa_mode aarch64_fntype_isa_mode (const_tree fntype) { return (aarch64_fntype_pstate_sm (fntype) @@ -2215,11 +2215,11 @@ aarch64_fndecl_is_locally_streaming (const_tree fndecl) function FNDECL. This might be different from the state of PSTATE.SM on entry. */ -static aarch64_feature_flags +static aarch64_isa_mode aarch64_fndecl_pstate_sm (const_tree fndecl) { if (aarch64_fndecl_is_locally_streaming (fndecl)) - return AARCH64_FL_SM_ON; + return AARCH64_ISA_MODE_SM_ON; return aarch64_fntype_pstate_sm (TREE_TYPE (fndecl)); } @@ -2238,12 +2238,12 @@ aarch64_fndecl_has_state (tree fndecl, const char *state_name) /* Return the state of PSTATE.ZA when compiling the body of function FNDECL. This might be different from the state of PSTATE.ZA on entry. */ -static aarch64_feature_flags +static aarch64_isa_mode aarch64_fndecl_pstate_za (const_tree fndecl) { if (aarch64_fndecl_has_new_state (fndecl, "za") || aarch64_fndecl_has_new_state (fndecl, "zt0")) - return AARCH64_FL_ZA_ON; + return AARCH64_ISA_MODE_ZA_ON; return aarch64_fntype_pstate_za (TREE_TYPE (fndecl)); } @@ -2251,7 +2251,7 @@ aarch64_fndecl_pstate_za (const_tree fndecl) /* Return the ISA mode that should be used to compile the body of function FNDECL. */ -static aarch64_feature_flags +static aarch64_isa_mode aarch64_fndecl_isa_mode (const_tree fndecl) { return (aarch64_fndecl_pstate_sm (fndecl) @@ -2262,7 +2262,7 @@ aarch64_fndecl_isa_mode (const_tree fndecl) This might be different from the state of PSTATE.SM in the function body. */ -static aarch64_feature_flags +static aarch64_isa_mode aarch64_cfun_incoming_pstate_sm () { return aarch64_fntype_pstate_sm (TREE_TYPE (cfun->decl)); @@ -2272,7 +2272,7 @@ aarch64_cfun_incoming_pstate_sm () This might be different from the state of PSTATE.ZA in the function body. */ -static aarch64_feature_flags +static aarch64_isa_mode aarch64_cfun_incoming_pstate_za () { return aarch64_fntype_pstate_za (TREE_TYPE (cfun->decl)); @@ -2304,7 +2304,7 @@ static bool aarch64_cfun_enables_pstate_sm () { return (aarch64_fndecl_is_locally_streaming (cfun->decl) - && aarch64_cfun_incoming_pstate_sm () != AARCH64_FL_SM_ON); + && aarch64_cfun_incoming_pstate_sm () != AARCH64_ISA_MODE_SM_ON); } /* Return true if the current function has state STATE_NAME, either by @@ -2321,9 +2321,9 @@ aarch64_cfun_has_state (const char *state_name) the BL instruction. */ static bool -aarch64_call_switches_pstate_sm (aarch64_feature_flags callee_mode) +aarch64_call_switches_pstate_sm (aarch64_isa_mode callee_mode) { - return (callee_mode & ~AARCH64_ISA_MODE & AARCH64_FL_SM_STATE) != 0; + return (bool) (callee_mode & ~AARCH64_ISA_MODE & AARCH64_ISA_MODE_SM_STATE); } /* Implement TARGET_COMPATIBLE_VECTOR_TYPES_P. */ @@ -2392,7 +2392,7 @@ aarch64_reg_save_mode (unsigned int regno) return the CONST_INT that should be placed in an UNSPEC_CALLEE_ABI rtx. */ rtx -aarch64_gen_callee_cookie (aarch64_feature_flags isa_mode, arm_pcs pcs_variant) +aarch64_gen_callee_cookie (aarch64_isa_mode isa_mode, arm_pcs pcs_variant) { return gen_int_mode ((unsigned int) isa_mode | (unsigned int) pcs_variant << AARCH64_NUM_ISA_MODES, @@ -2412,10 +2412,10 @@ aarch64_callee_abi (rtx cookie) required ISA mode on entry to the callee, which is also the ISA mode on return from the callee. */ -static aarch64_feature_flags +static aarch64_isa_mode aarch64_callee_isa_mode (rtx cookie) { - return UINTVAL (cookie) & AARCH64_FL_ISA_MODES; + return UINTVAL (cookie) & ((1 << AARCH64_NUM_ISA_MODES) - 1); } /* INSN is a call instruction. Return the CONST_INT stored in its @@ -2443,7 +2443,7 @@ aarch64_insn_callee_abi (const rtx_insn *insn) /* INSN is a call instruction. Return the required ISA mode on entry to the callee, which is also the ISA mode on return from the callee. */ -static aarch64_feature_flags +static aarch64_isa_mode aarch64_insn_callee_isa_mode (const rtx_insn *insn) { return aarch64_callee_isa_mode (aarch64_insn_callee_cookie (insn)); @@ -3968,10 +3968,10 @@ aarch64_output_sve_vector_inc_dec (const char *operands, rtx x) rtx aarch64_sme_vq_immediate (machine_mode mode, HOST_WIDE_INT factor, - aarch64_feature_flags isa_mode) + aarch64_isa_mode isa_mode) { gcc_assert (aarch64_sve_rdvl_addvl_factor_p (factor)); - if (isa_mode & AARCH64_FL_SM_ON) + if (isa_mode & AARCH64_ISA_MODE_SM_ON) /* We're in streaming mode, so we can use normal poly-int values. */ return gen_int_mode ({ factor, factor }, mode); @@ -4622,7 +4622,7 @@ aarch64_add_offset_temporaries (rtx x) TEMP2, if nonnull, is a second temporary register that doesn't overlap either DEST or REG. - FORCE_ISA_MODE is AARCH64_FL_SM_ON if any variable component of OFFSET + FORCE_ISA_MODE is AARCH64_ISA_MODE_SM_ON if any variable component of OFFSET is measured relative to the SME vector length instead of the current prevailing vector length. It is 0 otherwise. @@ -4634,7 +4634,7 @@ aarch64_add_offset_temporaries (rtx x) static void aarch64_add_offset (scalar_int_mode mode, rtx dest, rtx src, poly_int64 offset, rtx temp1, rtx temp2, - aarch64_feature_flags force_isa_mode, + aarch64_isa_mode force_isa_mode, bool frame_related_p, bool emit_move_imm = true) { gcc_assert (emit_move_imm || temp1 != NULL_RTX); @@ -4655,7 +4655,7 @@ aarch64_add_offset (scalar_int_mode mode, rtx dest, rtx src, offset_rtx = aarch64_sme_vq_immediate (mode, offset.coeffs[0], 0); rtx_insn *insn = emit_insn (gen_add3_insn (dest, src, offset_rtx)); RTX_FRAME_RELATED_P (insn) = frame_related_p; - if (frame_related_p && (force_isa_mode & AARCH64_FL_SM_ON)) + if (frame_related_p && (force_isa_mode & AARCH64_ISA_MODE_SM_ON)) add_reg_note (insn, REG_CFA_ADJUST_CFA, gen_rtx_SET (dest, plus_constant (Pmode, src, offset))); @@ -4683,7 +4683,7 @@ aarch64_add_offset (scalar_int_mode mode, rtx dest, rtx src, { rtx_insn *insn = emit_insn (gen_add3_insn (dest, src, offset_rtx)); RTX_FRAME_RELATED_P (insn) = true; - if (force_isa_mode & AARCH64_FL_SM_ON) + if (force_isa_mode & AARCH64_ISA_MODE_SM_ON) add_reg_note (insn, REG_CFA_ADJUST_CFA, gen_rtx_SET (dest, plus_constant (Pmode, src, poly_offset))); @@ -4717,7 +4717,7 @@ aarch64_add_offset (scalar_int_mode mode, rtx dest, rtx src, rtx val; if (IN_RANGE (rel_factor, -32, 31)) { - if (force_isa_mode & AARCH64_FL_SM_ON) + if (force_isa_mode & AARCH64_ISA_MODE_SM_ON) { /* Try to use an unshifted RDSVL, otherwise fall back on a shifted RDSVL #1. */ @@ -4764,7 +4764,7 @@ aarch64_add_offset (scalar_int_mode mode, rtx dest, rtx src, val = gen_int_mode (poly_int64 (low_bit, low_bit), mode); shift = 0; } - else if ((force_isa_mode & AARCH64_FL_SM_ON) + else if ((force_isa_mode & AARCH64_ISA_MODE_SM_ON) && aarch64_sve_rdvl_addvl_factor_p (low_bit)) { val = aarch64_sme_vq_immediate (mode, low_bit, 0); @@ -4867,7 +4867,7 @@ aarch64_split_add_offset (scalar_int_mode mode, rtx dest, rtx src, static inline void aarch64_add_sp (rtx temp1, rtx temp2, poly_int64 delta, - aarch64_feature_flags force_isa_mode, bool emit_move_imm) + aarch64_isa_mode force_isa_mode, bool emit_move_imm) { aarch64_add_offset (Pmode, stack_pointer_rtx, stack_pointer_rtx, delta, temp1, temp2, force_isa_mode, true, emit_move_imm); @@ -4879,7 +4879,7 @@ aarch64_add_sp (rtx temp1, rtx temp2, poly_int64 delta, static inline void aarch64_sub_sp (rtx temp1, rtx temp2, poly_int64 delta, - aarch64_feature_flags force_isa_mode, + aarch64_isa_mode force_isa_mode, bool frame_related_p, bool emit_move_imm = true) { aarch64_add_offset (Pmode, stack_pointer_rtx, stack_pointer_rtx, -delta, @@ -4896,11 +4896,11 @@ aarch64_sub_sp (rtx temp1, rtx temp2, poly_int64 delta, matches LOCAL_MODE. Return the label that the branch jumps to. */ static rtx_insn * -aarch64_guard_switch_pstate_sm (rtx old_svcr, aarch64_feature_flags local_mode) +aarch64_guard_switch_pstate_sm (rtx old_svcr, aarch64_isa_mode local_mode) { - local_mode &= AARCH64_FL_SM_STATE; + local_mode &= AARCH64_ISA_MODE_SM_STATE; gcc_assert (local_mode); - auto already_ok_cond = (local_mode & AARCH64_FL_SM_ON ? NE : EQ); + auto already_ok_cond = (local_mode & AARCH64_ISA_MODE_SM_ON ? NE : EQ); auto *label = gen_label_rtx (); auto branch = aarch64_gen_test_and_branch (already_ok_cond, old_svcr, 0, label); @@ -4914,15 +4914,14 @@ aarch64_guard_switch_pstate_sm (rtx old_svcr, aarch64_feature_flags local_mode) an SMSTOP SM. */ static void -aarch64_switch_pstate_sm (aarch64_feature_flags old_mode, - aarch64_feature_flags new_mode) +aarch64_switch_pstate_sm (aarch64_isa_mode old_mode, aarch64_isa_mode new_mode) { - old_mode &= AARCH64_FL_SM_STATE; - new_mode &= AARCH64_FL_SM_STATE; + old_mode &= AARCH64_ISA_MODE_SM_STATE; + new_mode &= AARCH64_ISA_MODE_SM_STATE; gcc_assert (old_mode != new_mode); - if ((new_mode & AARCH64_FL_SM_ON) - || (!new_mode && (old_mode & AARCH64_FL_SM_OFF))) + if ((new_mode & AARCH64_ISA_MODE_SM_ON) + || (!new_mode && (old_mode & AARCH64_ISA_MODE_SM_OFF))) emit_insn (gen_aarch64_smstart_sm ()); else emit_insn (gen_aarch64_smstop_sm ()); @@ -7203,7 +7202,7 @@ aarch64_init_cumulative_args (CUMULATIVE_ARGS *pcum, else { pcum->pcs_variant = ARM_PCS_AAPCS64; - pcum->isa_mode = AARCH64_FL_DEFAULT_ISA_MODE; + pcum->isa_mode = AARCH64_DEFAULT_ISA_MODE; } pcum->aapcs_reg = NULL_RTX; pcum->aapcs_arg_processed = false; @@ -9138,14 +9137,14 @@ aarch64_emit_stack_tie (rtx reg) then the signal handler doesn't know the state of the stack and can make no assumptions about which pages have been probed. - FORCE_ISA_MODE is AARCH64_FL_SM_ON if any variable component of POLY_SIZE + FORCE_ISA_MODE is AARCH64_ISA_MODE_SM_ON if any variable component of POLY_SIZE is measured relative to the SME vector length instead of the current prevailing vector length. It is 0 otherwise. */ static void aarch64_allocate_and_probe_stack_space (rtx temp1, rtx temp2, poly_int64 poly_size, - aarch64_feature_flags force_isa_mode, + aarch64_isa_mode force_isa_mode, bool frame_related_p, bool final_adjustment_p) { @@ -9458,7 +9457,7 @@ aarch64_read_old_svcr (unsigned int regno) static rtx_insn * aarch64_guard_switch_pstate_sm (unsigned int regno, - aarch64_feature_flags local_mode) + aarch64_isa_mode local_mode) { rtx old_svcr = aarch64_read_old_svcr (regno); return aarch64_guard_switch_pstate_sm (old_svcr, local_mode); @@ -9559,9 +9558,9 @@ aarch64_expand_prologue (void) unsigned reg2 = frame.wb_push_candidate2; bool emit_frame_chain = frame.emit_frame_chain; rtx_insn *insn; - aarch64_feature_flags force_isa_mode = 0; + aarch64_isa_mode force_isa_mode = 0; if (aarch64_cfun_enables_pstate_sm ()) - force_isa_mode = AARCH64_FL_SM_ON; + force_isa_mode = AARCH64_ISA_MODE_SM_ON; if (flag_stack_clash_protection && known_eq (callee_adjust, 0) @@ -9765,7 +9764,7 @@ aarch64_expand_prologue (void) emit_insn (gen_aarch64_read_svcr (svcr)); emit_move_insn (aarch64_old_svcr_mem (), svcr); guard_label = aarch64_guard_switch_pstate_sm (svcr, - aarch64_isa_flags); + AARCH64_ISA_MODE); } aarch64_sme_mode_switch_regs args_switch; auto &args = crtl->args.info; @@ -9826,9 +9825,9 @@ aarch64_expand_epilogue (rtx_call_insn *sibcall) HOST_WIDE_INT guard_size = 1 << param_stack_clash_protection_guard_size; HOST_WIDE_INT guard_used_by_caller = STACK_CLASH_CALLER_GUARD; - aarch64_feature_flags force_isa_mode = 0; + aarch64_isa_mode force_isa_mode = 0; if (aarch64_cfun_enables_pstate_sm ()) - force_isa_mode = AARCH64_FL_SM_ON; + force_isa_mode = AARCH64_ISA_MODE_SM_ON; /* We can re-use the registers when: @@ -9858,8 +9857,10 @@ aarch64_expand_epilogue (rtx_call_insn *sibcall) { rtx_insn *guard_label = nullptr; if (known_ge (cfun->machine->frame.old_svcr_offset, 0)) - guard_label = aarch64_guard_switch_pstate_sm (IP0_REGNUM, - aarch64_isa_flags); + { + guard_label = aarch64_guard_switch_pstate_sm (IP0_REGNUM, + AARCH64_ISA_MODE); + } aarch64_sme_mode_switch_regs return_switch; if (sibcall) return_switch.add_call_args (sibcall); @@ -11140,7 +11141,7 @@ aarch64_start_call_args (cumulative_args_t ca_v) { CUMULATIVE_ARGS *ca = get_cumulative_args (ca_v); - if (!TARGET_SME && (ca->isa_mode & AARCH64_FL_SM_ON)) + if (!TARGET_SME && (ca->isa_mode & AARCH64_ISA_MODE_SM_ON)) { error ("calling a streaming function requires the ISA extension %qs", "sme"); @@ -11157,20 +11158,20 @@ aarch64_start_call_args (cumulative_args_t ca_v) && !aarch64_cfun_has_state ("zt0")) error ("call to a function that shares %qs state from a function" " that has no %qs state", "zt0", "zt0"); - else if (!TARGET_ZA && (ca->isa_mode & AARCH64_FL_ZA_ON)) + else if (!TARGET_ZA && (ca->isa_mode & AARCH64_ISA_MODE_ZA_ON)) error ("call to a function that shares SME state from a function" " that has no SME state"); /* If this is a call to a private ZA function, emit a marker to indicate where any necessary set-up code could be inserted. The code itself is inserted by the mode-switching pass. */ - if (TARGET_ZA && !(ca->isa_mode & AARCH64_FL_ZA_ON)) + if (TARGET_ZA && !(ca->isa_mode & AARCH64_ISA_MODE_ZA_ON)) emit_insn (gen_aarch64_start_private_za_call ()); /* If this is a call to a shared-ZA function that doesn't share ZT0, save and restore ZT0 around the call. */ if (aarch64_cfun_has_state ("zt0") - && (ca->isa_mode & AARCH64_FL_ZA_ON) + && (ca->isa_mode & AARCH64_ISA_MODE_ZA_ON) && ca->shared_zt0_flags == 0) aarch64_save_zt0 (); } @@ -11213,7 +11214,7 @@ aarch64_expand_call (rtx result, rtx mem, rtx cookie, bool sibcall) auto callee_isa_mode = aarch64_callee_isa_mode (callee_abi); if (aarch64_cfun_has_state ("za") - && (callee_isa_mode & AARCH64_FL_ZA_ON) + && (callee_isa_mode & AARCH64_ISA_MODE_ZA_ON) && !shared_za_flags) { sorry ("call to a function that shares state other than %qs" @@ -11361,7 +11362,7 @@ aarch64_expand_call (rtx result, rtx mem, rtx cookie, bool sibcall) gen_rtx_REG (VNx16BImode, ZA_SAVED_REGNUM)); /* Keep the aarch64_start/end_private_za_call markers live. */ - if (!(callee_isa_mode & AARCH64_FL_ZA_ON)) + if (!(callee_isa_mode & AARCH64_ISA_MODE_ZA_ON)) use_reg (&CALL_INSN_FUNCTION_USAGE (call_insn), gen_rtx_REG (VNx16BImode, LOWERING_REGNUM)); @@ -11387,13 +11388,13 @@ aarch64_end_call_args (cumulative_args_t ca_v) /* If this is a call to a private ZA function, emit a marker to indicate where any necessary restoration code could be inserted. The code itself is inserted by the mode-switching pass. */ - if (TARGET_ZA && !(ca->isa_mode & AARCH64_FL_ZA_ON)) + if (TARGET_ZA && !(ca->isa_mode & AARCH64_ISA_MODE_ZA_ON)) emit_insn (gen_aarch64_end_private_za_call ()); /* If this is a call to a shared-ZA function that doesn't share ZT0, save and restore ZT0 around the call. */ if (aarch64_cfun_has_state ("zt0") - && (ca->isa_mode & AARCH64_FL_ZA_ON) + && (ca->isa_mode & AARCH64_ISA_MODE_ZA_ON) && ca->shared_zt0_flags == 0) aarch64_restore_zt0 (false); } @@ -19059,7 +19060,7 @@ aarch64_set_current_function (tree fndecl) auto new_isa_mode = (fndecl ? aarch64_fndecl_isa_mode (fndecl) - : AARCH64_FL_DEFAULT_ISA_MODE); + : AARCH64_DEFAULT_ISA_MODE); auto isa_flags = TREE_TARGET_OPTION (new_tree)->x_aarch64_isa_flags; static bool reported_zt0_p; @@ -19081,7 +19082,7 @@ aarch64_set_current_function (tree fndecl) aarch64_pragma_target_parse. */ if (old_tree == new_tree && (!fndecl || aarch64_previous_fndecl) - && (isa_flags & AARCH64_FL_ISA_MODES) == new_isa_mode) + && (aarch64_isa_mode) (isa_flags & AARCH64_FL_ISA_MODES) == new_isa_mode) { gcc_assert (AARCH64_ISA_MODE == new_isa_mode); return; @@ -19096,10 +19097,11 @@ aarch64_set_current_function (tree fndecl) /* The ISA mode can vary based on function type attributes and function declaration attributes. Make sure that the target options correctly reflect these attributes. */ - if ((isa_flags & AARCH64_FL_ISA_MODES) != new_isa_mode) + if ((aarch64_isa_mode) (isa_flags & AARCH64_FL_ISA_MODES) != new_isa_mode) { auto base_flags = (aarch64_asm_isa_flags & ~AARCH64_FL_ISA_MODES); - aarch64_set_asm_isa_flags (base_flags | new_isa_mode); + aarch64_set_asm_isa_flags (base_flags + | (aarch64_feature_flags) new_isa_mode); aarch64_override_options_internal (&global_options); new_tree = build_target_option_node (&global_options, @@ -19164,7 +19166,8 @@ aarch64_handle_attr_arch (const char *str) { gcc_assert (tmp_arch); selected_arch = tmp_arch->arch; - aarch64_set_asm_isa_flags (tmp_flags | AARCH64_ISA_MODE); + aarch64_set_asm_isa_flags (tmp_flags | (aarch64_asm_isa_flags + & AARCH64_FL_ISA_MODES)); return true; } @@ -19205,7 +19208,8 @@ aarch64_handle_attr_cpu (const char *str) gcc_assert (tmp_cpu); selected_tune = tmp_cpu->ident; selected_arch = tmp_cpu->arch; - aarch64_set_asm_isa_flags (tmp_flags | AARCH64_ISA_MODE); + aarch64_set_asm_isa_flags (tmp_flags | (aarch64_asm_isa_flags + & AARCH64_FL_ISA_MODES)); return true; } @@ -19283,7 +19287,7 @@ aarch64_handle_attr_isa_flags (char *str) features if the user wants to handpick specific features. */ if (strncmp ("+nothing", str, 8) == 0) { - isa_flags = AARCH64_ISA_MODE; + isa_flags &= AARCH64_FL_ISA_MODES; str += 8; } @@ -29970,11 +29974,11 @@ aarch64_switch_pstate_sm_for_landing_pad (basic_block bb) rtx_insn *guard_label = nullptr; if (TARGET_STREAMING_COMPATIBLE) guard_label = aarch64_guard_switch_pstate_sm (IP0_REGNUM, - AARCH64_FL_SM_OFF); + AARCH64_ISA_MODE_SM_OFF); aarch64_sme_mode_switch_regs args_switch; args_switch.add_call_preserved_regs (df_get_live_in (bb)); args_switch.emit_prologue (); - aarch64_switch_pstate_sm (AARCH64_FL_SM_OFF, AARCH64_FL_SM_ON); + aarch64_switch_pstate_sm (AARCH64_ISA_MODE_SM_OFF, AARCH64_ISA_MODE_SM_ON); args_switch.emit_epilogue (); if (guard_label) emit_label (guard_label); @@ -29998,8 +30002,8 @@ aarch64_switch_pstate_sm_for_jump (rtx_insn *jump) rtx_insn *guard_label = nullptr; if (TARGET_STREAMING_COMPATIBLE) guard_label = aarch64_guard_switch_pstate_sm (IP0_REGNUM, - AARCH64_FL_SM_OFF); - aarch64_switch_pstate_sm (AARCH64_FL_SM_ON, AARCH64_FL_SM_OFF); + AARCH64_ISA_MODE_SM_OFF); + aarch64_switch_pstate_sm (AARCH64_ISA_MODE_SM_ON, AARCH64_ISA_MODE_SM_OFF); if (guard_label) emit_label (guard_label); auto seq = get_insns (); @@ -30094,7 +30098,7 @@ public: bool pass_switch_pstate_sm::gate (function *fn) { - return (aarch64_fndecl_pstate_sm (fn->decl) != AARCH64_FL_SM_OFF + return (aarch64_fndecl_pstate_sm (fn->decl) != AARCH64_ISA_MODE_SM_OFF || cfun->machine->call_switches_pstate_sm); }