aboutsummaryrefslogtreecommitdiff
path: root/string
diff options
context:
space:
mode:
authorStefan Liebler <stli@linux.vnet.ibm.com>2015-08-26 10:26:23 +0200
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>2015-08-26 10:26:23 +0200
commitcf150d45a97c6bb8410d6d3acf6e1560e8fe96cc (patch)
tree678f57e8e7da3268797cd6567617a27491e4d0fa /string
parentcee82e70ccb7b2f054cd781b0a603ae244523e72 (diff)
downloadglibc-cf150d45a97c6bb8410d6d3acf6e1560e8fe96cc.zip
glibc-cf150d45a97c6bb8410d6d3acf6e1560e8fe96cc.tar.gz
glibc-cf150d45a97c6bb8410d6d3acf6e1560e8fe96cc.tar.bz2
S390: Optimize strchr and wcschr.
This patch provides optimized versions of strchr and wcschr with the z13 vector instructions. ChangeLog: * sysdeps/s390/multiarch/strchr-c.c: New File. * sysdeps/s390/multiarch/strchr-vx.S: Likewise. * sysdeps/s390/multiarch/strchr.c: Likewise. * sysdeps/s390/multiarch/wcschr-c.c: Likewise. * sysdeps/s390/multiarch/wcschr-vx.S: Likewise. * sysdeps/s390/multiarch/wcschr.c: Likewise. * sysdeps/s390/multiarch/Makefile (sysdep_routines): Add strchr and wcschr functions. * sysdeps/s390/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list): Add ifunc test for strchr, wcschr. * string/strchr.c (STRCHR): Define and use macro. * benchtests/bench-wcschr.c: New File. * benchtests/Makefile (wcsmbs-bench): Add wcschr.
Diffstat (limited to 'string')
-rw-r--r--string/strchr.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/string/strchr.c b/string/strchr.c
index f13b2b3..f73891d 100644
--- a/string/strchr.c
+++ b/string/strchr.c
@@ -25,9 +25,13 @@
#undef strchr
+#ifndef STRCHR
+# define STRCHR strchr
+#endif
+
/* Find the first occurrence of C in S. */
char *
-strchr (const char *s, int c_in)
+STRCHR (const char *s, int c_in)
{
const unsigned char *char_ptr;
const unsigned long int *longword_ptr;
@@ -175,7 +179,7 @@ strchr (const char *s, int c_in)
}
#ifdef weak_alias
-#undef index
+# undef index
weak_alias (strchr, index)
#endif
libc_hidden_builtin_def (strchr)