[PATCH 0/1] riscv: add vectorized memset, memcpy and memmove

Pincheng Wang <[email protected]> Thu, 11 Dec 2025 21:27:24 +0800
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
Hi all,

This patch adds RISC-V Vector (RVV) optimized implementations for
memset, memcpy and memmove. The implementations use the RVV extension
with e8 element size and m8 LMUL, gated behind the __riscv_v macro for
compatibility with non-vector RISC-V systems.

Benchmark results on Spacemit X60 (Muse-pi) show significant
improvements:

memset(16B, aligned): 2.57x faster.
memcpy(64B, aligned): 1.78x faster.
memmove(64B, aligned): 1.95x faster.

Improvements are consistent across aligned and misaligned accesses, with
vector operations showing particularly strong gains for aligned
addresses.

Comments and suggestions are welcome. Thanks for reviewing this work!

Thanks,
Pincheng Wang

Pincheng Wang (1):
  riscv: add vectorized memset, memcpy and memmove

 newlib/libc/machine/riscv/memcpy-asm.S  | 23 +++++++++++-
 newlib/libc/machine/riscv/memcpy.c      |  2 +-
 newlib/libc/machine/riscv/memmove-asm.S | 47 ++++++++++++++++++++++++-
 newlib/libc/machine/riscv/memmove.c     |  2 +-
 newlib/libc/machine/riscv/memset.S      | 22 ++++++++++++
 5 files changed, 92 insertions(+), 4 deletions(-)

-- 
2.39.5