diff options
author | Anton Blanchard via Libc-alpha <libc-alpha@sourceware.org> | 2020-05-14 09:00:26 +1000 |
---|---|---|
committer | Paul E. Murphy <murphyp@linux.vnet.ibm.com> | 2020-05-18 08:26:22 -0500 |
commit | 39037048502d52ab6422c18f2d178d6228d2c7b9 (patch) | |
tree | f1362994b4b9665a2c8843b70e92fc30f49422d6 /sysdeps/powerpc/powerpc64/multiarch/strcpy.c | |
parent | 674ea88294bfb8d89878a0ebbbcec38a85e118a5 (diff) | |
download | glibc-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.c | 7 |
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) |