[PATCH 2/3] aarch64: Optimized memchr specific to AmpereComputing emag
Siddhesh Poyarekar
siddhesh@gotplt.org
Thu Dec 20 12:07:00 GMT 2018
On 18/12/18 3:37 PM, Feng Xue wrote:
> This version uses general register based memory instruction to load
> data, because vector register based is slightly slower in emag.
>
> Character-matching is performed on 16-byte (both size and alignment)
> memory block in parallel each iteration.
>
> * sysdeps/aarch64/memchr.S (__memchr): Rename to MEMCHR.
> [!MEMCHR](MEMCHR): Set to __memchr.
> * sysdeps/aarch64/multiarch/Makefile (sysdep_routines):
> Add memchr_generic and memchr_base.
> * sysdeps/aarch64/multiarch/ifunc-impl-list.c
> (__libc_ifunc_impl_list): Add memchr ifuncs.
> * sysdeps/aarch64/multiarch/memchr.c: New file.
> * sysdeps/aarch64/multiarch/memchr_generic.S: Likewise.
> * sysdeps/aarch64/multiarch/memchr_base.S: Likewise.
> ---
> ChangeLog | 12 ++
> sysdeps/aarch64/memchr.S | 10 +-
> sysdeps/aarch64/multiarch/Makefile | 1 +
> sysdeps/aarch64/multiarch/ifunc-impl-list.c | 3 +
> sysdeps/aarch64/multiarch/memchr.c | 41 +++++
> sysdeps/aarch64/multiarch/memchr_base.S | 223 ++++++++++++++++++++++++++++
> sysdeps/aarch64/multiarch/memchr_generic.S | 33 ++++
> 7 files changed, 320 insertions(+), 3 deletions(-)
> create mode 100644 sysdeps/aarch64/multiarch/memchr.c
> create mode 100644 sysdeps/aarch64/multiarch/memchr_base.S
> create mode 100644 sysdeps/aarch64/multiarch/memchr_generic.S
>
> diff --git a/ChangeLog b/ChangeLog
> index b4c07e2..6386b1e 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,5 +1,17 @@
> 2018-12-17 Feng Xue <fxue@os.amperecomputing.com>
>
> + * sysdeps/aarch64/memchr.S (__memchr): Rename to MEMCHR.
> + [!MEMCHR](MEMCHR): Set to __memchr.
> + * sysdeps/aarch64/multiarch/Makefile (sysdep_routines):
> + Add memchr_generic and memchr_base.
> + * sysdeps/aarch64/multiarch/ifunc-impl-list.c
> + (__libc_ifunc_impl_list): Add memchr ifuncs.
> + * sysdeps/aarch64/multiarch/memchr.c: New file.
> + * sysdeps/aarch64/multiarch/memchr_generic.S: Likewise.
> + * sysdeps/aarch64/multiarch/memchr_base.S: Likewise.
Please call it something else, say, memchr_nosimd. Looks OK otherwise.
Thanks,
Siddhesh
More information about the Libc-alpha
mailing list