Add i686 __libc_ifunc_impl_list

This commit is contained in:
H.J. Lu 2012-10-10 07:48:45 -07:00
parent 11dd4af68c
commit b090e8ea45
43 changed files with 452 additions and 0 deletions

View file

@ -1,5 +1,61 @@
2012-10-11 H.J. Lu <hongjiu.lu@intel.com> 2012-10-11 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/i386/i686/multiarch/bcopy.S (__bcopy_ia32): Make it
global and hidden.
* sysdeps/i386/i686/multiarch/bzero.S (__bzero_ia32): Likewise.
* sysdeps/i386/i686/multiarch/memcmp.S (__memcmp_ia32): Likewise.
* sysdeps/i386/i686/multiarch/memcpy.S (__memcpy_ia32): Likewise.
* sysdeps/i386/i686/multiarch/memmove.S (__memmove_ia32):
Likewise.
* sysdeps/i386/i686/multiarch/mempcpy.S (__mempcpy_ia32):
Likewise.
* sysdeps/i386/i686/multiarch/strcat.S (STRCAT_IA32): Likewise.
* sysdeps/i386/i686/multiarch/strcmp.S (__STRCMP_IA32): Likewise.
* sysdeps/i386/i686/multiarch/strcpy.S (STRCPY_IA32): Likewise.
* sysdeps/i386/i686/multiarch/bcopy.S: Add comments for
ifunc-impl-list.c.
* sysdeps/i386/i686/multiarch/bzero.S: Likewise.
* sysdeps/i386/i686/multiarch/memchr.S: Likewise.
* sysdeps/i386/i686/multiarch/memcmp.S: Likewise.
* sysdeps/i386/i686/multiarch/memcpy.S: Likewise.
* sysdeps/i386/i686/multiarch/memcpy_chk.S: Likewise.
* sysdeps/i386/i686/multiarch/memmove.S: Likewise.
* sysdeps/i386/i686/multiarch/memmove_chk.S: Likewise.
* sysdeps/i386/i686/multiarch/mempcpy.S: Likewise.
* sysdeps/i386/i686/multiarch/mempcpy_chk.S: Likewise.
* sysdeps/i386/i686/multiarch/memrchr.S: Likewise.
* sysdeps/i386/i686/multiarch/memset.S: Likewise.
* sysdeps/i386/i686/multiarch/memset_chk.S: Likewise.
* sysdeps/i386/i686/multiarch/rawmemchr.S: Likewise.
* sysdeps/i386/i686/multiarch/stpcpy.S: Likewise.
* sysdeps/i386/i686/multiarch/stpncpy.S: Likewise.
* sysdeps/i386/i686/multiarch/strcasecmp.S: Likewise.
* sysdeps/i386/i686/multiarch/strcasecmp_l.S: Likewise.
* sysdeps/i386/i686/multiarch/strcasestr-c.c: Likewise.
* sysdeps/i386/i686/multiarch/strcat.S: Likewise.
* sysdeps/i386/i686/multiarch/strchr.S: Likewise.
* sysdeps/i386/i686/multiarch/strcmp.S: Likewise.
* sysdeps/i386/i686/multiarch/strcpy.S: Likewise.
* sysdeps/i386/i686/multiarch/strcspn.S: Likewise.
* sysdeps/i386/i686/multiarch/strlen.S: Likewise.
* sysdeps/i386/i686/multiarch/strncase.S: Likewise.
* sysdeps/i386/i686/multiarch/strncase_l.S: Likewise.
* sysdeps/i386/i686/multiarch/strncat.S: Likewise.
* sysdeps/i386/i686/multiarch/strncmp.S: Likewise.
* sysdeps/i386/i686/multiarch/strncpy.S: Likewise.
* sysdeps/i386/i686/multiarch/strnlen.S: Likewise.
* sysdeps/i386/i686/multiarch/strpbrk.S: Likewise.
* sysdeps/i386/i686/multiarch/strrchr.S: Likewise.
* sysdeps/i386/i686/multiarch/strspn.S: Likewise.
* sysdeps/i386/i686/multiarch/strstr-c.c: Likewise.
* sysdeps/i386/i686/multiarch/wcschr.S: Likewise.
* sysdeps/i386/i686/multiarch/wcscmp.S: Likewise.
* sysdeps/i386/i686/multiarch/wcscpy.S: Likewise.
* sysdeps/i386/i686/multiarch/wcslen.S: Likewise.
* sysdeps/i386/i686/multiarch/wcsrchr.S: Likewise.
* sysdeps/i386/i686/multiarch/wmemcmp.S: Likewise.
* sysdeps/i386/i686/multiarch/ifunc-impl-list.c: New file.
* Rules [$(multi-arch) = no] (tests): Filter out $(tests-ifunc). * Rules [$(multi-arch) = no] (tests): Filter out $(tests-ifunc).
[$(multi-arch) = no] (xtests): Filter out $(xtests-ifunc). [$(multi-arch) = no] (xtests): Filter out $(xtests-ifunc).
* include/ifunc-impl-list.h: New file. * include/ifunc-impl-list.h: New file.

View file

@ -1,4 +1,5 @@
/* Multiple versions of bcopy /* Multiple versions of bcopy
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2010, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -67,6 +68,8 @@ END(bcopy)
# define ENTRY(name) \ # define ENTRY(name) \
.type __bcopy_ia32, @function; \ .type __bcopy_ia32, @function; \
.p2align 4; \ .p2align 4; \
.globl __bcopy_ia32; \
.hidden __bcopy_ia32; \
__bcopy_ia32: cfi_startproc; \ __bcopy_ia32: cfi_startproc; \
CALL_MCOUNT CALL_MCOUNT
# undef END # undef END

View file

@ -1,4 +1,5 @@
/* Multiple versions of bzero /* Multiple versions of bzero
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2010, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -67,6 +68,8 @@ END(__bzero)
# define ENTRY(name) \ # define ENTRY(name) \
.type __bzero_ia32, @function; \ .type __bzero_ia32, @function; \
.p2align 4; \ .p2align 4; \
.globl __bzero_ia32; \
.hidden __bzero_ia32; \
__bzero_ia32: cfi_startproc; \ __bzero_ia32: cfi_startproc; \
CALL_MCOUNT CALL_MCOUNT
# undef END # undef END

View file

@ -0,0 +1,326 @@
/* Enumerate available IFUNC implementations of a function. i686 version.
Copyright (C) 2012 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/>. */
#include <assert.h>
#include <string.h>
#include <wchar.h>
#include <ifunc-impl-list.h>
#include "init-arch.h"
/* Maximum number of IFUNC implementations. */
#define MAX_IFUNC 3
/* Fill ARRAY of MAX elements with IFUNC implementations for function
NAME and return the number of valid entries. */
size_t
__libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
size_t max)
{
assert (max >= MAX_IFUNC);
size_t i = 0;
/* Support sysdeps/i386/i686/multiarch/bcopy.S. */
IFUNC_IMPL (i, name, bcopy,
IFUNC_IMPL_ADD (array, i, bcopy, HAS_SSSE3,
__bcopy_ssse3_rep)
IFUNC_IMPL_ADD (array, i, bcopy, HAS_SSSE3, __bcopy_ssse3)
IFUNC_IMPL_ADD (array, i, bcopy, 1, __bcopy_ia32))
/* Support sysdeps/i386/i686/multiarch/bzero.S. */
IFUNC_IMPL (i, name, bzero,
IFUNC_IMPL_ADD (array, i, bzero, HAS_SSE2, __bzero_sse2_rep)
IFUNC_IMPL_ADD (array, i, bzero, HAS_SSE2, __bzero_sse2)
IFUNC_IMPL_ADD (array, i, bzero, 1, __bzero_ia32))
/* Support sysdeps/i386/i686/multiarch/memchr.S. */
IFUNC_IMPL (i, name, memchr,
IFUNC_IMPL_ADD (array, i, memchr, HAS_SSE2,
__memchr_sse2_bsf)
IFUNC_IMPL_ADD (array, i, memchr, HAS_SSE2, __memchr_sse2)
IFUNC_IMPL_ADD (array, i, memchr, 1, __memchr_ia32))
/* Support sysdeps/i386/i686/multiarch/memcmp.S. */
IFUNC_IMPL (i, name, memcmp,
IFUNC_IMPL_ADD (array, i, memcmp, HAS_SSE4_2,
__memcmp_sse4_2)
IFUNC_IMPL_ADD (array, i, memcmp, HAS_SSSE3, __memcmp_ssse3)
IFUNC_IMPL_ADD (array, i, memcmp, 1, __memcmp_ia32))
/* Support sysdeps/i386/i686/multiarch/memmove_chk.S. */
IFUNC_IMPL (i, name, __memmove_chk,
IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_SSSE3,
__memmove_chk_ssse3_rep)
IFUNC_IMPL_ADD (array, i, __memmove_chk, HAS_SSSE3,
__memmove_chk_ssse3)
IFUNC_IMPL_ADD (array, i, __memmove_chk, 1,
__memmove_chk_ia32))
/* Support sysdeps/i386/i686/multiarch/memmove.S. */
IFUNC_IMPL (i, name, memmove,
IFUNC_IMPL_ADD (array, i, memmove, HAS_SSSE3,
__memmove_ssse3_rep)
IFUNC_IMPL_ADD (array, i, memmove, HAS_SSSE3,
__memmove_ssse3)
IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_ia32))
/* Support sysdeps/i386/i686/multiarch/memrchr.S. */
IFUNC_IMPL (i, name, memrchr,
IFUNC_IMPL_ADD (array, i, memrchr, HAS_SSE2,
__memrchr_sse2_bsf)
IFUNC_IMPL_ADD (array, i, memrchr, HAS_SSE2, __memrchr_sse2)
IFUNC_IMPL_ADD (array, i, memrchr, 1, __memrchr_ia32))
/* Support sysdeps/i386/i686/multiarch/memset_chk.S. */
IFUNC_IMPL (i, name, __memset_chk,
IFUNC_IMPL_ADD (array, i, __memset_chk, HAS_SSE2,
__memset_chk_sse2_rep)
IFUNC_IMPL_ADD (array, i, __memset_chk, HAS_SSE2,
__memset_chk_sse2)
IFUNC_IMPL_ADD (array, i, __memset_chk, 1,
__memset_chk_ia32))
/* Support sysdeps/i386/i686/multiarch/memset.S. */
IFUNC_IMPL (i, name, memset,
IFUNC_IMPL_ADD (array, i, memset, HAS_SSE2,
__memset_sse2_rep)
IFUNC_IMPL_ADD (array, i, memset, HAS_SSE2, __memset_sse2)
IFUNC_IMPL_ADD (array, i, memset, 1, __memset_ia32))
/* Support sysdeps/i386/i686/multiarch/rawmemchr.S. */
IFUNC_IMPL (i, name, rawmemchr,
IFUNC_IMPL_ADD (array, i, rawmemchr, HAS_SSE2,
__rawmemchr_sse2_bsf)
IFUNC_IMPL_ADD (array, i, rawmemchr, HAS_SSE2,
__rawmemchr_sse2)
IFUNC_IMPL_ADD (array, i, rawmemchr, 1, __rawmemchr_ia32))
/* Support sysdeps/i386/i686/multiarch/stpncpy.S. */
IFUNC_IMPL (i, name, stpncpy,
IFUNC_IMPL_ADD (array, i, stpncpy, HAS_SSSE3,
__stpncpy_ssse3)
IFUNC_IMPL_ADD (array, i, stpncpy, HAS_SSE2, __stpncpy_sse2)
IFUNC_IMPL_ADD (array, i, stpncpy, 1, __stpncpy_ia32))
/* Support sysdeps/i386/i686/multiarch/stpcpy.S. */
IFUNC_IMPL (i, name, stpcpy,
IFUNC_IMPL_ADD (array, i, stpcpy, HAS_SSSE3, __stpcpy_ssse3)
IFUNC_IMPL_ADD (array, i, stpcpy, HAS_SSE2, __stpcpy_sse2)
IFUNC_IMPL_ADD (array, i, stpcpy, 1, __stpcpy_ia32))
/* Support sysdeps/i386/i686/multiarch/strcasecmp.S. */
IFUNC_IMPL (i, name, strcasecmp,
IFUNC_IMPL_ADD (array, i, strcasecmp, HAS_SSE4_2,
__strcasecmp_sse4_2)
IFUNC_IMPL_ADD (array, i, strcasecmp, HAS_SSSE3,
__strcasecmp_ssse3)
IFUNC_IMPL_ADD (array, i, strcasecmp, 1, __strcasecmp_ia32))
/* Support sysdeps/i386/i686/multiarch/strcasecmp_l.S. */
IFUNC_IMPL (i, name, strcasecmp_l,
IFUNC_IMPL_ADD (array, i, strcasecmp_l, HAS_SSE4_2,
__strcasecmp_l_sse4_2)
IFUNC_IMPL_ADD (array, i, strcasecmp_l, HAS_SSSE3,
__strcasecmp_l_ssse3)
IFUNC_IMPL_ADD (array, i, strcasecmp_l, 1,
__strcasecmp_l_ia32))
/* Support sysdeps/i386/i686/multiarch/strcasestr.c. */
IFUNC_IMPL (i, name, strcasestr,
IFUNC_IMPL_ADD (array, i, strcasestr, HAS_SSE4_2,
__strcasestr_sse42)
IFUNC_IMPL_ADD (array, i, strcasestr, 1, __strcasestr_ia32))
/* Support sysdeps/i386/i686/multiarch/strcat.S. */
IFUNC_IMPL (i, name, strcat,
IFUNC_IMPL_ADD (array, i, strcat, HAS_SSSE3, __strcat_ssse3)
IFUNC_IMPL_ADD (array, i, strcat, HAS_SSE2, __strcat_sse2)
IFUNC_IMPL_ADD (array, i, strcat, 1, __strcat_ia32))
/* Support sysdeps/i386/i686/multiarch/strchr.S. */
IFUNC_IMPL (i, name, strchr,
IFUNC_IMPL_ADD (array, i, strchr, HAS_SSE2,
__strchr_sse2_bsf)
IFUNC_IMPL_ADD (array, i, strchr, HAS_SSE2, __strchr_sse2)
IFUNC_IMPL_ADD (array, i, strchr, 1, __strchr_ia32))
/* Support sysdeps/i386/i686/multiarch/strcmp.S. */
IFUNC_IMPL (i, name, strcmp,
IFUNC_IMPL_ADD (array, i, strcmp, HAS_SSE4_2,
__strcmp_sse4_2)
IFUNC_IMPL_ADD (array, i, strcmp, HAS_SSSE3, __strcmp_ssse3)
IFUNC_IMPL_ADD (array, i, strcmp, 1, __strcmp_ia32))
/* Support sysdeps/i386/i686/multiarch/strcpy.S. */
IFUNC_IMPL (i, name, strcpy,
IFUNC_IMPL_ADD (array, i, strcpy, HAS_SSSE3, __strcpy_ssse3)
IFUNC_IMPL_ADD (array, i, strcpy, HAS_SSE2, __strcpy_sse2)
IFUNC_IMPL_ADD (array, i, strcpy, 1, __strcpy_ia32))
/* Support sysdeps/i386/i686/multiarch/strcspn.S. */
IFUNC_IMPL (i, name, strcspn,
IFUNC_IMPL_ADD (array, i, strcspn, HAS_SSE4_2,
__strcspn_sse42)
IFUNC_IMPL_ADD (array, i, strcspn, 1, __strcspn_ia32))
/* Support sysdeps/i386/i686/multiarch/strncase.S. */
IFUNC_IMPL (i, name, strncasecmp,
IFUNC_IMPL_ADD (array, i, strncasecmp, HAS_SSE4_2,
__strncasecmp_sse4_2)
IFUNC_IMPL_ADD (array, i, strncasecmp, HAS_SSSE3,
__strncasecmp_ssse3)
IFUNC_IMPL_ADD (array, i, strncasecmp, 1,
__strncasecmp_ia32))
/* Support sysdeps/i386/i686/multiarch/strncase_l.S. */
IFUNC_IMPL (i, name, strncasecmp_l,
IFUNC_IMPL_ADD (array, i, strncasecmp_l,
HAS_SSE4_2, __strncasecmp_l_sse4_2)
IFUNC_IMPL_ADD (array, i, strncasecmp_l,
HAS_SSSE3, __strncasecmp_l_ssse3)
IFUNC_IMPL_ADD (array, i, strncasecmp_l, 1,
__strncasecmp_l_ia32))
/* Support sysdeps/i386/i686/multiarch/strncat.S. */
IFUNC_IMPL (i, name, strncat,
IFUNC_IMPL_ADD (array, i, strncat, HAS_SSSE3,
__strncat_ssse3)
IFUNC_IMPL_ADD (array, i, strncat, HAS_SSE2, __strncat_sse2)
IFUNC_IMPL_ADD (array, i, strncat, 1, __strncat_ia32))
/* Support sysdeps/i386/i686/multiarch/strncpy.S. */
IFUNC_IMPL (i, name, strncpy,
IFUNC_IMPL_ADD (array, i, strncpy, HAS_SSSE3,
__strncpy_ssse3)
IFUNC_IMPL_ADD (array, i, strncpy, HAS_SSE2, __strncpy_sse2)
IFUNC_IMPL_ADD (array, i, strncpy, 1, __strncpy_ia32))
/* Support sysdeps/i386/i686/multiarch/strnlen.S. */
IFUNC_IMPL (i, name, strnlen,
IFUNC_IMPL_ADD (array, i, strnlen, HAS_SSE2, __strnlen_sse2)
IFUNC_IMPL_ADD (array, i, strnlen, 1, __strnlen_ia32))
/* Support sysdeps/i386/i686/multiarch/strpbrk.S. */
IFUNC_IMPL (i, name, strpbrk,
IFUNC_IMPL_ADD (array, i, strpbrk, HAS_SSE4_2,
__strpbrk_sse42)
IFUNC_IMPL_ADD (array, i, strpbrk, 1, __strpbrk_ia32))
/* Support sysdeps/i386/i686/multiarch/strrchr.S. */
IFUNC_IMPL (i, name, strrchr,
IFUNC_IMPL_ADD (array, i, strrchr, HAS_SSE2,
__strrchr_sse2_bsf)
IFUNC_IMPL_ADD (array, i, strrchr, HAS_SSE2, __strrchr_sse2)
IFUNC_IMPL_ADD (array, i, strrchr, 1, __strrchr_ia32))
/* Support sysdeps/i386/i686/multiarch/strspn.S. */
IFUNC_IMPL (i, name, strspn,
IFUNC_IMPL_ADD (array, i, strspn, HAS_SSE4_2, __strspn_sse42)
IFUNC_IMPL_ADD (array, i, strspn, 1, __strspn_ia32))
/* Support sysdeps/i386/i686/multiarch/strstr-c.c. */
IFUNC_IMPL (i, name, strstr,
IFUNC_IMPL_ADD (array, i, strstr, HAS_SSE4_2, __strstr_sse42)
IFUNC_IMPL_ADD (array, i, strstr, 1, __strstr_ia32))
/* Support sysdeps/i386/i686/multiarch/wcschr.S. */
IFUNC_IMPL (i, name, wcschr,
IFUNC_IMPL_ADD (array, i, wcschr, HAS_SSE2, __wcschr_sse2)
IFUNC_IMPL_ADD (array, i, wcschr, 1, __wcschr_ia32))
/* Support sysdeps/i386/i686/multiarch/wcscmp.S. */
IFUNC_IMPL (i, name, wcscmp,
IFUNC_IMPL_ADD (array, i, wcscmp, HAS_SSE2, __wcscmp_sse2)
IFUNC_IMPL_ADD (array, i, wcscmp, 1, __wcscmp_ia32))
/* Support sysdeps/i386/i686/multiarch/wcscpy.S. */
IFUNC_IMPL (i, name, wcscpy,
IFUNC_IMPL_ADD (array, i, wcscpy, HAS_SSSE3, __wcscpy_ssse3)
IFUNC_IMPL_ADD (array, i, wcscpy, 1, __wcscpy_ia32))
/* Support sysdeps/i386/i686/multiarch/wcslen.S. */
IFUNC_IMPL (i, name, wcslen,
IFUNC_IMPL_ADD (array, i, wcslen, HAS_SSE2, __wcslen_sse2)
IFUNC_IMPL_ADD (array, i, wcslen, 1, __wcslen_ia32))
/* Support sysdeps/i386/i686/multiarch/wcsrchr.S. */
IFUNC_IMPL (i, name, wcsrchr,
IFUNC_IMPL_ADD (array, i, wcsrchr, HAS_SSE2, __wcsrchr_sse2)
IFUNC_IMPL_ADD (array, i, wcsrchr, 1, __wcsrchr_ia32))
/* Support sysdeps/i386/i686/multiarch/wmemcmp.S. */
IFUNC_IMPL (i, name, wmemcmp,
IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_SSE4_2,
__wmemcmp_sse4_2)
IFUNC_IMPL_ADD (array, i, wmemcmp, HAS_SSSE3,
__wmemcmp_ssse3)
IFUNC_IMPL_ADD (array, i, wmemcmp, 1, __wmemcmp_ia32))
#ifdef SHARED
/* Support sysdeps/i386/i686/multiarch/memcpy_chk.S. */
IFUNC_IMPL (i, name, __memcpy_chk,
IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_SSSE3,
__memcpy_chk_ssse3_rep)
IFUNC_IMPL_ADD (array, i, __memcpy_chk, HAS_SSSE3,
__memcpy_chk_ssse3)
IFUNC_IMPL_ADD (array, i, __memcpy_chk, 1,
__memcpy_chk_ia32))
/* Support sysdeps/i386/i686/multiarch/memcpy.S. */
IFUNC_IMPL (i, name, memcpy,
IFUNC_IMPL_ADD (array, i, memcpy, HAS_SSSE3,
__memcpy_ssse3_rep)
IFUNC_IMPL_ADD (array, i, memcpy, HAS_SSSE3, __memcpy_ssse3)
IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_ia32))
/* Support sysdeps/i386/i686/multiarch/mempcpy_chk.S. */
IFUNC_IMPL (i, name, __mempcpy_chk,
IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_SSSE3,
__mempcpy_chk_ssse3_rep)
IFUNC_IMPL_ADD (array, i, __mempcpy_chk, HAS_SSSE3,
__mempcpy_chk_ssse3)
IFUNC_IMPL_ADD (array, i, __mempcpy_chk, 1,
__mempcpy_chk_ia32))
/* Support sysdeps/i386/i686/multiarch/mempcpy.S. */
IFUNC_IMPL (i, name, mempcpy,
IFUNC_IMPL_ADD (array, i, mempcpy, HAS_SSSE3,
__mempcpy_ssse3_rep)
IFUNC_IMPL_ADD (array, i, mempcpy, HAS_SSSE3,
__mempcpy_ssse3)
IFUNC_IMPL_ADD (array, i, mempcpy, 1, __mempcpy_ia32))
/* Support sysdeps/i386/i686/multiarch/strlen.S. */
IFUNC_IMPL (i, name, strlen,
IFUNC_IMPL_ADD (array, i, strlen, HAS_SSE2,
__strlen_sse2_bsf)
IFUNC_IMPL_ADD (array, i, strlen, HAS_SSE2, __strlen_sse2)
IFUNC_IMPL_ADD (array, i, strlen, 1, __strlen_ia32))
/* Support sysdeps/i386/i686/multiarch/strncmp.S. */
IFUNC_IMPL (i, name, strncmp,
IFUNC_IMPL_ADD (array, i, strncmp, HAS_SSE4_2,
__strncmp_sse4_2)
IFUNC_IMPL_ADD (array, i, strncmp, HAS_SSSE3,
__strncmp_ssse3)
IFUNC_IMPL_ADD (array, i, strncmp, 1, __strncmp_ia32))
#endif
return i;
}

View file

@ -1,4 +1,5 @@
/* Multiple versions of memchr /* Multiple versions of memchr
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of memcmp /* Multiple versions of memcmp
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2010, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -67,6 +68,8 @@ END(memcmp)
# define ENTRY(name) \ # define ENTRY(name) \
.type __memcmp_ia32, @function; \ .type __memcmp_ia32, @function; \
.p2align 4; \ .p2align 4; \
.globl __memcmp_ia32; \
.hidden __memcmp_ia32; \
__memcmp_ia32: cfi_startproc; \ __memcmp_ia32: cfi_startproc; \
CALL_MCOUNT CALL_MCOUNT
# undef END # undef END

View file

@ -1,4 +1,5 @@
/* Multiple versions of memcpy /* Multiple versions of memcpy
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2010, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -51,6 +52,8 @@ END(memcpy)
# define ENTRY(name) \ # define ENTRY(name) \
.type __memcpy_ia32, @function; \ .type __memcpy_ia32, @function; \
.p2align 4; \ .p2align 4; \
.globl __memcpy_ia32; \
.hidden __memcpy_ia32; \
__memcpy_ia32: cfi_startproc; \ __memcpy_ia32: cfi_startproc; \
CALL_MCOUNT CALL_MCOUNT
# undef END # undef END

View file

@ -1,4 +1,5 @@
/* Multiple versions of __memcpy_chk /* Multiple versions of __memcpy_chk
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2010, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of memmove /* Multiple versions of memmove
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2010, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -50,6 +51,8 @@ END(memmove)
# define ENTRY(name) \ # define ENTRY(name) \
.type __memmove_ia32, @function; \ .type __memmove_ia32, @function; \
.p2align 4; \ .p2align 4; \
.globl __memmove_ia32; \
.hidden __memmove_ia32; \
__memmove_ia32: cfi_startproc; \ __memmove_ia32: cfi_startproc; \
CALL_MCOUNT CALL_MCOUNT
# else # else

View file

@ -1,4 +1,5 @@
/* Multiple versions of __memmove_chk /* Multiple versions of __memmove_chk
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2010, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of mempcpy /* Multiple versions of mempcpy
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2010, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -51,6 +52,8 @@ END(__mempcpy)
# define ENTRY(name) \ # define ENTRY(name) \
.type __mempcpy_ia32, @function; \ .type __mempcpy_ia32, @function; \
.p2align 4; \ .p2align 4; \
.globl __mempcpy_ia32; \
.hidden __mempcpy_ia32; \
__mempcpy_ia32: cfi_startproc; \ __mempcpy_ia32: cfi_startproc; \
CALL_MCOUNT CALL_MCOUNT
# undef END # undef END

View file

@ -1,4 +1,5 @@
/* Multiple versions of __mempcpy_chk /* Multiple versions of __mempcpy_chk
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2010, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of memrchr /* Multiple versions of memrchr
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011, 2012 Free Software Foundation, Inc. Copyright (C) 2011, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of memset /* Multiple versions of memset
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2010, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of __memset_chk /* Multiple versions of __memset_chk
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2010, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of rawmemchr /* Multiple versions of rawmemchr
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,3 +1,5 @@
/* Multiple versions of stpcpy
All versions must be listed in ifunc-impl-list.c. */
#define USE_AS_STPCPY #define USE_AS_STPCPY
#define STRCPY __stpcpy #define STRCPY __stpcpy
#include "strcpy.S" #include "strcpy.S"

View file

@ -1,3 +1,5 @@
/* Multiple versions of stpncpy
All versions must be listed in ifunc-impl-list.c. */
#define STRCPY __stpncpy #define STRCPY __stpncpy
#define USE_AS_STPCPY #define USE_AS_STPCPY
#define USE_AS_STRNCPY #define USE_AS_STRNCPY

View file

@ -1,4 +1,5 @@
/* Entry point for multi-version x86 strcasecmp. /* Entry point for multi-version x86 strcasecmp.
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,3 +1,5 @@
/* Multiple versions of strcasecmp_l
All versions must be listed in ifunc-impl-list.c. */
#define STRCMP __strcasecmp_l #define STRCMP __strcasecmp_l
#define USE_AS_STRCASECMP_L #define USE_AS_STRCASECMP_L
#include "strcmp.S" #include "strcmp.S"

View file

@ -1,2 +1,4 @@
/* Multiple versions of strcasestr
All versions must be listed in ifunc-impl-list.c. */
#define __strcasestr_sse2 __strcasestr_ia32 #define __strcasestr_sse2 __strcasestr_ia32
#include <sysdeps/x86_64/multiarch/strcasestr-c.c> #include <sysdeps/x86_64/multiarch/strcasestr-c.c>

View file

@ -1,4 +1,5 @@
/* Multiple versions of strcat /* Multiple versions of strcat
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -94,6 +95,8 @@ END(STRCAT)
# define ENTRY(name) \ # define ENTRY(name) \
.type STRCAT_IA32, @function; \ .type STRCAT_IA32, @function; \
.align 16; \ .align 16; \
.globl STRCAT_IA32; \
.hidden STRCAT_IA32; \
STRCAT_IA32: cfi_startproc; \ STRCAT_IA32: cfi_startproc; \
CALL_MCOUNT CALL_MCOUNT
# undef END # undef END

View file

@ -1,4 +1,5 @@
/* Multiple versions of strchr /* Multiple versions of strchr
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of strcmp /* Multiple versions of strcmp
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2010-2012 Free Software Foundation, Inc. Copyright (C) 2010-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -95,6 +96,8 @@ END(STRCMP)
# define ENTRY(name) \ # define ENTRY(name) \
.type __STRCMP_IA32, @function; \ .type __STRCMP_IA32, @function; \
.p2align 4; \ .p2align 4; \
.globl __STRCMP_IA32; \
.hidden __STRCMP_IA32; \
__STRCMP_IA32: cfi_startproc; \ __STRCMP_IA32: cfi_startproc; \
CALL_MCOUNT CALL_MCOUNT
# undef END # undef END

View file

@ -1,4 +1,5 @@
/* Multiple versions of strcpy /* Multiple versions of strcpy
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -110,6 +111,8 @@ END(STRCPY)
# define ENTRY(name) \ # define ENTRY(name) \
.type STRCPY_IA32, @function; \ .type STRCPY_IA32, @function; \
.align 16; \ .align 16; \
.globl STRCPY_IA32; \
.hidden STRCPY_IA32; \
STRCPY_IA32: cfi_startproc; \ STRCPY_IA32: cfi_startproc; \
CALL_MCOUNT CALL_MCOUNT
# undef END # undef END

View file

@ -1,4 +1,5 @@
/* Multiple versions of strcspn /* Multiple versions of strcspn
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2009, 2012 Free Software Foundation, Inc. Copyright (C) 2009, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of strlen /* Multiple versions of strlen
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2009, 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2009, 2010, 2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Entry point for multi-version x86 strncasecmp. /* Entry point for multi-version x86 strncasecmp.
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,3 +1,5 @@
/* Multiple versions of strncasecmp_l
All versions must be listed in ifunc-impl-list.c. */
#define STRCMP __strncasecmp_l #define STRCMP __strncasecmp_l
#define USE_AS_STRNCASECMP_L #define USE_AS_STRNCASECMP_L
#include "strcmp.S" #include "strcmp.S"

View file

@ -1,3 +1,5 @@
/* Multiple versions of strncat
All versions must be listed in ifunc-impl-list.c. */
#define STRCAT strncat #define STRCAT strncat
#define USE_AS_STRNCAT #define USE_AS_STRNCAT
#include "strcat.S" #include "strcat.S"

View file

@ -1,3 +1,5 @@
/* Multiple versions of strncmp
All versions must be listed in ifunc-impl-list.c. */
#define USE_AS_STRNCMP #define USE_AS_STRNCMP
#define STRCMP strncmp #define STRCMP strncmp
#include "strcmp.S" #include "strcmp.S"

View file

@ -1,3 +1,5 @@
/* Multiple versions of strncpy
All versions must be listed in ifunc-impl-list.c. */
#define USE_AS_STRNCPY #define USE_AS_STRNCPY
#define STRCPY strncpy #define STRCPY strncpy
#include "strcpy.S" #include "strcpy.S"

View file

@ -1,4 +1,5 @@
/* Multiple versions of strnlen /* Multiple versions of strnlen
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,3 +1,5 @@
/* Multiple versions of strpbrk
All versions must be listed in ifunc-impl-list.c. */
#define STRCSPN strpbrk #define STRCSPN strpbrk
#define USE_AS_STRPBRK #define USE_AS_STRPBRK
#include "strcspn.S" #include "strcspn.S"

View file

@ -1,4 +1,5 @@
/* Multiple versions of strrchr /* Multiple versions of strrchr
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of strspn /* Multiple versions of strspn
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2009,2010,2012 Free Software Foundation, Inc. Copyright (C) 2009,2010,2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,3 +1,6 @@
/* Multiple versions of strstr
All versions must be listed in ifunc-impl-list.c. */
#include "init-arch.h" #include "init-arch.h"
#define STRSTR __strstr_ia32 #define STRSTR __strstr_ia32

View file

@ -1,4 +1,5 @@
/* Multiple versions of wcschr /* Multiple versions of wcschr
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of wcscmp /* Multiple versions of wcscmp
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of wcscpy /* Multiple versions of wcscpy
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of wcslen /* Multiple versions of wcslen
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of wcsrchr /* Multiple versions of wcsrchr
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.

View file

@ -1,4 +1,5 @@
/* Multiple versions of wmemcmp /* Multiple versions of wmemcmp
All versions must be listed in ifunc-impl-list.c.
Copyright (C) 2011-2012 Free Software Foundation, Inc. Copyright (C) 2011-2012 Free Software Foundation, Inc.
Contributed by Intel Corporation. Contributed by Intel Corporation.
This file is part of the GNU C Library. This file is part of the GNU C Library.