Re: [PATCH 6/6] riscv: add vectorized rawmemchr
Kito Cheng <[email protected]> Fri, 22 May 2026 16:48:28 +0800
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CA+yXCZDG68ziwnKuAo=W77rB1Aq5D5uH5rFEaZTHVutYg+y1dg@mail.gmail.com> |
> +++ b/newlib/libc/machine/riscv/rawmemchr-asm.S > @@ -0,0 +1,30 @@ > +#if defined(__riscv_vector) && !defined(__OPTIMIZE_SIZE__) && !defined(PREFER_SIZE_OVER_SPEED) > +.text > +.option push > +.option arch, +zve32x > +.global rawmemchr > +.type rawmemchr, @function > +rawmemchr: > +#if __riscv_landing_pad > + lpad 0 > +#endif > + andi a1, a1, 0xff > +.Lloop: > + vsetvli t0, zero, e8, m8, ta, ma Same comment as memccpy > + > + vle8ff.v v0, (a0) > + vmseq.vx v8, v0, a1 > + vfirst.m a2, v8 > + > + bgez a2, .Lfound > + > + csrr a3, vl > + add a0, a0, a3 > + j .Lloop > + > +.Lfound: > + add a0, a0, a2 > + ret > +.size rawmemchr, .-rawmemchr > +.option pop > +#endif