]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - sysdeps/powerpc/powerpc64/multiarch/strncmp.c
powerpc64: Remove old strncmp optimization
[thirdparty/glibc.git] / sysdeps / powerpc / powerpc64 / multiarch / strncmp.c
index 09db0be3bb45586b98818be9b81f9321d92e484b..8aeb23d4a3747fab998b3b09e0f1560b256cf14a 100644 (file)
@@ -1,5 +1,5 @@
 /* Multiple versions of strncmp.
-   Copyright (C) 2013 Free Software Foundation, Inc.
+   Copyright (C) 2013-2022 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
 
    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/>.  */
+   <https://www.gnu.org/licenses/>.  */
 
 /* Define multiple versions only for definition in libc.  */
-#if defined SHARED && !defined NOT_IN_libc
+#if defined SHARED && IS_IN (libc)
+# define strncmp __redirect_strncmp
+/* Omit the strncmp inline definitions because it would redefine strncmp.  */
+# define __NO_STRING_INLINES
 # include <string.h>
 # include <shlib-compat.h>
 # include "init-arch.h"
 
 extern __typeof (strncmp) __strncmp_ppc attribute_hidden;
-extern __typeof (strncmp) __strncmp_power4 attribute_hidden;
 extern __typeof (strncmp) __strncmp_power7 attribute_hidden;
+extern __typeof (strncmp) __strncmp_power8 attribute_hidden;
+# ifdef __LITTLE_ENDIAN__
+extern __typeof (strncmp) __strncmp_power9 attribute_hidden;
+# endif
+# undef strncmp
 
 /* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
    ifunc symbol properly.  */
-libc_ifunc (strncmp,
-            (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __strncmp_power7 :
-             (hwcap & PPC_FEATURE_POWER4)
-               ? __strncmp_power4
-            : __strncmp_ppc);
+libc_ifunc_redirected (__redirect_strncmp, strncmp,
+# ifdef __LITTLE_ENDIAN__
+                       (hwcap2 & PPC_FEATURE2_ARCH_3_00
+                        && hwcap & PPC_FEATURE_HAS_ALTIVEC)
+                       ? __strncmp_power9 :
+# endif
+                      (hwcap2 & PPC_FEATURE2_ARCH_2_07)
+                      ? __strncmp_power8
+                      : (hwcap & PPC_FEATURE_ARCH_2_06)
+                        ? __strncmp_power7
+                        : __strncmp_ppc);
 #endif