From patchwork Fri Aug 4 15:05:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 131215 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:44a:b0:3f2:4152:657d with SMTP id ez10csp325221vqb; Fri, 4 Aug 2023 08:06:49 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE76b7IzLPsa6uBaAU0dJo3y98r7JVSDytk2Z3acN3wNFw3gWWAztNyk2EJE8Bn1WpjZSO0 X-Received: by 2002:a17:906:5388:b0:99c:3b4:9407 with SMTP id g8-20020a170906538800b0099c03b49407mr1649092ejo.5.1691161609306; Fri, 04 Aug 2023 08:06:49 -0700 (PDT) Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id x15-20020a170906134f00b00993860a6d3bsi269155ejb.518.2023.08.04.08.06.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Aug 2023 08:06:49 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=NMrxvgAT; arc=fail (signature failed); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E6E0C385772B for ; Fri, 4 Aug 2023 15:06:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E6E0C385772B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1691161607; bh=5IH6NIeVkS5vF9RRs7fEhdNcq1qCwYOMyyhCKPJgfcM=; h=To:CC:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=NMrxvgATeqzzK/i0ukoypf2Se3jbrqRcu6IYgkJ801DLLQ4Zwnb8R1ALVGYg8oN/A 9cHVLx4fG6Q5PdQ+LTj0s4SSNDFdInJ1Zx5iFkBeAj+h5FlPN2THJ8ZrxAoPMAbucE gdgSRRLai3rT2FpZvcW4s2c/BMSMP9qEYoX30fhk= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on2073.outbound.protection.outlook.com [40.107.14.73]) by sourceware.org (Postfix) with ESMTPS id D508C3857700 for ; Fri, 4 Aug 2023 15:05:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D508C3857700 Received: from AM0PR02CA0212.eurprd02.prod.outlook.com (2603:10a6:20b:28f::19) by AS8PR08MB10221.eurprd08.prod.outlook.com (2603:10a6:20b:63e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.20; Fri, 4 Aug 2023 15:05:55 +0000 Received: from AM7EUR03FT045.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:28f:cafe::ec) by AM0PR02CA0212.outlook.office365.com (2603:10a6:20b:28f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.21 via Frontend Transport; Fri, 4 Aug 2023 15:05:55 +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 AM7EUR03FT045.mail.protection.outlook.com (100.127.140.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.48 via Frontend Transport; Fri, 4 Aug 2023 15:05:55 +0000 Received: ("Tessian outbound f1e964b3a9be:v145"); Fri, 04 Aug 2023 15:05:55 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: d24a08aeceaae217 X-CR-MTA-TID: 64aa7808 Received: from f63219527bb0.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 79EB368F-779E-4D02-917D-C1A91464D152.1; Fri, 04 Aug 2023 15:05:44 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f63219527bb0.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 04 Aug 2023 15:05:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lPnVOsHZzu4Tv7xQlbbN0EIWoraJ6Bug1fxRlVAkHpgE4FY9LTQsSz1g7gKQuMDGxrv1sOFihGizvTQjiDqE/65sbbQ+LG/5B10u9vi9db1w93qrBovk1ec0RNovdu1qx8AB4Pt10A3npIPUNhXxGGr+aoi/r70gNMP2/Y8z8+kQLcMetHCW7Xnw3pcqtZLHh+hSI3YHPas4iIqDZuxjGv95Z7wqF+/B5sDS0ynRjUZqID1ngPmTtiIX+UtjGlNXF8QOqx1bECmjGDdwQ1npft0YaEIFmws1Btj7YMjKHiBRv9CSUNSQy6ATnooR2KxGg2/SpQA08Swx/I1zYXb+Xg== 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=5IH6NIeVkS5vF9RRs7fEhdNcq1qCwYOMyyhCKPJgfcM=; b=kT7SxD7MESbh0j82Dj8OtLgob3vwoY+FIR3fjX+nKfad/mjiM3tIwGr2JikVdJhLsfDSj9r3hyjx6Na/neVsBdOhgJZIbc1LIcUvGJc2GkmySsWUG/+c+LruTgqCw8UuFai4rnYTYONmXM7vNI3weyUkN3RQjQPOveDhXx9ZlPRzjViQ2lNmsxPJ/X1KMc7yg6DuupTJ2GZP/Ah7VoTkSpn4W/q/U8VTYB0+9uai4Ut3XXDsFxe7Cy7jxWLLtetw3HRm52jXIlAOXh9lGiM4V0MmoQKQ5ZS4ttZbLwRH10r0ie+L2xX+YyY1tY6OPdv9x1VmnoyaMEbX0KrqbnUpzw== 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 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by VI1PR08MB5328.eurprd08.prod.outlook.com (2603:10a6:803:13a::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.47; Fri, 4 Aug 2023 15:05:39 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::4cbf:41a8:56db:cdb7]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::4cbf:41a8:56db:cdb7%7]) with mapi id 15.20.6631.046; Fri, 4 Aug 2023 15:05:39 +0000 To: GCC Patches , Richard Sandiford CC: Kyrylo Tkachov Subject: [PATCH] libatomic: Improve ifunc selection on AArch64 Thread-Topic: [PATCH] libatomic: Improve ifunc selection on AArch64 Thread-Index: AQHZxuSuUjG3Jeserki4jO+PA+zoTQ== Date: Fri, 4 Aug 2023 15:05:39 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|VI1PR08MB5328:EE_|AM7EUR03FT045:EE_|AS8PR08MB10221:EE_ X-MS-Office365-Filtering-Correlation-Id: 77fa1bbd-0164-4615-2e85-08db94fc4d83 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: hkY+nz2WQ2pHhZ1asJKB6A9PSgPEXbmrjV1ucx9hM7A4H9x/Z1AIZN3SVIoQjq8ieKmwofvoWApeDyA2y5Af8GnQyo3u+fI5QlRDSiTz1IADCaGs6Z78zBMmVlbqnDriSCGd6V1vGxgrUhBplFnmAN21cYIbHqDX5jU1f/ip90GmeqrD9XQGgEeCbnQT/dXEBdT39iJawE64WWWYoTjn91VIH65go2aklF7e35W9U1hOpDXkJOSOLEOxCRiw+ke2U12tz30Y95KSgAd42w7b795d3mTNkqqfjjrki+YqhFbv6Loj3o/VRdkyTJiLqo3TjcnpXhT5ZHnsW7KjatxVU9m0pY2bTilJDSgRlb0d6feK9qRfsaa+srtleT+VL+hX82rDufso+fwWhZlVlrl7TmO7ICW0ruKzFwZiDHPvrsfS7B/xNigl/RMgGJAaJ1wQ3AyBFB+iyG38IUQ0c9bzgLFzDMVHrJTYw0+fHsJqRpSt8LRdm05MT4toGO5bNhdXQrXkK7GO3s5Enkq7D5BBX4vAO2oN2llVbjFOJ9Kv9sDM2gQbQCekZo/ZV59skrZHXxiC/OskwgFnCN1MS3/WvSIbYoQyAs9ROOyj0iT/okGln+UXJlFv0LbBC039AcsJ X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(346002)(396003)(136003)(366004)(39850400004)(376002)(186006)(1800799003)(451199021)(86362001)(33656002)(38070700005)(55016003)(478600001)(110136005)(38100700002)(122000001)(26005)(6506007)(8676002)(41300700001)(8936002)(52536014)(9686003)(7696005)(71200400001)(316002)(91956017)(76116006)(66476007)(2906002)(4326008)(66446008)(64756008)(66556008)(5660300002)(6636002)(66946007); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5328 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: AM7EUR03FT045.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: dba32f05-0e5c-4357-bf86-08db94fc43f8 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WbuKpBxrC65qefXz9MG92SnhAzk1x66EsDSynx7dJFB1it8HgVzlDo7RmLQrHC8RkofaLR5MT1vXKTEXm3m3DSucxYyc1fwmCkbrSp065ny0GYmqIWEpIJ8dyfGn8yipjTSjeHfGYeT/F6qx4VciEfhkjwEU7wdl48kp8Z5fF6HtsAQDGjnchKEucv7Ozz6PXYD+Z4LvBc63vg3rkDS4vjl83U3T2o19/PSyGQnz/flisEIEHXPuGiWA+lW916e34RQy+hlepnEIiCKo8Yo2Jnh3n0uFWprnl4twtGUrfRldWvbUHAd0JcfKnliPldgDtPSoKXp3sSjARV1mKrR3Di2p5u8dXcHwjiqLsix6chxPKH846h+yyCztIGjWlwx7uZzCY4sc4wXdC8ipB5gr/d1t/h9eEp8LTQsHeZYVN/YsQMxL5oEgQQfEg1x19jE/VUpre/+9EXI51TYJxxd0vggQsF/oC6qT+UMIixDPxTg7UkmCmeJFYdYARUHRI8HGlZoSkSXr0FNdsAymiD5z31wXaacD6fwfUTbrDFnccsy4wNtt6dA5uBmgRhlFrgqbtdDfhK1HouzmmHce+owCwAwUoH6EITiPmlQxiDioMiVET3YavDvmwKcbJnZ/ohWq6fYfd7jVMfopBq/m9XmMKsXnpGc449RyeiKOZ59GZ+hmtspd/KxlyUazUwIa7YJv15ONYlHrIYeJUcVbtJ8atN+yGsYDDe4RC6j6fLqXiwXBiGRZVCtWegoK6Bos3O7C X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230028)(4636009)(376002)(136003)(39860400002)(396003)(346002)(186006)(1800799003)(82310400008)(451199021)(46966006)(36840700001)(40470700004)(33656002)(86362001)(82740400003)(40460700003)(40480700001)(55016003)(478600001)(110136005)(356005)(47076005)(8676002)(336012)(26005)(6506007)(41300700001)(8936002)(52536014)(9686003)(7696005)(81166007)(6636002)(36860700001)(2906002)(316002)(4326008)(70206006)(70586007)(5660300002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2023 15:05:55.5544 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 77fa1bbd-0164-4615-2e85-08db94fc4d83 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: AM7EUR03FT045.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB10221 X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_NUMSUBJECT, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Wilco Dijkstra via Gcc-patches From: Wilco Dijkstra Reply-To: Wilco Dijkstra Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773311475945332609 X-GMAIL-MSGID: 1773311475945332609 Add support for ifunc selection based on CPUID register. Neoverse N1 supports atomic 128-bit load/store, so use the FEAT_USCAT ifunc like newer Neoverse cores. Passes regress, OK for commit? libatomic/ config/linux/aarch64/host-config.h (ifunc1): Use CPUID in ifunc selection. diff --git a/libatomic/config/linux/aarch64/host-config.h b/libatomic/config/linux/aarch64/host-config.h index 851c78c01cd643318aaa52929ce4550266238b79..e5dc33c030a4bab927874fa6c69425db463fdc4b 100644 --- a/libatomic/config/linux/aarch64/host-config.h +++ b/libatomic/config/linux/aarch64/host-config.h @@ -26,7 +26,7 @@ #ifdef HWCAP_USCAT # if N == 16 -# define IFUNC_COND_1 (hwcap & HWCAP_USCAT) +# define IFUNC_COND_1 ifunc1 (hwcap) # else # define IFUNC_COND_1 (hwcap & HWCAP_ATOMICS) # endif @@ -50,4 +50,28 @@ #undef MAYBE_HAVE_ATOMIC_EXCHANGE_16 #define MAYBE_HAVE_ATOMIC_EXCHANGE_16 1 +#ifdef HWCAP_USCAT + +#define MIDR_IMPLEMENTOR(midr) (((midr) >> 24) & 255) +#define MIDR_PARTNUM(midr) (((midr) >> 4) & 0xfff) + +static inline bool +ifunc1 (unsigned long hwcap) +{ + if (hwcap & HWCAP_USCAT) + return true; + if (!(hwcap & HWCAP_CPUID)) + return false; + + unsigned long midr; + asm volatile ("mrs %0, midr_el1" : "=r" (midr)); + + /* Neoverse N1 supports atomic 128-bit load/store. */ + if (MIDR_IMPLEMENTOR (midr) == 'A' && MIDR_PARTNUM(midr) == 0xd0c) + return true; + + return false; +} +#endif + #include_next