From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-3.7 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,RCVD_IN_DNSWL_MED,RDNS_DYNAMIC,SPF_HELO_PASS, SPF_PASS,UNPARSEABLE_RELAY shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 2D71F1F5AF for ; Mon, 29 Mar 2021 12:44:56 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0C3E9385E449; Mon, 29 Mar 2021 12:44:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0C3E9385E449 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1617021895; bh=aLtdWciVuWIgVIgpj2KnC1f0lXlkEPQkJqLzbVIGkxc=; h=Date:To:Subject:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=wnRn5JANcZWU2NRDyVLGaKUIcJYQYeN6bZUUUOnduVH/66uHJQ7HcYUHb7rr5yje/ w68aF9W9kKkL6Nk1k5h9cw7jlizyxF918hkx+Rdx0/TF/NX/yIbnBVFStqmqYyRxmm rw/8LZSsrNDjB358XdSqEQPJMxhRpO8L20Mlgupo= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2052.outbound.protection.outlook.com [40.107.20.52]) by sourceware.org (Postfix) with ESMTPS id 17A303858002 for ; Mon, 29 Mar 2021 12:44:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 17A303858002 Received: from DB6PR0301CA0079.eurprd03.prod.outlook.com (2603:10a6:6:30::26) by VI1PR0801MB2128.eurprd08.prod.outlook.com (2603:10a6:800:5c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.25; Mon, 29 Mar 2021 12:44:48 +0000 Received: from DB5EUR03FT056.eop-EUR03.prod.protection.outlook.com (2603:10a6:6:30:cafe::f6) by DB6PR0301CA0079.outlook.office365.com (2603:10a6:6:30::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.25 via Frontend Transport; Mon, 29 Mar 2021 12:44:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;sourceware.org; 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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT056.mail.protection.outlook.com (10.152.21.124) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.25 via Frontend Transport; Mon, 29 Mar 2021 12:44:48 +0000 Received: ("Tessian outbound 7d88ebbbfeee:v89"); Mon, 29 Mar 2021 12:44:48 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: d7b409716ddf51cf X-CR-MTA-TID: 64aa7808 Received: from 8d0df81e5572.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 82FFBBE4-AD3E-420F-999E-2968A36EB6A7.1; Mon, 29 Mar 2021 12:44:42 +0000 Received: from EUR02-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 8d0df81e5572.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 29 Mar 2021 12:44:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KA7NiuhpHkn8t9RAYCn1ucxKCFDoW6gZ95jsbIeYAJDR1KnW9J3Pu927E2MSU0GYGd2y0iogcs8o45cRjO8jgx0fcXG3n3/HNGNcSAO+os4rO8+VhDVRB2z+iFJO5iUWFL3fjzBhdCmJvkQOn77P00bqOUNe5wpNB5rL04I1bzRsUj23RLNhyHkw8ZVwzkJOJZ9DUJmFk4sl1sn6m6IU2MrJ3F9MDgQAM0T98+/hB0kvYi5fh/IT6+G7crh4x8OZzf3Gw3XHVnBF5cxtlaBd+oEFbm9fILDtCEchbuWAHBySNDy/5EwMqV7YiikJUPt6583rCrJfDHzOj9UD1vsUWg== 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-SenderADCheck; bh=aLtdWciVuWIgVIgpj2KnC1f0lXlkEPQkJqLzbVIGkxc=; b=Sa98GfTQ+fCDbhJ7QckLhUbPRMujQGd3d6O9DYfzkgeO6ztvzUjGsurIFJobvD0EiX1RPHE7wMg2FByOtkw9fx4n3jLhp8mnhUUm4o/lyWxAFVFtFQwzOTOFbQ1BZVYxm5W2aPemiiXuiUslknmHsVz1Dl1vFmWCpgRte9a+AEBzn05i+gCOf6TC+rRUg4tWhcTJa33wNOAPKOk6p4tsBRsM3c66ru0ieECQtMlGDKwb1NTVOyFFRw/o6VZOQXekRFlaS/9a+A+X0hpL4UyXIAvMnOl1U2iHTfQquNO2ehc4Xc7m7tnBwbTCtj66le8/ReJ9OyYCZyXIjQx2fn/C1A== 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 Authentication-Results-Original: fujitsu.com; dkim=none (message not signed) header.d=none;fujitsu.com; dmarc=none action=none header.from=arm.com; Received: from PA4PR08MB6320.eurprd08.prod.outlook.com (2603:10a6:102:e5::9) by PR3PR08MB5644.eurprd08.prod.outlook.com (2603:10a6:102:86::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.31; Mon, 29 Mar 2021 12:44:40 +0000 Received: from PA4PR08MB6320.eurprd08.prod.outlook.com ([fe80::60f0:3773:69b8:e336]) by PA4PR08MB6320.eurprd08.prod.outlook.com ([fe80::60f0:3773:69b8:e336%2]) with mapi id 15.20.3977.033; Mon, 29 Mar 2021 12:44:39 +0000 Date: Mon, 29 Mar 2021 13:44:37 +0100 To: Naohiro Tamura Subject: Re: [PATCH 2/5] aarch64: Added optimized memcpy and memmove for A64FX Message-ID: <20210329124436.GE23289@arm.com> References: <20210317022849.323046-1-naohirot@fujitsu.com> <20210317023417.323152-1-naohirot@fujitsu.com> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20210317023417.323152-1-naohirot@fujitsu.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-Originating-IP: [217.140.106.52] X-ClientProxiedBy: LO2P265CA0419.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a0::23) To PA4PR08MB6320.eurprd08.prod.outlook.com (2603:10a6:102:e5::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from arm.com (217.140.106.52) by LO2P265CA0419.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a0::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.31 via Frontend Transport; Mon, 29 Mar 2021 12:44:39 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: d7296943-0f7e-400d-748c-08d8f2b07058 X-MS-TrafficTypeDiagnostic: PR3PR08MB5644:|VI1PR0801MB2128: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:7219;OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: cql35TBisWZKVNyAYlbHpZQ4+BM0TB4w9dZn3fJ2xjJqolevktfyOKOwtCkjpHV+V29HPeUadKZCNAajzTjAkUd5MVTWUefL7iL+HoeVvPASVb6aCXKKgVQsnHez/JCzYeMa+XYzlqOdb13ZvTyECvUTK5KdHe26Vop8Ok/38wr1WscHI3cdl5jq303LO1+L4NfFckS43q6jXxaOcGzWlPHu2bQxOp92TUyB0tmaRGROYAy+18yYR/h/kfJKeg+EbZ4f8OPXuoti9zJ6BTPFJ/NMS2Mw+kWOd2wj24IuNRI+EEysmMlqKWJ85LliawtJj4abLcf09wlp8ijxCi/NWQhYpu0axjXrkPj/yMOvAUShrl+W2VDRMqY8Om9vOKANbahgq3S/QJ50w3yaJH+XsfIoKAlPDzCXnl3SiTtGtvAyQH0mkOZu+BJz87qVsA5lbqK9rL0tfxYDjJY37fPkEkI6yZn4vtGIZtoAzC1ItUInXHFdS0bzAhgZ9Xvd8jQA+HWHCisrYSibOEXy1uZXZgDMfgLk5Lw3fva2H3Zmmp3d2qPRBFg/Gp/iqRag6oeKmvE5cFlQjDZ3pjqnqFFWMYmgGuwYNh/NkUI6bAKyYE7O9MpyolYoc/7LDgkMPb8+3Y9ryL0EytEbuXs/zRIcPKF98+KZ0v1GsVuJ0JQIHrQEIP+TPUYXK9GwHQjLURuQ X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA4PR08MB6320.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(136003)(39860400002)(346002)(376002)(396003)(36756003)(5660300002)(2616005)(956004)(52116002)(1076003)(2906002)(7696005)(55016002)(4326008)(186003)(16526019)(478600001)(66476007)(66556008)(316002)(33656002)(66946007)(44832011)(83380400001)(86362001)(8936002)(6916009)(8886007)(38100700001)(26005)(8676002)(21314003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?UXNzSTdsYXJUMXFtVmJXanJkL1h0V0o2U21wZ0xzY0pVKzB3VnNXSENQVlIy?= =?utf-8?B?RlJ6ZS9qOUtZQnB1Vzl1QWxaS3JqaE94WmNCdlFHWHlsTUoza0V0MVNLZ05z?= =?utf-8?B?WWlzejE3MWtqSCtMblJsa0RVdTBXUEhsTGpSczBnV0d6QWlKMDlRc05LVTBI?= =?utf-8?B?VG84eG5RM2I0OW1paDlVMVpJWkc0NzViaHFLck1NM3J5WWtOM29ldWFPdDc5?= =?utf-8?B?SXExZWpsTnRsWmNGUFlpMVlqVjRlNGNac3lKa1BEcnNtaklWTHVvbS8wdzFJ?= =?utf-8?B?WHNKSzdURnp1ZXVHNEtqbDJlbitLUWlGdUF4dzlTcm9RWG9LTUxzbXlRK2I0?= =?utf-8?B?aTVuWDRORkJFSmF3d3BIejByU2FNUC9NWm5vRCtkYjdjNVNRSlVjUml6UDkw?= =?utf-8?B?L1FBL0h0YStkWmgyMkxNUnQvRkQ5Tk9RKzZjcHFsd3R6YW1VbWtSMjRmRFkx?= =?utf-8?B?RVRobW1sbjRzRFQzNnZ0OVNHb0liOXhuUlJXUFdPMHduWG10VUkwVFhoZDFQ?= =?utf-8?B?VUFzZDluNUF6RE1ESEdpcURaaElHMHNBMnRUQlFzdFpwbjBabDFZOVU2cE53?= =?utf-8?B?UWxPd1FKYUlxdXp2bHFRMGtJMmFxdnRPcWZNUzBxZFRvZGNaQ0VpeVBwbEdY?= =?utf-8?B?N2FwUWVGcUY4eUNXK3Z0cXdGNmJia0lXSG9ISmt3NHk3cU5NSkV3T1FLR2dn?= =?utf-8?B?d004SUJPeGIyUDkxTkRub0c1SDZhK1pkNmFQaVNZbld2MEpYZlRGR29ld3hs?= =?utf-8?B?aXllRGdhdUo0cVp5SE9SVlhpSHFpMHNzNGJ1NExXNEN0b1ByQTJPb1R4ZlUr?= =?utf-8?B?bWtsaWx1Z0hUT20yZlNuelJIcVl5M0gyNUhJUStXaFlXVTQ3OHBaYWR6dEtS?= =?utf-8?B?MlM5NURCanVBNEJCb0dYdkZsOU1LMU5vTlNUZkw3NHhtZ0Y3SkZXNStxRFpa?= =?utf-8?B?ekhjMXYydDg5R0FDUW15WjVrOE9FM0E0b0dyMjVibFFUMmJOS2Nvc0xCY1dY?= =?utf-8?B?WkJUY3VpbFN2aXcxd3d5bWczUCtCMi9iQmdyaGFVQ1RQYkNVcHAvUGI5WUNH?= =?utf-8?B?UjhiT0ZrcFEzM2tBNFZYblE0bDAxVWlabVZXVXN4bXhmemFUQWM0TnVhZkFu?= =?utf-8?B?bm5QMTBaUEtaZmNOVG8yNW5IVmhDdHUwcXVkWUp4eVRCWWJWVHhKTGhRZzV2?= =?utf-8?B?OTNxSUdKSkkyb3R2Y3lDZlJrNmx2eTUwcTFKUTY5VHNhWmtzOUxMWHU5eHNz?= =?utf-8?B?eTVlcnhpak9wakVDak9YVWtEZXhDYmZmem92bnUrVDlFVTR0RDZ2SDNuVDVO?= =?utf-8?B?YnBrWjZScEtzY0FNWlB2Yk51UFJ4OC9URWNBNngyMGdJQW5jc2FBT2RqUkww?= =?utf-8?B?VkpEZHJhTVZNYlAzVUhTRzlZNUZXL01MNVlaVXZMZEhKQkkrNzNnaXRITlNQ?= =?utf-8?B?OFRSaXRiQnJNVXh6SzlpWURBMzBLWHFnNm0wMzlSVE9lRzUzVTRITWVuQjlI?= =?utf-8?B?ZW8xNGZBN3Zoc0xXcC9uQlR3eFhsSlRYenQzNDljdTFpZGk5QWZDZjA1ZVBs?= =?utf-8?B?UGJGZFBGVSt2TmRHODRvUFBCVUtuT0JlU1RsZ0hxZHM0R21pUHhEYjkrbGZY?= =?utf-8?B?T0hUSmwzbGZyOG9La1ZjNGRNeU96RWxGZE1LU1BWQ0FsWUY5T0k2V1lmZjVE?= =?utf-8?B?MlFJTnNudDI3V3R0MEtrN3l6YjlZVjNsYjFoNURUS2djNkIwWFVXbSthZjF6?= =?utf-8?Q?pSiaKUyAgW2l/KplwIMY8TkqOv7z7C8yiEeCjby?= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5644 Original-Authentication-Results: fujitsu.com; dkim=none (message not signed) header.d=none;fujitsu.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT056.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 10342abe-1cb0-4acc-03de-08d8f2b06ad9 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0N2jKOx/ruSSiTNMMltcZ4MoOXVLklOyhgAHnLq5dT6y3P5rG7HMi5YLQdkSoLYnjKE6WaOk/lqntz0GXGrY2y98Tf9L/4Qb7C3NP3fXGwkSpzZ85iCPrF7kS9tXRwNsNXQJDljACCQk7dBgU7Ltx1RAUon1Aa1dA9lOvLuq9YyZOGvcRWTb9vmCYfa8LkkaLlitzxaI3BYTzybP47dWZGx64xOVG+uMbO+WASBkWwY4Zw+s3GZd5IOe86jkS23Pg4MkmGhpSYMRoH09pqjPvev2IlWlfKfbpKxgLth4RDdjqN7hS5v7/+Bu13KnhkDxkZD06B+o6Zm8SGUqm9faCIHvRgbDsCO6pNLnBo/bsMb1bEX+cQwRw47mlnpfb3whhROLLatysNn/ZFo6gtY4UuzdobVtNSjryX+UgrdZ2fpHMTGmDjutPdhqkmKFrO8WF4GUoWpMP6/zl4O3UiO9ACsSW2ruWezxMw6ZvjQuidM2bgFHiLZ5hrF6Ts1e4zFP8i5+t21mX2H7IkoZ01hTWUVYvvQ1DjmeFJrBAosWN6Q3tedwH9rCFSoX/6izpgwPh2CNWPdHyQY0TAkbJZ5HD+nKlN68v4sA22J3UJuldrDScZ6VzH6eAxyZlYM+RWfKdnL+KZMiiYV+FpDJO4WmDn71F9+AdQ7bp4b+FRaHnsBMYZSCk1/O8gR5wfKZDnGn 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:(4636009)(376002)(136003)(396003)(346002)(39860400002)(36840700001)(46966006)(47076005)(107886003)(26005)(36756003)(316002)(1076003)(70586007)(70206006)(2906002)(6862004)(478600001)(82310400003)(186003)(36860700001)(16526019)(336012)(5660300002)(4326008)(82740400003)(81166007)(8676002)(2616005)(8886007)(956004)(356005)(44832011)(8936002)(55016002)(33656002)(83380400001)(7696005)(86362001)(21314003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2021 12:44:48.5826 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d7296943-0f7e-400d-748c-08d8f2b07058 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: DB5EUR03FT056.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB2128 X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Szabolcs Nagy via Libc-alpha Reply-To: Szabolcs Nagy Cc: Naohiro Tamura , libc-alpha@sourceware.org Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" The 03/17/2021 02:34, Naohiro Tamura wrote: > And also we confirmed that the SVE 512 bit vector register performance > is roughly 4 times better than Advanced SIMD 128 bit register and 8 > times better than scalar 64 bit register by running 'make bench'. nice speed up. i won't comment on the memcpy asm now. > diff --git a/manual/tunables.texi b/manual/tunables.texi > index 1b746c0fa1..81ed5366fc 100644 > --- a/manual/tunables.texi > +++ b/manual/tunables.texi > @@ -453,7 +453,8 @@ This tunable is specific to powerpc, powerpc64 and powerpc64le. > The @code{glibc.cpu.name=xxx} tunable allows the user to tell @theglibc{} to > assume that the CPU is @code{xxx} where xxx may have one of these values: > @code{generic}, @code{falkor}, @code{thunderxt88}, @code{thunderx2t99}, > -@code{thunderx2t99p1}, @code{ares}, @code{emag}, @code{kunpeng}. > +@code{thunderx2t99p1}, @code{ares}, @code{emag}, @code{kunpeng}, > +@code{a64fx}. OK. > --- a/sysdeps/aarch64/multiarch/Makefile > +++ b/sysdeps/aarch64/multiarch/Makefile > @@ -1,6 +1,6 @@ > ifeq ($(subdir),string) > sysdep_routines += memcpy_generic memcpy_advsimd memcpy_thunderx memcpy_thunderx2 \ > - memcpy_falkor \ > + memcpy_falkor memcpy_a64fx \ > memset_generic memset_falkor memset_emag memset_kunpeng \ OK. > --- a/sysdeps/aarch64/multiarch/ifunc-impl-list.c > +++ b/sysdeps/aarch64/multiarch/ifunc-impl-list.c > @@ -25,7 +25,11 @@ > #include > > /* Maximum number of IFUNC implementations. */ > -#define MAX_IFUNC 4 > +#if HAVE_SVE_ASM_SUPPORT > +# define MAX_IFUNC 7 > +#else > +# define MAX_IFUNC 6 > +#endif hm this MAX_IFUNC looks a bit problematic: currently its only use is to detect if a target requires more ifuncs than the array passed to __libc_ifunc_impl_list, but for that ideally it would be automatic, not manually maintained. i would just define it to 7 unconditionally (the maximum over valid configurations). > size_t > __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, > @@ -43,12 +47,18 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, > IFUNC_IMPL_ADD (array, i, memcpy, !bti, __memcpy_thunderx2) > IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_falkor) > IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_simd) > +#if HAVE_SVE_ASM_SUPPORT > + IFUNC_IMPL_ADD (array, i, memcpy, sve, __memcpy_a64fx) > +#endif OK. > IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_generic)) > IFUNC_IMPL (i, name, memmove, > IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_thunderx) > IFUNC_IMPL_ADD (array, i, memmove, !bti, __memmove_thunderx2) > IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_falkor) > IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_simd) > +#if HAVE_SVE_ASM_SUPPORT > + IFUNC_IMPL_ADD (array, i, memmove, sve, __memmove_a64fx) > +#endif OK. > IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_generic)) > IFUNC_IMPL (i, name, memset, > /* Enable this on non-falkor processors too so that other cores > diff --git a/sysdeps/aarch64/multiarch/init-arch.h b/sysdeps/aarch64/multiarch/init-arch.h > index a167699e74..d20e7e1b8e 100644 > --- a/sysdeps/aarch64/multiarch/init-arch.h > +++ b/sysdeps/aarch64/multiarch/init-arch.h > @@ -33,4 +33,6 @@ > bool __attribute__((unused)) bti = \ > HAVE_AARCH64_BTI && GLRO(dl_aarch64_cpu_features).bti; \ > bool __attribute__((unused)) mte = \ > - MTE_ENABLED (); > + MTE_ENABLED (); \ > + unsigned __attribute__((unused)) sve = \ > + GLRO(dl_aarch64_cpu_features).sve; i would use bool here. > diff --git a/sysdeps/aarch64/multiarch/memcpy.c b/sysdeps/aarch64/multiarch/memcpy.c > index 0e0a5cbcfb..0006f38eb0 100644 > --- a/sysdeps/aarch64/multiarch/memcpy.c > +++ b/sysdeps/aarch64/multiarch/memcpy.c > @@ -33,6 +33,9 @@ extern __typeof (__redirect_memcpy) __memcpy_simd attribute_hidden; > extern __typeof (__redirect_memcpy) __memcpy_thunderx attribute_hidden; > extern __typeof (__redirect_memcpy) __memcpy_thunderx2 attribute_hidden; > extern __typeof (__redirect_memcpy) __memcpy_falkor attribute_hidden; > +#if HAVE_SVE_ASM_SUPPORT > +extern __typeof (__redirect_memcpy) __memcpy_a64fx attribute_hidden; > +#endif OK. > libc_ifunc (__libc_memcpy, > (IS_THUNDERX (midr) > @@ -44,8 +47,13 @@ libc_ifunc (__libc_memcpy, > : (IS_NEOVERSE_N1 (midr) || IS_NEOVERSE_N2 (midr) > || IS_NEOVERSE_V1 (midr) > ? __memcpy_simd > - : __memcpy_generic))))); > - > +#if HAVE_SVE_ASM_SUPPORT > + : (IS_A64FX (midr) > + ? __memcpy_a64fx > + : __memcpy_generic)))))); > +#else > + : __memcpy_generic))))); > +#endif OK. > new file mode 100644 > index 0000000000..23438e4e3d > --- /dev/null > +++ b/sysdeps/aarch64/multiarch/memcpy_a64fx.S skipping this. > diff --git a/sysdeps/aarch64/multiarch/memmove.c b/sysdeps/aarch64/multiarch/memmove.c > index 12d77818a9..1e5ee1c934 100644 > --- a/sysdeps/aarch64/multiarch/memmove.c > +++ b/sysdeps/aarch64/multiarch/memmove.c > @@ -33,6 +33,9 @@ extern __typeof (__redirect_memmove) __memmove_simd attribute_hidden; > extern __typeof (__redirect_memmove) __memmove_thunderx attribute_hidden; > extern __typeof (__redirect_memmove) __memmove_thunderx2 attribute_hidden; > extern __typeof (__redirect_memmove) __memmove_falkor attribute_hidden; > +#if HAVE_SVE_ASM_SUPPORT > +extern __typeof (__redirect_memmove) __memmove_a64fx attribute_hidden; > +#endif OK. > > libc_ifunc (__libc_memmove, > (IS_THUNDERX (midr) > @@ -44,8 +47,13 @@ libc_ifunc (__libc_memmove, > : (IS_NEOVERSE_N1 (midr) || IS_NEOVERSE_N2 (midr) > || IS_NEOVERSE_V1 (midr) > ? __memmove_simd > - : __memmove_generic))))); > - > +#if HAVE_SVE_ASM_SUPPORT > + : (IS_A64FX (midr) > + ? __memmove_a64fx > + : __memmove_generic)))))); > +#else > + : __memmove_generic))))); > +#endif OK. > diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c > index db6aa3516c..6206a2f618 100644 > --- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c > +++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c > @@ -46,6 +46,7 @@ static struct cpu_list cpu_list[] = { > {"ares", 0x411FD0C0}, > {"emag", 0x503F0001}, > {"kunpeng920", 0x481FD010}, > + {"a64fx", 0x460F0010}, > {"generic", 0x0} OK. > + > + /* Check if SVE is supported. */ > + cpu_features->sve = GLRO (dl_hwcap) & HWCAP_SVE; OK. > } > diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.h b/sysdeps/unix/sysv/linux/aarch64/cpu-features.h > index 3b9bfed134..2b322e5414 100644 > --- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.h > +++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.h > @@ -65,6 +65,9 @@ > #define IS_KUNPENG920(midr) (MIDR_IMPLEMENTOR(midr) == 'H' \ > && MIDR_PARTNUM(midr) == 0xd01) > > +#define IS_A64FX(midr) (MIDR_IMPLEMENTOR(midr) == 'F' \ > + && MIDR_PARTNUM(midr) == 0x001) > + OK. > struct cpu_features > { > uint64_t midr_el1; > @@ -72,6 +75,7 @@ struct cpu_features > bool bti; > /* Currently, the GLIBC memory tagging tunable only defines 8 bits. */ > uint8_t mte_state; > + bool sve; > }; OK.