Re: [PATCH v3 0/1] riscv: add vectorized memset, memcpy and memmove
Kito Cheng <[email protected]> Mon, 20 Apr 2026 16:12:48 +0800
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CA+yXCZDV-UCvbC-kc7WAvwo=UHCc+1TaFzZtUDMC+Z0e7s8YPw@mail.gmail.com> |
pushed, thanks :) Kito Cheng <[email protected]> 於 2026年4月16日週四 下午10:26寫道: > > ack, it seems ok, let me merge tomorrow after local testing pass > > Pincheng Wang <[email protected]> 於 2026年4月16日週四 下午9:18寫道: > > > > Hi all, > > > > Gentle ping on this patch series. Please let me know if you need any > > clarifications, reworks, or further testing from my end. :) > > > > Moreover, I’m also ready to upstream more RVV-enabled string functions > > for newlib once this series lands, so I’d welcome any early feedback on > > the overall direction. > > > > Best regards, > > Pincheng Wang > > > > On 2026/3/5 14:19, Pincheng Wang wrote: > > > Hi all, > > > > > > This v3 patch adds RISC-V Vector (RVV) optimized implementations for > > > memset, memcpy and memmove. > > > > > > Changes since v2: > > > - Changed conditional compilation order, so vector path will not be > > > chosen when optimizing for size. > > > > > > Changes since v1: > > > - Switch the conditional compilation macro from __riscv_v to > > > __riscv_vector. > > > - Replaced '.option arch,+v' with '.option arch,+zve32x'. > > > - Removed an unnecessary unconditional jump instruction in > > > memmove-asm.S. > > > - In memcpy and memmove, when __riscv_misaligned_fast is not defined, > > > the destination address is now aligned to SZREG to improve performance > > > on systems with slow misaligned accesses. > > > > > > These implementations use the RVV extension with e8 element size and m8 > > > LMUL, and are conditionally compiled only when __riscv_vector is > > > defined, ensuring compatibility with non-vector RISC-V systems. > > > > > > Benchmark results on Spacemit X60 (Muse-pi) and Canaan K230 show > > > significant improvements. > > > > > > memcpy: Up to 4.84x on Muse-pi and 4.66x on K230. > > > memset: Up to 4.31x on Muse-pi and 3.14x on K230. > > > memmove: Up to 2.87x on Muse-pi and 1.48x on K230. > > > > > > Comments and suggestions are greatly appreciated. Thank you for your > > > time and review! > > > > > > Best regards, > > > Pincheng Wang > > > > > > Pincheng Wang (1): > > > riscv: add vectorized memset, memcpy and memmove > > > > > > newlib/libc/machine/riscv/memcpy-asm.S | 52 ++++++++++++++ > > > newlib/libc/machine/riscv/memcpy.c | 2 +- > > > newlib/libc/machine/riscv/memmove-asm.S | 93 +++++++++++++++++++++++++ > > > newlib/libc/machine/riscv/memmove.c | 2 +- > > > newlib/libc/machine/riscv/memset.S | 18 +++++ > > > 5 files changed, 165 insertions(+), 2 deletions(-) > > > > >