Message ID | 0a7430ca97cc851c5a7d597977ce6879115783ac.camel@espressif.com |
---|---|
State | New |
Headers |
Return-Path: <newlib-bounces~patchwork=sourceware.org@sourceware.org> 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 72C843858019 for <patchwork@sourceware.org>; Mon, 27 Jan 2025 10:53:49 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 72C843858019 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=39Ftxrj/ X-Original-To: newlib@sourceware.org Delivered-To: newlib@sourceware.org Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sg2apc01on2071e.outbound.protection.outlook.com [IPv6:2a01:111:f403:200f::71e]) by sourceware.org (Postfix) with ESMTPS id 60714385829B for <newlib@sourceware.org>; Mon, 27 Jan 2025 10:47:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 60714385829B 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 60714385829B Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:200f::71e ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1737974825; cv=pass; b=Hk0qooW7pY4ZxLm4lR3gJ0p+179PxI2TjherGYVpoeliSOO2ZjQ3aISuYAWdnd7dFRvmlXMKcvSFUAmYZXE5Iv+mChdUsbN+tNPOqS81mDjWwWgv+3T8vzo3xcTJthv5/ByvVYoGAshRw89wgpnus9SD+uucvFj00Ys2LPLJGX4= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1737974825; c=relaxed/simple; bh=KtXu1gqM8rj86RHCkG5Z6E/o/H9yMziWx1SQyXjeiqQ=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=PktBXLVrYXsCe/UP5L8aQysmj5f7hsOK2i5KH7aZBT0gtmlFGC99K6zcE35SRUhYiwTRYa/FHI+xLEeGfBCGyQO/bEJvqvLBBZJFHnq4Xx1ChJ/K9s4keuEOzMXdbFTU4tDZsNcSLCI+ItXxBfUPSyUEjB0Uf5Apz1l8u/YQYr8= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 60714385829B ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VFE6ZrrkZT8mADHV2refWmTEZRKftSD3YOLq061Q1fz0kz8+WX7qktLiMEoxACpyBiqE6IVEDZvsK5JEyh5nHs/DTI9gQjkG98t3kzF42TDA+M21Kc83lUZDGpqHRsN4+hCAnv7g4nr4kvWQSxbcNS2Nkq47g4Uadz9zV183PnoiDZmyvl+bGWDU5Ymf7Wr94wSHaE/r08eNjOEzvIrV4rHLmV1t+8pyEz/T2iZ75meEGebagySssyQhycbjUgybPPhVeuWq442pK/aApU54rS0NZItS6QGkipj2A53MWKLYP4jTGMKZEu3seie0pbu59h1j88tkgXApo/t576DN9w== 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=KtXu1gqM8rj86RHCkG5Z6E/o/H9yMziWx1SQyXjeiqQ=; b=e50RQLe+wezpzFSNe9Sio/tQ+fX1GPJKf9AORXmHY22HU3ux7o79705PEnf7beAd/pcmYwg7JpReIKiNw0GQ2NUWcNVoPIUJBRCyOrci3xZssZWc5XZX07BNQP2pmIk3P8w95p9wqVH+fVZ4EBaflRUuyt1XbhO+jJbbr8tMqAYaxqf6m1lMj9Mzc9czOohriW2RYqWVL7zMQGslcHOt33JMRWQoSInF3N8OvR8a4qstMzVZdklscvGg/77gzCDXUxcTgljXQEyS8x8E0yjlm5lCZyAYHTYAko8w8jENo9eeD7YnLmUO7Mh4aVkyj5xyFD20ewfKDoVPQtU9qpPQMg== 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=KtXu1gqM8rj86RHCkG5Z6E/o/H9yMziWx1SQyXjeiqQ=; b=39Ftxrj/fg1ESxSze+bEaZKPA+4n5gRQ4H7a4L6GhI1ZKdJ8TAhstCUxRofoleSJElkO3/lAc1B20ldW3kA8RjKFT+6csnU1AdSsyg+yY5biPhwMvFmNvzugwzu4kSWXhFoF3nx2+eahN9XTq67sN3IyrcpemlQ5KwCGG64e2us= Received: from TYZPR04MB5736.apcprd04.prod.outlook.com (2603:1096:400:1fa::7) by PUZPR04MB6488.apcprd04.prod.outlook.com (2603:1096:301:f4::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8377.22; Mon, 27 Jan 2025 10:46:59 +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.8377.009; Mon, 27 Jan 2025 10:46:58 +0000 From: Alexey Lapshin <alexey.lapshin@espressif.com> To: "newlib@sourceware.org" <newlib@sourceware.org> CC: Alexey Gerenkov <alexey.gerenkov@espressif.com>, Ivan Grokhotkov <ivan@espressif.com> Subject: [PATCH 4/6] newlib: memmove: improve performance for overlapping buffers Thread-Topic: [PATCH 4/6] newlib: memmove: improve performance for overlapping buffers Thread-Index: AQHbcKjKmvv3FreN8EixJLhR84ZI7Q== Date: Mon, 27 Jan 2025 10:46:58 +0000 Message-ID: <0a7430ca97cc851c5a7d597977ce6879115783ac.camel@espressif.com> References: <4ca70bc28f5edbc5a23c747313151ac5d290f54b.camel@espressif.com> In-Reply-To: <4ca70bc28f5edbc5a23c747313151ac5d290f54b.camel@espressif.com> 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_|PUZPR04MB6488:EE_ x-ms-office365-filtering-correlation-id: 8166f0c3-fdc3-4872-40f7-08dd3ebfeccf x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|38070700018; x-microsoft-antispam-message-info: =?utf-8?q?MbsuqZDFze7G4p4wqBLx6OADax1i129?= =?utf-8?q?tk0yUYOfOOGLGOiy0aawhEQdm1M0R1fSOGpEld6B1ZOs6rGkyUPQoF+ueLCf9T9Cc?= =?utf-8?q?2y6jbqxbQLpu1aZLUCLE2+VQ4dJygTURkAolWBqUeE0HJR33/z/NqSdSK05sI4+EJ?= =?utf-8?q?CoTpvXnfszXwGi44ff8BDGyCVnFrAeP96GmYKnMQTJmxrsctcMlYAYreEXZ7bg2ZZ?= =?utf-8?q?r/PCOIChBz11nZZNA6Y9MgKgHoYqqwcDpV6u6OZhlq0iSoBxjeE4kJjFThllG7/cL?= =?utf-8?q?yQlV9Ceg8C43tHr0CkDSafUAngFRTDdPDkLxDc3mkgcqK2hs41dXawKzQ3GH80KhB?= =?utf-8?q?dtXZKC3LT0RLvuU0Zpx/mrM+6zYsRrfXIShZ4I8A/M4JjOZDl3csY3d0vcOmeVlsN?= =?utf-8?q?i+UfVut2SYuoWdZz2qv7gJjypBtYWz1KPhENe7C3wmXk35/QxN3e9SqKQ2ajv+drT?= =?utf-8?q?h/FCAByJJZnJtqRF6LJs73jfGic/enh32MNNU4FqCHoCScorDDQTaGnMBWr5nlj9h?= =?utf-8?q?aTMINBqRSynlDiwr0uUncrxNTECGMXnuUS66QVDkw/3iZYPfFvsqbfejFN4IlXF5c?= =?utf-8?q?KPQJ5BLU/7tXrEIPssUsd4Md0nWk7GiXSdmPp1JtYLwlgNKw9L/NSMCZZdxGF25RN?= =?utf-8?q?iTPvCIm0kDsufj/N36+BP2exa+vXpEPnGBTlugGTAte4JPdPxA/U4CBebS+mC5WbU?= =?utf-8?q?635zpPEeYe46EYBWTLEAe3pfdMi4ASppyGB+W8J0egzsRcOluL1+Y99IdQcyazgvN?= =?utf-8?q?3zXoyg5fIsVAtzVTfQ1M5YRFpPwRtLOi/BYTxt32YwSIvQjVW50glBV3FLMk6p026?= =?utf-8?q?RhLHpLuvQ2bd8cZ94hPBEP9FVRv6W05rVUv/aQyxm6duIvMjPsAG3Hgn0p9Cr1sz3?= =?utf-8?q?xryr98zTdydsbS62TZQEqPY32TyqOSF0lGhUiVtCp+no+T8DFL+0fADfcmflPu/vo?= =?utf-8?q?A90ut9Eqjn5WAUyBw/eJVo/1oSkI1dXX+AdFMPK/B3N3m1zOwLbPL7HDwZtc8CyM+?= =?utf-8?q?NRukoHsuT82Q2wtQglB1MaWsth+R3Sl1fSXuDCbDIKhMByNGy+0j/LPdS2my2VlFy?= =?utf-8?q?dIpswOGZ59IYeDJCx791nt2dYOE2wyrIqSM5iKngzYckrSiHXghY5iNFyo1P1k0Dw?= =?utf-8?q?LDQ/qt+ljNLo1yQZ+01b5264HY+C5iZFopURGgG62rRL58unZ39TNfelnPy4beZXh?= =?utf-8?q?2pCbuEmiG5vvcRszmEE9yE0Cq7vD8KE02ByGil6XztpSttuWolnLi6g2Nx9po6uhT?= =?utf-8?q?yd3DRSCFrgnGl7qthgTn9Ub0hqxcp3eFjxqa8UDYaaDdA/35sAfcYs5klrtbLDofz?= =?utf-8?q?xoOZMwXwb+Vs1ntrrE3YKHZljWjesHyt6TT6qX1mbhBHkVohCmoWriQiVkUDEFmoI?= =?utf-8?q?90PtzMltyuA?= 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)(1800799024)(376014)(366016)(38070700018); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?VmDpin9n2oqFNB8D3Y1Vdokw6YZr?= =?utf-8?q?IVtFIXFWx3yFU/cHLhJE/OWI3qpyarb/1zOaHeqC15vizF6UZJlRU2+mAL+SbCB15?= =?utf-8?q?COtnGgQ2e1q76CJ35B/4n+KHpJOucylJpBNXG/B5kE4wB/fekpAoW83lguTkPbLuk?= =?utf-8?q?MSTUksCOsgfrRbJsEFtSSPwjrmeecZvBNuCCStm1EAzgeDrOCjRIWmjAFgg5467RV?= =?utf-8?q?2EEQ3O7aT1F2hCpSj1GMwQap/hcjzQbcQu6Sg4Uqi1cmiAjUR1YdWzIae+hyO1NiM?= =?utf-8?q?PC1+q0znl6KobXDvu9zYzMsoUf41jd8NRqfdh5FjW7i7X79eN+6n5vh5eanxLbz5j?= =?utf-8?q?U3nCsFUdSsKDKh8LEy87/Yoxhhk6IsqV6Areiqh+Dg2gi8auwMyhAJEIT0x4+LHxB?= =?utf-8?q?fbY6PI8DajIALqn4iUfvbz3hUPVuV1VzEcyoN/RXme6OPsR4tjTfX78oxeAWe8vLp?= =?utf-8?q?RttFvAMdpakdFlx5RP2GLQzlZQc/1DfSdbwdz7gjr+J7NYjbnZYALMwjb1WIJ4Vf2?= =?utf-8?q?8Z367VangezNmNCpDr1oR01BWoU9YyRtx0fL9FQGdeEv2iy8RU+7VbTrDG4oNdKrU?= =?utf-8?q?n6lk17jL/BuK34/Nbf3+KYs93WMnVNTndLs0YIQcu+FQ9niqCFSXDDCnRf4LBAL+L?= =?utf-8?q?g4dBTbLO+ToKsyijhZwNfFQ6M+tgO87ogdZFUi+xZIf0meDiuewiDCVkGNlleRvtt?= =?utf-8?q?U3VqZJ8iEj2LGhwBviAZH9dnRNfDmIa6b1CobrW2N8yYWx8viYLsHUYm+tOmomjqb?= =?utf-8?q?xJqnha+E9qDfRN8+jbn88OIK5qeBSz5hoQJ9LkHFZ4hXLQSlt93FVKEewffsUZC7+?= =?utf-8?q?ZYNbtmnBl0rcfAmkYyZPKUJoU79C5zttWuShhYHuGE73rr1RJYLPSa+INpUIsvZn+?= =?utf-8?q?D5SMJVl3G8TdnwNHd1fBsKufCOsBHr9HTe83u308gJpEw+V4/B/vrX5rb3JysBbHB?= =?utf-8?q?XfKzpiflJ0b4s+w/8R4gvcD8Hlw35XDv+oO3PYoi11i/3rtid/rsi8xvRkmvUCMMO?= =?utf-8?q?JgFkk3SlBsv7WXBHFtWD6y4XBCeTKikrji0nC/7cAwg+KcW2gc88iyqdowtW/SAFv?= =?utf-8?q?rRgDmUBW+oQzeqaSI5BX6f3lH75TCT70Oso5o4VlqzbyIh8a+MMcjxOwQQwl9BWct?= =?utf-8?q?wKDAKHPWiLKyBHQ6lFSeNWB/Kl5YrGY8W5cyyfbdPP6vdVWpLYMHDhjUaFDnPIq62?= =?utf-8?q?tjW4bOALLRRqmRIpqu0gRtZJqOA7rigYUfkn/AQrCkMs74zGeFWPnGfdyi2B/ZM3Y?= =?utf-8?q?XPH4bJsE7pJkWLe+t6Ro+5r9xYkCmu8HhS182nRWvNVxt2o9vZ7ai4zgeQzUsFxkj?= =?utf-8?q?At6UIAY5iGR8zaaWEezzJYLblX1TuItfUxsp4jv0+dLMmm5Nd0M61dvjOAMDqhicR?= =?utf-8?q?LXNrsq7OTbrgWUIVNvkUAITDBAU7l8O9dRVpLYu0867tuZuPjgdxXd0MIkbmQotUw?= =?utf-8?q?vIkMBRn3mmPXtXFUR0LSL6qkZF9s5wnLJAON2pnrY7OvFu4RfywnX6q2uWpQQFdzC?= =?utf-8?q?yO39Tvx3Jcr0KxLtcKySdOHBVcHPF5VLzqpVKo1b6yv86wnAdD/413M=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <17C1C407BEF014489D76F732E0B2837F@apcprd04.prod.outlook.com> Content-Transfer-Encoding: base64 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: 8166f0c3-fdc3-4872-40f7-08dd3ebfeccf X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jan 2025 10:46:58.9012 (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: C/R1qfRW0GhA5gq7Uo84tIMcSY/H9z3LraLTFganNfPJqyU455ugQmh4lu8b+nkou3vPC4MzSzL5KQMNXqedk9NnRfKYt8YQtPTQijxmg1s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PUZPR04MB6488 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, T_SCC_BODY_TEXT_LINE 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 <newlib.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/newlib>, <mailto:newlib-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/newlib/> List-Post: <mailto:newlib@sourceware.org> List-Help: <mailto:newlib-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/newlib>, <mailto:newlib-request@sourceware.org?subject=subscribe> Errors-To: newlib-bounces~patchwork=sourceware.org@sourceware.org |
Series |
Refactor and optimize string/memory functions
|
|
Commit Message
Alexey Lapshin
Jan. 27, 2025, 10:46 a.m. UTC
This change provides word-sized copy for overlapping buffers, that could increase performance significantly. Performance measurement for RISCV: uint8_t buf[1024]; memmove (buf + 4, buf, sizeof(buf) - 4); CPU cycles: 12255 -> 2076 --- newlib/libc/string/memmove.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) -- 2.43.0
diff --git a/newlib/libc/string/memmove.c b/newlib/libc/string/memmove.c index 4c5ec6f83..343210680 100644 --- a/newlib/libc/string/memmove.c +++ b/newlib/libc/string/memmove.c @@ -75,10 +75,28 @@ memmove (void *dst_void, /* Destructive overlap...have to copy backwards */ src += length; dst += length; + + if (!TOO_SMALL_LITTLE_BLOCK(length) && !UNALIGNED_X_Y(src, dst)) + { + aligned_dst = (long*)dst; + aligned_src = (long*)src; + + /* Copy one long word at a time if possible. */ + while (!TOO_SMALL_LITTLE_BLOCK(length)) + { + *--aligned_dst = *--aligned_src; + length -= LITTLE_BLOCK_SIZE; + } + + /* Pick up any residual with a byte copier. */ + dst = (char*)aligned_dst; + src = (char*)aligned_src; + } + while (length--) - { - *--dst = *--src; - } + { + *--dst = *--src; + } } else {