From patchwork Wed Jan 3 01:28:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Victor Do Nascimento X-Patchwork-Id: 1881825 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=0v2b5nVy; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=0v2b5nVy; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4T4XFL306jz20Rq for ; Wed, 3 Jan 2024 12:29:26 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8F9D53857C4C for ; Wed, 3 Jan 2024 01:29:20 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2043.outbound.protection.outlook.com [40.107.13.43]) by sourceware.org (Postfix) with ESMTPS id D37343861011 for ; Wed, 3 Jan 2024 01:28:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D37343861011 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 D37343861011 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.13.43 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1704245330; cv=pass; b=gYjoC8rBOtRcdWvWmCfqFtQY7+8qqTINWXi6kSKcjAofsMlrK2oxGtTOrSNpy1OvzVNYSJfPQwwnvUFmYdAJLos3mDDvUrN4wijebDLyHkSG/URd4083vhA/4p81YdMDDWdYocZwAChkpGPYH0L8nkIQm/iD9W6INX1/cTqzNbI= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1704245330; c=relaxed/simple; bh=V3rJ2jsVxXpyhXCDVCByi1uBA9MOM11TJN0fXmSr38w=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=C0vrfS72/N8rVxLGrC8hmJaq3IOy7Hb2ub+VcBLnRSBObsfiQLHPRElTAueBwiwVfgCwLUeMsrpMOyal6yhim5HQ2YR1+ih2Q7mPh1mhbx3CjhbWZNTuRsHn2SLGYRo0rOBhLa8KoMGS3FUYL87R4PJUEXFOhiCHeTfQjZ9OktQ= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=hxii/AwMyC4/Ex9sARzo7R8AB9D3R2GVqcWmaD7Iry2X2wE5pP7Bk7vuvoXRH3l/BzzaPE3RKXUPEdTICsOnuvO/VeY3b+HFjy8qk7dB824E5tZZMwxLJ5l1lsVC0U9Uymmwer2d6I7ZweH6wTdZHviWnpwsScdsYympbxD2h58sY6PGHeSHaRMFO0L7x+HaSw28JbbPCMlPqDd4O13UDlzCJvi8unGcVRCXAtSweedMpyE6Jg/wx2qGMs4PP3LBFrPzoA1Ixl6VaBZ5FQDBnJT4+h54iFuX0rYV35tfFABSTz0GOPH0YdLH/5f+lXqPSWeuqTbW1Aei9enlIfzVgQ== 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=CQitx0GdF0plpBCEI0yOzFDwzgJgrMs8DEQAx3mRcvI=; b=isHdOdZGeaLZIn2XfDCd3sXV3fPAhrIHvEvx/IsjkZlYZ5UC2sUeC3l8IUCMrFDZ+muamXLNjtPiP6mJ+FXm3giIBf6FXJlrvBnh3ZyujVfBTrtOQaae6F42AkKlQPnNzb0cmhBxdgEpkDsCfi8uLt41Spo8lP3nGJsIm++YVzuiD/rpyRQbLvVn8eVSgh169ZKZpn2idZMzHzIclZHuVZISoNL196arbsSTDBSB41e0zHcJzZHp1KlITdQeje2fyWSHo3u1qg9xobJn9R9xV5oIcgI31QbZ29jRGRTDYuraYjGV0liGjSWcUNXhErPX9cEUABhcFDpsHnG7URfNLg== 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] 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=CQitx0GdF0plpBCEI0yOzFDwzgJgrMs8DEQAx3mRcvI=; b=0v2b5nVydCTEn+nlJ73REOjTGCvy2FRGgLDsBKQwdAgX70l1Nl2m3v12dr2s1kvOlLUX70/mOvQkIg7LBoxkaAij4zL1vJ+wGWqEMeVdok2O0TRiprXoDX4Cg8RaV5H3GfjMuURYlpS9CTjxGY157zZ0QwxcMW/5Ax8wmgHRNXQ= Received: from DUZPR01CA0068.eurprd01.prod.exchangelabs.com (2603:10a6:10:3c2::18) by AS8PR08MB9953.eurprd08.prod.outlook.com (2603:10a6:20b:635::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Wed, 3 Jan 2024 01:28:42 +0000 Received: from DB5PEPF00014B8B.eurprd02.prod.outlook.com (2603:10a6:10:3c2:cafe::e2) by DUZPR01CA0068.outlook.office365.com (2603:10a6:10:3c2::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25 via Frontend Transport; Wed, 3 Jan 2024 01:28: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=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 DB5PEPF00014B8B.mail.protection.outlook.com (10.167.8.199) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.9 via Frontend Transport; Wed, 3 Jan 2024 01:28:42 +0000 Received: ("Tessian outbound e243565b0037:v228"); Wed, 03 Jan 2024 01:28:42 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 0714ab33f0109d2f X-CR-MTA-TID: 64aa7808 Received: from 641a5c1fb449.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 5EB89977-DE58-49CB-AFD1-9B0EF562A787.1; Wed, 03 Jan 2024 01:28:36 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 641a5c1fb449.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 03 Jan 2024 01:28:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D3UyXXZ2CDbi8/vQEKz5mdj0xUDZOkU6CI032aRdzcQ2LOG3KdX4P+LAyAX/9nryegcnXnXotLZ2tuTcxYBrvDKEXswqI7cW5w7gOim7dA7FPXcpFQleaFHhAE4dL4BUrIV8yncnajm+Op4SO8XZMey+p77Yr7hpOv0fZNZetuZ7dmnquXl7AbklETVvrWBcwSJgfjMc8GxKI/j6YIDFAEgzxnqJMQeNCpkt5fXx+cK72inL+dvQQk/3O+FYgiadBUC08j39Q7xC+hVMry51WplWATPaBZJEbSNeTWep+atWTgitmaDu13mbcobd8WMyCitfk6+Fedvq05NuXdJm9Q== 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=CQitx0GdF0plpBCEI0yOzFDwzgJgrMs8DEQAx3mRcvI=; b=dnATYkBwL9uS7icnl7rB1KsCSVe3I4Q0eBMafH6LszW1RqNZNUHIK0u+IuLU6mqtY8NH1IUNgRdE1NXFhxJyWZ60epGjUaUKYOFg38scS8kqWpvMFzoSV+nH8g621w/irVp+cv1JKYEiPJ126v+OuQTXCj5setIOIJA+y+SUW8GdbDyJfxX/bRYM3Lt5u1ABHr8wXIldtnuB/VFv7qAKKMg/eqDbWoGDY5QVWYvfNtAzT7FT9o1S81vYn8YqMtSHx+yc9Gm600AHbK10y4lMzypQ2a/Jx4STHUkuYb4wA+Up297D8vmPbEk/fZb9FzSLZXV4BEk2opVZf0EaAXC4lA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) 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=CQitx0GdF0plpBCEI0yOzFDwzgJgrMs8DEQAx3mRcvI=; b=0v2b5nVydCTEn+nlJ73REOjTGCvy2FRGgLDsBKQwdAgX70l1Nl2m3v12dr2s1kvOlLUX70/mOvQkIg7LBoxkaAij4zL1vJ+wGWqEMeVdok2O0TRiprXoDX4Cg8RaV5H3GfjMuURYlpS9CTjxGY157zZ0QwxcMW/5Ax8wmgHRNXQ= Received: from AS4P189CA0023.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5db::11) by DB9PR08MB7423.eurprd08.prod.outlook.com (2603:10a6:10:370::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.24; Wed, 3 Jan 2024 01:28:32 +0000 Received: from AM4PEPF00027A64.eurprd04.prod.outlook.com (2603:10a6:20b:5db:cafe::66) by AS4P189CA0023.outlook.office365.com (2603:10a6:20b:5db::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.13 via Frontend Transport; Wed, 3 Jan 2024 01:28:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (40.67.248.234) by AM4PEPF00027A64.mail.protection.outlook.com (10.167.16.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7159.9 via Frontend Transport; Wed, 3 Jan 2024 01:28:32 +0000 Received: from AZ-NEU-EX02.Emea.Arm.com (10.251.26.5) by AZ-NEU-EX03.Arm.com (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 3 Jan 2024 01:28:31 +0000 Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX02.Emea.Arm.com (10.251.26.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 3 Jan 2024 01:28:31 +0000 Received: from e125768.cambridge.arm.com (10.2.78.50) by mail.arm.com (10.251.24.32) with Microsoft SMTP Server id 15.1.2507.32 via Frontend Transport; Wed, 3 Jan 2024 01:28:30 +0000 From: Victor Do Nascimento To: CC: , , , Victor Do Nascimento Subject: [PATCH v3 1/3] libatomic: atomic_16.S: Improve ENTRY, END and ALIAS macro interface Date: Wed, 3 Jan 2024 01:28:18 +0000 Message-ID: <20240103012828.2446443-2-victor.donascimento@arm.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240103012828.2446443-1-victor.donascimento@arm.com> References: <20240103012828.2446443-1-victor.donascimento@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AM4PEPF00027A64:EE_|DB9PR08MB7423:EE_|DB5PEPF00014B8B:EE_|AS8PR08MB9953:EE_ X-MS-Office365-Filtering-Correlation-Id: 35c94880-0408-4b38-d96a-08dc0bfb526a 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: xLpgmGCt77c08SdaDUhAsicE+EOsiY7WONbjEdOYlFrWZWfz8ibb5JwlRHCR762XA7R7UJn6PjN8T9hg17RUoI02wnOmsHQlSsUeKgI4TWIHZ8LDiAM/RTb8gz67sIDrYiObLpISoAelX12KE9XGBoppNTgziMD89w/dMW4I80cwgXdRYU9ZjNJEQsb1wIaaSISq9BRNlcrETPHlDqEH8IPMQzUecYpfe9S/9ixt/RvDO0jwJ2PZbJspqsvC+Bv9Jddf790f46KF3FiR2KkvbYF0U1ra1VTwGswip0zogOEJ4cLIty7JuqnguARVX8i8nByTdAhvxIz9e6wwxyCI4pt/jbL4Eq8OSSeZj0bi+rK5+xW8LrYp72epf7TC2oBxhy4h5cFn/AFdRdwR5l/4ihJnNNQjNui4cqMR9MqjtGr7+ddocR6xy1Z2xuiVgTc0bLNbUDexklC3hj62CMhMVmyu8NeEWVGfU42q4PbKkGXEus2LkXw9SI5XeYDvNMd93/zsix6km6lZpHadb1Ar/PAOFV2nwxLVksFG73xEQZDXj12oTiZ6gFjzG5qUoP03m4Kxq8RzX33HFYgWgzaskrfWtI/ku0RtDGA6M7S4yJaPH/d3DL99PXXkgs/3KQFIqEqFYN8eUeiLBfAa0KL5iquLHv1afENZg7GZYtYF3o/aBn9ovOqOrZgCJJuOJBAe3jtpm52dnEPn7Ysqbp3chHfEKkZ4kCu2QtlscWscPa9V06GIZFF3FRBlDzVN49FfXdhvZVaPeVBc31ppGYIzyA== X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230031)(4636009)(39860400002)(136003)(346002)(376002)(396003)(230922051799003)(64100799003)(451199024)(1800799012)(186009)(82310400011)(36840700001)(40470700004)(46966006)(40480700001)(40460700003)(426003)(83380400001)(26005)(1076003)(2616005)(336012)(86362001)(81166007)(6666004)(356005)(36756003)(82740400003)(70206006)(54906003)(4326008)(5660300002)(36860700001)(316002)(7696005)(6916009)(70586007)(8936002)(8676002)(47076005)(2906002)(41300700001)(478600001)(36900700001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7423 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5PEPF00014B8B.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 1a02d931-94d9-4835-c9d8-08dc0bfb4c4a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pOQjXBCn9etAWwo2ISucKU0OJBNUF3NaWnuhogla20O+RdADkxG1e8RMWVja0XUsramwxIUojRCKxkNzllsIvFY0hmFXqhWsmrikmOHk8zjxSfuZ0b77KoQWHmvrwUNl6tmmtIOnNkScLpyrFfwgn9d3D6ss0yhz1H8Onjly0aRsWTodDJ9e7gk85Aia3M/hcKk4D+WQr9ZJ/eVZoRHv6TYyX30grL60qxq5vwoZlIZHLM/N87aWlIxS+/ftVqz65KsyMUnxwT1JZSvgABc4P/2UEhgG6/nUdFZacMp9KQzFN5ajs+ZFvhTDCiVMNYP4F9LEn3FRUThOq+6XYkcGAXUmFM6s6NQAbD6SqhgRNAAuGv26j913DsRgMyrv0JJll1chBnGqEbklqifHUfBqgWGYhxgUd/Pzs5F+d8XOA//jMdV8pmDklTtU3IPaP6Ec+a6i0nnMK3cAMl5sjGqq/nSN1soCpXco5oIMMoiWfS0rtkK/A1uwBmrfQZEhcHRJWs0NdR/Q4f48XbTxHttnGzFf/Sl4J+3fr2h9YryLaQjzgOiidxSGSdvikcXbe/DY4VRhbuKRZUoeL/9NQNxXZydOcRqh9NxjwsAa8Jf3rAU/9A/nrNmYBkUEYbZttwBp7utVDCYPB6vbut2yeMHV8EvY14cXDKQ0ZwxIDPhDT/k6+P198HMKgcqt5GI/xXpe8ykH2vVBEvSut1TwnSP/DzXzgHjh8zdytSZUsmoZMDTFmQOtWN2rzufL5dSHYI/T X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230031)(4636009)(346002)(136003)(39860400002)(396003)(376002)(230922051799003)(451199024)(64100799003)(186009)(1800799012)(82310400011)(40470700004)(36840700001)(46966006)(83380400001)(47076005)(82740400003)(81166007)(6916009)(36860700001)(478600001)(54906003)(70206006)(5660300002)(316002)(2906002)(70586007)(8936002)(4326008)(8676002)(26005)(336012)(426003)(1076003)(2616005)(41300700001)(7696005)(6666004)(86362001)(36756003)(40480700001)(40460700003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2024 01:28:42.7042 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 35c94880-0408-4b38-d96a-08dc0bfb526a 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: DB5PEPF00014B8B.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9953 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org The introduction of further architectural-feature dependent ifuncs for AArch64 makes hard-coding ifunc `_i' suffixes to functions cumbersome to work with. It is awkward to remember which ifunc maps onto which arch feature and makes the code harder to maintain when new ifuncs are added and their suffixes possibly altered. This patch uses pre-processor `#define' statements to map each suffix to a descriptive feature name macro, for example: #define LSE2 _i1 and reconstructs function names with the pre-processor's token concatenation feature, such that for `MACRO(_i)', we would now have `MACRO_FEAT(name, feature)' and in the macro definition body we replace `name` with `name##feature`. Consequently, for base functionality, where the ifunc suffix is absent, the macro interface remains the same. For example, the entry and endpoints of `libat_store_16' remain defined by: - ENTRY (libat_store_16) and - END (libat_store_16) For the LSE2 implementation of the same 16-byte atomic store, we now have: - ENTRY_FEAT (libat_store_16, LSE2) and - END_FEAT (libat_store_16, LSE2) For the alising of ifunc names, we define the following new implementation of the ALIAS macro: - ALIAS (FN_BASE_NAME, FROM_SUFFIX, TO_SUFFIX) Defining the base feature name macro to map `CORE' to the empty string, mapping LSE2 to the base implementation, we'd alias the LSE2 `libat_exchange_16' to it base implementation with: - ALIAS (libat_exchange_16, LSE2, CORE) libatomic/ChangeLog: * config/linux/aarch64/atomic_16.S (CORE): New macro. (LSE2): Likewise. (ENTRY_FEAT): Likewise. (END_FEAT): Likewise. (ENTRY_FEAT1): Likewise. (END_FEAT1): Likewise. (ALIAS): Modify macro to take in `arch' arguments. --- libatomic/config/linux/aarch64/atomic_16.S | 83 +++++++++++++--------- 1 file changed, 49 insertions(+), 34 deletions(-) diff --git a/libatomic/config/linux/aarch64/atomic_16.S b/libatomic/config/linux/aarch64/atomic_16.S index a099037179b..eb8e749b8a2 100644 --- a/libatomic/config/linux/aarch64/atomic_16.S +++ b/libatomic/config/linux/aarch64/atomic_16.S @@ -40,22 +40,38 @@ .arch armv8-a+lse -#define ENTRY(name) \ - .global name; \ - .hidden name; \ - .type name,%function; \ - .p2align 4; \ -name: \ - .cfi_startproc; \ +#define ENTRY(name) ENTRY_FEAT (name, CORE) + +#define ENTRY_FEAT(name, feat) \ + ENTRY_FEAT1(name, feat) + +#define ENTRY_FEAT1(name, feat) \ + .global name##feat; \ + .hidden name##feat; \ + .type name##feat,%function; \ + .p2align 4; \ +name##feat: \ + .cfi_startproc; \ hint 34 // bti c -#define END(name) \ - .cfi_endproc; \ - .size name, .-name; +#define END(name) END_FEAT (name, CORE) -#define ALIAS(alias,name) \ - .global alias; \ - .set alias, name; +#define END_FEAT(name, feat) \ + END_FEAT1(name, feat) + +#define END_FEAT1(name, feat) \ + .cfi_endproc; \ + .size name##feat, .-name##feat; + +#define ALIAS(alias, from, to) \ + ALIAS1(alias,from,to) + +#define ALIAS1(alias, from, to) \ + .global alias##from; \ + .set alias##from, alias##to; + +#define CORE +#define LSE2 _i1 #define res0 x0 #define res1 x1 @@ -108,7 +124,7 @@ ENTRY (libat_load_16) END (libat_load_16) -ENTRY (libat_load_16_i1) +ENTRY_FEAT (libat_load_16, LSE2) cbnz w1, 1f /* RELAXED. */ @@ -128,7 +144,7 @@ ENTRY (libat_load_16_i1) ldp res0, res1, [x0] dmb ishld ret -END (libat_load_16_i1) +END_FEAT (libat_load_16, LSE2) ENTRY (libat_store_16) @@ -148,7 +164,7 @@ ENTRY (libat_store_16) END (libat_store_16) -ENTRY (libat_store_16_i1) +ENTRY_FEAT (libat_store_16, LSE2) cbnz w4, 1f /* RELAXED. */ @@ -160,7 +176,7 @@ ENTRY (libat_store_16_i1) stlxp w4, in0, in1, [x0] cbnz w4, 1b ret -END (libat_store_16_i1) +END_FEAT (libat_store_16, LSE2) ENTRY (libat_exchange_16) @@ -237,7 +253,7 @@ ENTRY (libat_compare_exchange_16) END (libat_compare_exchange_16) -ENTRY (libat_compare_exchange_16_i1) +ENTRY_FEAT (libat_compare_exchange_16, LSE2) ldp exp0, exp1, [x1] mov tmp0, exp0 mov tmp1, exp1 @@ -270,7 +286,7 @@ ENTRY (libat_compare_exchange_16_i1) /* ACQ_REL/SEQ_CST. */ 4: caspal exp0, exp1, in0, in1, [x0] b 0b -END (libat_compare_exchange_16_i1) +END_FEAT (libat_compare_exchange_16, LSE2) ENTRY (libat_fetch_add_16) @@ -556,21 +572,20 @@ END (libat_test_and_set_16) /* Alias entry points which are the same in baseline and LSE2. */ -ALIAS (libat_exchange_16_i1, libat_exchange_16) -ALIAS (libat_fetch_add_16_i1, libat_fetch_add_16) -ALIAS (libat_add_fetch_16_i1, libat_add_fetch_16) -ALIAS (libat_fetch_sub_16_i1, libat_fetch_sub_16) -ALIAS (libat_sub_fetch_16_i1, libat_sub_fetch_16) -ALIAS (libat_fetch_or_16_i1, libat_fetch_or_16) -ALIAS (libat_or_fetch_16_i1, libat_or_fetch_16) -ALIAS (libat_fetch_and_16_i1, libat_fetch_and_16) -ALIAS (libat_and_fetch_16_i1, libat_and_fetch_16) -ALIAS (libat_fetch_xor_16_i1, libat_fetch_xor_16) -ALIAS (libat_xor_fetch_16_i1, libat_xor_fetch_16) -ALIAS (libat_fetch_nand_16_i1, libat_fetch_nand_16) -ALIAS (libat_nand_fetch_16_i1, libat_nand_fetch_16) -ALIAS (libat_test_and_set_16_i1, libat_test_and_set_16) - +ALIAS (libat_exchange_16, LSE2, CORE) +ALIAS (libat_fetch_add_16, LSE2, CORE) +ALIAS (libat_add_fetch_16, LSE2, CORE) +ALIAS (libat_fetch_sub_16, LSE2, CORE) +ALIAS (libat_sub_fetch_16, LSE2, CORE) +ALIAS (libat_fetch_or_16, LSE2, CORE) +ALIAS (libat_or_fetch_16, LSE2, CORE) +ALIAS (libat_fetch_and_16, LSE2, CORE) +ALIAS (libat_and_fetch_16, LSE2, CORE) +ALIAS (libat_fetch_xor_16, LSE2, CORE) +ALIAS (libat_xor_fetch_16, LSE2, CORE) +ALIAS (libat_fetch_nand_16, LSE2, CORE) +ALIAS (libat_nand_fetch_16, LSE2, CORE) +ALIAS (libat_test_and_set_16, LSE2, CORE) /* GNU_PROPERTY_AARCH64_* macros from elf.h for use in asm code. */ #define FEATURE_1_AND 0xc0000000 From patchwork Wed Jan 3 01:28:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Victor Do Nascimento X-Patchwork-Id: 1881824 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=pLEWE4hO; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=pLEWE4hO; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4T4XFD3ZbDz20Rq for ; Wed, 3 Jan 2024 12:29:20 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7CACB3861855 for ; Wed, 3 Jan 2024 01:29:18 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02on2073.outbound.protection.outlook.com [40.107.241.73]) by sourceware.org (Postfix) with ESMTPS id E125C3857C4B for ; Wed, 3 Jan 2024 01:28:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E125C3857C4B 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 E125C3857C4B Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.241.73 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1704245329; cv=pass; b=De8JljVleEi95B9L59eNp/7R6A9FGNhxn7Jn0bFoXeqvQgewe5T0RPZGZ9ow1YpmZdCGNSlOfpPEWTaHrVlyRw2EMxGpV6uDGUbJO8tRsU/t4UWjSQ01ZsPGg7HUxSnRWw1OjqONZouMm0TbIutZKUuHuRRDjaB1xV0BONiwWXg= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1704245329; c=relaxed/simple; bh=Xt36GqvMDXtNisSh6NF+fQHjUM9d88H269Vai7v2BHo=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=JNLu+hzhk4RhLYB5sPlEcodiO2zMvHut597qw3dCQrk79xWxSQkkGj3RPlpB6+nknHI/K68jjxTDYE3Dt+OVwzyX9mfaTccHTrmaUtCDW/wghVXsvHOS1vPF9SceTGs/jF1QjfFHo2Sulh9sGKcBvbEoVrC6aL2E6d4rv/SSjVg= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=LQDh5Zq2dqrOyPAPvI1hTAac4V69EqfTI6h5Kewc1LVR8tJJv2G9rkbZbDjykI+JJ6Fi6IaG3NXd8Wg8ngk/KOo25QgssqGVZdKhHx3O4h6+cVExV69l8t4A7BX2XwYPMioC9h3dtGp4GX0zJXsi5E0cP8kgqPlYPD/RpxVCTEb+qLVzzSvRtH6fMw3uopbwrMilZ8GeItQlbpQjkEA8UAVfyWwXbiZbcGnk3hdZ9s6lY5TSgQ4Y2rHCKGAtIo99C57dRBzopkBZiMZ4Cu491TbCcPNeqNGPk+6cQMAUZD64LK//4yXbFvZRivAn1krNM5cM6XtpniryfVoyWPt4DA== 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=b3kxXqI2digLdXcIcMYTbWzK8beNnJIHz7wB3ss7Jrk=; b=bJ0AAmG9z7Fou1GYM/Fpg/kBtDY85SUFuDKwbH45xFaFxly+Zo3fnvecSRJJYDpkMzapKt3Qz07z7jDMr95iYr6LDYih1fiiCzJDY+qBB9aDJhOv0SgTe+iYRSRhkp7VA7A5UO91/8T6vEV2F3bXtifWbDwkODZeekhy/Nz7w59xXh7+h583nWlsthptrZAtwQcHkkTGyh7hre6A7MjOo6/GT+cGF7zbVFWC9y11dvFW6ljUnZjrRHTwZgxRb4zGtgJcXKzQPnHPyqyeG91y4lRdI1/M+dM0eJOrh/ytby8LkZi6L+tDCzIChTGR+FgczxmstCa6cNZhWtNw93XTng== 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] 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=b3kxXqI2digLdXcIcMYTbWzK8beNnJIHz7wB3ss7Jrk=; b=pLEWE4hOy/VCjL8+EPl/C6olAViqjPB2G/2dqwJuiQtONgaDnHHYo+dDJhf9YrZnYKiKGQg5dZB9SwQ750kxukhjInfUKIZO/z1vKo1qgsMd+pI3LN4ug8Qi/wpcTcLR5DLnPry4+o8S7TR+0NY6qE9YedZ71kq1CJk7BexSgrQ= Received: from AM0PR05CA0084.eurprd05.prod.outlook.com (2603:10a6:208:136::24) by AS2PR08MB9428.eurprd08.prod.outlook.com (2603:10a6:20b:5e8::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Wed, 3 Jan 2024 01:28:42 +0000 Received: from AM4PEPF00025F9A.EURPRD83.prod.outlook.com (2603:10a6:208:136:cafe::b3) by AM0PR05CA0084.outlook.office365.com (2603:10a6:208:136::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25 via Frontend Transport; Wed, 3 Jan 2024 01:28: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=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 AM4PEPF00025F9A.mail.protection.outlook.com (10.167.16.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.1 via Frontend Transport; Wed, 3 Jan 2024 01:28:41 +0000 Received: ("Tessian outbound 26ee1d40577c:v228"); Wed, 03 Jan 2024 01:28:41 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: ef02d40a88086d37 X-CR-MTA-TID: 64aa7808 Received: from b1ba6c2aef48.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id A38EA09B-52CB-492F-9274-2C7E920801CF.1; Wed, 03 Jan 2024 01:28:34 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id b1ba6c2aef48.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 03 Jan 2024 01:28:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TKyFQ1shpV3aY7UF5rmSDBKmyZxGGM0iDuRA2XREhFeKocMMm29cyljSMbDdS9vppeaWCBeMw+rlgn23liiO2OpikfOv+Ogk6IUBYM+4xyKu9xAMh2FOXBSvMhKtUAyQnSWZmVjqeCTkMO9+MXuGgzaUohBizrXlu2D9DECap01wNihSqnjWw0hmeEVGfr7FKWtWX/aY3sTQr1dNYPhiGFxT0zuS7l58LjCWDZTw0s4Wes04JHxWinMp2tZ/9kRDkezjhGaXQlNdLSUcs7x6jOpu6HR25iReDShbCbP9Grcu4bRwCuwnc16znT9cJekc3PMEraLyxw6LhwmI3nRc5Q== 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=b3kxXqI2digLdXcIcMYTbWzK8beNnJIHz7wB3ss7Jrk=; b=UrbjLnSIS+zkPjnA5+0t/LsmyHPQPILzQujenDP+J03sFKRPbMfHtV+FjwX6Pu+FweZQRTWH3PZHi6wWmNssLOFWhFE6RB1XU6sbkGZKefPxyGZwLLBSwdH/FIx045SFDlxjLJqF+PVH3qboiDoFAq7YuZkUFtyiQ9ALvPptJSaQZ/LFxVpQpRAQOJRfXUzQ0GqvPWFaTbybV8S3NLWk3nA4aiCgxTy7qwHGS/RW/t3PTELMeqQELX0yAnQgWGptVqQEkQm9qWCn6psJPe7JFmxUVJaQfwwGFZ3vnFlmLrmiPqqgM49mb2WVh9Dt6dre4cQo9LrtjHTI6WN1u8fBDw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) 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=b3kxXqI2digLdXcIcMYTbWzK8beNnJIHz7wB3ss7Jrk=; b=pLEWE4hOy/VCjL8+EPl/C6olAViqjPB2G/2dqwJuiQtONgaDnHHYo+dDJhf9YrZnYKiKGQg5dZB9SwQ750kxukhjInfUKIZO/z1vKo1qgsMd+pI3LN4ug8Qi/wpcTcLR5DLnPry4+o8S7TR+0NY6qE9YedZ71kq1CJk7BexSgrQ= Received: from DB8PR04CA0004.eurprd04.prod.outlook.com (2603:10a6:10:110::14) by AS2PR08MB9414.eurprd08.prod.outlook.com (2603:10a6:20b:596::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Wed, 3 Jan 2024 01:28:32 +0000 Received: from DU6PEPF00009527.eurprd02.prod.outlook.com (2603:10a6:10:110:cafe::f6) by DB8PR04CA0004.outlook.office365.com (2603:10a6:10:110::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.13 via Frontend Transport; Wed, 3 Jan 2024 01:28:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (40.67.248.234) by DU6PEPF00009527.mail.protection.outlook.com (10.167.8.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7159.9 via Frontend Transport; Wed, 3 Jan 2024 01:28:32 +0000 Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX04.Arm.com (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 3 Jan 2024 01:28:31 +0000 Received: from e125768.cambridge.arm.com (10.2.78.50) by mail.arm.com (10.251.24.32) with Microsoft SMTP Server id 15.1.2507.32 via Frontend Transport; Wed, 3 Jan 2024 01:28:31 +0000 From: Victor Do Nascimento To: CC: , , , Victor Do Nascimento Subject: [PATCH v3 2/3] libatomic: Enable LSE128 128-bit atomics for armv9.4-a Date: Wed, 3 Jan 2024 01:28:19 +0000 Message-ID: <20240103012828.2446443-3-victor.donascimento@arm.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240103012828.2446443-1-victor.donascimento@arm.com> References: <20240103012828.2446443-1-victor.donascimento@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DU6PEPF00009527:EE_|AS2PR08MB9414:EE_|AM4PEPF00025F9A:EE_|AS2PR08MB9428:EE_ X-MS-Office365-Filtering-Correlation-Id: 6eab222a-3eea-42ad-2cd2-08dc0bfb51e0 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: ag7RXhbIGLQq2R2jF5onbz8IUfURth7Nb+LsTTyLwM7QGPJU4H9ex5lDPx9HJ8JwHS0kM6bTz4UBsETn81r4tgO5B47lFgpJVxExsKu2GuNlKzW3l0ZL1Bioh6lB16VYYL8CHLaFdUiRPleR+HcvYwQwiAD9/bq560XoZzTc6tE19PIJQ1eXdQUsvuoEKnkec/ZCPj25LuevfPgzAsH9oA0u5nqPQD/1IOK8eRXhbWnpoDAC/nS4nF+2MPqWA2uI9MLhnbXU4qahfytGe+38ymnTsYNTy8ghdmUQSWBA4mE7LurNQoOmcQQRtTqS6gzwIXvkhwfe7boU9g+UEMeMTjP14QubVWnGoHseTRjwNCMkEIqrxSFNSFpwE/cQFuL6s/k0ibc5HCQ4DE2zFGzBotzsRhJKaf0XB03JYuiXChkdSYkUe+G1szdUfKvrTtKxw6jygdyQHmJac6BkctLIVs0Tz30gl9xNjBVvP4OxV1fwzUFHHnKCzix25x9PNIOMfWAnYMtrYm2sTxLRAaKr5fPwhN+zoZ+1ALMAQoTqmA/f53UUDMYHegw3fUDGnLEWkxdluV3osnzJstUq6Pji+IN5oNivgZdnAwf1EzERC/1G6osMyjBUs5RZCqjCqb3HtvIBimhk8YrxS0gQ2ga8uWWneGXCN9aVK6Pn89tlf7aJ+slSq5ZO4kpNutQGYBHGepp4wma4RRVZ3poHiliZuSCfysxhYp6f5P5HEr+W4312oXkAP6nLEloqVt4YDxXN+8qQPFSbn6Aw2zXLRfo5xY5tQr5MlbyPRqSdeQ7jylpECVtuisObsQI8AeR4TIXY X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230031)(4636009)(376002)(39860400002)(396003)(136003)(346002)(230273577357003)(230922051799003)(230173577357003)(186009)(64100799003)(1800799012)(451199024)(82310400011)(36840700001)(46966006)(40470700004)(36756003)(40480700001)(40460700003)(70206006)(7696005)(86362001)(70586007)(336012)(426003)(82740400003)(81166007)(356005)(83380400001)(2616005)(26005)(1076003)(47076005)(2906002)(4326008)(5660300002)(478600001)(6916009)(6666004)(36860700001)(41300700001)(54906003)(8936002)(30864003)(316002)(8676002)(36900700001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9414 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM4PEPF00025F9A.EURPRD83.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 3290e8df-3e7c-44fc-3a9c-08dc0bfb4c48 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hJO3IOpGbxmE5pdFuH+qYaSnCy9lPT3qMtXnDdETewU6gBLM5OfETRSS1EOWSqQFH0n+8AGOsqpvqr4rjpPoMDw+NN4DghgezT7vGuw8MmDutXk4ysXO8DfC5WJBsFjaAsYRrk7/MyrKxihTWrV5u0+Y1Zpya2wbuGJN1uoTtQPXcK78L9yhqQdqpeeP5tx6897zgDNSpm7mYwexRLTeZkbJ7dzNgYfTFRFxIVQMYv2M5mHlL/XZ75eS92is1rwrz8wlU6StqEasRFtG/dAOdYspER8yFK83LxT9d4PrN/0B8wNDI1brq3hFeBaHHFbDGAVd0dv8kICo0vxo7zy2zF1MPMHx0LM8QtlQV7ryoAXS/M96GFqwBKDS61oA8XK502SbMVRl1o4Ob59j4MZZLtM5NpG4lysxwqQ1XTBvWKeN6/t4oHS58ZBTFgFB0PQKSfFiC4FT/elyecD/ysIpGRNTQn+kYr92ZAxBhTSeNpDVHKOCZMkd8dxiNAYLhF5sNUsmU18O8ZoNyZYdh3Q0R/g3T57Hkgbn/tth0P9XVlA0tI6fGGpcsDfGPCRRWns3V2wxyMEqQBJgQ/GoAlIHz3ciK49oHOtL4+hZx4GLtUr/qysXsiZ3piZ6Kn5t1onMIWn2FbOPBW5Dv/x7+nwmaaG8Dp+k8MGxWesDTNQTBgA3m+jH3M7aCCFEVC+Z02JnzAlQfjTgmZ89WVtqz+kGPMAG2hyjuMClg8lZFxIbSOgqRJb+GeSrcuEbSSvaz6LyGvQssOOW2slkKytHyIFgyxQ6RbU83bPMUXxnCqxjb4M= 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)(376002)(39860400002)(396003)(136003)(346002)(230273577357003)(230922051799003)(230173577357003)(186009)(64100799003)(1800799012)(451199024)(82310400011)(36840700001)(46966006)(40470700004)(36756003)(40480700001)(40460700003)(70206006)(7696005)(86362001)(70586007)(336012)(426003)(82740400003)(81166007)(83380400001)(2616005)(26005)(1076003)(47076005)(2906002)(4326008)(5660300002)(478600001)(6916009)(6666004)(36860700001)(41300700001)(54906003)(8936002)(30864003)(316002)(8676002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2024 01:28:41.7329 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6eab222a-3eea-42ad-2cd2-08dc0bfb51e0 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: AM4PEPF00025F9A.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9428 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SCC_5_SHORT_WORD_LINES, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org The armv9.4-a architectural revision adds three new atomic operations associated with the LSE128 feature: * LDCLRP - Atomic AND NOT (bitclear) of a location with 128-bit value held in a pair of registers, with original data loaded into the same 2 registers. * LDSETP - Atomic OR (bitset) of a location with 128-bit value held in a pair of registers, with original data loaded into the same 2 registers. * SWPP - Atomic swap of one 128-bit value with 128-bit value held in a pair of registers. This patch adds the logic required to make use of these when the architectural feature is present and a suitable assembler available. In order to do this, the following changes are made: 1. Add a configure-time check to check for LSE128 support in the assembler. 2. Edit host-config.h so that when N == 16, nifunc = 2. 3. Where available due to LSE128, implement the second ifunc, making use of the novel instructions. 4. For atomic functions unable to make use of these new instructions, define a new alias which causes the _i1 function variant to point ahead to the corresponding _i2 implementation. libatomic/ChangeLog: * Makefile.am (AM_CPPFLAGS): add conditional setting of -DHAVE_FEAT_LSE128. * acinclude.m4 (LIBAT_TEST_FEAT_LSE128): New. * config/linux/aarch64/atomic_16.S (LSE128): New macro definition. (libat_exchange_16): New LSE128 variant. (libat_fetch_or_16): Likewise. (libat_or_fetch_16): Likewise. (libat_fetch_and_16): Likewise. (libat_and_fetch_16): Likewise. * config/linux/aarch64/host-config.h (IFUNC_COND_2): New. (IFUNC_NCOND): Add operand size checking. (has_lse2): Renamed from `ifunc1`. (has_lse128): New. (HAS_LSE128): Likewise. * libatomic/configure.ac: Add call to LIBAT_TEST_FEAT_LSE128. * configure (ac_subst_vars): Regenerated via autoreconf. * libatomic/Makefile.in: Likewise. * libatomic/auto-config.h.in: Likewise. --- libatomic/Makefile.am | 3 + libatomic/Makefile.in | 1 + libatomic/acinclude.m4 | 19 +++ libatomic/auto-config.h.in | 3 + libatomic/config/linux/aarch64/atomic_16.S | 170 ++++++++++++++++++- libatomic/config/linux/aarch64/host-config.h | 29 +++- libatomic/configure | 59 ++++++- libatomic/configure.ac | 1 + 8 files changed, 276 insertions(+), 9 deletions(-) diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am index c0b8dea5037..24e843db67d 100644 --- a/libatomic/Makefile.am +++ b/libatomic/Makefile.am @@ -130,6 +130,9 @@ libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix _$(s)_.lo,$(SIZEOBJS))) ## On a target-specific basis, include alternates to be selected by IFUNC. if HAVE_IFUNC if ARCH_AARCH64_LINUX +if ARCH_AARCH64_HAVE_LSE128 +AM_CPPFLAGS = -DHAVE_FEAT_LSE128 +endif IFUNC_OPTIONS = -march=armv8-a+lse libatomic_la_LIBADD += $(foreach s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS))) libatomic_la_SOURCES += atomic_16.S diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in index dc2330b91fd..cd48fa21334 100644 --- a/libatomic/Makefile.in +++ b/libatomic/Makefile.in @@ -452,6 +452,7 @@ M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files))) libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \ _$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_3) \ $(am__append_4) $(am__append_5) +@ARCH_AARCH64_HAVE_LSE128_TRUE@@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@AM_CPPFLAGS = -DHAVE_FEAT_LSE128 @ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv8-a+lse @ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64 @ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=i586 diff --git a/libatomic/acinclude.m4 b/libatomic/acinclude.m4 index f35ab5b60a5..4197db8f404 100644 --- a/libatomic/acinclude.m4 +++ b/libatomic/acinclude.m4 @@ -83,6 +83,25 @@ AC_DEFUN([LIBAT_TEST_ATOMIC_BUILTIN],[ ]) ]) +dnl +dnl Test if the host assembler supports armv9.4-a LSE128 isns. +dnl +AC_DEFUN([LIBAT_TEST_FEAT_LSE128],[ + AC_CACHE_CHECK([for armv9.4-a LSE128 insn support], + [libat_cv_have_feat_lse128],[ + AC_LANG_CONFTEST([AC_LANG_PROGRAM([],[asm(".arch armv9-a+lse128")])]) + if AC_TRY_EVAL(ac_link); then + eval libat_cv_have_feat_lse128=yes + else + eval libat_cv_have_feat_lse128=no + fi + rm -f conftest* + ]) + LIBAT_DEFINE_YESNO([HAVE_FEAT_LSE128], [$libat_cv_have_feat_lse128], + [Have LSE128 support for 16 byte integers.]) + AM_CONDITIONAL([ARCH_AARCH64_HAVE_LSE128], [test x$libat_cv_have_feat_lse128 = xyes]) +]) + dnl dnl Test if we have __atomic_load and __atomic_store for mode $1, size $2 dnl diff --git a/libatomic/auto-config.h.in b/libatomic/auto-config.h.in index ab3424a759e..7c78933b07d 100644 --- a/libatomic/auto-config.h.in +++ b/libatomic/auto-config.h.in @@ -105,6 +105,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H +/* Have LSE128 support for 16 byte integers. */ +#undef HAVE_FEAT_LSE128 + /* Define to 1 if you have the header file. */ #undef HAVE_FENV_H diff --git a/libatomic/config/linux/aarch64/atomic_16.S b/libatomic/config/linux/aarch64/atomic_16.S index eb8e749b8a2..a15135c34a4 100644 --- a/libatomic/config/linux/aarch64/atomic_16.S +++ b/libatomic/config/linux/aarch64/atomic_16.S @@ -35,10 +35,14 @@ writes, this will be true when using atomics in actual code. The libat__16 entry points are ARMv8.0. - The libat__16_i1 entry points are used when LSE2 is available. */ - + The libat__16_i1 entry points are used when LSE128 is available. + The libat__16_i2 entry points are used when LSE2 is available. */ +#if HAVE_FEAT_LSE128 + .arch armv9-a+lse128 +#else .arch armv8-a+lse +#endif #define ENTRY(name) ENTRY_FEAT (name, CORE) @@ -71,7 +75,8 @@ name##feat: \ .set alias##from, alias##to; #define CORE -#define LSE2 _i1 +#define LSE128 _i1 +#define LSE2 _i2 #define res0 x0 #define res1 x1 @@ -206,6 +211,31 @@ ENTRY (libat_exchange_16) END (libat_exchange_16) +#if HAVE_FEAT_LSE128 +ENTRY_FEAT (libat_exchange_16, LSE128) + mov tmp0, x0 + mov res0, in0 + mov res1, in1 + cbnz w4, 1f + + /* RELAXED. */ + swpp res0, res1, [tmp0] + ret +1: + cmp w4, ACQUIRE + b.hi 2f + + /* ACQUIRE/CONSUME. */ + swppa res0, res1, [tmp0] + ret + + /* RELEASE/ACQ_REL/SEQ_CST. */ +2: swppal res0, res1, [tmp0] + ret +END_FEAT (libat_exchange_16, LSE128) +#endif + + ENTRY (libat_compare_exchange_16) ldp exp0, exp1, [x1] cbz w4, 3f @@ -399,6 +429,31 @@ ENTRY (libat_fetch_or_16) END (libat_fetch_or_16) +#if HAVE_FEAT_LSE128 +ENTRY_FEAT (libat_fetch_or_16, LSE128) + mov tmp0, x0 + mov res0, in0 + mov res1, in1 + cbnz w4, 1f + + /* RELAXED. */ + ldsetp res0, res1, [tmp0] + ret +1: + cmp w4, ACQUIRE + b.hi 2f + + /* ACQUIRE/CONSUME. */ + ldsetpa res0, res1, [tmp0] + ret + + /* RELEASE/ACQ_REL/SEQ_CST. */ +2: ldsetpal res0, res1, [tmp0] + ret +END_FEAT (libat_fetch_or_16, LSE128) +#endif + + ENTRY (libat_or_fetch_16) mov x5, x0 cbnz w4, 2f @@ -421,6 +476,36 @@ ENTRY (libat_or_fetch_16) END (libat_or_fetch_16) +#if HAVE_FEAT_LSE128 +ENTRY_FEAT (libat_or_fetch_16, LSE128) + cbnz w4, 1f + mov tmp0, in0 + mov tmp1, in1 + + /* RELAXED. */ + ldsetp in0, in1, [x0] + orr res0, in0, tmp0 + orr res1, in1, tmp1 + ret +1: + cmp w4, ACQUIRE + b.hi 2f + + /* ACQUIRE/CONSUME. */ + ldsetpa in0, in1, [x0] + orr res0, in0, tmp0 + orr res1, in1, tmp1 + ret + + /* RELEASE/ACQ_REL/SEQ_CST. */ +2: ldsetpal in0, in1, [x0] + orr res0, in0, tmp0 + orr res1, in1, tmp1 + ret +END_FEAT (libat_or_fetch_16, LSE128) +#endif + + ENTRY (libat_fetch_and_16) mov x5, x0 cbnz w4, 2f @@ -443,6 +528,32 @@ ENTRY (libat_fetch_and_16) END (libat_fetch_and_16) +#if HAVE_FEAT_LSE128 +ENTRY_FEAT (libat_fetch_and_16, LSE128) + mov tmp0, x0 + mvn res0, in0 + mvn res1, in1 + cbnz w4, 1f + + /* RELAXED. */ + ldclrp res0, res1, [tmp0] + ret + +1: + cmp w4, ACQUIRE + b.hi 2f + + /* ACQUIRE/CONSUME. */ + ldclrpa res0, res1, [tmp0] + ret + + /* RELEASE/ACQ_REL/SEQ_CST. */ +2: ldclrpal res0, res1, [tmp0] + ret +END_FEAT (libat_fetch_and_16, LSE128) +#endif + + ENTRY (libat_and_fetch_16) mov x5, x0 cbnz w4, 2f @@ -465,6 +576,37 @@ ENTRY (libat_and_fetch_16) END (libat_and_fetch_16) +#if HAVE_FEAT_LSE128 +ENTRY_FEAT (libat_and_fetch_16, LSE128) + mvn tmp0, in0 + mvn tmp0, in1 + cbnz w4, 1f + + /* RELAXED. */ + ldclrp tmp0, tmp1, [x0] + and res0, tmp0, in0 + and res1, tmp1, in1 + ret + +1: + cmp w4, ACQUIRE + b.hi 2f + + /* ACQUIRE/CONSUME. */ + ldclrpa tmp0, tmp1, [x0] + and res0, tmp0, in0 + and res1, tmp1, in1 + ret + + /* RELEASE/ACQ_REL/SEQ_CST. */ +2: ldclrpal tmp0, tmp1, [x5] + and res0, tmp0, in0 + and res1, tmp1, in1 + ret +END_FEAT (libat_and_fetch_16, LSE128) +#endif + + ENTRY (libat_fetch_xor_16) mov x5, x0 cbnz w4, 2f @@ -570,6 +712,28 @@ ENTRY (libat_test_and_set_16) END (libat_test_and_set_16) +/* Alias entry points which are the same in LSE2 and LSE128. */ + +#if !HAVE_FEAT_LSE128 +ALIAS (libat_exchange_16, LSE128, LSE2) +ALIAS (libat_fetch_or_16, LSE128, LSE2) +ALIAS (libat_fetch_and_16, LSE128, LSE2) +ALIAS (libat_or_fetch_16, LSE128, LSE2) +ALIAS (libat_and_fetch_16, LSE128, LSE2) +#endif +ALIAS (libat_load_16, LSE128, LSE2) +ALIAS (libat_store_16, LSE128, LSE2) +ALIAS (libat_compare_exchange_16, LSE128, LSE2) +ALIAS (libat_fetch_add_16, LSE128, LSE2) +ALIAS (libat_add_fetch_16, LSE128, LSE2) +ALIAS (libat_fetch_sub_16, LSE128, LSE2) +ALIAS (libat_sub_fetch_16, LSE128, LSE2) +ALIAS (libat_fetch_xor_16, LSE128, LSE2) +ALIAS (libat_xor_fetch_16, LSE128, LSE2) +ALIAS (libat_fetch_nand_16, LSE128, LSE2) +ALIAS (libat_nand_fetch_16, LSE128, LSE2) +ALIAS (libat_test_and_set_16, LSE128, LSE2) + /* Alias entry points which are the same in baseline and LSE2. */ ALIAS (libat_exchange_16, LSE2, CORE) diff --git a/libatomic/config/linux/aarch64/host-config.h b/libatomic/config/linux/aarch64/host-config.h index ac4d922ca5c..c5485d63855 100644 --- a/libatomic/config/linux/aarch64/host-config.h +++ b/libatomic/config/linux/aarch64/host-config.h @@ -26,14 +26,17 @@ #ifdef HWCAP_USCAT # if N == 16 -# define IFUNC_COND_1 ifunc1 (hwcap) +# define IFUNC_COND_1 (has_lse128 (hwcap)) +# define IFUNC_COND_2 (has_lse2 (hwcap)) +# define IFUNC_NCOND(N) 2 # else -# define IFUNC_COND_1 (hwcap & HWCAP_ATOMICS) +# define IFUNC_COND_1 (hwcap & HWCAP_ATOMICS) +# define IFUNC_NCOND(N) 1 # endif #else # define IFUNC_COND_1 (false) +# define IFUNC_NCOND(N) 1 #endif -#define IFUNC_NCOND(N) (1) #endif /* HAVE_IFUNC */ @@ -48,7 +51,7 @@ #define MIDR_PARTNUM(midr) (((midr) >> 4) & 0xfff) static inline bool -ifunc1 (unsigned long hwcap) +has_lse2 (unsigned long hwcap) { if (hwcap & HWCAP_USCAT) return true; @@ -64,6 +67,24 @@ ifunc1 (unsigned long hwcap) return false; } + +/* LSE128 atomic support encoded in ID_AA64ISAR0_EL1.Atomic, + bits[23:20]. The expected value is 0b0011. Check that. */ + +#define AT_FEAT_FIELD(isar0) (((isar0) >> 20) & 15) + +static inline bool +has_lse128 (unsigned long hwcap) +{ + if (!(hwcap & HWCAP_CPUID)) + return false; + unsigned long isar0; + asm volatile ("mrs %0, ID_AA64ISAR0_EL1" : "=r" (isar0)); + if (AT_FEAT_FIELD (isar0) >= 3) + return true; + return false; +} + #endif #include_next diff --git a/libatomic/configure b/libatomic/configure index d579bab96f8..ee3bbb97d69 100755 --- a/libatomic/configure +++ b/libatomic/configure @@ -657,6 +657,8 @@ LIBAT_BUILD_VERSIONED_SHLIB_TRUE OPT_LDFLAGS SECTION_LDFLAGS SYSROOT_CFLAGS_FOR_TARGET +ARCH_AARCH64_HAVE_LSE128_FALSE +ARCH_AARCH64_HAVE_LSE128_TRUE enable_aarch64_lse libtool_VERSION ENABLE_DARWIN_AT_RPATH_FALSE @@ -11456,7 +11458,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11459 "configure" +#line 11461 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11562,7 +11564,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11565 "configure" +#line 11567 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11926,6 +11928,55 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for armv9.4-a LSE128 insn support" >&5 +$as_echo_n "checking for armv9.4-a LSE128 insn support... " >&6; } +if ${libat_cv_have_feat_lse128+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +asm(".arch armv9-a+lse128") + ; + return 0; +} +_ACEOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + eval libat_cv_have_feat_lse128=yes + else + eval libat_cv_have_feat_lse128=no + fi + rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libat_cv_have_feat_lse128" >&5 +$as_echo "$libat_cv_have_feat_lse128" >&6; } + + yesno=`echo $libat_cv_have_feat_lse128 | tr 'yesno' '1 0 '` + +cat >>confdefs.h <<_ACEOF +#define HAVE_FEAT_LSE128 $yesno +_ACEOF + + + if test x$libat_cv_have_feat_lse128 = xyes; then + ARCH_AARCH64_HAVE_LSE128_TRUE= + ARCH_AARCH64_HAVE_LSE128_FALSE='#' +else + ARCH_AARCH64_HAVE_LSE128_TRUE='#' + ARCH_AARCH64_HAVE_LSE128_FALSE= +fi + + ;; esac @@ -15989,6 +16040,10 @@ if test -z "${ENABLE_DARWIN_AT_RPATH_TRUE}" && test -z "${ENABLE_DARWIN_AT_RPATH as_fn_error $? "conditional \"ENABLE_DARWIN_AT_RPATH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${ARCH_AARCH64_HAVE_LSE128_TRUE}" && test -z "${ARCH_AARCH64_HAVE_LSE128_FALSE}"; then + as_fn_error $? "conditional \"ARCH_AARCH64_HAVE_LSE128\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${LIBAT_BUILD_VERSIONED_SHLIB_TRUE}" && test -z "${LIBAT_BUILD_VERSIONED_SHLIB_FALSE}"; then as_fn_error $? "conditional \"LIBAT_BUILD_VERSIONED_SHLIB\" was never defined. diff --git a/libatomic/configure.ac b/libatomic/configure.ac index 5f2821ac3f4..b2fe68d7d0f 100644 --- a/libatomic/configure.ac +++ b/libatomic/configure.ac @@ -169,6 +169,7 @@ AC_MSG_RESULT([$target_thread_file]) case "$target" in *aarch64*) ACX_PROG_CC_WARNING_OPTS([-march=armv8-a+lse],[enable_aarch64_lse]) + LIBAT_TEST_FEAT_LSE128() ;; esac From patchwork Wed Jan 3 01:28:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Victor Do Nascimento X-Patchwork-Id: 1881826 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=k5sZ8bhu; dkim=pass (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com header.b=k5sZ8bhu; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4T4XGv2vDWz23d9 for ; Wed, 3 Jan 2024 12:30:47 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 60D23385DC31 for ; Wed, 3 Jan 2024 01:30:45 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2040.outbound.protection.outlook.com [40.107.8.40]) by sourceware.org (Postfix) with ESMTPS id 87E1B3861022 for ; Wed, 3 Jan 2024 01:28:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 87E1B3861022 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 87E1B3861022 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.8.40 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1704245332; cv=pass; b=OM+jYei1wMckwTu5Ue7w4ErkeE3fGsZHr8HjoOvr+Gz3MKVGokWMWFweYPE7X4hgMC2CkpQ9kaMpaZSnPCA/fwAFAE/TMmJ8h40QT8T1nNhaEs4PJQfysZalr3XXVf4IafWOfsCZo01U5R/VDjccNCq8I0vGsTT1BYwxDsES6+8= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1704245332; c=relaxed/simple; bh=U83PuogFYvswOwvwMo/bpCKko1qq/dcLFMbbXQBYSvs=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=kW9KSaLmtp6yjGo2mOh40lkezVWzsz79n44Xvdl9xTXFRBOOuCtAX+XbpbxtjrOjd6cH5ksARW4RmuRucgoF7wM891ZS96TcytgQoa8lZIyQZQBMyKffHi037rCmVUeCYKbFrxMyYsujDX3u7YUvQoS+rf9OXv17IQRepJCVLTQ= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Etj4CrajHwPGZpcKezwgoBkBahL2qPUbon4O8FWqwqnzM6wzY+Px/DxQEcX33eXQDG6bPeDBLIp6OqsjHUiAjgEF+klgLNV+Tt3l/PMG9m+tjMowkx6iVlckazDFilC7uH69UGE3RZJ9yxh48H13hlDboVienH0u8gYcdIRiYCerAq0NzWhKemLU6GdKQEU5ji5scFu1cLXSthMAo7YLzW4Z6MVkq+R5eT137rQqwNrHhzGxi+N7hbiL35PIFf8o6CVfrF4R7d7Na3qiOxy5sYUzvDtRC07G470JsUSH2j3w2Lm1geKPOJw9zwspIMWxMaHz6H1DSDN2MF8XWgzloA== 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=6b4H76p4GPiDqkU/J5p5ry1813JtjHU59aXya6+0m1U=; b=aGLtDhPPLFvTENMWpHXFuLdlBOaNgRKxIVnNZ4NNUl6lOaZcBmUhuyGhrlCPO29q0hXTzgMwY6FkbWI3ethqP5NyDAHu8UhYogsacsJxCJmQMd293KAajruF6x61WXI7omkJ6hT+WYYed213LQSSvfVxJQayALkivtHWgekWr/fX8KlGCpTKfzJaz3obKChzWBlVgBtNeviomkTWib9/Wt3xNaM89boiZ7QKzsZTNvJ1DPum9uINal9PkE0qnIpeWuS4cObOogfKy6cljJYYxe3SrcTuGlcWQnLbu4g/nynjoroyUXZ+V6HSEPUXlivCCTsjDjgTWp/cUoJrwfwgtw== 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] 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=6b4H76p4GPiDqkU/J5p5ry1813JtjHU59aXya6+0m1U=; b=k5sZ8bhuuKOjg8XV9Dsruthzw25tguZX3qLLM8S49iYW4kVDEwHMbvGgxLHv0vz3hhAncfBgFdlRNNF41Hjx6tqySfTYILmZkzDqm8A/n4mOBHhzRYkZQNJTa4fX7NiRtHQl8B/p51ISM+njZvIXphv8CCv7CcNe0dV8N8EltxE= Received: from AS9PR06CA0535.eurprd06.prod.outlook.com (2603:10a6:20b:49d::33) by DB9PR08MB9948.eurprd08.prod.outlook.com (2603:10a6:10:3d0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.24; Wed, 3 Jan 2024 01:28:47 +0000 Received: from AM1PEPF000252DB.eurprd07.prod.outlook.com (2603:10a6:20b:49d:cafe::85) by AS9PR06CA0535.outlook.office365.com (2603:10a6:20b:49d::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25 via Frontend Transport; Wed, 3 Jan 2024 01:28:47 +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 AM1PEPF000252DB.mail.protection.outlook.com (10.167.16.53) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.9 via Frontend Transport; Wed, 3 Jan 2024 01:28:47 +0000 Received: ("Tessian outbound 385ad2f98d71:v228"); Wed, 03 Jan 2024 01:28:46 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: c02573c8a45e1593 X-CR-MTA-TID: 64aa7808 Received: from 963da53f32f7.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id E07E3B70-E6B1-4F3D-9675-F65297E7F91B.1; Wed, 03 Jan 2024 01:28:40 +0000 Received: from EUR03-AM7-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 963da53f32f7.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 03 Jan 2024 01:28:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l4eULQiYAmI7a16ETlMpJWkQ7OCX5PD9Cc9TfrW6OQs+wkl+AoPt7y6v+UKcINH6uBVEOAmjegyah8GYboHolQPF5xaYX4n1nDhJByhqZsI4h/+yBBEX8pAbdVL8C7ENvuVpUjeUwmrtRyjYNe3HDlpv0YbodVRSIDbo36RD5suW3I/dHuL1CW3/Fd+ZrOeoIZXqcFOXUTzLTdZxAN8G+T0bSIV7+CQLJeUFYHuMMActP5m+u5M5VzirFZuQ62JH2DKg2IjNJQYLRi2spg5oAxunEy/f2917O1ryzSzbgA8wpffk3xtomFtCzvGlJ17go1m/NjvTTOchIMoXBgqE2g== 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=6b4H76p4GPiDqkU/J5p5ry1813JtjHU59aXya6+0m1U=; b=lUsw5uV+0ezMaGd/OXKXR93wQiMS5NP2Z0TVqrk4+Vw1FyNfWb3XvGN1s75FuM7zydpTpGgi3pgox1F3DH10IimwWobLtML1qooVeMecrlWbJI4Nh3VTQ90DzqJT6zTbghTP4Rl/o7EWeNy6EGRokId4ySjeDbuD3hX45WZNIc0OQO4GgtuxdIXRzE73ivOtt14KRTbrl+F0rBtnNN48x2H5REvKxkxmx1L2Wl2eakvE/w9kgma1pIRUXFs1mk81SU1b4HQ++Cs/2FiozcvfUgrMPJ5Hz315q/ul81c/EMxVYBFNA8TRYOVlZgBzIrn/SvXOvOw9C2AuornzldSm8Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) 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=6b4H76p4GPiDqkU/J5p5ry1813JtjHU59aXya6+0m1U=; b=k5sZ8bhuuKOjg8XV9Dsruthzw25tguZX3qLLM8S49iYW4kVDEwHMbvGgxLHv0vz3hhAncfBgFdlRNNF41Hjx6tqySfTYILmZkzDqm8A/n4mOBHhzRYkZQNJTa4fX7NiRtHQl8B/p51ISM+njZvIXphv8CCv7CcNe0dV8N8EltxE= Received: from DB8PR04CA0013.eurprd04.prod.outlook.com (2603:10a6:10:110::23) by AM0PR08MB5363.eurprd08.prod.outlook.com (2603:10a6:208:188::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Wed, 3 Jan 2024 01:28:36 +0000 Received: from DU6PEPF00009527.eurprd02.prod.outlook.com (2603:10a6:10:110:cafe::5e) by DB8PR04CA0013.outlook.office365.com (2603:10a6:10:110::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25 via Frontend Transport; Wed, 3 Jan 2024 01:28:36 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (40.67.248.234) by DU6PEPF00009527.mail.protection.outlook.com (10.167.8.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7159.9 via Frontend Transport; Wed, 3 Jan 2024 01:28:36 +0000 Received: from AZ-NEU-EX02.Emea.Arm.com (10.251.26.5) by AZ-NEU-EX04.Arm.com (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 3 Jan 2024 01:28:32 +0000 Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX02.Emea.Arm.com (10.251.26.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 3 Jan 2024 01:28:31 +0000 Received: from e125768.cambridge.arm.com (10.2.78.50) by mail.arm.com (10.251.24.32) with Microsoft SMTP Server id 15.1.2507.32 via Frontend Transport; Wed, 3 Jan 2024 01:28:31 +0000 From: Victor Do Nascimento To: CC: , , , Victor Do Nascimento Subject: [PATCH v3 3/3] aarch64: Add explicit checks for implicit LSE/LSE2 requirements. Date: Wed, 3 Jan 2024 01:28:20 +0000 Message-ID: <20240103012828.2446443-4-victor.donascimento@arm.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240103012828.2446443-1-victor.donascimento@arm.com> References: <20240103012828.2446443-1-victor.donascimento@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DU6PEPF00009527:EE_|AM0PR08MB5363:EE_|AM1PEPF000252DB:EE_|DB9PR08MB9948:EE_ X-MS-Office365-Filtering-Correlation-Id: bd7e24a7-b231-474f-cdd0-08dc0bfb550e 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: UxC5n2MjEswyXGSYyOj0KOL4pmiXuEc9QhaULXM2zyPBEwRSX4et0BeLsd9JwUYO0eAnRxnsTV3vpXR2W6N3q2ebv3ybYWYpHa2SmISelXnmnKXaSo2Wjy9qsbAX6pcOicza7gQIpYb+CnfJ2i6Y7+pD9DjSbk7O8rrtEdAaQgwsFk4mFRot+fCa7FNE3KNEJcNYksz+4HPPpAql5sKDTdWDlcxcs40lc6C9K1Z1hCIef5xdOWuIR0jPOM1G37JQri6aVMFs3ZrmgNHCaEpZoo9MTGKGObYAmLh07JHE0vT8QR45qw8wj0Zia8kUEP+A7e0+D3je1kBStVKjKDF+/1O0Xrz1/fe/uW60X15eaImVjLmiqH60lD0B0rat1S0EtZLnuREbeRuqh1byvnSbicJEtofm47F9QlgsVpCXNZlgW22ch45LvhKH7og9Z5Alhu3xqjPlspduy8IcJTxNtiXuu4xHzLXnWyNIf0amqQtV1TMKM1CUBkdlCNoyF0es+YS1okCBr7nflMGB6F6c99DtnesJnfDClZqiLQfFHlX8elWQLD5ysau5YbltaiJmMkGjrMUD00oyVDBoWAT09wfS5I96SwjP2C4cqu49fyMLdELrNJx9yud7roSzIOUqgU534F/THw/wO2QTCrW/uMoLXeXdFXSCQHFccFwNXTP5fvJflcU/voEZ1aaPUdAxijA/ObACX9aN15A13EyhpbG/8ABSdlJ5lEc1DaCimCZwdQ9idPi+nV58cIGXbPaQdA+DlTApIKuz/oMjpNSDDg== X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230031)(4636009)(376002)(39860400002)(396003)(136003)(346002)(230922051799003)(186009)(64100799003)(1800799012)(451199024)(82310400011)(36840700001)(46966006)(40470700004)(36756003)(40480700001)(40460700003)(70206006)(7696005)(86362001)(70586007)(336012)(426003)(82740400003)(81166007)(356005)(83380400001)(2616005)(26005)(1076003)(47076005)(2906002)(4326008)(5660300002)(478600001)(6916009)(6666004)(36860700001)(41300700001)(54906003)(8936002)(316002)(8676002)(36900700001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5363 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM1PEPF000252DB.eurprd07.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 8d78867e-eb24-4fe0-9501-08dc0bfb4e8b X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DraeDznK2FP1YvP9fc53oWgRLutfsFweZ1Z4NawWbD/4YsoyvWhW3CcqG3J8zk5tEtTBrBBctOewsWKyjmEgO9NL6/xWNEn3Z6xsuqdJsbpGeQsGE4nVytRvZHUQRhbJnI/xVf/EE/qF1TDijw9MnPbklrw/W+Jle4uHz8406LoEElCq/TV54ZCEpSjIpaWE5Xo2Q5iqygxSjxHwtYZVdBGpsxFcs8oyB538rHqecoZ3Yy/EIsbrKIA6/NCunBTInKGzFyv0wyxSvpPDIaMbhYGQF/0et1jbXsBrOQLxE9Cttv3G2KKdObt9qCO/yo/Cx/51YRpSGuIy8wnT4GRc423US2FVKSioqS8toWo3opRbWXUR9jiHt8HocwGa9jh0LybBiMRE9+snAjmdlcKaOzr6u/AP2PzPZGmXQo0Vex1CrNsd1cAZAoOo7UMowsiT5yOIr0STJTd/63EuOlt9Vaqmw2FGNfyEE7mgENs439/Qm7ySA55q9Ezv+tAlkfvS0IEdRb/d0K5YQc36MrVOIVj++pKTeHJcJYXfrARfFTWtmuJoIDk+N2efh1Dj68Fmz3sjRYLU0/tEIcdHhWc7BgAJz4R1ZHhHUPfTk+sg0imOaldSCcDg8ulXliPZeAI0zW+UVE+XH54yyT7cuDgnkrjevY7WRwgSMER2ci2Na3nPTPpm6oOnHwl64wsl+iMw0FkbOeoLUUHd5F9z0AdY7QrnRhnG+/eccxXs7/s8oMq3o4VMgJSOYWjUZNyloQ1P 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)(376002)(396003)(136003)(346002)(39860400002)(230922051799003)(64100799003)(451199024)(186009)(82310400011)(1800799012)(36840700001)(46966006)(40470700004)(6666004)(2616005)(336012)(83380400001)(26005)(1076003)(426003)(7696005)(54906003)(36860700001)(2906002)(47076005)(5660300002)(41300700001)(478600001)(70206006)(6916009)(8676002)(8936002)(70586007)(316002)(4326008)(86362001)(81166007)(36756003)(82740400003)(40480700001)(40460700003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2024 01:28:47.1029 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bd7e24a7-b231-474f-cdd0-08dc0bfb550e 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: AM1PEPF000252DB.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9948 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org At present, Evaluation of both `has_lse2(hwcap)' and `has_lse128(hwcap)' may require issuing an `mrs' instruction to query a system register. This instruction, when issued from user-space results in a trap by the kernel which then returns the value read in by the system register. Given the undesirable nature of the computational expense associated with the context switch, it is important to implement mechanisms to, wherever possible, forgo the operation. In light of this, given how other architectural requirements serving as prerequisites have long been assigned HWCAP bits by the kernel, we can inexpensively query for their availability before attempting to read any system registers. Where one of these early tests fail, we can assert that the main feature of interest (be it LSE2 or LSE128) cannot be present, allowing us to return from the function early and skip the unnecessary expensive kernel-mediated access to system registers. libatomic/ChangeLog: * config/linux/aarch64/host-config.h (has_lse2): Add test for LSE. (has_lse128): Add test for LSE2. --- libatomic/config/linux/aarch64/host-config.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libatomic/config/linux/aarch64/host-config.h b/libatomic/config/linux/aarch64/host-config.h index c5485d63855..3be4db6e5f8 100644 --- a/libatomic/config/linux/aarch64/host-config.h +++ b/libatomic/config/linux/aarch64/host-config.h @@ -53,8 +53,13 @@ static inline bool has_lse2 (unsigned long hwcap) { + /* Check for LSE2. */ if (hwcap & HWCAP_USCAT) return true; + /* No point checking further for atomic 128-bit load/store if LSE + prerequisite not met. */ + if (!(hwcap & HWCAP_ATOMICS)) + return false; if (!(hwcap & HWCAP_CPUID)) return false; @@ -76,12 +81,14 @@ has_lse2 (unsigned long hwcap) static inline bool has_lse128 (unsigned long hwcap) { - if (!(hwcap & HWCAP_CPUID)) - return false; + /* In the absence of HWCAP_CPUID, we are unable to check for LSE128, return. + If feature check available, check LSE2 prerequisite before proceeding. */ + if (!(hwcap & HWCAP_CPUID) || !(hwcap & HWCAP_USCAT)) + return false; unsigned long isar0; asm volatile ("mrs %0, ID_AA64ISAR0_EL1" : "=r" (isar0)); if (AT_FEAT_FIELD (isar0) >= 3) - return true; + return true; return false; }