aarch64: Optimized memset specific to AmpereComputing emag

System Internals / glibc - Feng Xue [os.amperecomputing.com] - 1 February 2019 12:59 EST

This version uses general register based memory store instead of
vector register based, for the former is faster than the latter in emag.

The fact that DC ZVA size in emag is 64-byte, is used by IFUNC dispatch to select this memset, so that cost of runtime-check on DC ZVA size can be saved.

- sysdeps/aarch64/multiarch/Makefile (sysdep_routines): Add memset_emag.
- sysdeps/aarch64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add __memset_emag to memset ifunc.
- sysdeps/aarch64/multiarch/memset.c (libc_ifunc): Add IS_EMAG check for ifunc dispatch.
- sysdeps/aarch64/multiarch/memset_base64.S: New file.
- sysdeps/aarch64/multiarch/memset_emag.S: New file.

c7d3890ff5 aarch64: Optimized memset specific to AmpereComputing emag
ChangeLog | 11 ++
sysdeps/aarch64/multiarch/Makefile | 3 +-
sysdeps/aarch64/multiarch/ifunc-impl-list.c | 1 +
sysdeps/aarch64/multiarch/memset.c | 5 +-
sysdeps/aarch64/multiarch/memset_base64.S | 178 ++++++++++++++++++++++++++++
sysdeps/aarch64/multiarch/memset_emag.S | 32 +++++
6 files changed, 228 insertions(+), 2 deletions(-)

Upstream: sourceware.org


  • Share