From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2045.outbound.protection.outlook.com [40.107.6.45]) by sourceware.org (Postfix) with ESMTPS id 4C3473857717 for ; Mon, 6 Nov 2023 12:13:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4C3473857717 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 4C3473857717 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.6.45 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699272817; cv=pass; b=alEGm2vzfmpjZIESGTj4mEUaz3HScRrLGyBHPk5JiWMvToKHQY/XvFwKHj4ogJ6GHkddcWitG7/eze60KE7owKYSKQTuaosXujZ/BMYaVWOxpNQrBHdYRKCSwi4aZPxuJ6oR19Aeaslb2w2f6YcuAStP+lyoln3ny1ghhGuH/S4= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699272817; c=relaxed/simple; bh=LQXDOyyq57N9nqdFkVvmNNew35bXsE4i1ssmVKf+980=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=Wr9SNpdsqELxuRqmuvVX87C9Gii/Dl1AXSi/+S4grMMtwf2ZrFVPICJU+lPPmi3dHQl5dppUkvRVwKWivzM74hLeM9mNS/41PfhU+Byy/OeSJBFdWf16KCsiARMkHM3DzXlmRvIdwoIqXefG3e6Xfl4TXVwD4i4ILF9oex24xSY= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=YdohgXAcVCEMU6RfJRyonPpNfh7ZGSPWi5M+xVObAw63Jj3tqeZ8+Ez/5HrolV8hSZa2Pps6SKRke4F78UVb8pbN2GBq40p4goAca6lSWBA6SUCELso4PscNyMrN8EHEtyuSA1NguGxCHH7aTodEQ+9d0BOtkuVkE7hqlFHFu//jBHvuT6VJk+6LY0AApcT/IvNJPa0WXLnvqowUe83n2XzEeFWCxkMhFuIGCBz027x4sshsqbIhr4umwPzGRujnfmVHx2fo6Qb8SRvUsFHhISALHxnxeVjYfntvVwhflrvNPYseu4ZtKhH9KT3LRP2/IXYwb1jDccM9PkCa7rCiAA== 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=LQXDOyyq57N9nqdFkVvmNNew35bXsE4i1ssmVKf+980=; b=gYf4G1sXY4wfUu3WeTBFiIPUGcISYKWbnm3Gm1wD0e8q2B8PnjTGJHhvepk3avLtvXfoTOBouPsrlk5uUZfBipw2YcrrrmV6uopQaV8YIG6wLZlT4ymaPA01TrQhO66gQhajdiACqtvz1c50glpNJuVY5oYn4R/gP5n+XEczCR8GoWXLRlXL2igh5E4EYnLXn8z6ylIymqeFzMl63l4cMm+8YdRPNl6IYbLqeXHv3AJQqa5u6y8FgpJ980TCZfE7VJDkl/e2DHyPdQ2PetkZgAOBTXMg+/sZ/u03wZSpt4wVI+rr0/ApHRYbET6+Eu/OdtMLWxP72dZWz9H/9S+AGQ== 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=LQXDOyyq57N9nqdFkVvmNNew35bXsE4i1ssmVKf+980=; b=idT363j7vlTQB5/r5mxfRejyB4kR8NJdR5ZIscL5UMQ4zoKdzLwqsg9x9U9PE+1JuEbgRkIQ3Rduerbg+JW/Y/18apE/mRMEOm73ZKTROk761Dzt9EXsdBHO5d4KPArZ1tcPFM3hsc4LJon15cjlAd2dFjrZmAANlROKcuIJdb0= Received: from AS9PR04CA0177.eurprd04.prod.outlook.com (2603:10a6:20b:530::10) by AS8PR08MB7944.eurprd08.prod.outlook.com (2603:10a6:20b:541::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.28; Mon, 6 Nov 2023 12:13:31 +0000 Received: from AM2PEPF0001C711.eurprd05.prod.outlook.com (2603:10a6:20b:530:cafe::5e) by AS9PR04CA0177.outlook.office365.com (2603:10a6:20b:530::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.28 via Frontend Transport; Mon, 6 Nov 2023 12:13:31 +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 AM2PEPF0001C711.mail.protection.outlook.com (10.167.16.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.16 via Frontend Transport; Mon, 6 Nov 2023 12:13:31 +0000 Received: ("Tessian outbound e243565b0037:v228"); Mon, 06 Nov 2023 12:13:31 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 9f9bd5a2b131f803 X-CR-MTA-TID: 64aa7808 Received: from 960d6fcfa7f7.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 125DDB0A-DD5A-4260-A439-33A5598E03C1.1; Mon, 06 Nov 2023 12:13:24 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 960d6fcfa7f7.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 06 Nov 2023 12:13:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R7/3W/6pKiQOUmfV/24c3yxmIQdUTWL+U2oEboqXK9/yUoYv7b7U1WYdQ6n95+75JnbbGA6hOKzP+7AD/0QbbvpCzIKUhGF2wIYIUdg+co4yyYDrG/Zzer3jvMnU/d/gcQoCyrrSKCLaztAMMu6lcGiLL/UnZGwm33ttS95TIiZzPgxemlrb0wFP3FD5Ube9PZi9vtmt7sknmPyKx9I+cSe4AJK2y1eme8gqOjfyIrJUYdX/sJ23U5O94Ed3YPZVc1OclSZNv2l/pTuyG8bLacSs95ZAgt2isMtTjT0qq754QTPvCwmdEwGkEOLNXxMZ+Wyz9ovEvTWPggRJd7K5Mw== 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=LQXDOyyq57N9nqdFkVvmNNew35bXsE4i1ssmVKf+980=; b=AQvDRBs3FN6V5w6I1C9n98ZjQjhWrxvdo+IXA67fII0FKNyZ4nLwvCLv/XOjH/e8ief6KdsEduDabjILwA1C2OZ4cblV8DvCT5LtQ6Zwre3HDNSxAiQaJoHcBAAUaVixc6A3YlBOgz8hpviFJkq4aGY6z5N8vInd9cbtkRxGLM0cPtBm/K5lHOfXDqjUTDBscWuf8sRMGCzKNciJiV7crofd9g2sVkkk4YnJ1SAAeNWgEfDST65AgNg1KKu/bsnd7lqUEdT/WCxLYyaHjQCc0bTJyQn1TdSyPOM9XXfx/z3ghOUxd9wfb7tajEUdwE+kT96hSwtH+gUlQc5+tabJFw== 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=LQXDOyyq57N9nqdFkVvmNNew35bXsE4i1ssmVKf+980=; b=idT363j7vlTQB5/r5mxfRejyB4kR8NJdR5ZIscL5UMQ4zoKdzLwqsg9x9U9PE+1JuEbgRkIQ3Rduerbg+JW/Y/18apE/mRMEOm73ZKTROk761Dzt9EXsdBHO5d4KPArZ1tcPFM3hsc4LJon15cjlAd2dFjrZmAANlROKcuIJdb0= Received: from DB3PR08MB8986.eurprd08.prod.outlook.com (2603:10a6:10:42b::7) by AS2PR08MB8454.eurprd08.prod.outlook.com (2603:10a6:20b:55a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.27; Mon, 6 Nov 2023 12:13:22 +0000 Received: from DB3PR08MB8986.eurprd08.prod.outlook.com ([fe80::465f:1549:2d43:c618]) by DB3PR08MB8986.eurprd08.prod.outlook.com ([fe80::465f:1549:2d43:c618%6]) with mapi id 15.20.6954.027; Mon, 6 Nov 2023 12:13:22 +0000 From: Wilco Dijkstra To: GCC Patches CC: Richard Sandiford , Kyrylo Tkachov Subject: Re: [PATCH] libatomic: Enable lock-free 128-bit atomics on AArch64 [PR110061] Thread-Topic: [PATCH] libatomic: Enable lock-free 128-bit atomics on AArch64 [PR110061] Thread-Index: AQHZlXVPCtC3Z5wAcEqXuUSCuN2uu6+NbaXlgB4wgHGALwG51IA+2lx7gDO5jVSAIPaEUQ== Date: Mon, 6 Nov 2023 12:13:22 +0000 Message-ID: References: In-Reply-To: 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: DB3PR08MB8986:EE_|AS2PR08MB8454:EE_|AM2PEPF0001C711:EE_|AS8PR08MB7944:EE_ X-MS-Office365-Filtering-Correlation-Id: 92417618-5d43-46e5-b078-08dbdec1cac8 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: jScQDlKfVD/Y+oHPnyrKwAUhzx1ZN5qyojGEu34PU4Qvn0GS3v/WDzP+6Pwe2ry1L5VhmuYTqhVEJAMxvNciP12u2IG6JWahGnazO5okwh4O73KeB2JL1WOsMEiDEQNWY7E0goEL173A4OKN8V4iJSoXriKmx57HqKGC+K7zerFUWnoVYzdOpBJzAzqZ4xHXjo+mLXGVjDatG/Q8s2Rbw4RJmqhSOMSA7WItBX0ewJ6f560tcw3sFZ8Ije8JlnLpwMEt8oA8zDZHOJA7pp+c1ucu+t0Wg/JKqm+NcSgGKQUdvZ9tDiepR/B847+MvVHRINjaqQExLgzVoSRQQG3e3jbe+9oamDIRnIMl1M3qgPs+em5oIxsIvCTzrCq4bP1V0q/nHkDdfPLRvuHvlU+VeCza7QxVX5KJyflehlJUlxJhV7ugB+UgwYrjaltMDVglxt98yXMZwB3Rpz2HZY+lkhZhiy52VLkGS/x3ti3VJ1l3nC84yKOcj0rs+Vum8/xsEd4cKS5YG6wi+C1ScWHyyX0sIZxaaRVJr+UJIorfdJar2uf89miMMWTMfV1BFHsMGL3BfF5TNMRFoWdDQ6QeFXLy4GMj4qkLWdC8bsLqSDQ= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB3PR08MB8986.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(346002)(366004)(136003)(396003)(376002)(230922051799003)(64100799003)(451199024)(1800799009)(186009)(55016003)(6506007)(53546011)(9686003)(41300700001)(26005)(7696005)(52536014)(122000001)(38100700002)(33656002)(86362001)(2906002)(5660300002)(8936002)(8676002)(83380400001)(71200400001)(4326008)(38070700009)(76116006)(66476007)(66946007)(316002)(66446008)(54906003)(66556008)(478600001)(64756008)(6916009)(91956017);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8454 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: AM2PEPF0001C711.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: ba6dd589-dc62-47ff-5a5c-08dbdec1c541 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rZgPAvDASKfn/6wcF7lcJ10nAzuA0H8D8JVwBMzN69I/ZWh+ZamwdtQoPkuP09AiPYhpHageet9r29LiNpT1YTJKuQgwzjX4rQAsFoDP00Sb6VO1JjAfi6+PT9sbSVAoCitNYIQWVZiikT/5dpgh89gfpHTrA6ZZZkvx/RRkqu3XYXjVzy8LzWFSBzY+/lsioqx7o73/VARjR1oMb5ih5B4FPwta/wsdOir4hZVkhpmApef63c0D2iio9YG9K7mKE2aSeKfUr5ItsMn2ZQSAYYZW6LFfwrIwaIgx6Hx5l4Qw4ag+W0pnKGDqFZkJVD8GMp/obKrovrusY/1d5eGeyp6QLFRHF0LD95SA6g74rGYUVyg6m4JyDUZi1onSqPlVu0EttyZrdZLj3TDOhwSHefGAWPxYsUJOWb+FpcZ6JiodYJwRfp/M7kHr3XvUGlv2Ftn91+iManfmzNiF0SUrU2RrrF0aCrSvzysfyY9hxc+ATD8/ypTvc/hB7Y1EdLjlDOp95DTDDR5yZw3ryJF1hcPi0L0rhXYpSyNuJD90p39jlkeUbpxysL0HfRwtEYq01alFq43qbHgumeZBko+wkjpiPs+OvOjuaQSbihMbSU3XiTd+hflVLO0KBaWiNsKZauWRp1Oopk0ttGZBN1S5ZSTe2w9iRwTbEh305obO/xYZ50j0LmcZAv1QITaDZyn66mgB0pfRwSfUY6xEco8wSPQ9fQNeG9krofhzFx8kgmM= 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)(39860400002)(396003)(376002)(346002)(136003)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(82310400011)(46966006)(40470700004)(36840700001)(36860700001)(2906002)(33656002)(41300700001)(6916009)(478600001)(316002)(7696005)(54906003)(52536014)(8936002)(8676002)(70586007)(70206006)(4326008)(55016003)(47076005)(40480700001)(86362001)(5660300002)(356005)(81166007)(83380400001)(40460700003)(336012)(82740400003)(6506007)(26005)(53546011)(9686003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2023 12:13:31.4324 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 92417618-5d43-46e5-b078-08dbdec1cac8 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: AM2PEPF0001C711.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB7944 X-Spam-Status: No, score=-9.3 required=5.0 tests=BAYES_00,BODY_8BITS,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,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: =0A= =0A= ping=0A= =0A= From: Wilco Dijkstra=0A= Sent: 02 June 2023 18:28=0A= To: GCC Patches =0A= Cc: Richard Sandiford ; Kyrylo Tkachov =0A= Subject: [PATCH] libatomic: Enable lock-free 128-bit atomics on AArch64 [PR= 110061] =0A= =A0=0A= =0A= Enable lock-free 128-bit atomics on AArch64.=A0 This is backwards compatibl= e with=0A= existing binaries, gives better performance than locking atomics and is wha= t=0A= most users expect.=0A= =0A= Note 128-bit atomic loads use a load/store exclusive loop if LSE2 is not su= pported.=0A= This results in an implicit store which is invisible to software as long as= the given=0A= address is writeable (which will be true when using atomics in actual code)= .=0A= =0A= A simple test on an old Cortex-A72 showed 2.7x speedup of 128-bit atomics.= =0A= =0A= Passes regress, OK for commit?=0A= =0A= libatomic/=0A= =A0=A0=A0=A0=A0=A0=A0 PR target/110061=0A= =A0=A0=A0=A0=A0=A0=A0 config/linux/aarch64/atomic_16.S: Implement lock-free= ARMv8.0 atomics.=0A= =A0=A0=A0=A0=A0=A0=A0 config/linux/aarch64/host-config.h: Use atomic_16.S f= or baseline v8.0.=0A= =A0=A0=A0=A0=A0=A0=A0 State we have lock-free atomics.=0A= =0A= ---=0A= =0A= diff --git a/libatomic/config/linux/aarch64/atomic_16.S b/libatomic/config/= linux/aarch64/atomic_16.S=0A= index 05439ce394b9653c9bcb582761ff7aaa7c8f9643..0485c284117edf54f41959d2fab= 9341a9567b1cf 100644=0A= --- a/libatomic/config/linux/aarch64/atomic_16.S=0A= +++ b/libatomic/config/linux/aarch64/atomic_16.S=0A= @@ -22,6 +22,21 @@=0A= =A0=A0=A0 .=A0 */=0A= =A0=0A= =A0=0A= +/* AArch64 128-bit lock-free atomic implementation.=0A= +=0A= +=A0=A0 128-bit atomics are now lock-free for all AArch64 architecture vers= ions.=0A= +=A0=A0 This is backwards compatible with existing binaries and gives bette= r=0A= +=A0=A0 performance than locking atomics.=0A= +=0A= +=A0=A0 128-bit atomic loads use a exclusive loop if LSE2 is not supported.= =0A= +=A0=A0 This results in an implicit store which is invisible to software as= long=0A= +=A0=A0 as the given address is writeable.=A0 Since all other atomics have = explicit=0A= +=A0=A0 writes, this will be true when using atomics in actual code.=0A= +=0A= +=A0=A0 The libat__16 entry points are ARMv8.0.=0A= +=A0=A0 The libat__16_i1 entry points are used when LSE2 is available.= =A0 */=0A= +=0A= +=0A= =A0=A0=A0=A0=A0=A0=A0=A0 .arch=A0=A0 armv8-a+lse=0A= =A0=0A= =A0#define ENTRY(name)=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \=0A= @@ -37,6 +52,10 @@ name:=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \=0A= =A0=A0=A0=A0=A0=A0=A0=A0 .cfi_endproc;=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \=0A= =A0=A0=A0=A0=A0=A0=A0=A0 .size name, .-name;=0A= =A0=0A= +#define ALIAS(alias,name)=A0=A0=A0=A0=A0 \=0A= +=A0=A0=A0=A0=A0=A0 .global alias;=A0=A0=A0=A0=A0=A0=A0=A0=A0 \=0A= +=A0=A0=A0=A0=A0=A0 .set alias, name;=0A= +=0A= =A0#define res0 x0=0A= =A0#define res1 x1=0A= =A0#define in0=A0 x2=0A= @@ -70,6 +89,24 @@ name:=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 \=0A= =A0#define SEQ_CST 5=0A= =A0=0A= =A0=0A= +ENTRY (libat_load_16)=0A= +=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= +=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w1, 2f=0A= +=0A= +=A0=A0=A0=A0=A0=A0 /* RELAXED.=A0 */=0A= +1:=A0=A0=A0=A0 ldxp=A0=A0=A0 res0, res1, [x5]=0A= +=A0=A0=A0=A0=A0=A0 stxp=A0=A0=A0 w4, res0, res1, [x5]=0A= +=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 1b=0A= +=A0=A0=A0=A0=A0=A0 ret=0A= +=0A= +=A0=A0=A0=A0=A0=A0 /* ACQUIRE/CONSUME/SEQ_CST.=A0 */=0A= +2:=A0=A0=A0=A0 ldaxp=A0=A0 res0, res1, [x5]=0A= +=A0=A0=A0=A0=A0=A0 stxp=A0=A0=A0 w4, res0, res1, [x5]=0A= +=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= +=A0=A0=A0=A0=A0=A0 ret=0A= +END (libat_load_16)=0A= +=0A= +=0A= =A0ENTRY (libat_load_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w1, 1f=0A= =A0=0A= @@ -93,6 +130,23 @@ ENTRY (libat_load_16_i1)=0A= =A0END (libat_load_16_i1)=0A= =A0=0A= =A0=0A= +ENTRY (libat_store_16)=0A= +=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2f=0A= +=0A= +=A0=A0=A0=A0=A0=A0 /* RELAXED.=A0 */=0A= +1:=A0=A0=A0=A0 ldxp=A0=A0=A0 xzr, tmp0, [x0]=0A= +=A0=A0=A0=A0=A0=A0 stxp=A0=A0=A0 w4, in0, in1, [x0]=0A= +=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 1b=0A= +=A0=A0=A0=A0=A0=A0 ret=0A= +=0A= +=A0=A0=A0=A0=A0=A0 /* RELEASE/SEQ_CST.=A0 */=0A= +2:=A0=A0=A0=A0 ldxp=A0=A0=A0 xzr, tmp0, [x0]=0A= +=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, in0, in1, [x0]=0A= +=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= +=A0=A0=A0=A0=A0=A0 ret=0A= +END (libat_store_16)=0A= +=0A= +=0A= =A0ENTRY (libat_store_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 1f=0A= =A0=0A= @@ -101,14 +155,14 @@ ENTRY (libat_store_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= =A0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 /* RELEASE/SEQ_CST.=A0 */=0A= -1:=A0=A0=A0=A0 ldaxp=A0=A0 xzr, tmp0, [x0]=0A= +1:=A0=A0=A0=A0 ldxp=A0=A0=A0 xzr, tmp0, [x0]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, in0, in1, [x0]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 1b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= =A0END (libat_store_16_i1)=0A= =A0=0A= =A0=0A= -ENTRY (libat_exchange_16_i1)=0A= +ENTRY (libat_exchange_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2f=0A= =A0=0A= @@ -126,22 +180,55 @@ ENTRY (libat_exchange_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stxp=A0=A0=A0 w4, in0, in1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 3b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -4:=0A= -=A0=A0=A0=A0=A0=A0 cmp=A0=A0=A0=A0 w4, RELEASE=0A= -=A0=A0=A0=A0=A0=A0 b.ne=A0=A0=A0 6f=0A= =A0=0A= -=A0=A0=A0=A0=A0=A0 /* RELEASE.=A0 */=0A= -5:=A0=A0=A0=A0 ldxp=A0=A0=A0 res0, res1, [x5]=0A= +=A0=A0=A0=A0=A0=A0 /* RELEASE/ACQ_REL/SEQ_CST.=A0 */=0A= +4:=A0=A0=A0=A0 ldaxp=A0=A0 res0, res1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, in0, in1, [x5]=0A= -=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 5b=0A= +=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 4b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= +END (libat_exchange_16)=0A= =A0=0A= -=A0=A0=A0=A0=A0=A0 /* ACQ_REL/SEQ_CST.=A0 */=0A= -6:=A0=A0=A0=A0 ldaxp=A0=A0 res0, res1, [x5]=0A= -=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, in0, in1, [x5]=0A= -=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 6b=0A= +=0A= +ENTRY (libat_compare_exchange_16)=0A= +=A0=A0=A0=A0=A0=A0 ldp=A0=A0=A0=A0 exp0, exp1, [x1]=0A= +=A0=A0=A0=A0=A0=A0 cbz=A0=A0=A0=A0 w4, 3f=0A= +=A0=A0=A0=A0=A0=A0 cmp=A0=A0=A0=A0 w4, RELEASE=0A= +=A0=A0=A0=A0=A0=A0 b.hs=A0=A0=A0 4f=0A= +=0A= +=A0=A0=A0=A0=A0=A0 /* ACQUIRE/CONSUME.=A0 */=0A= +1:=A0=A0=A0=A0 ldaxp=A0=A0 tmp0, tmp1, [x0]=0A= +=A0=A0=A0=A0=A0=A0 cmp=A0=A0=A0=A0 tmp0, exp0=0A= +=A0=A0=A0=A0=A0=A0 ccmp=A0=A0=A0 tmp1, exp1, 0, eq=0A= +=A0=A0=A0=A0=A0=A0 bne=A0=A0=A0=A0 2f=0A= +=A0=A0=A0=A0=A0=A0 stxp=A0=A0=A0 w4, in0, in1, [x0]=0A= +=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 1b=0A= +=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x0, 1=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_exchange_16_i1)=0A= +=0A= +2:=A0=A0=A0=A0 stp=A0=A0=A0=A0 tmp0, tmp1, [x1]=0A= +=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x0, 0=0A= +=A0=A0=A0=A0=A0=A0 ret=0A= +=0A= +=A0=A0=A0=A0=A0=A0 /* RELAXED.=A0 */=0A= +3:=A0=A0=A0=A0 ldxp=A0=A0=A0 tmp0, tmp1, [x0]=0A= +=A0=A0=A0=A0=A0=A0 cmp=A0=A0=A0=A0 tmp0, exp0=0A= +=A0=A0=A0=A0=A0=A0 ccmp=A0=A0=A0 tmp1, exp1, 0, eq=0A= +=A0=A0=A0=A0=A0=A0 bne=A0=A0=A0=A0 2b=0A= +=A0=A0=A0=A0=A0=A0 stxp=A0=A0=A0 w4, in0, in1, [x0]=0A= +=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 3b=0A= +=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x0, 1=0A= +=A0=A0=A0=A0=A0=A0 ret=0A= +=0A= +=A0=A0=A0=A0=A0=A0 /* RELEASE/ACQ_REL/SEQ_CST.=A0 */=0A= +4:=A0=A0=A0=A0 ldaxp=A0=A0 tmp0, tmp1, [x0]=0A= +=A0=A0=A0=A0=A0=A0 cmp=A0=A0=A0=A0 tmp0, exp0=0A= +=A0=A0=A0=A0=A0=A0 ccmp=A0=A0=A0 tmp1, exp1, 0, eq=0A= +=A0=A0=A0=A0=A0=A0 bne=A0=A0=A0=A0 2b=0A= +=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, in0, in1, [x0]=0A= +=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 4b=0A= +=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x0, 1=0A= +=A0=A0=A0=A0=A0=A0 ret=0A= +END (libat_compare_exchange_16)=0A= =A0=0A= =A0=0A= =A0ENTRY (libat_compare_exchange_16_i1)=0A= @@ -180,7 +267,7 @@ ENTRY (libat_compare_exchange_16_i1)=0A= =A0END (libat_compare_exchange_16_i1)=0A= =A0=0A= =A0=0A= -ENTRY (libat_fetch_add_16_i1)=0A= +ENTRY (libat_fetch_add_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2f=0A= =A0=0A= @@ -199,10 +286,10 @@ ENTRY (libat_fetch_add_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, tmp0, tmp1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_fetch_add_16_i1)=0A= +END (libat_fetch_add_16)=0A= =A0=0A= =A0=0A= -ENTRY (libat_add_fetch_16_i1)=0A= +ENTRY (libat_add_fetch_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2f=0A= =A0=0A= @@ -221,10 +308,10 @@ ENTRY (libat_add_fetch_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, res0, res1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_add_fetch_16_i1)=0A= +END (libat_add_fetch_16)=0A= =A0=0A= =A0=0A= -ENTRY (libat_fetch_sub_16_i1)=0A= +ENTRY (libat_fetch_sub_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2f=0A= =A0=0A= @@ -243,10 +330,10 @@ ENTRY (libat_fetch_sub_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, tmp0, tmp1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_fetch_sub_16_i1)=0A= +END (libat_fetch_sub_16)=0A= =A0=0A= =A0=0A= -ENTRY (libat_sub_fetch_16_i1)=0A= +ENTRY (libat_sub_fetch_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2f=0A= =A0=0A= @@ -265,10 +352,10 @@ ENTRY (libat_sub_fetch_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, res0, res1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_sub_fetch_16_i1)=0A= +END (libat_sub_fetch_16)=0A= =A0=0A= =A0=0A= -ENTRY (libat_fetch_or_16_i1)=0A= +ENTRY (libat_fetch_or_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2f=0A= =A0=0A= @@ -287,10 +374,10 @@ ENTRY (libat_fetch_or_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, tmp0, tmp1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_fetch_or_16_i1)=0A= +END (libat_fetch_or_16)=0A= =A0=0A= =A0=0A= -ENTRY (libat_or_fetch_16_i1)=0A= +ENTRY (libat_or_fetch_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2f=0A= =A0=0A= @@ -309,10 +396,10 @@ ENTRY (libat_or_fetch_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, res0, res1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_or_fetch_16_i1)=0A= +END (libat_or_fetch_16)=0A= =A0=0A= =A0=0A= -ENTRY (libat_fetch_and_16_i1)=0A= +ENTRY (libat_fetch_and_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2f=0A= =A0=0A= @@ -331,10 +418,10 @@ ENTRY (libat_fetch_and_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, tmp0, tmp1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_fetch_and_16_i1)=0A= +END (libat_fetch_and_16)=0A= =A0=0A= =A0=0A= -ENTRY (libat_and_fetch_16_i1)=0A= +ENTRY (libat_and_fetch_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2f=0A= =A0=0A= @@ -353,10 +440,10 @@ ENTRY (libat_and_fetch_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, res0, res1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_and_fetch_16_i1)=0A= +END (libat_and_fetch_16)=0A= =A0=0A= =A0=0A= -ENTRY (libat_fetch_xor_16_i1)=0A= +ENTRY (libat_fetch_xor_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2f=0A= =A0=0A= @@ -375,10 +462,10 @@ ENTRY (libat_fetch_xor_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, tmp0, tmp1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_fetch_xor_16_i1)=0A= +END (libat_fetch_xor_16)=0A= =A0=0A= =A0=0A= -ENTRY (libat_xor_fetch_16_i1)=0A= +ENTRY (libat_xor_fetch_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2f=0A= =A0=0A= @@ -397,10 +484,10 @@ ENTRY (libat_xor_fetch_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, res0, res1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_xor_fetch_16_i1)=0A= +END (libat_xor_fetch_16)=0A= =A0=0A= =A0=0A= -ENTRY (libat_fetch_nand_16_i1)=0A= +ENTRY (libat_fetch_nand_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mvn=A0=A0=A0=A0 in0, in0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mvn=A0=A0=A0=A0 in1, in1=0A= @@ -421,10 +508,10 @@ ENTRY (libat_fetch_nand_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, tmp0, tmp1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_fetch_nand_16_i1)=0A= +END (libat_fetch_nand_16)=0A= =A0=0A= =A0=0A= -ENTRY (libat_nand_fetch_16_i1)=0A= +ENTRY (libat_nand_fetch_16)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mvn=A0=A0=A0=A0 in0, in0=0A= =A0=A0=A0=A0=A0=A0=A0=A0 mvn=A0=A0=A0=A0 in1, in1=0A= @@ -445,21 +532,38 @@ ENTRY (libat_nand_fetch_16_i1)=0A= =A0=A0=A0=A0=A0=A0=A0=A0 stlxp=A0=A0 w4, res0, res1, [x5]=0A= =A0=A0=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 2b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_nand_fetch_16_i1)=0A= +END (libat_nand_fetch_16)=0A= =A0=0A= =A0=0A= -ENTRY (libat_test_and_set_16_i1)=0A= -=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 w2, 1=0A= -=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w1, 2f=0A= -=0A= -=A0=A0=A0=A0=A0=A0 /* RELAXED.=A0 */=0A= -=A0=A0=A0=A0=A0=A0 swpb=A0=A0=A0 w0, w2, [x0]=0A= -=A0=A0=A0=A0=A0=A0 ret=0A= +/* __atomic_test_and_set is always inlined, so this entry is unused and=0A= +=A0=A0 only required for completeness.=A0 */=0A= +ENTRY (libat_test_and_set_16)=0A= =A0=0A= -=A0=A0=A0=A0=A0=A0 /* ACQUIRE/CONSUME/RELEASE/ACQ_REL/SEQ_CST.=A0 */=0A= -2:=A0=A0=A0=A0 swpalb=A0 w0, w2, [x0]=0A= +=A0=A0=A0=A0=A0=A0 /* RELAXED/ACQUIRE/CONSUME/RELEASE/ACQ_REL/SEQ_CST.=A0 = */=0A= +=A0=A0=A0=A0=A0=A0 mov=A0=A0=A0=A0 x5, x0=0A= +1:=A0=A0=A0=A0 ldaxrb=A0 w0, [x5]=0A= +=A0=A0=A0=A0=A0=A0 stlxrb=A0 w4, w2, [x5]=0A= +=A0=A0=A0=A0=A0=A0 cbnz=A0=A0=A0 w4, 1b=0A= =A0=A0=A0=A0=A0=A0=A0=A0 ret=0A= -END (libat_test_and_set_16_i1)=0A= +END (libat_test_and_set_16)=0A= +=0A= +=0A= +/* Alias entry points which are the same in baseline and LSE2.=A0 */=0A= +=0A= +ALIAS (libat_exchange_16_i1, libat_exchange_16)=0A= +ALIAS (libat_fetch_add_16_i1, libat_fetch_add_16)=0A= +ALIAS (libat_add_fetch_16_i1, libat_add_fetch_16)=0A= +ALIAS (libat_fetch_sub_16_i1, libat_fetch_sub_16)=0A= +ALIAS (libat_sub_fetch_16_i1, libat_sub_fetch_16)=0A= +ALIAS (libat_fetch_or_16_i1, libat_fetch_or_16)=0A= +ALIAS (libat_or_fetch_16_i1, libat_or_fetch_16)=0A= +ALIAS (libat_fetch_and_16_i1, libat_fetch_and_16)=0A= +ALIAS (libat_and_fetch_16_i1, libat_and_fetch_16)=0A= +ALIAS (libat_fetch_xor_16_i1, libat_fetch_xor_16)=0A= +ALIAS (libat_xor_fetch_16_i1, libat_xor_fetch_16)=0A= +ALIAS (libat_fetch_nand_16_i1, libat_fetch_nand_16)=0A= +ALIAS (libat_nand_fetch_16_i1, libat_nand_fetch_16)=0A= +ALIAS (libat_test_and_set_16_i1, libat_test_and_set_16)=0A= =A0=0A= =A0=0A= =A0/* GNU_PROPERTY_AARCH64_* macros from elf.h for use in asm code.=A0 */= =0A= diff --git a/libatomic/config/linux/aarch64/host-config.h b/libatomic/confi= g/linux/aarch64/host-config.h=0A= index bea26825b4f75bb8ff348ab4b5fc45f4a5bd561e..851c78c01cd643318aaa52929ce= 4550266238b79 100644=0A= --- a/libatomic/config/linux/aarch64/host-config.h=0A= +++ b/libatomic/config/linux/aarch64/host-config.h=0A= @@ -35,10 +35,19 @@=0A= =A0#endif=0A= =A0#define IFUNC_NCOND(N)=A0 (1)=0A= =A0=0A= -#if N =3D=3D 16 && IFUNC_ALT !=3D 0=0A= +#endif /* HAVE_IFUNC */=0A= +=0A= +/* All 128-bit atomic functions are defined in aarch64/atomic_16.S.=A0 */= =0A= +#if N =3D=3D 16=0A= =A0# define DONE 1=0A= =A0#endif=0A= =A0=0A= -#endif /* HAVE_IFUNC */=0A= +/* State we have lock-free 128-bit atomics.=A0 */=0A= +#undef FAST_ATOMIC_LDST_16=0A= +#define FAST_ATOMIC_LDST_16=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 1=0A= +#undef MAYBE_HAVE_ATOMIC_CAS_16=0A= +#define MAYBE_HAVE_ATOMIC_CAS_16=A0=A0=A0=A0=A0=A0 1=0A= +#undef MAYBE_HAVE_ATOMIC_EXCHANGE_16=0A= +#define MAYBE_HAVE_ATOMIC_EXCHANGE_16=A0 1=0A= =A0=0A= =A0#include_next =