]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / sysdeps / powerpc / powerpc64 / multiarch / ifunc-impl-list.c
index 11a3bed9a57242c5e162902a4a757a45215763ff..8d91d9abb9618bc90689355f77f0bfdfe5f14b2b 100644 (file)
@@ -1,5 +1,5 @@
 /* Enumerate available IFUNC implementations of a function.  PowerPC64 version.
-   Copyright (C) 2013-2014 Free Software Foundation, Inc.
+   Copyright (C) 2013-2019 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
@@ -34,6 +34,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
   size_t i = 0;
 
   unsigned long int hwcap = GLRO(dl_hwcap);
+  unsigned long int hwcap2 = GLRO(dl_hwcap2);
+
   /* hwcap contains only the latest supported ISA, the code checks which is
      and fills the previous supported ones.  */
   if (hwcap & PPC_FEATURE_ARCH_2_06)
@@ -49,6 +51,8 @@ __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,
+                             __memcpy_power8_cached)
              IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_HAS_VSX,
                              __memcpy_power7)
              IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_ARCH_2_06,
@@ -61,8 +65,16 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
                              __memcpy_power4)
              IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_ppc))
 
+  /* Support sysdeps/powerpc/powerpc64/multiarch/memmove.c.  */
+  IFUNC_IMPL (i, name, memmove,
+             IFUNC_IMPL_ADD (array, i, memmove, hwcap & PPC_FEATURE_HAS_VSX,
+                             __memmove_power7)
+             IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_ppc))
+
   /* Support sysdeps/powerpc/powerpc64/multiarch/memset.c.  */
   IFUNC_IMPL (i, name, memset,
+             IFUNC_IMPL_ADD (array, i, memset, hwcap2 & PPC_FEATURE2_ARCH_2_07,
+                             __memset_power8)
              IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_HAS_VSX,
                              __memset_power7)
              IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_ARCH_2_05,
@@ -73,6 +85,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
 
   /* Support sysdeps/powerpc/powerpc64/multiarch/strcpy.c.  */
   IFUNC_IMPL (i, name, strcpy,
+             IFUNC_IMPL_ADD (array, i, strcpy, hwcap2 & PPC_FEATURE2_ARCH_2_07,
+                             __strcpy_power8)
              IFUNC_IMPL_ADD (array, i, strcpy, hwcap & PPC_FEATURE_HAS_VSX,
                              __strcpy_power7)
              IFUNC_IMPL_ADD (array, i, strcpy, 1,
@@ -80,6 +94,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
 
   /* Support sysdeps/powerpc/powerpc64/multiarch/stpcpy.c.  */
   IFUNC_IMPL (i, name, stpcpy,
+             IFUNC_IMPL_ADD (array, i, stpcpy, hwcap2 & PPC_FEATURE2_ARCH_2_07,
+                             __stpcpy_power8)
              IFUNC_IMPL_ADD (array, i, stpcpy, hwcap & PPC_FEATURE_HAS_VSX,
                              __stpcpy_power7)
              IFUNC_IMPL_ADD (array, i, stpcpy, 1,
@@ -87,6 +103,8 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
 
   /* Support sysdeps/powerpc/powerpc64/multiarch/strlen.c.  */
   IFUNC_IMPL (i, name, strlen,
+             IFUNC_IMPL_ADD (array, i, strlen, hwcap2 & PPC_FEATURE2_ARCH_2_07,
+                             __strlen_power8)
              IFUNC_IMPL_ADD (array, i, strlen, hwcap & PPC_FEATURE_HAS_VSX,
                              __strlen_power7)
              IFUNC_IMPL_ADD (array, i, strlen, 1,
@@ -94,6 +112,12 @@ __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,
+                             __strncmp_power9)
+#endif
+             IFUNC_IMPL_ADD (array, i, strncmp, hwcap2 & PPC_FEATURE2_ARCH_2_07,
+                             __strncmp_power8)
              IFUNC_IMPL_ADD (array, i, strncmp, hwcap & PPC_FEATURE_HAS_VSX,
                              __strncmp_power7)
              IFUNC_IMPL_ADD (array, i, strncmp, hwcap & PPC_FEATURE_POWER4,
@@ -103,6 +127,9 @@ __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,
+                             __strchr_power8)
              IFUNC_IMPL_ADD (array, i, strchr,
                              hwcap & PPC_FEATURE_HAS_VSX,
                              __strchr_power7)
@@ -111,6 +138,9 @@ __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,
+                             __strchrnul_power8)
              IFUNC_IMPL_ADD (array, i, strchrnul,
                              hwcap & PPC_FEATURE_HAS_VSX,
                              __strchrnul_power7)
@@ -120,6 +150,8 @@ __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,
+                             __memcmp_power8)
              IFUNC_IMPL_ADD (array, i, memcmp, hwcap & PPC_FEATURE_HAS_VSX,
                              __memcmp_power7)
              IFUNC_IMPL_ADD (array, i, memcmp, hwcap & PPC_FEATURE_POWER4,
@@ -128,6 +160,8 @@ __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,
+                             __bzero_power8)
              IFUNC_IMPL_ADD (array, i, bzero, hwcap & PPC_FEATURE_HAS_VSX,
                              __bzero_power7)
              IFUNC_IMPL_ADD (array, i, bzero, hwcap & PPC_FEATURE_ARCH_2_05,
@@ -136,6 +170,12 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
                              __bzero_power4)
              IFUNC_IMPL_ADD (array, i, bzero, 1, __bzero_ppc))
 
+  /* Support sysdeps/powerpc/powerpc64/multiarch/bcopy.c.  */
+  IFUNC_IMPL (i, name, bcopy,
+             IFUNC_IMPL_ADD (array, i, bcopy, hwcap & PPC_FEATURE_HAS_VSX,
+                             __bcopy_power7)
+             IFUNC_IMPL_ADD (array, i, bcopy, 1, __bcopy_ppc))
+
   /* Support sysdeps/powerpc/powerpc64/multiarch/mempcpy.c.  */
   IFUNC_IMPL (i, name, mempcpy,
              IFUNC_IMPL_ADD (array, i, mempcpy,
@@ -146,6 +186,9 @@ __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,
+                             __memchr_power8)
              IFUNC_IMPL_ADD (array, i, memchr,
                              hwcap & PPC_FEATURE_HAS_VSX,
                              __memchr_power7)
@@ -154,6 +197,9 @@ __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,
+                             __memrchr_power8)
              IFUNC_IMPL_ADD (array, i, memrchr,
                              hwcap & PPC_FEATURE_HAS_VSX,
                              __memrchr_power7)
@@ -170,6 +216,9 @@ __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,
+                             __strnlen_power8)
              IFUNC_IMPL_ADD (array, i, strnlen, hwcap & PPC_FEATURE_HAS_VSX,
                              __strnlen_power7)
              IFUNC_IMPL_ADD (array, i, strnlen, 1,
@@ -177,6 +226,9 @@ __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,
+                             __strcasecmp_power8)
              IFUNC_IMPL_ADD (array, i, strcasecmp,
                              hwcap & PPC_FEATURE_HAS_VSX,
                              __strcasecmp_power7)
@@ -192,6 +244,9 @@ __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,
+                             __strncasecmp_power8)
              IFUNC_IMPL_ADD (array, i, strncasecmp,
                              hwcap & PPC_FEATURE_HAS_VSX,
                              __strncasecmp_power7)
@@ -240,6 +295,9 @@ __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,
+                             __strrchr_power8)
              IFUNC_IMPL_ADD (array, i, strrchr,
                              hwcap & PPC_FEATURE_HAS_VSX,
                              __strrchr_power7)
@@ -248,11 +306,96 @@ __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,
+                             __strncat_power8)
              IFUNC_IMPL_ADD (array, i, strncat,
                              hwcap & PPC_FEATURE_HAS_VSX,
                              __strncat_power7)
              IFUNC_IMPL_ADD (array, i, strncat, 1,
                              __strncat_ppc))
 
+  /* Support sysdeps/powerpc/powerpc64/multiarch/strncpy.c.  */
+  IFUNC_IMPL (i, name, strncpy,
+             IFUNC_IMPL_ADD (array, i, strncpy,
+                             hwcap2 & PPC_FEATURE2_ARCH_2_07,
+                             __strncpy_power8)
+             IFUNC_IMPL_ADD (array, i, strncpy,
+                             hwcap & PPC_FEATURE_HAS_VSX,
+                             __strncpy_power7)
+             IFUNC_IMPL_ADD (array, i, strncpy, 1,
+                            __strncpy_ppc))
+
+  /* Support sysdeps/powerpc/powerpc64/multiarch/stpncpy.c.  */
+  IFUNC_IMPL (i, name, stpncpy,
+             IFUNC_IMPL_ADD (array, i, stpncpy,
+                             hwcap2 & PPC_FEATURE2_ARCH_2_07,
+                             __stpncpy_power8)
+             IFUNC_IMPL_ADD (array, i, stpncpy,
+                             hwcap & PPC_FEATURE_HAS_VSX,
+                             __stpncpy_power7)
+             IFUNC_IMPL_ADD (array, i, stpncpy, 1,
+                            __stpncpy_ppc))
+
+  /* Support sysdeps/powerpc/powerpc64/multiarch/strcmp.c.  */
+  IFUNC_IMPL (i, name, strcmp,
+#ifdef __LITTLE_ENDIAN__
+             IFUNC_IMPL_ADD (array, i, strcmp,
+                             hwcap2 & PPC_FEATURE2_ARCH_3_00,
+                             __strcmp_power9)
+#endif
+             IFUNC_IMPL_ADD (array, i, strcmp,
+                             hwcap2 & PPC_FEATURE2_ARCH_2_07,
+                             __strcmp_power8)
+             IFUNC_IMPL_ADD (array, i, strcmp,
+                             hwcap & PPC_FEATURE_HAS_VSX,
+                             __strcmp_power7)
+             IFUNC_IMPL_ADD (array, i, strcmp, 1,
+                            __strcmp_ppc))
+
+  /* Support sysdeps/powerpc/powerpc64/multiarch/strcat.c.  */
+  IFUNC_IMPL (i, name, strcat,
+             IFUNC_IMPL_ADD (array, i, strcat,
+                             hwcap2 & PPC_FEATURE2_ARCH_2_07,
+                             __strcat_power8)
+             IFUNC_IMPL_ADD (array, i, strcat,
+                             hwcap & PPC_FEATURE_HAS_VSX,
+                             __strcat_power7)
+             IFUNC_IMPL_ADD (array, i, strcat, 1,
+                            __strcat_ppc))
+
+  /* Support sysdeps/powerpc/powerpc64/multiarch/strspn.c.  */
+  IFUNC_IMPL (i, name, strspn,
+             IFUNC_IMPL_ADD (array, i, strspn,
+                             hwcap2 & PPC_FEATURE2_ARCH_2_07,
+                             __strspn_power8)
+             IFUNC_IMPL_ADD (array, i, strspn, 1,
+                             __strspn_ppc))
+
+  /* Support sysdeps/powerpc/powerpc64/multiarch/strcspn.c.  */
+  IFUNC_IMPL (i, name, strcspn,
+             IFUNC_IMPL_ADD (array, i, strcspn,
+                             hwcap2 & PPC_FEATURE2_ARCH_2_07,
+                             __strcspn_power8)
+             IFUNC_IMPL_ADD (array, i, strcspn, 1,
+                             __strcspn_ppc))
+
+  /* Support sysdeps/powerpc/powerpc64/multiarch/strstr.c.  */
+  IFUNC_IMPL (i, name, strstr,
+             IFUNC_IMPL_ADD (array, i, strstr,
+                             hwcap & PPC_FEATURE_HAS_VSX,
+                             __strstr_power7)
+             IFUNC_IMPL_ADD (array, i, strstr, 1,
+                             __strstr_ppc))
+
+
+  /* Support sysdeps/powerpc/powerpc64/multiarch/strcasestr.c.  */
+  IFUNC_IMPL (i, name, strcasestr,
+             IFUNC_IMPL_ADD (array, i, strcasestr,
+                             hwcap2 & PPC_FEATURE2_ARCH_2_07,
+                             __strcasestr_power8)
+             IFUNC_IMPL_ADD (array, i, strcasestr, 1,
+                             __strcasestr_ppc))
+
   return i;
 }