S390: Add z13 memmove ifunc variant

System Internals / glibc - Stefan Liebler [linux.ibm.com] - 18 December 2018 12:57 EST

This patch introduces a z13 specific ifunc variant for memmove. As the common code implementation, it checks if we can copy from the beginning to the end - with z196 memcpy implementation - or if we have to copy from the end to the beginning. The latter case is done by using vector load/store instructions.

If vector instructions are not available, the common-code is used as fallback. Therefore it is implemented in memmove-c with a different name. Furthermore the ifunc logic decides if we need the common-code implementation at all. If vector instructions are supported due to the minimum architecture level set we can skip the common-code ifunc variant.

ChangeLog:

- sysdeps/s390/Makefile (sysdep_routines): Add memmove-c.
- sysdeps/s390/ifunc-memcpy.h (HAVE_MEMMOVE_IFUNC, HAVE_MEMMOVE_IFUNC_AND_VX_SUPPORT, MEMMOVE_DEFAULT, HAVE_MEMMOVE_C, MEMMOVE_C, HAVE_MEMMOVE_Z13, MEMMOVE_Z13): New defines.
- sysdeps/s390/memcpy-z900.S: Add z13 memmove implementation.
- sysdeps/s390/memmove-c.c: New file.
- sysdeps/s390/memmove.c: Likewise.
- sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add ifunc variants for memmove.

cdd927d98c S390: Add z13 memmove ifunc variant.
ChangeLog | 13 +++++
sysdeps/s390/Makefile | 3 +-
sysdeps/s390/ifunc-memcpy.h | 35 +++++++++++++
sysdeps/s390/memcpy-z900.S | 87 ++++++++++++++++++++++++++++++++
sysdeps/s390/memmove-c.c | 37 ++++++++++++++
sysdeps/s390/memmove.c | 44 ++++++++++++++++
sysdeps/s390/multiarch/ifunc-impl-list.c | 12 +++++
7 files changed, 230 insertions(+), 1 deletion(-)

Upstream: sourceware.org


  • Share