summaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2014-03-20 15:28:07 -0500
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>2014-03-20 19:46:13 -0500
commit6f23d0939e9651d8ac3c77a835fb6464b35a1dc4 (patch)
tree973400ed55f2eb85767f120cc41c33337abef187 /sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
parent8c92dfff412c20dc0c483ea68444d093a5672de0 (diff)
downloadglibc-6f23d0939e9651d8ac3c77a835fb6464b35a1dc4.tar.gz
PowerPC: optimized strpbrk for POWER7
This patch add an optimized strpbrk for POWER7 by using a different algorithm than default implementation: it constructs a table based on the 'accept' argument and use this table to check for any occurance on the input string. The idea is similar as x86_64 uses. For PowerPC some tunings were added, such as unroll loops and memory clear using VSX instructions.
Diffstat (limited to 'sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c')
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
index 328b87e5a9..91fabb0f12 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
@@ -270,5 +270,13 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
IFUNC_IMPL_ADD (array, i, strcspn, 1,
__strcspn_ppc))
+ /* Support sysdeps/powerpc/powerpc64/multiarch/strpbrk.c. */
+ IFUNC_IMPL (i, name, strpbrk,
+ IFUNC_IMPL_ADD (array, i, strpbrk,
+ hwcap & PPC_FEATURE_HAS_VSX,
+ __strpbrk_power7)
+ IFUNC_IMPL_ADD (array, i, strpbrk, 1,
+ __strpbrk_ppc))
+
return i;
}