benchtests: Add memrchr benchmark

This commit is contained in:
Adhemerval Zanella 2013-08-29 15:38:51 -03:00
parent bbf6e8e4f4
commit e029e2e5c5
5 changed files with 74 additions and 4 deletions

View File

@ -1,3 +1,11 @@
2013-09-06 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* benchtests/Makefile: Add memrchr benchmark.
* benchtests/bench-memchr.c (USE_AS_MEMRCHR): Add define to use
benchmark as memrchr.
* benchtests/bench-memrchr-ifunc.c: New file.
* benchtests/bench-memrchr.c: New file.
2013-09-06 Will Newton <will.newton@linaro.org> 2013-09-06 Will Newton <will.newton@linaro.org>
* benchtests/Makefile (string-bench): Add memcpy. * benchtests/Makefile (string-bench): Add memcpy.

View File

@ -28,7 +28,7 @@ string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
mempcpy memset rawmemchr stpcpy stpncpy strcasecmp strcasestr \ mempcpy memset rawmemchr stpcpy stpncpy strcasecmp strcasestr \
strcat strchr strchrnul strcmp strcpy strcspn strlen \ strcat strchr strchrnul strcmp strcpy strcspn strlen \
strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \ strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
strspn strstr strcpy_chk stpcpy_chk strspn strstr strcpy_chk stpcpy_chk memrchr
string-bench-ifunc := $(addsuffix -ifunc, $(string-bench)) string-bench-ifunc := $(addsuffix -ifunc, $(string-bench))
string-bench-all := $(string-bench) $(string-bench-ifunc) string-bench-all := $(string-bench) $(string-bench-ifunc)

View File

@ -16,9 +16,10 @@
License along with the GNU C Library; if not, see License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#define TEST_MAIN #ifndef USE_AS_MEMRCHR
#define TEST_NAME "memchr" # define TEST_MAIN
#include "bench-string.h" # define TEST_NAME "memchr"
# include "bench-string.h"
typedef char *(*proto_t) (const char *, int, size_t); typedef char *(*proto_t) (const char *, int, size_t);
char *simple_memchr (const char *, int, size_t); char *simple_memchr (const char *, int, size_t);
@ -34,6 +35,7 @@ simple_memchr (const char *s, int c, size_t n)
return (char *) s - 1; return (char *) s - 1;
return NULL; return NULL;
} }
#endif
static void static void
do_one_test (impl_t *impl, const char *s, int c, size_t n, char *exp_res) do_one_test (impl_t *impl, const char *s, int c, size_t n, char *exp_res)

View File

@ -0,0 +1,20 @@
/* Measure IFUNC implementations of memrchr function.
Copyright (C) 2013 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define TEST_IFUNC 1
#include "bench-memrchr.c"

View File

@ -0,0 +1,40 @@
/* Measure memrchr functions.
Copyright (C) 2013 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#define TEST_MAIN
#define TEST_NAME "memrchr"
#include "bench-string.h"
typedef char *(*proto_t) (const char *, int, size_t);
char *simple_memrchr (const char *, int, size_t);
IMPL (simple_memrchr, 0)
IMPL (memrchr, 1)
char *
simple_memrchr (const char *s, int c, size_t n)
{
s = s + n;
while (n--)
if (*--s == (char) c)
return (char *) s;
return NULL;
}
#define USE_AS_MEMRCHR
#include "bench-memchr.c"