mirror of
git://sourceware.org/git/glibc.git
synced 2026-09-09 11:58:23 +08:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
569f620ecd | ||
|
|
b50bbee775 |
@@ -29,15 +29,19 @@ extern __typeof (bzero) __bzero_power7 attribute_hidden;
|
||||
extern __typeof (bzero) __bzero_power8 attribute_hidden;
|
||||
|
||||
libc_ifunc (__bzero,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
? __bzero_power8 :
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __bzero_power7 :
|
||||
(hwcap & PPC_FEATURE_ARCH_2_05)
|
||||
? __bzero_power6 :
|
||||
(hwcap & PPC_FEATURE_POWER4)
|
||||
? __bzero_power4
|
||||
: __bzero_ppc);
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX
|
||||
&& __GLRO(dl_cache_line_size) == 0x80)
|
||||
? __bzero_power8 :
|
||||
(hwcap & PPC_FEATURE_HAS_VSX
|
||||
&& __GLRO(dl_cache_line_size) == 0x80)
|
||||
? __bzero_power7 :
|
||||
(hwcap & PPC_FEATURE_ARCH_2_05
|
||||
&& __GLRO(dl_cache_line_size) == 0x80)
|
||||
? __bzero_power6 :
|
||||
(hwcap & PPC_FEATURE_POWER4 && __GLRO(dl_cache_line_size) == 0x80)
|
||||
? __bzero_power4
|
||||
: __bzero_ppc);
|
||||
|
||||
weak_alias (__bzero, bzero)
|
||||
#endif
|
||||
|
||||
@@ -51,7 +51,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
#ifdef SHARED
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/memcpy.c. */
|
||||
IFUNC_IMPL (i, name, memcpy,
|
||||
IFUNC_IMPL_ADD (array, i, memcpy, hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
IFUNC_IMPL_ADD (array, i, memcpy,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__memcpy_power8_cached)
|
||||
IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__memcpy_power7)
|
||||
@@ -73,7 +75,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/memset.c. */
|
||||
IFUNC_IMPL (i, name, memset,
|
||||
IFUNC_IMPL_ADD (array, i, memset, hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
IFUNC_IMPL_ADD (array, i, memset,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__memset_power8)
|
||||
IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__memset_power7)
|
||||
@@ -86,10 +90,14 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strcpy.c. */
|
||||
IFUNC_IMPL (i, name, strcpy,
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
IFUNC_IMPL_ADD (array, i, strcpy, hwcap2 & PPC_FEATURE2_ARCH_3_00,
|
||||
IFUNC_IMPL_ADD (array, i, strcpy,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_3_00
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strcpy_power9)
|
||||
#endif
|
||||
IFUNC_IMPL_ADD (array, i, strcpy, hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
IFUNC_IMPL_ADD (array, i, strcpy,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strcpy_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strcpy, hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strcpy_power7)
|
||||
@@ -99,10 +107,14 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/stpcpy.c. */
|
||||
IFUNC_IMPL (i, name, stpcpy,
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
IFUNC_IMPL_ADD (array, i, stpcpy, hwcap2 & PPC_FEATURE2_ARCH_3_00,
|
||||
IFUNC_IMPL_ADD (array, i, stpcpy,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_3_00
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__stpcpy_power9)
|
||||
#endif
|
||||
IFUNC_IMPL_ADD (array, i, stpcpy, hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
IFUNC_IMPL_ADD (array, i, stpcpy,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__stpcpy_power8)
|
||||
IFUNC_IMPL_ADD (array, i, stpcpy, hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__stpcpy_power7)
|
||||
@@ -112,10 +124,14 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strlen.c. */
|
||||
IFUNC_IMPL (i, name, strlen,
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
IFUNC_IMPL_ADD (array, i, strlen, hwcap2 & PPC_FEATURE2_ARCH_3_00,
|
||||
IFUNC_IMPL_ADD (array, i, strlen,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_3_00
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strlen_power9)
|
||||
#endif
|
||||
IFUNC_IMPL_ADD (array, i, strlen, hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
IFUNC_IMPL_ADD (array, i, strlen,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strlen_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strlen, hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strlen_power7)
|
||||
@@ -125,10 +141,14 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strncmp.c. */
|
||||
IFUNC_IMPL (i, name, strncmp,
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
IFUNC_IMPL_ADD (array, i, strncmp, hwcap2 & PPC_FEATURE2_ARCH_3_00,
|
||||
IFUNC_IMPL_ADD (array, i, strncmp,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_3_00
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strncmp_power9)
|
||||
#endif
|
||||
IFUNC_IMPL_ADD (array, i, strncmp, hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
IFUNC_IMPL_ADD (array, i, strncmp,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strncmp_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strncmp, hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strncmp_power7)
|
||||
@@ -140,7 +160,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strchr.c. */
|
||||
IFUNC_IMPL (i, name, strchr,
|
||||
IFUNC_IMPL_ADD (array, i, strchr,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strchr_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strchr,
|
||||
hwcap & PPC_FEATURE_HAS_VSX,
|
||||
@@ -151,7 +172,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strchrnul.c. */
|
||||
IFUNC_IMPL (i, name, strchrnul,
|
||||
IFUNC_IMPL_ADD (array, i, strchrnul,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strchrnul_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strchrnul,
|
||||
hwcap & PPC_FEATURE_HAS_VSX,
|
||||
@@ -162,7 +184,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/memcmp.c. */
|
||||
IFUNC_IMPL (i, name, memcmp,
|
||||
IFUNC_IMPL_ADD (array, i, memcmp, hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
IFUNC_IMPL_ADD (array, i, memcmp,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__memcmp_power8)
|
||||
IFUNC_IMPL_ADD (array, i, memcmp, hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__memcmp_power7)
|
||||
@@ -172,7 +196,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/bzero.c. */
|
||||
IFUNC_IMPL (i, name, bzero,
|
||||
IFUNC_IMPL_ADD (array, i, bzero, hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
IFUNC_IMPL_ADD (array, i, bzero,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__bzero_power8)
|
||||
IFUNC_IMPL_ADD (array, i, bzero, hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__bzero_power7)
|
||||
@@ -199,7 +225,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/memchr.c. */
|
||||
IFUNC_IMPL (i, name, memchr,
|
||||
IFUNC_IMPL_ADD (array, i, memchr,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__memchr_power8)
|
||||
IFUNC_IMPL_ADD (array, i, memchr,
|
||||
hwcap & PPC_FEATURE_HAS_VSX,
|
||||
@@ -210,7 +237,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/memrchr.c. */
|
||||
IFUNC_IMPL (i, name, memrchr,
|
||||
IFUNC_IMPL_ADD (array, i, memrchr,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__memrchr_power8)
|
||||
IFUNC_IMPL_ADD (array, i, memrchr,
|
||||
hwcap & PPC_FEATURE_HAS_VSX,
|
||||
@@ -222,7 +250,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
IFUNC_IMPL (i, name, rawmemchr,
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
IFUNC_IMPL_ADD (array, i, rawmemchr,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_3_00,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_3_00
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__rawmemchr_power9)
|
||||
#endif
|
||||
IFUNC_IMPL_ADD (array, i, rawmemchr,
|
||||
@@ -234,7 +263,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strnlen.c. */
|
||||
IFUNC_IMPL (i, name, strnlen,
|
||||
IFUNC_IMPL_ADD (array, i, strnlen,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strnlen_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strnlen, hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strnlen_power7)
|
||||
@@ -244,7 +274,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c. */
|
||||
IFUNC_IMPL (i, name, strcasecmp,
|
||||
IFUNC_IMPL_ADD (array, i, strcasecmp,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strcasecmp_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strcasecmp,
|
||||
hwcap & PPC_FEATURE_HAS_VSX,
|
||||
@@ -262,7 +293,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strncase.c. */
|
||||
IFUNC_IMPL (i, name, strncasecmp,
|
||||
IFUNC_IMPL_ADD (array, i, strncasecmp,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strncasecmp_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strncasecmp,
|
||||
hwcap & PPC_FEATURE_HAS_VSX,
|
||||
@@ -280,7 +312,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strrchr.c. */
|
||||
IFUNC_IMPL (i, name, strrchr,
|
||||
IFUNC_IMPL_ADD (array, i, strrchr,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strrchr_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strrchr,
|
||||
hwcap & PPC_FEATURE_HAS_VSX,
|
||||
@@ -291,7 +324,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strncat.c. */
|
||||
IFUNC_IMPL (i, name, strncat,
|
||||
IFUNC_IMPL_ADD (array, i, strncat,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strncat_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strncat,
|
||||
hwcap & PPC_FEATURE_HAS_VSX,
|
||||
@@ -308,7 +342,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
__strncpy_power9)
|
||||
#endif
|
||||
IFUNC_IMPL_ADD (array, i, strncpy,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strncpy_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strncpy,
|
||||
hwcap & PPC_FEATURE_HAS_VSX,
|
||||
@@ -325,7 +360,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
__stpncpy_power9)
|
||||
#endif
|
||||
IFUNC_IMPL_ADD (array, i, stpncpy,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__stpncpy_power8)
|
||||
IFUNC_IMPL_ADD (array, i, stpncpy,
|
||||
hwcap & PPC_FEATURE_HAS_VSX,
|
||||
@@ -337,11 +373,13 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
IFUNC_IMPL (i, name, strcmp,
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
IFUNC_IMPL_ADD (array, i, strcmp,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_3_00,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_3_00
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strcmp_power9)
|
||||
#endif
|
||||
IFUNC_IMPL_ADD (array, i, strcmp,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strcmp_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strcmp,
|
||||
hwcap & PPC_FEATURE_HAS_VSX,
|
||||
@@ -352,7 +390,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strcat.c. */
|
||||
IFUNC_IMPL (i, name, strcat,
|
||||
IFUNC_IMPL_ADD (array, i, strcat,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strcat_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strcat,
|
||||
hwcap & PPC_FEATURE_HAS_VSX,
|
||||
@@ -363,7 +402,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strspn.c. */
|
||||
IFUNC_IMPL (i, name, strspn,
|
||||
IFUNC_IMPL_ADD (array, i, strspn,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strspn_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strspn, 1,
|
||||
__strspn_ppc))
|
||||
@@ -371,7 +411,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strcspn.c. */
|
||||
IFUNC_IMPL (i, name, strcspn,
|
||||
IFUNC_IMPL_ADD (array, i, strcspn,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strcspn_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strcspn, 1,
|
||||
__strcspn_ppc))
|
||||
@@ -388,7 +429,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
|
||||
/* Support sysdeps/powerpc/powerpc64/multiarch/strcasestr.c. */
|
||||
IFUNC_IMPL (i, name, strcasestr,
|
||||
IFUNC_IMPL_ADD (array, i, strcasestr,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07,
|
||||
hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX,
|
||||
__strcasestr_power8)
|
||||
IFUNC_IMPL_ADD (array, i, strcasestr, 1,
|
||||
__strcasestr_ppc))
|
||||
|
||||
@@ -28,7 +28,7 @@ extern __typeof (__memchr) __memchr_power8 attribute_hidden;
|
||||
/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
|
||||
ifunc symbol properly. */
|
||||
libc_ifunc (__memchr,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07 && hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __memchr_power8 :
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __memchr_power7
|
||||
|
||||
@@ -32,7 +32,8 @@ extern __typeof (memcmp) __memcmp_power8 attribute_hidden;
|
||||
/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
|
||||
ifunc symbol properly. */
|
||||
libc_ifunc_redirected (__redirect_memcmp, memcmp,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __memcmp_power8 :
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __memcmp_power7
|
||||
|
||||
@@ -38,7 +38,8 @@ extern __typeof (__redirect_memcpy) __memcpy_power7 attribute_hidden;
|
||||
extern __typeof (__redirect_memcpy) __memcpy_power8_cached attribute_hidden;
|
||||
|
||||
libc_ifunc (__libc_memcpy,
|
||||
((hwcap2 & PPC_FEATURE2_ARCH_2_07) && use_cached_memopt)
|
||||
((hwcap2 & PPC_FEATURE2_ARCH_2_07 && hwcap & PPC_FEATURE_HAS_VSX)
|
||||
&& use_cached_memopt)
|
||||
? __memcpy_power8_cached :
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __memcpy_power7 :
|
||||
|
||||
@@ -28,7 +28,7 @@ extern __typeof (__memrchr) __memrchr_power8 attribute_hidden;
|
||||
/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
|
||||
ifunc symbol properly. */
|
||||
libc_ifunc (__memrchr,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07 && hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __memrchr_power8 :
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __memrchr_power7
|
||||
|
||||
@@ -37,15 +37,20 @@ extern __typeof (__redirect_memset) __memset_power8 attribute_hidden;
|
||||
/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
|
||||
ifunc symbol properly. */
|
||||
libc_ifunc (__libc_memset,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
? __memset_power8 :
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __memset_power7 :
|
||||
(hwcap & PPC_FEATURE_ARCH_2_05)
|
||||
? __memset_power6 :
|
||||
(hwcap & PPC_FEATURE_POWER4)
|
||||
? __memset_power4
|
||||
: __memset_ppc);
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX
|
||||
&& __GLRO(dl_cache_line_size) == 0x80)
|
||||
? __memset_power8 :
|
||||
(hwcap & PPC_FEATURE_HAS_VSX
|
||||
&& __GLRO(dl_cache_line_size) == 0x80)
|
||||
? __memset_power7 :
|
||||
(hwcap & PPC_FEATURE_ARCH_2_05
|
||||
&& __GLRO(dl_cache_line_size) == 0x80)
|
||||
? __memset_power6 :
|
||||
(hwcap & PPC_FEATURE_POWER4
|
||||
&& __GLRO(dl_cache_line_size) == 0x80)
|
||||
? __memset_power4
|
||||
: __memset_ppc);
|
||||
|
||||
#undef memset
|
||||
strong_alias (__libc_memset, memset);
|
||||
|
||||
@@ -34,7 +34,8 @@ extern __typeof (__rawmemchr) __rawmemchr_power9 attribute_hidden;
|
||||
ifunc symbol properly. */
|
||||
libc_ifunc_redirected (__redirect___rawmemchr, __rawmemchr,
|
||||
# ifdef __LITTLE_ENDIAN__
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_3_00)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_3_00
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __rawmemchr_power9 :
|
||||
# endif
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
|
||||
@@ -32,10 +32,12 @@ extern __typeof (__stpcpy) __stpcpy_power9 attribute_hidden;
|
||||
|
||||
libc_ifunc_hidden (__stpcpy, __stpcpy,
|
||||
# ifdef __LITTLE_ENDIAN__
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_3_00)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_3_00
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __stpcpy_power9 :
|
||||
# endif
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __stpcpy_power8
|
||||
: (hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __stpcpy_power7
|
||||
|
||||
@@ -27,7 +27,7 @@ extern __typeof (__strcasecmp) __strcasecmp_power7 attribute_hidden;
|
||||
extern __typeof (__strcasecmp) __strcasecmp_power8 attribute_hidden;
|
||||
|
||||
libc_ifunc (__libc_strcasecmp,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07 && hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strcasecmp_power8:
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strcasecmp_power7
|
||||
|
||||
@@ -27,7 +27,7 @@ extern __typeof (__strcasestr) __strcasestr_power8 attribute_hidden;
|
||||
/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
|
||||
ifunc symbol properly. */
|
||||
libc_ifunc (__strcasestr,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07 && hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strcasestr_power8
|
||||
: __strcasestr_ppc);
|
||||
|
||||
|
||||
@@ -28,7 +28,8 @@ extern __typeof (strcat) __strcat_power8 attribute_hidden;
|
||||
# undef strcat
|
||||
|
||||
libc_ifunc_redirected (__redirect_strcat, strcat,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strcat_power8
|
||||
: (hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strcat_power7
|
||||
|
||||
@@ -33,7 +33,8 @@ extern __typeof (strchr) __strchr_power8 attribute_hidden;
|
||||
/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
|
||||
ifunc symbol properly. */
|
||||
libc_ifunc_redirected (__redirect_strchr, strchr,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strchr_power8 :
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strchr_power7
|
||||
|
||||
@@ -35,10 +35,12 @@ extern __typeof (strcmp) __strcmp_power9 attribute_hidden;
|
||||
|
||||
libc_ifunc_redirected (__redirect_strcmp, strcmp,
|
||||
# ifdef __LITTLE_ENDIAN__
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_3_00)
|
||||
? __strcmp_power9 :
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_3_00
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strcmp_power9 :
|
||||
# endif
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strcmp_power8
|
||||
: (hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strcmp_power7
|
||||
|
||||
@@ -32,7 +32,8 @@ extern __typeof (strcpy) __strcpy_power9 attribute_hidden;
|
||||
|
||||
libc_ifunc_redirected (__redirect_strcpy, strcpy,
|
||||
# ifdef __LITTLE_ENDIAN__
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_3_00)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_3_00
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strcpy_power9 :
|
||||
# endif
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
|
||||
@@ -27,7 +27,7 @@ extern __typeof (strcspn) __strcspn_ppc attribute_hidden;
|
||||
extern __typeof (strcspn) __strcspn_power8 attribute_hidden;
|
||||
|
||||
libc_ifunc (__libc_strcspn,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07 && hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strcspn_power8
|
||||
: __strcspn_ppc);
|
||||
|
||||
|
||||
@@ -34,10 +34,10 @@ extern __typeof (__redirect_strlen) __strlen_power9 attribute_hidden;
|
||||
|
||||
libc_ifunc (__libc_strlen,
|
||||
# ifdef __LITTLE_ENDIAN__
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_3_00)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_3_00 && hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strlen_power9 :
|
||||
# endif
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07 && hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strlen_power8 :
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strlen_power7
|
||||
|
||||
@@ -27,7 +27,7 @@ extern __typeof (__strncasecmp) __strncasecmp_power7 attribute_hidden;
|
||||
extern __typeof (__strncasecmp) __strncasecmp_power8 attribute_hidden;
|
||||
|
||||
libc_ifunc (__libc_strncasecmp,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07 && hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strncasecmp_power8:
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strncasecmp_power7
|
||||
|
||||
@@ -26,7 +26,7 @@ extern __typeof (strncat) __strncat_power7 attribute_hidden;
|
||||
extern __typeof (strncat) __strncat_power8 attribute_hidden;
|
||||
|
||||
libc_ifunc (strncat,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07 && hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strncat_power8
|
||||
: (hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strncat_power7
|
||||
|
||||
@@ -38,10 +38,12 @@ extern __typeof (strncmp) __strncmp_power9 attribute_hidden;
|
||||
ifunc symbol properly. */
|
||||
libc_ifunc_redirected (__redirect_strncmp, strncmp,
|
||||
# ifdef __LITTLE_ENDIAN__
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_3_00)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_3_00
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strncmp_power9 :
|
||||
# endif
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strncmp_power8
|
||||
: (hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strncmp_power7
|
||||
|
||||
@@ -29,7 +29,8 @@ extern __typeof (__strnlen) __strnlen_power8 attribute_hidden;
|
||||
# undef strnlen
|
||||
# undef __strnlen
|
||||
libc_ifunc_redirected (__redirect___strnlen, __strnlen,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strnlen_power8 :
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strnlen_power7
|
||||
|
||||
@@ -31,7 +31,8 @@ extern __typeof (strrchr) __strrchr_power8 attribute_hidden;
|
||||
/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
|
||||
ifunc symbol properly. */
|
||||
libc_ifunc_redirected (__redirect_strrchr, strrchr,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07
|
||||
&& hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strrchr_power8 :
|
||||
(hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strrchr_power7
|
||||
|
||||
@@ -27,7 +27,7 @@ extern __typeof (strspn) __strspn_ppc attribute_hidden;
|
||||
extern __typeof (strspn) __strspn_power8 attribute_hidden;
|
||||
|
||||
libc_ifunc (__libc_strspn,
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
(hwcap2 & PPC_FEATURE2_ARCH_2_07 && hwcap & PPC_FEATURE_HAS_VSX)
|
||||
? __strspn_power8
|
||||
: __strspn_ppc);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user