From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2045.outbound.protection.outlook.com [40.107.21.45]) by sourceware.org (Postfix) with ESMTPS id 515B63858C2B for ; Fri, 27 Oct 2023 13:18:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 515B63858C2B 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 515B63858C2B Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.21.45 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1698412724; cv=pass; b=j5yuZYOrqREI4rgwqIKzhuupt84Ywo7revvMkh8MIBmWCIv/4Ii1gaEd7fRjNVP/y2adTCB13nvN1P6Sw2vE9PTy+BDjdTM9d8Qy1TwH2GcNg6RlG8h7kvVr97i1LjpdWEbX5raGtjhw+G5ZUvZBcd8M8DQxhH74qC5XHSKUeB4= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1698412724; c=relaxed/simple; bh=7Y1g4PbWWnQsyCHwjldCjAkO2wnn/luKG2Fdyf1kAoE=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=mT0HTqsTw4ULWFS8Ia5/i6/gV8Qws7jpujcuUZv9aeORi4srGCuaFBrXkFrpqS5NYL54UZmcsbh3iviQZjSXq71+AfdccGWTiYhQ95+OMUfvZcFpyYy6wi8SclnqIwqNWsAoxsEJ6XtgQkLSh4SWWD/8N/3xe91QOCE3RFIHyEM= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=KvwcJhxt+bYMh3iWUcv8aI39O6A7qr75HOawSAWJ3zsEvz2+l9O0SoZWU4U5z74h9ov9//WYnuA3WdV5nzdw/jfjjdWtNgwG9yyi2U0qQrcCxXd//5YG87ii5aiLEYW+CJSh7pONZBNoJPw6hyaLzBJjuYrs7ksJKKFrQhrJQM/RK8VxZ6mZpjzwD0dvzzkZDmePtDhUe68UvXOopca2LeTeeSH5uPaK3r5Z2hz9hqUgoUClAj2bPpgBdUAm+PzijsEMQa4+TLU93Kk05UQCpsL5HTqCmiERjca5wa3RuF8mjiFL8ODTlmbmdFaHOgx4gvuVzBkHgKvxeordEQtYFw== 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=YPzxxV8n53mSNiN402uNgAVzzklQuTa7ep4XrwMewfg=; b=B8ou3S/PpgvnqF+3g8ggPejkdjqqNNryQbqgT/AcXwqVyPOznLy466e3g/Wnzn2EKZ7HVd/bEWYPii2btWPpUwGlAt4NSNyMydlhdPh2F3tkGY/iT3MXQMTxPlBaU2mH9BUXZLCikOy5KrfJbLhSJlK+pQwYQMKAbjzn3puS8UN7zi6lGLYDFMNnc1u7thl7kYPLEWvQP9txpvPAWRXnNxm1ukGiCTju57k7G7LeMvQ2qYVbHir/Uoqj7tzyy8XHuaWQkTc8OxgUPuUqOtLkgewkMfbg3EHHzUIgL9IIbENXNV1ZNuQOQKoZdYBMwbptQoHaUlmvHNH3WuRhkoEAUw== 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=YPzxxV8n53mSNiN402uNgAVzzklQuTa7ep4XrwMewfg=; b=VzQK3JLSlPhq6ZrESa/5hwraHHrE+HW8llkmgeXsgvnZe4kN7USkZGoWCEIT0rJxSuSDeCiK/Dc8eN3/gLo4GHnaZG+7U2KODPoz/3zFY0vkVCA0kaxReUcgXL0Hmas4khRynTWTNBSd4w+eKhw4xrrq9lshCdvUFjlzfefcXNg= Received: from AM6P192CA0030.EURP192.PROD.OUTLOOK.COM (2603:10a6:209:83::43) by AM9PR08MB6243.eurprd08.prod.outlook.com (2603:10a6:20b:2db::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.19; Fri, 27 Oct 2023 13:18:39 +0000 Received: from AM2PEPF0001C717.eurprd05.prod.outlook.com (2603:10a6:209:83:cafe::c1) by AM6P192CA0030.outlook.office365.com (2603:10a6:209:83::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.22 via Frontend Transport; Fri, 27 Oct 2023 13:18:39 +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 AM2PEPF0001C717.mail.protection.outlook.com (10.167.16.187) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.15 via Frontend Transport; Fri, 27 Oct 2023 13:18:39 +0000 Received: ("Tessian outbound 7671e7ddc218:v228"); Fri, 27 Oct 2023 13:18:39 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 117527a0a114a80a X-CR-MTA-TID: 64aa7808 Received: from ccb7e1446b43.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id C2529DD7-EAB5-4B31-AC1B-01F8EAB84EBD.1; Fri, 27 Oct 2023 13:18:32 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ccb7e1446b43.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 27 Oct 2023 13:18:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CpdKYnwmONarXhEiUoWoLpqVf+IKMXl9zeA/MxU5/mxK+9abxmnpvrvtQGOYLik26JJBrEp85VLfdtQ9zCdKK5heEEqWDJQ+gecRxOxkFmzJRm9YUiiJLb3PZgT6Tk5i1dp5VNsb+IYy+fjqT4tkVD4VVrWrfedFVybrEJY6bRKf3Hw5AC/MYXvEm6mpbwmS+2IPL6VAtN0Ce2BqLlSsT+8QdabcZOGUgXJnpBfZW0G39nwvtE1xB4qbxGsOJhK4+HrUiCiLhohbiuTXeKkT6LfR8AYvDdKRSj9Zuzc0AgpLSNT6Tv0MAV/cZQhXbaSUo8ynXp/hn3QYXFrMOzjVeQ== 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=YPzxxV8n53mSNiN402uNgAVzzklQuTa7ep4XrwMewfg=; b=M/94nmAFDvYUn1BD+YVdP6hble/vZBc6TSmjezfwq6NsRuO1ExTo5bWqNH3IwFOHqYsEpc5RmxjVFe84Xv1BXGfACAV9/NO8SYq4Spky6SdfHAl3aWUOJV/OHTjFUWEqo42affY/9tPd0QCCkVKPLSX7xidCMX1xB6HL4spxVaFNqd5JCU8SXIE/nf/upCk4vQBp1kekwHmWjPf1HEEmuDuDXmRn+CqqQi71KddUm48kbm8pjpMO0xI2WvZGMNnypaoH57bUQMQlLvuVOjYV5QxCdOXg5jkY8ByWAOGppPqWaD9HSxedUvfC//m7c92gYVpD6gtTeQZEeTYolcR8Yg== 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=YPzxxV8n53mSNiN402uNgAVzzklQuTa7ep4XrwMewfg=; b=VzQK3JLSlPhq6ZrESa/5hwraHHrE+HW8llkmgeXsgvnZe4kN7USkZGoWCEIT0rJxSuSDeCiK/Dc8eN3/gLo4GHnaZG+7U2KODPoz/3zFY0vkVCA0kaxReUcgXL0Hmas4khRynTWTNBSd4w+eKhw4xrrq9lshCdvUFjlzfefcXNg= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from PAWPR08MB8958.eurprd08.prod.outlook.com (2603:10a6:102:33e::15) by VI0PR08MB10557.eurprd08.prod.outlook.com (2603:10a6:800:20b::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.24; Fri, 27 Oct 2023 13:18:31 +0000 Received: from PAWPR08MB8958.eurprd08.prod.outlook.com ([fe80::8512:cc10:24d4:1919]) by PAWPR08MB8958.eurprd08.prod.outlook.com ([fe80::8512:cc10:24d4:1919%5]) with mapi id 15.20.6907.032; Fri, 27 Oct 2023 13:18:31 +0000 Date: Fri, 27 Oct 2023 14:18:28 +0100 From: Alex Coplan To: Victor Do Nascimento , gcc-patches@gcc.gnu.org, kyrylo.tkachov@arm.com, Richard.Earnshaw@arm.com, richard.sandiford@arm.com Subject: Re: [PATCH V2 5/7] aarch64: Implement system register r/w arm ACLE intrinsic functions Message-ID: References: <20231018150310.253793-1-victor.donascimento@arm.com> <20231018150310.253793-6-victor.donascimento@arm.com> <25307dc6-b2a3-4675-911c-ddadfedefb6d@arm.com> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-ClientProxiedBy: LO4P123CA0151.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:188::12) To PAWPR08MB8958.eurprd08.prod.outlook.com (2603:10a6:102:33e::15) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: PAWPR08MB8958:EE_|VI0PR08MB10557:EE_|AM2PEPF0001C717:EE_|AM9PR08MB6243:EE_ X-MS-Office365-Filtering-Correlation-Id: eac3964e-ddaa-4f37-35bb-08dbd6ef3bf6 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: +2LLgaeiqzRiSfMOZEeWuv+xL9eF6FaLoVDr4aAqiEfPD2aMmm5evmxtVNrl+u9lUpb9q//hcMEzSr/NQn5/t1MD+n+zm2n2UZSwWIuYF13smMmewlE/7uHRCwWDzkgIONX0fhpMmJRrvRxieakebyjqYLnrI7ps3GJXPtS0GQ1Bw+8pZfWqnaRnmyHocp+t65D/wgRDsNWyweTJuK+xyuSpOYHpbGvWo6HPsWH0UI17Zp5moIZ/fPseKhZ7sLBSCICTj9lqukgFA0AR6BOocm3FhRxXOI88ODcVLJXhMU+rQwN1E/8kq4GGExOC5rBU9cH7/yW9yHaTW0zlYcaED8oP3+226JbAKWEdRGvRcjGnO3CdxPqjYd5huBMglitV+dgVHHob+8ti+FwcRJhiqC0W1Ib4dY8J3jU0qTJu98o5i17sTSHTUUeJ1zwFF9KcBq5JUp7FpEZcXVzQsu0OQRj69+pRtj5A0CMI34NwTYErpIad283XfL0tHN0Ydo2meOMqfEh+6OS6A0mAzCZsM6kh8dUTZr4WEolJPXag6xBuMAPYhRD4gWsjDJZiWCN7 X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAWPR08MB8958.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(136003)(39860400002)(396003)(376002)(366004)(230922051799003)(64100799003)(451199024)(1800799009)(186009)(8936002)(8676002)(44832011)(5660300002)(66476007)(66556008)(66946007)(6636002)(316002)(38100700002)(36756003)(2906002)(6486002)(6666004)(41300700001)(86362001)(478600001)(6506007)(6512007)(53546011)(2616005)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10557 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: AM2PEPF0001C717.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 5b91a389-13d8-4128-e94b-08dbd6ef36d6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vEhUGGXZoyQnbkQ88znWR1C1XmErHt5Ok4d6ExgxKlA6RdXnP3iiMINniAGDV1wcUzAwZbWZxryO0FEbS9Kj84y4DHg4izWDrrqcyHlAPbQXIqZ+EJGvH8U2p3ClDWc1LO5NwE4ZrRdbsjZiLsGJVN5iIo4kvQfHNF6GlIB45DiE7uZH5dFWMlrLJ535nkXfVDcGnng1Ry/T7+X1Jy/xcyi7VLEvuGAPYhzXgP7aLuF95BsuNDTn4UUz2d7Y9ClQuZHx+8rR7KT30pGOdfgXBpoqQTfXBrYQsr1O5OzXlMQxjplbkqczT61nxU/ay/4X27ZwY69uM7prgRNRHeGIsHov7eFpV88LXVCuUmTXVjVZsnf70BR1pfI0zSR+btG20UjgOU24yDSPWEiqKCJgA5oAfpD5kcO8oCKGnnhnaBQzaSMRp0LMfnlwYUeg02SGYJpUKNP/vlNeZc6DpDuW5HccUkoEYWC2MdVFPt+j08YZhdWsid1tEGvaicCtBM/aDUTDV161ucAxYPnDmjW1GeagiV7Frykrev35hUsmmirHk51lvXDGOn/62uKk7TSN83pjNmFGJOGRRXuOofxhtjDSEvPp5hAr4UnI7DQ/6YS34MWU9XuQQ/8o/f8DhiU0Pmngidqax9MIY1FIc7lRW7V9yUmwMTwMYrL5Xga2Q9QXuUwSUh/Vz7tTqMnlYnXESAOvxgKrPCOYt5vZHnppup5AmzQRbW8BVHXaqA34Mm2pEKIYQuCPYlWlIalNLQ8K 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)(396003)(376002)(136003)(39860400002)(230922051799003)(1800799009)(186009)(451199024)(64100799003)(82310400011)(36840700001)(40470700004)(46966006)(40480700001)(40460700003)(6666004)(53546011)(478600001)(6512007)(6486002)(6506007)(36860700001)(47076005)(86362001)(81166007)(36756003)(356005)(82740400003)(2906002)(2616005)(316002)(6636002)(336012)(26005)(70586007)(8676002)(5660300002)(70206006)(44832011)(8936002)(41300700001);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 13:18:39.3795 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eac3964e-ddaa-4f37-35bb-08dbd6ef3bf6 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: AM2PEPF0001C717.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6243 X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,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 26/10/2023 16:23, Richard Sandiford wrote: > Victor Do Nascimento writes: > > On 10/18/23 21:39, Richard Sandiford wrote: > >> Victor Do Nascimento writes: > >>> Implement the aarch64 intrinsics for reading and writing system > >>> registers with the following signatures: > >>> > >>> uint32_t __arm_rsr(const char *special_register); > >>> uint64_t __arm_rsr64(const char *special_register); > >>> void* __arm_rsrp(const char *special_register); > >>> float __arm_rsrf(const char *special_register); > >>> double __arm_rsrf64(const char *special_register); > >>> void __arm_wsr(const char *special_register, uint32_t value); > >>> void __arm_wsr64(const char *special_register, uint64_t value); > >>> void __arm_wsrp(const char *special_register, const void *value); > >>> void __arm_wsrf(const char *special_register, float value); > >>> void __arm_wsrf64(const char *special_register, double value); > >>> > >>> gcc/ChangeLog: > >>> > >>> * gcc/config/aarch64/aarch64-builtins.cc (enum aarch64_builtins): > >>> Add enums for new builtins. > >>> (aarch64_init_rwsr_builtins): New. > >>> (aarch64_general_init_builtins): Call aarch64_init_rwsr_builtins. > >>> (aarch64_expand_rwsr_builtin): New. > >>> (aarch64_general_expand_builtin): Call aarch64_general_expand_builtin. > >>> * gcc/config/aarch64/aarch64.md (read_sysregdi): New insn_and_split. > >>> (write_sysregdi): Likewise. > >>> * gcc/config/aarch64/arm_acle.h (__arm_rsr): New. > >>> (__arm_rsrp): Likewise. > >>> (__arm_rsr64): Likewise. > >>> (__arm_rsrf): Likewise. > >>> (__arm_rsrf64): Likewise. > >>> (__arm_wsr): Likewise. > >>> (__arm_wsrp): Likewise. > >>> (__arm_wsr64): Likewise. > >>> (__arm_wsrf): Likewise. > >>> (__arm_wsrf64): Likewise. > >>> > >>> gcc/testsuite/ChangeLog: > >>> > >>> * gcc/testsuite/gcc.target/aarch64/acle/rwsr.c: New. > >>> * gcc/testsuite/gcc.target/aarch64/acle/rwsr-1.c: Likewise. > >>> --- > >>> gcc/config/aarch64/aarch64-builtins.cc | 200 ++++++++++++++++++ > >>> gcc/config/aarch64/aarch64.md | 17 ++ > >>> gcc/config/aarch64/arm_acle.h | 30 +++ > >>> .../gcc.target/aarch64/acle/rwsr-1.c | 20 ++ > >>> gcc/testsuite/gcc.target/aarch64/acle/rwsr.c | 144 +++++++++++++ > >>> 5 files changed, 411 insertions(+) > >>> create mode 100644 gcc/testsuite/gcc.target/aarch64/acle/rwsr-1.c > >>> create mode 100644 gcc/testsuite/gcc.target/aarch64/acle/rwsr.c > >>> > >>> diff --git a/gcc/config/aarch64/aarch64-builtins.cc b/gcc/config/aarch64/aarch64-builtins.cc > >>> index 04f59fd9a54..d8bb2a989a5 100644 > >>> --- a/gcc/config/aarch64/aarch64-builtins.cc > >>> +++ b/gcc/config/aarch64/aarch64-builtins.cc > >>> @@ -808,6 +808,17 @@ enum aarch64_builtins > >>> AARCH64_RBIT, > >>> AARCH64_RBITL, > >>> AARCH64_RBITLL, > >>> + /* System register builtins. */ > >>> + AARCH64_RSR, > >>> + AARCH64_RSRP, > >>> + AARCH64_RSR64, > >>> + AARCH64_RSRF, > >>> + AARCH64_RSRF64, > >>> + AARCH64_WSR, > >>> + AARCH64_WSRP, > >>> + AARCH64_WSR64, > >>> + AARCH64_WSRF, > >>> + AARCH64_WSRF64, > >>> AARCH64_BUILTIN_MAX > >>> }; > >>> > >>> @@ -1798,6 +1809,65 @@ aarch64_init_rng_builtins (void) > >>> AARCH64_BUILTIN_RNG_RNDRRS); > >>> } > >>> > >>> +/* Add builtins for reading system register. */ > >>> +static void > >>> +aarch64_init_rwsr_builtins (void) > >>> +{ > >>> + tree fntype = NULL; > >>> + tree const_char_ptr_type > >>> + = build_pointer_type (build_type_variant (char_type_node, true, false)); > >>> + > >>> +#define AARCH64_INIT_RWSR_BUILTINS_DECL(F, N, T) \ > >>> + aarch64_builtin_decls[AARCH64_##F] \ > >>> + = aarch64_general_add_builtin ("__builtin_aarch64_"#N, T, AARCH64_##F); > >>> + > >>> + fntype > >>> + = build_function_type_list (uint32_type_node, const_char_ptr_type, NULL); > >>> + AARCH64_INIT_RWSR_BUILTINS_DECL (RSR, rsr, fntype); > >>> + > >>> + fntype > >>> + = build_function_type_list (ptr_type_node, const_char_ptr_type, NULL); > >>> + AARCH64_INIT_RWSR_BUILTINS_DECL (RSRP, rsrp, fntype); > >>> + > >>> + fntype > >>> + = build_function_type_list (uint64_type_node, const_char_ptr_type, NULL); > >>> + AARCH64_INIT_RWSR_BUILTINS_DECL (RSR64, rsr64, fntype); > >>> + > >>> + fntype > >>> + = build_function_type_list (float_type_node, const_char_ptr_type, NULL); > >>> + AARCH64_INIT_RWSR_BUILTINS_DECL (RSRF, rsrf, fntype); > >>> + > >>> + fntype > >>> + = build_function_type_list (double_type_node, const_char_ptr_type, NULL); > >>> + AARCH64_INIT_RWSR_BUILTINS_DECL (RSRF64, rsrf64, fntype); > >>> + > >>> + fntype > >>> + = build_function_type_list (void_type_node, const_char_ptr_type, > >>> + uint32_type_node, NULL); > >>> + > >>> + AARCH64_INIT_RWSR_BUILTINS_DECL (WSR, wsr, fntype); > >>> + > >>> + fntype > >>> + = build_function_type_list (void_type_node, const_char_ptr_type, > >>> + const_ptr_type_node, NULL); > >>> + AARCH64_INIT_RWSR_BUILTINS_DECL (WSRP, wsrp, fntype); > >>> + > >>> + fntype > >>> + = build_function_type_list (void_type_node, const_char_ptr_type, > >>> + uint64_type_node, NULL); > >>> + AARCH64_INIT_RWSR_BUILTINS_DECL (WSR64, wsr64, fntype); > >>> + > >>> + fntype > >>> + = build_function_type_list (void_type_node, const_char_ptr_type, > >>> + float_type_node, NULL); > >>> + AARCH64_INIT_RWSR_BUILTINS_DECL (WSRF, wsrf, fntype); > >>> + > >>> + fntype > >>> + = build_function_type_list (void_type_node, const_char_ptr_type, > >>> + double_type_node, NULL); > >>> + AARCH64_INIT_RWSR_BUILTINS_DECL (WSRF64, wsrf64, fntype); > >>> +} > >>> + > >>> /* Initialize the memory tagging extension (MTE) builtins. */ > >>> struct > >>> { > >>> @@ -2019,6 +2089,8 @@ aarch64_general_init_builtins (void) > >>> aarch64_init_rng_builtins (); > >>> aarch64_init_data_intrinsics (); > >>> > >>> + aarch64_init_rwsr_builtins (); > >>> + > >>> tree ftype_jcvt > >>> = build_function_type_list (intSI_type_node, double_type_node, NULL); > >>> aarch64_builtin_decls[AARCH64_JSCVT] > >>> @@ -2599,6 +2671,123 @@ aarch64_expand_rng_builtin (tree exp, rtx target, int fcode, int ignore) > >>> return target; > >>> } > >>> > >>> +/* Expand the read/write system register builtin EXPs. */ > >>> +rtx > >>> +aarch64_expand_rwsr_builtin (tree exp, rtx target, int fcode) > >>> +{ > >>> + tree arg0, arg1; > >>> + rtx const_str, input_val, subreg; > >>> + enum machine_mode mode; > >>> + class expand_operand ops[2]; > >>> + > >>> + arg0 = CALL_EXPR_ARG (exp, 0); > >>> + > >>> + bool write_op = (fcode == AARCH64_WSR > >>> + || fcode == AARCH64_WSRP > >>> + || fcode == AARCH64_WSR64 > >>> + || fcode == AARCH64_WSRF > >>> + || fcode == AARCH64_WSRF64); > >>> + bool read_op = (fcode == AARCH64_RSR > >>> + || fcode == AARCH64_RSRP > >>> + || fcode == AARCH64_RSR64 > >>> + || fcode == AARCH64_RSRF > >>> + || fcode == AARCH64_RSRF64); > >> > >> Instead of this, how about using: > >> > >> if (call_expr_nargs (exp) == 1) > >> > >> for the read path? > >> > > > > Personally, I don't like that. It's a `read_op' because of the fcode it > > has, the fact they share the same number of arguments is accidental. > > With this implementation, we outline very early on exactly what > > constitutes both a valid write and a valid read operation. > > I don't agree that it's accidental. :) But fair enough, I won't push it. FWIW I agree with Richard that it isn't accidental that reads have one argument and writes have two, it's an inherent property of how the operations work. I think it would be better to use call_expr_nargs (exp) == 1 as suggested above. IIUC, presumably the operation must either be a read or a write so having two separate booleans (read_op and write_op) doesn't make much sense either? > > > I'm happy to change things around if you feel strongly enough about it > > or see some material advantage to doing things your way that I've missed :). Thanks, Alex