about summary refs log tree commit diff
path: root/sysdeps/s390/multiarch/utf8-utf32-z9.c
diff options
context:
space:
mode:
authorStefan Liebler <stli@linux.vnet.ibm.com>2017-06-27 17:09:42 +0200
committerStefan Liebler <stli@linux.vnet.ibm.com>2017-06-27 17:09:42 +0200
commit23ea69a9d6e9ab28c66a232b767a800b04eaa938 (patch)
tree539d557f45ce4924699329d64b04b6562bcb7dd8 /sysdeps/s390/multiarch/utf8-utf32-z9.c
parentf21f59124d8a4d22b20e7a926462937d89e8988e (diff)
downloadglibc-23ea69a9d6e9ab28c66a232b767a800b04eaa938.tar.gz
glibc-23ea69a9d6e9ab28c66a232b767a800b04eaa938.tar.xz
glibc-23ea69a9d6e9ab28c66a232b767a800b04eaa938.zip
S390: Use cu41 instruction for converting from utf32 to utf8.
This patch adds an ifunc variant to use the cu instruction on arch12 CPUs.
This new ifunc variant can be built if binutils support z13 vector
instructions.  At runtime, HWCAP_S390_VXE decides if we can use the
cu41 instruction.

ChangeLog:

	* sysdeps/s390/utf8-utf32-z9.c (__to_utf8_loop_vx_cu):
	Use vector and cu41 instruction.
	* sysdeps/s390/multiarch/utf8-utf32-z9.c: Add __to_utf8_loop_vx_cu
	in ifunc resolver.
Diffstat (limited to 'sysdeps/s390/multiarch/utf8-utf32-z9.c')
-rw-r--r--sysdeps/s390/multiarch/utf8-utf32-z9.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sysdeps/s390/multiarch/utf8-utf32-z9.c b/sysdeps/s390/multiarch/utf8-utf32-z9.c
index faf1f46aa9..0c6d9e97d8 100644
--- a/sysdeps/s390/multiarch/utf8-utf32-z9.c
+++ b/sysdeps/s390/multiarch/utf8-utf32-z9.c
@@ -41,8 +41,10 @@ s390_libc_ifunc_expr (FROM_LOOP_DEFAULT, FROM_LOOP,
 			: FROM_LOOP_DEFAULT);
 
 s390_libc_ifunc_expr (TO_LOOP_DEFAULT, TO_LOOP,
-		      (HAVE_TO_VX && (hwcap & HWCAP_S390_VX))
-		      ? TO_LOOP_VX
-		      : TO_LOOP_DEFAULT);
+		      (HAVE_TO_VX_CU && (hwcap & HWCAP_S390_VXE))
+		      ? TO_LOOP_VX_CU
+		      : (HAVE_TO_VX && (hwcap & HWCAP_S390_VX))
+			? TO_LOOP_VX
+			: TO_LOOP_DEFAULT);
 
 #include <iconv/skeleton.c>