[PATCH 0/1] riscv: add vectorized memset, memcpy and memmove
Pincheng Wang
pincheng.plct@isrc.iscas.ac.cn
Thu Dec 11 13:27:24 GMT 2025
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
More information about the Newlib
mailing list