about summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc64/multiarch/strcpy.c
diff options
context:
space:
mode:
authorAnton Blanchard via Libc-alpha <libc-alpha@sourceware.org>2020-05-14 09:00:26 +1000
committerPaul E. Murphy <murphyp@linux.vnet.ibm.com>2020-05-18 08:26:22 -0500
commit39037048502d52ab6422c18f2d178d6228d2c7b9 (patch)
treef1362994b4b9665a2c8843b70e92fc30f49422d6 /sysdeps/powerpc/powerpc64/multiarch/strcpy.c
parent674ea88294bfb8d89878a0ebbbcec38a85e118a5 (diff)
downloadglibc-39037048502d52ab6422c18f2d178d6228d2c7b9.tar.gz
glibc-39037048502d52ab6422c18f2d178d6228d2c7b9.tar.xz
glibc-39037048502d52ab6422c18f2d178d6228d2c7b9.zip
powerpc: Optimized strcpy for POWER9
This version uses VSX store vector with length instructions and is
significantly faster on small strings and relatively unaligned large
strings, compared to the POWER8 version. A few examples:

                                        __strcpy_power9  __strcpy_power8
Length   16, alignments in bytes  0/ 0: 2.52454          4.62695
Length  412, alignments in bytes  4/ 0: 11.6             22.9185
Diffstat (limited to 'sysdeps/powerpc/powerpc64/multiarch/strcpy.c')
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcpy.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcpy.c b/sysdeps/powerpc/powerpc64/multiarch/strcpy.c
index 66ea93b8f4..dcdee5181f 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcpy.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcpy.c
@@ -25,9 +25,16 @@
 extern __typeof (strcpy) __strcpy_ppc attribute_hidden;
 extern __typeof (strcpy) __strcpy_power7 attribute_hidden;
 extern __typeof (strcpy) __strcpy_power8 attribute_hidden;
+# ifdef __LITTLE_ENDIAN__
+extern __typeof (strcpy) __strcpy_power9 attribute_hidden;
+# endif
 #undef strcpy
 
 libc_ifunc_redirected (__redirect_strcpy, strcpy,
+# ifdef __LITTLE_ENDIAN__
+			(hwcap2 & PPC_FEATURE2_ARCH_3_00)
+			? __strcpy_power9 :
+# endif
 		       (hwcap2 & PPC_FEATURE2_ARCH_2_07)
 		       ? __strcpy_power8
 		       : (hwcap & PPC_FEATURE_HAS_VSX)