aboutsummaryrefslogtreecommitdiff
path: root/string
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 /string
parent8c92dfff412c20dc0c483ea68444d093a5672de0 (diff)
downloadglibc-6f23d0939e9651d8ac3c77a835fb6464b35a1dc4.tar
glibc-6f23d0939e9651d8ac3c77a835fb6464b35a1dc4.tar.gz
glibc-6f23d0939e9651d8ac3c77a835fb6464b35a1dc4.tar.bz2
glibc-6f23d0939e9651d8ac3c77a835fb6464b35a1dc4.zip
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 'string')
-rw-r--r--string/strpbrk.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/string/strpbrk.c b/string/strpbrk.c
index ce33b684ef..a694242161 100644
--- a/string/strpbrk.c
+++ b/string/strpbrk.c
@@ -15,21 +15,17 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined _LIBC || defined HAVE_CONFIG_H
-# include <string.h>
-#endif
+#include <string.h>
#undef strpbrk
+#ifndef STRPBRK
+#define STRPBRK strpbrk
+#endif
+
/* Find the first occurrence in S of any character in ACCEPT. */
char *
-strpbrk (s, accept)
- const char *s;
- const char *accept;
+STRPBRK (const char *s, const char *accept)
{
while (*s != '\0')
{