Re: [PATCH 0/6] riscv: add vectorized mem* routines

Kito Cheng <[email protected]> Fri, 22 May 2026 20:36:50 +0800
Newsgroups gmane.comp.lib.newlib
Message-ID <CA+yXCZCQt2tJZcmK25aq=22+dLWWac8rztZmaHOsrOkOw7kg-Q@mail.gmail.com>
Pushed 1/6~6/6 with minor tweaks about dropping .option and indent adjust :=
)

Kito Cheng <[email protected]> =E6=96=BC 2026=E5=B9=B45=E6=9C=8814=E6=97=
=A5=E9=80=B1=E5=9B=9B =E4=B8=8A=E5=8D=8810:09=E5=AF=AB=E9=81=93=EF=BC=9A
>
> quick ack:
>
> Thanks for the patchset! it put on my task list and will review soon :)
>
> Pincheng Wang <[email protected]> =E6=96=BC 2026=E5=B9=B45=
=E6=9C=8813=E6=97=A5=E9=80=B1=E4=B8=89 =E4=B8=8B=E5=8D=8811:40=E5=AF=AB=E9=
=81=93=EF=BC=9A
> >
> > Hi all,
> >
> > This is a follow-up series to the previous patches that added RVV
> > support for memset, memcpy, and memmove. This patch series implements
> > RVV (RISC-V Vector Extension) support for several remaining mem*
> > interfaces.
> >
> > Please note that some implementations, such as memrchr, do not use the
> > e8 element size and m8 LMUL combination, since they did not show good
> > acceleration results during testing on our Muse Pi (Spacemit X60 core).
> >
> > I have also noticed that other architectures rarely implement all mem*
> > interfaces with architecture-specific optimizations, and I fully
> > understand the maintenance burden introduced by too many hand-written
> > assembly implementations. Therefore, although I submitted RVV
> > implementations for all mem* interfaces, it may make sense to discuss
> > whether only a subset of these patches should be merged.
> >
> > Comments and suggestions are greatly appreciated. Thank you for your
> > time and review!
> >
> > Best regards,
> > Pincheng Wang
> >
> > Pincheng Wang (6):
> >   riscv: add vectorized memccpy
> >   riscv: add vectorized memchr
> >   riscv: add vectorized memcmp
> >   riscv: add vectorized mempcpy
> >   riscv: add vectorized memrchr
> >   riscv: add vectorized rawmemchr
> >
> >  newlib/libc/machine/riscv/Makefile.inc    | 26 ++++++++++-
> >  newlib/libc/machine/riscv/memccpy-asm.S   | 39 ++++++++++++++++
> >  newlib/libc/machine/riscv/memccpy.c       |  5 ++
> >  newlib/libc/machine/riscv/memchr-asm.S    | 37 +++++++++++++++
> >  newlib/libc/machine/riscv/memchr.c        |  4 ++
> >  newlib/libc/machine/riscv/memcmp-asm.S    | 43 +++++++++++++++++
> >  newlib/libc/machine/riscv/memcmp.c        |  5 ++
> >  newlib/libc/machine/riscv/mempcpy-asm.S   | 57 +++++++++++++++++++++++
> >  newlib/libc/machine/riscv/mempcpy.c       |  5 ++
> >  newlib/libc/machine/riscv/memrchr-asm.S   | 40 ++++++++++++++++
> >  newlib/libc/machine/riscv/memrchr.c       |  4 ++
> >  newlib/libc/machine/riscv/rawmemchr-asm.S | 30 ++++++++++++
> >  newlib/libc/machine/riscv/rawmemchr.c     |  5 ++
> >  13 files changed, 298 insertions(+), 2 deletions(-)
> >  create mode 100644 newlib/libc/machine/riscv/memccpy-asm.S
> >  create mode 100644 newlib/libc/machine/riscv/memccpy.c
> >  create mode 100644 newlib/libc/machine/riscv/memchr-asm.S
> >  create mode 100644 newlib/libc/machine/riscv/memcmp-asm.S
> >  create mode 100644 newlib/libc/machine/riscv/memcmp.c
> >  create mode 100644 newlib/libc/machine/riscv/mempcpy-asm.S
> >  create mode 100644 newlib/libc/machine/riscv/mempcpy.c
> >  create mode 100644 newlib/libc/machine/riscv/memrchr-asm.S
> >  create mode 100644 newlib/libc/machine/riscv/rawmemchr-asm.S
> >  create mode 100644 newlib/libc/machine/riscv/rawmemchr.c
> >
> > --
> > 2.39.5
> >