[PATCH 6/6] riscv: add vectorized rawmemchr
Kito Cheng
kito.cheng@gmail.com
Fri May 22 08:48:28 GMT 2026
> +++ 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
More information about the Newlib
mailing list