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

Message ID 20251211132725.435742-1-pincheng.plct@isrc.iscas.ac.cn
Headers
Series riscv: add vectorized memset, memcpy and memmove |

Message

Pincheng Wang Dec. 11, 2025, 1:27 p.m. UTC
  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(-)