From patchwork Fri Sep 6 13:21:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 1981910 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=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=nKd4mWsA; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=nKd4mWsA; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.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 4X0cMQ5yw7z1y1H for ; Fri, 6 Sep 2024 23:21:54 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id ADEDE384A47A for ; Fri, 6 Sep 2024 13:21:52 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on20614.outbound.protection.outlook.com [IPv6:2a01:111:f403:2613::614]) by sourceware.org (Postfix) with ESMTPS id 74CA6384A463 for ; Fri, 6 Sep 2024 13:21:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 74CA6384A463 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 74CA6384A463 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:2613::614 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1725628891; cv=pass; b=TF2nW7Rx/MxdJ1h9EylJJt6RRLI1tdbzaQB9cWA3+4KkPhbwS/UVXGylnSsSOZ/EAOSPfPNKwPlQPbXumDpjMBAxTk15EkQRAwcBdpjt3XaCqv46GH5Fob5Gh5I+dCwC3cZSu7NpBimS5K7wVWhuZjBFf0yhXrZkklMG/Pg9yBU= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1725628891; c=relaxed/simple; bh=kynlKqd5rsegnaOt579dnoN89v33qhIk6G8FGkaG0FY=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=HglRNhbye2IN9b+EPVHeRPF7oqy2aXkmp0NJjWIJq7wmpnLnw/oHimPxLoBUOD1/47IbgHh8zMMEJlmU+xb+swgqBYQUs77wuhXLQhF5Jset4ALmPVLMrUuhSdskGQ0z/nZXTgRVuSrGRACyVGFXjlVS+RdNyoOQBJGXBjZ5jxM= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=StaQZbVGB7biTbCj9ToKrRkMbT21Sf3lbjlL2EJxZ6YFVJV9YqlUdiocppmnE3hYBsSQmOAIAApXkqUB/A8A5uVNkkkep1ZwT0w44XLVtQRcQISfx0+Qu1KmvFwOgCQvaL05A4JRHppKOFFCt6+VKtHt/BREBKzk6pjX5sSIjfUKulsJ6EF/T41bBR05MU5D5pY5WNlz4Ju1PmQ0gBJq3Wh0Y4qazQ1nJ5ZcjNEQSLm6dzfdJO8iGbr2wAsfT4uvvyZmVOR3ks33KFwDWOWcMhjSmkYtoZij0jFOsXTHAomnb1IZtjdiNuQfYPNxFUBSF2Eg4Kmo6bJqd5uCcUeYuw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=nPuWzgMmFfvw1hknrz7KLZSsCi5pzEICSV6IE1q/+mo=; b=KfQtpxDKQvRKhK7T9i8wFgu4vjZjQvEFdJo1otjoS2vScaVhccjqFwpI90AH/Mk1MAmstH4kbVjOm6uTRsgLiXwDMMP7WeYtdAe2wQ7XjKdzyr5iix6+WGuaOdubZrTyb66bFYQ+ImNHJOGNo5AONK6WgdgIbvBJ5quxNtSyzTVKpyAIWgBNOM8sDPdS0mYIXKWlHbmuhsjfrohB/sEjC328NTLO5Dll4pv/JNrdAG6jIkN71zF2jDdwL6DKtgxFd6i/12t0+OwgR0Tc1LEfTkvyNFAoy2bsgBo37/rgWOF1boMOrlLh9I5Ei9M7V64qbx67Xep4quMfKBrU+FUo/g== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=bestguesspass action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nPuWzgMmFfvw1hknrz7KLZSsCi5pzEICSV6IE1q/+mo=; b=nKd4mWsAzlxOaG2TSsmkp0hW9f7uRAcWwP0ZdXZCbZnqwkywGyOpY8VhTb47sos5yG6PyFq2tMElLdxKp5lFkIbc3Zja7k31Ivf2jXbsIj0GzMyGJy1VP6DchOJAf46A3YivHMSaZlc6sDOFV8AE/B4ZRNmleFYEkylNp8yLXjk= Received: from DB8PR06CA0011.eurprd06.prod.outlook.com (2603:10a6:10:100::24) by GV1PR08MB8178.eurprd08.prod.outlook.com (2603:10a6:150:92::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7939.13; Fri, 6 Sep 2024 13:21:24 +0000 Received: from DU2PEPF00028D03.eurprd03.prod.outlook.com (2603:10a6:10:100:cafe::3b) by DB8PR06CA0011.outlook.office365.com (2603:10a6:10:100::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7939.19 via Frontend Transport; Fri, 6 Sep 2024 13:21:24 +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=arm.com;dmarc=bestguesspass 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 DU2PEPF00028D03.mail.protection.outlook.com (10.167.242.187) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7918.13 via Frontend Transport; Fri, 6 Sep 2024 13:21:23 +0000 Received: ("Tessian outbound a13c34f08745:v437"); Fri, 06 Sep 2024 13:21:23 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 91aafd3eace2283c X-CR-MTA-TID: 64aa7808 Received: from L3eb775026be1.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id AD7A7EF2-5F55-47B5-975E-7D54386F6F28.1; Fri, 06 Sep 2024 13:21:15 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id L3eb775026be1.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 06 Sep 2024 13:21:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=i5Tpc8fhkMrQZY/UA0GFDezbRrk/KnfzdAjF7DOvTH9dJ4a/OPYnEzpZpsM4g5sbHw5UnOk9O/V+RasLWoyoDZ/4Czbu3DB8c2Py+VrqmToNGjWpo4J4br5iXKwVQASrIpnm1IgJvFvaUX2R8UOVJiJbb/r+eszCv0+f5UhDbBUF93qjwXHhdrH2xEN7qjcMRGsG+Zio/Oh5t1VapmyM0BdjKa4o7Wemdr4GPWWmowekxBN0YOGtZmBXuvgp9RS0kQ3xXewNdlmYQo5a+kE84bnBaEs2UkLFze7pBoxyNZCrL9QhT8FfLrj5C63Yr7mzwd0JAeYdNLgYY1eh0Bf8jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=nPuWzgMmFfvw1hknrz7KLZSsCi5pzEICSV6IE1q/+mo=; b=KlWcu6TB6SFndTeb6L94mIsNs71MEDtp2YpKVfICsi2SLehdRf69xUyC59zU9gZiMK7meiRpasQwvJsvPKk5adIZUFDjIY2cuYndACU566wYZkEppOxK+89RY9/EgyVGvctyuZ9aegq3A8iJv73IJ1cWyxwgdVeQ6ez4my2CduTSVFLCsvcSBy+P/1EZP+ml2KoavHxYXNNpbWP0r9CI77TvXc4kAdihNmSgSX2ZksCBx3yW3OhAbqSh6/epbWcMIUmBenPWUZqJHTEB+P4vJqt+ZyrFe5+vilTuZojtWMvjQ9RdCT444QYA7BeGNtcpWxvSACtyMgZ0gn9vJxrAOA== 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=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nPuWzgMmFfvw1hknrz7KLZSsCi5pzEICSV6IE1q/+mo=; b=nKd4mWsAzlxOaG2TSsmkp0hW9f7uRAcWwP0ZdXZCbZnqwkywGyOpY8VhTb47sos5yG6PyFq2tMElLdxKp5lFkIbc3Zja7k31Ivf2jXbsIj0GzMyGJy1VP6DchOJAf46A3YivHMSaZlc6sDOFV8AE/B4ZRNmleFYEkylNp8yLXjk= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by AS4PR08MB7656.eurprd08.prod.outlook.com (2603:10a6:20b:4f2::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7962.9; Fri, 6 Sep 2024 13:21:09 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d%4]) with mapi id 15.20.7962.008; Fri, 6 Sep 2024 13:21:09 +0000 From: Wilco Dijkstra To: 'GNU C Library' CC: Yury Khrustalev , 'GNU C Library' Subject: [PATCH] AArch64: Optimize memset Thread-Topic: [PATCH] AArch64: Optimize memset Thread-Index: AQHbAF8cyWyDXUONpEOJzAjaUM9HEA== Date: Fri, 6 Sep 2024 13:21:09 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|AS4PR08MB7656:EE_|DU2PEPF00028D03:EE_|GV1PR08MB8178:EE_ X-MS-Office365-Filtering-Correlation-Id: cfcc292e-56b8-4026-a28f-08dcce76cdac x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|366016|1800799024|376014|38070700018; X-Microsoft-Antispam-Message-Info-Original: =?iso-8859-1?q?+NjJ0pGZYfTMp6nR5?= =?iso-8859-1?q?fsGDLuCPdQPG+xlEn4xZwRrNadOIlI5oxCybHHinaKiLBGVuWMMFo71G5DKP?= =?iso-8859-1?q?A7FwODDNGn1w/vFr9HTfHUhezuCAhnX73gY/4zsyFOLspcsWeGOG5HiLH+B8?= =?iso-8859-1?q?dMZvNqTIfBsCy7R0VGeC+RoBQKUEEI/L3NlR8w3j2wsA+T+PGvirgNRlz1YT?= =?iso-8859-1?q?nr4uTzrvnoDHT5aYRudfG9PqZkygdBkTA8Uz9hb5ILVETrCVCwH24AX74Twd?= =?iso-8859-1?q?Di0cJ9o0MeWzapfZ6OHtZMoQynRq4DTsq+UbHKaDZvD62vS5Yd24ydSpRHXZ?= =?iso-8859-1?q?wWya0laF0L3Fr8D0rZoCvfhQcqt6Qee4dtLe4bT6T+TZJ1QDXr6zEuDmaB/z?= =?iso-8859-1?q?/sNE79Et/tUcs8k3aNXo5NgINeoBPhGR/zAnid/9ighpFWPFuZfUWpivnmdK?= =?iso-8859-1?q?8lJmYAZ/OcRA3lDhOlOTA+o57/l37KKCnmnIGqQoWAxQhq/ALFNjl0KBNYxK?= =?iso-8859-1?q?T5ZtsuTFBllrMDtV+1RSOZ6bxvyRtZVECexzUiva3p8H5Dh4dziGHPy4KuF9?= =?iso-8859-1?q?zoEKFqLYUfPvRi+FKC2upVP0DiPiqbajMwdv7s4Ifai58WHYjun7VAfuQqnG?= =?iso-8859-1?q?OFZU2Je2r3DpwedpPaTDjSqqgtb7u6aNbeBxH30o+s/dghEPBSqTVPC1GHaY?= =?iso-8859-1?q?b2aNVer8rRTg5erqX2IJP3EYqMD/t6i6IZqhxee5kraSeC1C5csnXny0CYlY?= =?iso-8859-1?q?Z0NAg77SOd06no+RxucYbfpOqyXcURD9mZENl1CnvGhCEfYSB6LdPLmy7AKm?= =?iso-8859-1?q?9Fkci5gEvT8IkIDYm40KN5pypLSMYNv4Paqomb296LCV8MJj2AF37ZlPR/VG?= =?iso-8859-1?q?mba+ORivtRhUZDeW2UjdqdqHWSjuRdy6Owqg9YMIIWrW5LqMPE4o9yd700y/?= =?iso-8859-1?q?s9wlVxy035ystqrA0u4F+AkiZMrlfZvLuPPvgHL+HlI24AyfzzxTjbz3hjdm?= =?iso-8859-1?q?wy+/vgJDRVnmw9JCCaT1EN7GYpdL47cGRZNCPHEaFuTNRKgBi2bksap1fgxr?= =?iso-8859-1?q?vr2TE8I7E3b0WzIo/c6wehfy7bxkrerUB2iO5vm6XnUxnWLDNcbknWE2gIbk?= =?iso-8859-1?q?eebIN5Yssj8VL/nTuTuaL1HIs+6qTVFAEsg4V7MvNfMbJpDCO8QfgusiAco/?= =?iso-8859-1?q?L4EE9c2q3uwhxPNlxNtFT7eAM7agSVGkpHih1QUhbT2vbLRSdFnMnD92iqYY?= =?iso-8859-1?q?ayp/r6zyx/QC0s7vIzh3MA6zRr0AH2L54NJVNuagogHUbQAXBPvdw0LEMyHp?= =?iso-8859-1?q?D6rP937m3YyzOsf7K+6W5cgm89rryIlWNff4kQFxz5Yiaca+uIUJk37faqiW?= =?iso-8859-1?q?HWkve4Uwdqv7KhyaN5zO07zCPApUzAKFkhx4+qxB3RpmPxaeqhyH9/FMvELB?= =?iso-8859-1?q?qFlUbZRtrTsE0WSWEi1HOr0BSBsxP3jzg=3D=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700018); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7656 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-SkipListedInternetSender: ip=[2603:10a6:102:33f::20]; domain=PAWPR08MB8982.eurprd08.prod.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF00028D03.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: a51d6f12-788e-41e1-1ad8-08dcce76c552 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|35042699022|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?iso-8859-1?q?JgccTwQmIDHVBNPvKGk57WDGcC?= =?iso-8859-1?q?acRdTpxWIsVYcnuNIIMiIhjADcT89BrNpxQ6LG4DM5MjGthHcn2UjjilpWmb?= =?iso-8859-1?q?yfxtMizmdV/6kmG3iDia5PgMqmsJTDw6vn28c3vvshhD3F5LGsgC+Dy7qUHS?= =?iso-8859-1?q?yB0XL6qQ0GrbJqKl5lCjcWCh0xTEDeLfgpOJbbfqQNTBr0V5sy73wCAItFdk?= =?iso-8859-1?q?VhsF3mZ0cJzOeDmQ7Ktzfpzy3iJBlH8TC856coGtPkq5bTNP1wHbW0LT2YH/?= =?iso-8859-1?q?/nBQYfIAnpnhrwsxPz9t4tSQslY3C1DXQxomq2CtBHCgzUN2GbMH+RdHNen2?= =?iso-8859-1?q?GteSNGc714gVDYy5p3HEfM9gYfD3Mg4Iuh13TSGDy8jqkrfiXefr3yB6bGgd?= =?iso-8859-1?q?6yJHT0w3yS2pSg8440OHKYCHAhpsBRdAKzRix9AiyQgbwq/KI5PxueCfTTEH?= =?iso-8859-1?q?rPr2PZxWjc31qbPzD9dLNhiqPBtVGJPk59yZjoszAe+2GQDkAtPz8RiQc0xm?= =?iso-8859-1?q?QiF2TDEZfp0xSqIgHz2DbgiuJT5XauENd4rig1b4lmBJZ9VVcwIdPlAdo17R?= =?iso-8859-1?q?qDZ+vETtevWkC74EJQ14Sb7FggoYq/1/z2hAggE36fQMHonjeOPbptYzQGWy?= =?iso-8859-1?q?/gC7MM15PBV394lfqprEH+UFahF159LzkXjODyCNbDsl72V7HUAAcHuH/9uS?= =?iso-8859-1?q?d98rD/z+jBiZMty6g4ju9awk8NLysNAu/X/Rx48IS1Wz0EjD3aIYhd40C1gb?= =?iso-8859-1?q?0K0M3iJ5oZ+izkhdUEzQtqufTPj3JdxNcgjtiBO/WKt//uggLicm5iEBcre3?= =?iso-8859-1?q?kozOp3nARhQBKLCeDt/exwwf4XhbvW/dO8gLVjCJc4EqRaTXQRuxnEEYA3UI?= =?iso-8859-1?q?6uxPnK1r4k+mliAQc4Zs/xiCC93kdHL9sfyRqxbgddljCnQAlJ1ppqahzwa9?= =?iso-8859-1?q?aBkVt3QwWuqzISZhQ+DnG9cP3GJVlR2b893IqAKL6Bb515HSQqYK0VezVt4D?= =?iso-8859-1?q?zLH/7lL4y5uV4FHOwgxucUL57XzFgqIdMNoWLYC/9CodHTRweoBP6SN/pi+y?= =?iso-8859-1?q?4ZtvwzGWmBsKJgQllrgX0y3FJCxJG+n0wy+tGxEmQ42N/axkisVwsJvMFLnU?= =?iso-8859-1?q?F090Vv6lf5xaR9ISBr1FKis6379RhFiqYygQW4Ri2oqm/C4JipND2QU9nwJn?= =?iso-8859-1?q?erKlhVh0Mn+vonfNqZM9rnxPRVxsDFnCp24+FhqzA6+/zqDaDBwX5syC1RKF?= =?iso-8859-1?q?SzKOM74oeteu6l7/Zdn0IxrjSKR7bfnKtWBAUCbENBVVZunIwUcjNLUlr/VH?= =?iso-8859-1?q?vEK7ErcBJixn1dMX5iCluQiMTr5So/3bM9Xk9Wvhm3VS4gKiqmDAeEOM/yEG?= =?iso-8859-1?q?sOYkwzJ4KUscekZYjASOSDcl+0WkfLW66FaKCeoswErgQpEJhgrIxGkaqxMT?= =?iso-8859-1?q?6OrXG8sXCB57KJioHYi6umM4kV+QHLovUVCG3bjZKcFxW0jdQLxWno7J0mj4?= =?iso-8859-1?q?aF5pze?= 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:(13230040)(1800799024)(376014)(35042699022)(36860700013)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Sep 2024 13:21:23.1717 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cfcc292e-56b8-4026-a28f-08dcce76cdac 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: DU2PEPF00028D03.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8178 X-Spam-Status: No, score=-10.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_SHORT, 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: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org Improve small memsets by avoiding branches and use overlapping stores. Use DC ZVA for copies over 128 bytes. Remove unnecessary code for ZVA sizes other than 64 and 128. Performance of random memset benchmark improves by 24% on Neoverse N1. Passes regress, OK for commit? diff --git a/sysdeps/aarch64/memset.S b/sysdeps/aarch64/memset.S index 7ef77ee8c926de211a2c6d193a23f49808481a82..a7a5fba66712a82c2b571cc0fda1655fd1178186 100644 --- a/sysdeps/aarch64/memset.S +++ b/sysdeps/aarch64/memset.S @@ -1,4 +1,5 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Generic optimized memset using SIMD. + Copyright (C) 2012-2024 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -17,7 +18,6 @@ . */ #include -#include "memset-reg.h" #ifndef MEMSET # define MEMSET memset @@ -25,130 +25,131 @@ /* Assumptions: * - * ARMv8-a, AArch64, unaligned accesses + * ARMv8-a, AArch64, Advanced SIMD, unaligned accesses. * */ -ENTRY (MEMSET) +#define dstin x0 +#define val x1 +#define valw w1 +#define count x2 +#define dst x3 +#define dstend x4 +#define zva_val x5 +#define off x3 +#define dstend2 x5 +ENTRY (MEMSET) PTR_ARG (0) SIZE_ARG (2) - dup v0.16B, valw + cmp count, 16 + b.lo L(set_small) + add dstend, dstin, count + cmp count, 64 + b.hs L(set_128) - cmp count, 96 - b.hi L(set_long) - cmp count, 16 - b.hs L(set_medium) - mov val, v0.D[0] + /* Set 16..63 bytes. */ + mov off, 16 + and off, off, count, lsr 1 + sub dstend2, dstend, off + str q0, [dstin] + str q0, [dstin, off] + str q0, [dstend2, -16] + str q0, [dstend, -16] + ret + .p2align 4 /* Set 0..15 bytes. */ - tbz count, 3, 1f - str val, [dstin] - str val, [dstend, -8] - ret - nop -1: tbz count, 2, 2f - str valw, [dstin] - str valw, [dstend, -4] +L(set_small): + add dstend, dstin, count + cmp count, 4 + b.lo 2f + lsr off, count, 3 + sub dstend2, dstend, off, lsl 2 + str s0, [dstin] + str s0, [dstin, off, lsl 2] + str s0, [dstend2, -4] + str s0, [dstend, -4] ret + + /* Set 0..3 bytes. */ 2: cbz count, 3f + lsr off, count, 1 strb valw, [dstin] - tbz count, 1, 3f - strh valw, [dstend, -2] + strb valw, [dstin, off] + strb valw, [dstend, -1] 3: ret - /* Set 17..96 bytes. */ -L(set_medium): - str q0, [dstin] - tbnz count, 6, L(set96) - str q0, [dstend, -16] - tbz count, 5, 1f - str q0, [dstin, 16] - str q0, [dstend, -32] -1: ret - .p2align 4 - /* Set 64..96 bytes. Write 64 bytes from the start and - 32 bytes from the end. */ -L(set96): - str q0, [dstin, 16] +L(set_128): + bic dst, dstin, 15 + cmp count, 128 + b.hi L(set_long) + stp q0, q0, [dstin] stp q0, q0, [dstin, 32] + stp q0, q0, [dstend, -64] stp q0, q0, [dstend, -32] ret - .p2align 3 - nop + .p2align 4 L(set_long): - and valw, valw, 255 - bic dst, dstin, 15 str q0, [dstin] - cmp count, 256 - ccmp valw, 0, 0, cs - b.eq L(try_zva) -L(no_zva): - sub count, dstend, dst /* Count is 16 too large. */ - sub dst, dst, 16 /* Dst is biased by -32. */ - sub count, count, 64 + 16 /* Adjust count and bias for loop. */ -1: stp q0, q0, [dst, 32] - stp q0, q0, [dst, 64]! -L(tail64): - subs count, count, 64 - b.hi 1b -2: stp q0, q0, [dstend, -64] + str q0, [dst, 16] + tst valw, 255 + b.ne L(no_zva) +#ifndef ZVA64_ONLY + mrs zva_val, dczid_el0 + and zva_val, zva_val, 31 + cmp zva_val, 4 /* ZVA size is 64 bytes. */ + b.ne L(zva_128) +#endif + stp q0, q0, [dst, 32] + bic dst, dstin, 63 + sub count, dstend, dst /* Count is now 64 too large. */ + sub count, count, 64 + 64 /* Adjust count and bias for loop. */ + + /* Write last bytes before ZVA loop. */ + stp q0, q0, [dstend, -64] stp q0, q0, [dstend, -32] + + .p2align 4 +L(zva64_loop): + add dst, dst, 64 + dc zva, dst + subs count, count, 64 + b.hi L(zva64_loop) ret -L(try_zva): -#ifndef ZVA64_ONLY .p2align 3 - mrs tmp1, dczid_el0 - tbnz tmp1w, 4, L(no_zva) - and tmp1w, tmp1w, 15 - cmp tmp1w, 4 /* ZVA size is 64 bytes. */ - b.ne L(zva_128) - nop -#endif - /* Write the first and last 64 byte aligned block using stp rather - than using DC ZVA. This is faster on some cores. - */ - .p2align 4 -L(zva_64): - str q0, [dst, 16] +L(no_zva): + sub count, dstend, dst /* Count is 32 too large. */ + sub count, count, 64 + 32 /* Adjust count and bias for loop. */ +L(no_zva_loop): stp q0, q0, [dst, 32] - bic dst, dst, 63 stp q0, q0, [dst, 64] - stp q0, q0, [dst, 96] - sub count, dstend, dst /* Count is now 128 too large. */ - sub count, count, 128+64+64 /* Adjust count and bias for loop. */ - add dst, dst, 128 -1: dc zva, dst add dst, dst, 64 subs count, count, 64 - b.hi 1b - stp q0, q0, [dst, 0] - stp q0, q0, [dst, 32] + b.hi L(no_zva_loop) stp q0, q0, [dstend, -64] stp q0, q0, [dstend, -32] ret #ifndef ZVA64_ONLY - .p2align 3 + .p2align 4 L(zva_128): - cmp tmp1w, 5 /* ZVA size is 128 bytes. */ - b.ne L(zva_other) + cmp zva_val, 5 /* ZVA size is 128 bytes. */ + b.ne L(no_zva) - str q0, [dst, 16] stp q0, q0, [dst, 32] stp q0, q0, [dst, 64] stp q0, q0, [dst, 96] bic dst, dst, 127 sub count, dstend, dst /* Count is now 128 too large. */ - sub count, count, 128+128 /* Adjust count and bias for loop. */ - add dst, dst, 128 -1: dc zva, dst - add dst, dst, 128 + sub count, count, 128 + 128 /* Adjust count and bias for loop. */ +1: add dst, dst, 128 + dc zva, dst subs count, count, 128 b.hi 1b stp q0, q0, [dstend, -128] @@ -156,35 +157,6 @@ L(zva_128): stp q0, q0, [dstend, -64] stp q0, q0, [dstend, -32] ret - -L(zva_other): - mov tmp2w, 4 - lsl zva_lenw, tmp2w, tmp1w - add tmp1, zva_len, 64 /* Max alignment bytes written. */ - cmp count, tmp1 - blo L(no_zva) - - sub tmp2, zva_len, 1 - add tmp1, dst, zva_len - add dst, dst, 16 - subs count, tmp1, dst /* Actual alignment bytes to write. */ - bic tmp1, tmp1, tmp2 /* Aligned dc zva start address. */ - beq 2f -1: stp q0, q0, [dst], 64 - stp q0, q0, [dst, -32] - subs count, count, 64 - b.hi 1b -2: mov dst, tmp1 - sub count, dstend, tmp1 /* Remaining bytes to write. */ - subs count, count, zva_len - b.lo 4f -3: dc zva, dst - add dst, dst, zva_len - subs count, count, zva_len - b.hs 3b -4: add count, count, zva_len - sub dst, dst, 32 /* Bias dst for tail loop. */ - b L(tail64) #endif END (MEMSET)