This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.25-215-g249dcdb


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  249dcdb71b79e4c488a46c9027e0014c0bc27044 (commit)
      from  158d5fa0e1906e7810bdc6ecb7bf598dcc3cd17d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=249dcdb71b79e4c488a46c9027e0014c0bc27044

commit 249dcdb71b79e4c488a46c9027e0014c0bc27044
Author: Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
Date:   Thu Apr 13 11:29:20 2017 +0530

    powerpc: Optimized strncat for POWER8
    
    With new optimized strnlen for POWER8 [1], this patch adds
    strncat for power8 to make use of optimized strlen and strnlen.
    This is faster than POWER7 current implementation for larger strings.
    
    Tested on powerpc64 and powerpc64le.
    
    [1] https://sourceware.org/ml/libc-alpha/2017-03/msg00491.html
    
    	* sysdeps/powerpc/powerpc64/multiarch/Makefile (sysdep_routines): Add
    	strncat-power8.
    	* sysdeps/powerpc/powerpc64/multiarch/strncat.c (strncat): Add
    	__strncat_power8 to ifunc list.
    	* sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
    	(strncat): Add __strncat_power8 to list of strncat functions.
    	* sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c: New file.

diff --git a/ChangeLog b/ChangeLog
index 52b8d41..b310214 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2017-04-13  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>
+
+	* sysdeps/powerpc/powerpc64/multiarch/Makefile (sysdep_routines): Add
+	strncat-power8.
+	* sysdeps/powerpc/powerpc64/multiarch/strncat.c (strncat): Add
+	__strncat_power8 to ifunc list.
+	* sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+	(strncat): Add __strncat_power8 to list of strncat functions.
+	* sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c: New file.
+
 2017-04-11  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	[BZ #21270]
diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile
index 38233a7..0eb3d07 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile
@@ -15,7 +15,8 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \
 		   strchrnul-power8 strchrnul-power7 strchrnul-ppc64 \
 		   strcpy-power8 strcpy-power7 strcpy-ppc64 stpcpy-power8 \
 		   stpcpy-power7 stpcpy-ppc64 \
-		   strrchr-power7 strrchr-ppc64 strncat-power7 strncat-ppc64 \
+		   strrchr-power7 strrchr-ppc64 \
+		   strncat-power8 strncat-power7 strncat-ppc64 \
 		   strncpy-power7 strncpy-ppc64 \
 		   stpncpy-power8 stpncpy-power7 stpncpy-ppc64 \
 		   strcmp-power9 strcmp-power8 strcmp-power7 strcmp-ppc64 \
diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
index 30a0133..bddec1a 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c
@@ -292,6 +292,9 @@ __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,
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat.c b/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c
similarity index 57%
copy from sysdeps/powerpc/powerpc64/multiarch/strncat.c
copy to sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c
index 1aa5c11..1ec1259 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncat.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncat-power8.c
@@ -1,5 +1,4 @@
-/* Multiple versions of strncat. PowerPC64 version.
-   Copyright (C) 2014-2017 Free Software Foundation, Inc.
+/* Copyright (C) 2017 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
@@ -14,18 +13,19 @@
 
    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/>.  */
+   <http://www.gnu.org/licenses/ >.  */
 
-#if IS_IN (libc)
-# include <string.h>
-# include <shlib-compat.h>
-# include "init-arch.h"
+#include <string.h>
 
-extern __typeof (strncat) __strncat_ppc attribute_hidden;
-extern __typeof (strncat) __strncat_power7 attribute_hidden;
+#define STRNCAT __strncat_power8
 
-libc_ifunc (strncat,
-            (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __strncat_power7
-            : __strncat_ppc);
-#endif
+extern __typeof (strncat) __strncat_power8 attribute_hidden;
+extern __typeof (strlen) __strlen_power8 attribute_hidden;
+extern __typeof (strnlen) __strnlen_power8 attribute_hidden;
+extern __typeof (memcpy) __memcpy_power7 attribute_hidden;
+
+#define strlen    __strlen_power8
+#define __strnlen __strnlen_power8
+#define memcpy    __memcpy_power7
+
+#include <string/strncat.c>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat.c b/sysdeps/powerpc/powerpc64/multiarch/strncat.c
index 1aa5c11..ba3fe5c 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncat.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncat.c
@@ -23,9 +23,12 @@
 
 extern __typeof (strncat) __strncat_ppc attribute_hidden;
 extern __typeof (strncat) __strncat_power7 attribute_hidden;
+extern __typeof (strncat) __strncat_power8 attribute_hidden;
 
 libc_ifunc (strncat,
-            (hwcap & PPC_FEATURE_HAS_VSX)
+	    (hwcap & PPC_FEATURE2_ARCH_2_07)
+	    ? __strncat_power8
+	    : (hwcap & PPC_FEATURE_HAS_VSX)
             ? __strncat_power7
             : __strncat_ppc);
 #endif

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   10 ++++++++++
 sysdeps/powerpc/powerpc64/multiarch/Makefile       |    3 ++-
 .../powerpc/powerpc64/multiarch/ifunc-impl-list.c  |    3 +++
 .../{strncat-power7.c => strncat-power8.c}         |   16 ++++++++--------
 sysdeps/powerpc/powerpc64/multiarch/strncat.c      |    5 ++++-
 5 files changed, 27 insertions(+), 10 deletions(-)
 copy sysdeps/powerpc/powerpc64/multiarch/{strncat-power7.c => strncat-power8.c} (66%)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]