S390: Add arch13 memmove ifunc variant.
authorStefan Liebler <stli@linux.ibm.com>
Fri, 22 Mar 2019 10:14:08 +0000 (11:14 +0100)
committerStefan Liebler <stli@linux.ibm.com>
Fri, 22 Mar 2019 10:14:08 +0000 (11:14 +0100)
commit96fbb9a328232e42814334d6e29a9a9c7995c01d
tree3df42c7279ddb720eb4b57cd5f685619d8bad08d
parenta899a5512f618d5c4093a2d65e8dee07c791b0ab
S390: Add arch13 memmove ifunc variant.

This patch introduces the new arch13 ifunc variant for memmove.
For the forward or non-overlapping case it is just using memcpy.
For the backward case it relies on the new instruction mvcrl.
The instruction copies up to 256 bytes at once.
In case of an overlap, it copies the bytes like copying them
one by one starting from right to left.

ChangeLog:

* sysdeps/s390/ifunc-memcpy.h (HAVE_MEMMOVE_ARCH13, MEMMOVE_ARCH13
HAVE_MEMMOVE_IFUNC_AND_ARCH13_SUPPORT): New defines.
* sysdeps/s390/memcpy-z900.S: Add arch13 memmove implementation.
* sysdeps/s390/memmove.c (memmove): Add arch13 variant in
ifunc selector.
* sysdeps/s390/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add ifunc variant for arch13 memmove.
* sysdeps/s390/multiarch/ifunc-resolve.h (S390_STFLE_BITS_ARCH13_MIE3,
S390_IS_ARCH13_MIE3): New defines.
ChangeLog
sysdeps/s390/ifunc-memcpy.h
sysdeps/s390/memcpy-z900.S
sysdeps/s390/memmove.c
sysdeps/s390/multiarch/ifunc-impl-list.c
sysdeps/s390/multiarch/ifunc-resolve.h