From patchwork Mon Feb 10 13:09:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexey Lapshin X-Patchwork-Id: 106254 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id CEB973858427 for ; Mon, 10 Feb 2025 13:09:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CEB973858427 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=espressifsystems.onmicrosoft.com header.i=@espressifsystems.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-espressifsystems-onmicrosoft-com header.b=QA45z4M4 X-Original-To: newlib@sourceware.org Delivered-To: newlib@sourceware.org Received: from HK2PR02CU002.outbound.protection.outlook.com (mail-eastasiaazlp170100000.outbound.protection.outlook.com [IPv6:2a01:111:f403:c400::]) by sourceware.org (Postfix) with ESMTPS id B5A6D3858CDA for ; Mon, 10 Feb 2025 13:09:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B5A6D3858CDA Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=espressif.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=espressif.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B5A6D3858CDA Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c400:: ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1739192962; cv=pass; b=M4FvF+v7XsyI6rf3Cb7D9JzyqdTe9kSSMeuIHBT2ZY1NnD+VWizoKoyx30D+wErYtXtsCZQYgRJPONhePGkcIJovRRyXodcYlYv/S47+MP8gobPsI7w3gDfdzRQW6u7FBh9hWZs13UEnLB09p/H79Ja99GJN9/tkibpY8jmU5z4= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1739192962; c=relaxed/simple; bh=xW+utgqERXTClwcz+M3ljDoq21YXHDAMbvxeVj1zqXE=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=A8CN+LwjihxfXueq8m4mW9YVHyjZ6YTShIKsoQhtgRUFavSCY4n3llgk9kXN/ejJ2vSZRe/QKMqM38nCHVfqBOTMYs7pSkO5mRXxDf79x8qXwvpqKrvYKbZU3dz7pq4ZPNX5rrTqHNlsZ5dKblhgSLsk/WfNIJRFFt5xxMspuRI= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B5A6D3858CDA ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BBpPSADaVpYUV6+jNNserr0+xTyQw+GSeMjpBb2YulrlFjRZzhsyZntmRXEk3jfDZC+D6WPpJPm2pAnfwSZZzImp5U1dUk8bH9Xlcz36rRKLXKuJXljmIUdQm21GbJoRJB9g5CzGkAapmwG9Sp9T6p1tW/CugU16ZX8UDt25gvFhL/uO6jfY9Dh37CM96Qu9t0TgfaRBvzcxQBXk0ln2EIvJqKba3Gmv+2w1zzEfrSvv32K2W3eApFNv0UYp5B4MhgHesuRaEezwQ7DFp96Lm9U1rgPQ1LGmenn5aZNqo9PhZrAxO9wTUZ0e5k0rp8eVo0s1FKOGg00wb7iIE0z+Jg== 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=xW+utgqERXTClwcz+M3ljDoq21YXHDAMbvxeVj1zqXE=; b=RHV4NIUXf9WsMiF92TuuYL5LReJg3jKCEqpXS/gk0GbZ90qfJGDGjdX+EG4E3dCMTOiYUl3Z2awgrGYAs9v0ek9L9XT5jgxo0hgI14Imkkh2x7cc84MOs5bV5jGSLGQEtZ9sy3DtM3Urq7BJiHJsRr4UN9pn+Y1SEj4tzp46HxMzLSQgtYWWIMtZ8fg+Xjv65qBG88oM+9Z3Kqx1pSDXo6vHzadxhB0APRIx28eAShbBE6MjDt8DeeBg/dakErJUnangORI0YQ48A9eEOtHaFvJMib5f5aBTKKTBbvKZQ3g5R4d1mWAUrfagJ8ndmMWbPfg/9W7U3ib/1XIiloovaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=espressif.com; dmarc=pass action=none header.from=espressif.com; dkim=pass header.d=espressif.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=espressifsystems.onmicrosoft.com; s=selector1-espressifsystems-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xW+utgqERXTClwcz+M3ljDoq21YXHDAMbvxeVj1zqXE=; b=QA45z4M4LPEWcNv2hkCFwhtdUjgNKycQ4j/KyU4SU5MvARTQ8jIJUiUeq9BdzU2562ghypwXx9kSQisDlYaC7bdEUakTsanKUsBgG4Bkifj+WZ5YBHZRNMOH5RrmUxk6Ri7N45DeBp+NCek+SyTDOraKb0Sjy7UuoppGXsAtrm8= Received: from TYZPR04MB5736.apcprd04.prod.outlook.com (2603:1096:400:1fa::7) by SEZPR04MB6947.apcprd04.prod.outlook.com (2603:1096:101:e3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.16; Mon, 10 Feb 2025 13:09:10 +0000 Received: from TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::6d6:9923:c880:a521]) by TYZPR04MB5736.apcprd04.prod.outlook.com ([fe80::6d6:9923:c880:a521%6]) with mapi id 15.20.8422.011; Mon, 10 Feb 2025 13:09:10 +0000 From: Alexey Lapshin To: "vinschen@redhat.com" CC: Alexey Gerenkov , "jjohnstn@redhat.com" , "newlib@sourceware.org" , "christian.herber@oss.nxp.com" , Ivan Grokhotkov , "torbjorn.svensson@foss.st.com" Subject: [PATCH 6/6 v5] newlib: introduce --enable-newlib-hw-misaligned-access option Thread-Topic: [PATCH 6/6 v5] newlib: introduce --enable-newlib-hw-misaligned-access option Thread-Index: AQHbe7z5qBPdrUKFXEWlN+V3meszzQ== Date: Mon, 10 Feb 2025 13:09:09 +0000 Message-ID: <8af2dcc2e26ac16a3f1702b29b9f4d5bf9e4f2d9.camel@espressif.com> References: <4ca70bc28f5edbc5a23c747313151ac5d290f54b.camel@espressif.com> <82e474ec108b8812b3e02862659923dd18844618.camel@espressif.com> <8d0b4c8d357c42c295456db562c7272830b75294.camel@espressif.com> <14a8cca8bac36b2f69b9f3bf93b7e06755e2f5db.camel@espressif.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=espressif.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYZPR04MB5736:EE_|SEZPR04MB6947:EE_ x-ms-office365-filtering-correlation-id: 05838f95-3599-4a1f-7e5d-08dd49d41b8b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|366016|1800799024|38070700018; x-microsoft-antispam-message-info: =?utf-8?q?/fROf18lDZ3z8QC7brQIgGragqx6P45?= =?utf-8?q?rNgeXWuicNQhqzSTLNjjIr0qNR/faqrEN+DR4XXvoK7NyfF0LYBwqO5z8QYesGLcc?= =?utf-8?q?NJRMcHavfWphME0DFBYrhxPqfCq6Ynr2JogaU/Ae+uBz0xu0Qw6YGMd+vv3MD3uLH?= =?utf-8?q?BTNpdtPY93C647dLq/iaun5BoXHXclDF8XtTN7JIKLQFUlrKzRmyYfzLuu0KKpNeH?= =?utf-8?q?6Z/czm0Tb93wAQWz2+NCn5UZk652yFZnghP1nDa7SpW9oIbBu3d784Ro2CYtL9X3M?= =?utf-8?q?uGGJnVVO0ebbw0DL3/Y2VGjm4Pn4KX1sRqKG4OcQCSdRXOP0k5gA1v0hbf6mYTikB?= =?utf-8?q?8BAocNNRWwAS9Vuu2pTmVRXHGInnr68dMbvjgVK4EWkwzbp1tWelb4jUQQunj4vlT?= =?utf-8?q?0WthL7ZM21j72ZxzJ56sdJLZAzuIVedUywMze3m7zI2nZZi8IW75LcqMDXZIc9b5I?= =?utf-8?q?ymBM4h/KYhLCPt66Y6EH12W+lt74zykC9RdcTEuuUuiphTriuLk8hUCRpAJtexs3W?= =?utf-8?q?POG9F322pAceQch+J+PRe1ze5/gzhqboOe/8e87KJYNk6dUutHmJwXGj4WnGSvlp8?= =?utf-8?q?RT6zhHQ/rHCUc8LZZK5CFTnQD1WZEcQe6vb57l/1Ntmqvnswy+pq2kCUSeoRfF5d9?= =?utf-8?q?oD3Ejgg7VhS5uQE8jPNgq7sUjWy7K9gb/4twZpEZ8U8ySb5fHmLLVsiIKsLEAFP7p?= =?utf-8?q?7dvVU4LH8HvO3Bgmu+R0Vu0jHPsfduBzW77CdpJRSjtubl1ZaXE0Ye7pFs8j14iCP?= =?utf-8?q?Y8QumYsbspkAI5G8b3sIspegxjdztcdBNpy4CtW9cqHX9stqtWaxPGtJu7g7Yk+VT?= =?utf-8?q?eW8dEn/8LISN+GD2jgdRDSu189L+rG9AyczmauDI/oHCJ+R0MiuVDhDND3yyrpMFv?= =?utf-8?q?cmC/Pf6x6sJdykJ5lTvTRjiPGb3T9QJxtXVYs7Gs7XX+/Oy/hgAIu56Bb6f+hBZNX?= =?utf-8?q?ANCZchoAoCKA+SJUEKcdAAX7m5T9s2iTV6aa/xHvvtG56PrvuY0lndHuQM2WimtCe?= =?utf-8?q?9Ji+PoVPFsUi/C42xgDwR4vjC28rFZinxF1NrKnP9znU4q1M/AiKMIn6aWPBg3AOO?= =?utf-8?q?FHCUkx4tVuWg+Hj3mGYXhOhVccMBUzV0knx/wy7H0XqAsYz/3lFDtIDfhoisdZOII?= =?utf-8?q?CzKVOy85q77SzbSrD9nt0xR4tnAeu0b4JQJtYiEO7PY+KOxalDpbEeepudx5oz2p5?= =?utf-8?q?3fJZ/i5v/Akmhlr3f4wrKuZKH+q3fZ66foMdMFs2xeSFJUQOH6kbG1BCajZ6erf6c?= =?utf-8?q?dVxEpTqtq+xTnxAvYzVNv6KbNFU0MBR+gfkkTiVDpe8nSUef0m4lh2ap1i8W+YTnk?= =?utf-8?q?a6c0icMIt3drnbV0qZXP+TDadxSzqMv0tG+0yJSJus+ANSD8dJNTFLporhdPyc/1Q?= =?utf-8?q?RalNcifyq04?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:TYZPR04MB5736.apcprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(38070700018); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?58/PyJzkLFFygiFPKzqNj9DbVM64?= =?utf-8?q?SHaZ8m+sgt46R8Mid+MuRc7PLKnYFJCTZ9IaHqEZWqDLdt85dwAfprSKcT9XRh5Y8?= =?utf-8?q?fHz73zBRY1uOkwWDDLjCEK8g8hwU+h4d4d+zxbFaMCbvTQW7o7VoOw6bctbLsvzbj?= =?utf-8?q?2wL0g7K7p3X4TECBW2oX14+tMl4VkHYcQqar4vFuxb/zpehXMln1NssmYXUJBLhCi?= =?utf-8?q?KjV1eqqdKL7BwXP7M3vvCqGlTOx12W67NObTOw+vHznUYFMo1DK+mvvDPncjs7kgO?= =?utf-8?q?2Xivwq5yFAeJ356IMn3PkK9bdnozbwZ9DykU/QPHojaXX/cDEkDVPM2GXInNQCmJK?= =?utf-8?q?UISaPuB0tgLbTMzZXQBC4PlULwSODb32XfeZ5qUvAW770GfDDFmiHUaLmz80nfTiJ?= =?utf-8?q?ZDhFoft/sCLsIuX7XVzf0n4aUAmtxecl4OvFZ3iqL1BE3veoWENdZ56eF1Hau+jND?= =?utf-8?q?se8zsN+VZsE+vsCU49lqY8JXjv/YsW+nWTFKnfGXjjbSwkklgCuK0jVll3QFsWHB+?= =?utf-8?q?icnjID4FNcfGufih99Oi4MayEpHDzQV889hQVWUVJfsTWr13VckwhfVjomijqEvz/?= =?utf-8?q?GLNediL6Kcv5QbeYGkt1rMbVO0PSR+hFIR6cxE9w60L6T2z4C3azZCtxtXdFSPcJ5?= =?utf-8?q?m9Kh4hkE1teFPJlXxYVsehc9recSEaZd240adi3GG0pw/txuAAUvTpN3QVFME69g3?= =?utf-8?q?OTjl0tFrk/WTTJOOIfKSAoZgwiY1ZATaest70VTf4IIaxnsQ7CsIMIDS09nr4N4au?= =?utf-8?q?HOdgawU7M6gR9V+CAOZN0o7eSQWnx8234Ol4rKV9LSxZ+mCFF5V4LCG22uNBtR4Na?= =?utf-8?q?KEKSHFxQkvMkX2xrGEZu96Lq0SEEeP/GJ2zQLWs6FGbmp+48NBLbkWZRaO1aAXo+F?= =?utf-8?q?DAnhk/P3HZZxbBZUWu+aiN06eBNwJ00NPbAM2kpcanAw3ksf6kQiF3naROyVWrANA?= =?utf-8?q?c0cuPmW2+D+foEKjuhdpsVqu2gL6xwVJ0aqJmQP4L5+5VSsmx36D00qFfhKFon4Ky?= =?utf-8?q?PZ8oORIXJWH2UezhryOhxoMONfbgzKeYRPa3LVo9anM8mb8JYstqXWINetz8z8uQp?= =?utf-8?q?L/PJ1LWgGr7VqPRHzFapCDKxfrJaecB8a1t/y16qUc6DrHdxXwzuuIx9qPND9bjaB?= =?utf-8?q?UgNpZ6ymMAA56wG182LrBf1gSWP2q+VXOJhiCAmmk73sPhG22JBpcE20sc4Lc0TyG?= =?utf-8?q?PMSwQu1BxeXdQPcmLoyIBmTaaSbUFmLD5qsbPHR6xabVAUHFn7GiYUCOx1v3t7ZjK?= =?utf-8?q?PlEdo+1IJnNA6G5EIkWB22oC9pVicGpdvLrUprW4qgVHbFfeb2UTXjC0BHHjpvPw3?= =?utf-8?q?/WNIvBTtZPELjHRlwQN2pJKTfgKqCBZwdPN7JTopnGvhTV0SjBadxWmSiG1sdexzi?= =?utf-8?q?Q7N4caf/92Dkrpwnq7ZtXo6/Rgbn2LebGb8wv9OIgyB6jFjnva/k0s0vdDN29kpwV?= =?utf-8?q?wMa0mcZaAIKZ5xAANQKmtw7NCyKJjmqzwU/r8MEwwn89lY/8QDuGk4fsTmd4ecYvw?= =?utf-8?q?VEBNdd+WTALpHwbIyfYaKmE3AVqpgmazZ2nKWwX2hvAz8Yn0frjN3Bk=3D?= Content-ID: <8968EC408797CB44950F54E60B63361E@apcprd04.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: espressif.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYZPR04MB5736.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 05838f95-3599-4a1f-7e5d-08dd49d41b8b X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Feb 2025 13:09:10.0056 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5faf27fd-3557-4294-9545-8ea74a409f39 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tCQb7YZgCDiJMuiYdF7mS3r8XWXo5xk8xmBfL5iqP1fRCzwHaDFdVtv6c//f02vjjZf14ZTEqeGB+ttX4H4I6oG5ppKvtSBhEdCy7G+uZHA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR04MB6947 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, SPF_HELO_PASS, SPF_PASS, TXREP 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: newlib@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: newlib-bounces~patchwork=sourceware.org@sourceware.org Some hardware may perform better when copying unaligned word-sized memory compared to byte-by-byte copying. In case not defined explicitly by --enable-newlib-hw-misaligned-access config option or variable $default_newlib_hw_misaligned_access in configure.host file the compiler check will be performed to detect if __riscv_misaligned_fast or __riscv_misaligned_slow is defined. This commit introduces autodetection for RISC-V. Additionally, checking for __ARM_FEATURE_UNALIGNED could be checked for ARM architecture. However, this was not implemented in the commit, as changes in newlib/libc/machine/[arm|aarch64] need to be performed. --- newlib/README | 7 ++++++ newlib/configure.ac | 34 ++++++++++++++++++++++++++++++ newlib/configure.host | 6 ++++++ newlib/libc/machine/riscv/memcpy.c | 4 ++++ newlib/libc/machine/riscv/strcmp.S | 5 ++++- newlib/libc/machine/riscv/strcpy.c | 2 ++ newlib/libc/string/local.h | 11 +++++++++- 7 files changed, 67 insertions(+), 2 deletions(-) -- 2.43.0 diff --git a/newlib/README b/newlib/README index e652c4a92..ce4149b7a 100644 --- a/newlib/README +++ b/newlib/README @@ -477,6 +477,13 @@ One feature can be enabled by specifying `--enable-FEATURE=yes' or Disabled by default. +`--enable-newlib-hw-misaligned-access' + Use word-by-word access for misaligned memory in string functions + (e.g., memcpy, strcmp, etc.) instead of byte-by-byte access. + This approach may offer better performance on some architectures + that have little to no penalty for unaligned memory access. + Disabled by default. + Running the Testsuite ===================== diff --git a/newlib/configure.ac b/newlib/configure.ac index c6833cfb1..a4807830e 100644 --- a/newlib/configure.ac +++ b/newlib/configure.ac @@ -322,6 +322,17 @@ AC_ARG_ENABLE(newlib-use-malloc-in-execl, *) AC_MSG_ERROR(bad value ${enableval} for newlib-use-malloc-in-execl option) ;; esac], [newlib_use_malloc_in_execl=no])dnl +dnl Support --enable-newlib-hw-misaligned-access +AC_ARG_ENABLE(newlib-hw-misaligned-access, +[ --enable-newlib-hw-misaligned-access Use hardware word-by-word access instead of byte-by-byte for misaligned memory ], +[if test "${newlib_hw_misaligned_access+set}" != set; then + case "${enableval}" in + yes) newlib_hw_misaligned_access=yes;; + no) newlib_hw_misaligned_access=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for newlib-hw-misaligned-access option) ;; + esac + fi], [newlib_hw_misaligned_access=])dnl + AM_ENABLE_MULTILIB(, ..) NEWLIB_CONFIGURE(.) @@ -540,6 +551,29 @@ if test "${newlib_use_malloc_in_execl}" = "yes"; then AC_DEFINE(_EXECL_USE_MALLOC, 1, [Define if using malloc for execl, execle and execlp.]) fi +if test "x${newlib_hw_misaligned_access}" = "x"; then + AC_CACHE_CHECK([if $CC has enabled misaligned hardware access], + [newlib_cv_hw_misaligned_access], [dnl + cat > conftest.c <