public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 2/9] powerpc: refactor strcasecmp, strcmp, and strncmp IFUNC.
  2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
  2017-04-03 21:19 ` [PATCH 1/9] powerpc: refactor stpcpy, stpncpy, strcpy, and strncpy IFUNC Wainer dos Santos Moschetta
  2017-04-03 21:19 ` [PATCH 3/9] powerpc: refactor strnlen and strlen IFUNC Wainer dos Santos Moschetta
@ 2017-04-03 21:19 ` Wainer dos Santos Moschetta
  2017-04-03 21:19 ` [PATCH 4/9] powerpc: refactor strchr, strchrnul, and strrchr IFUNC Wainer dos Santos Moschetta
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Wainer dos Santos Moschetta @ 2017-04-03 21:19 UTC (permalink / raw)
  To: libc-alpha

2017-04-03  Wainer dos Santos Moschetta  <wainersm@linux.vnet.ibm.com>

	* sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S: Define
	the implementation-specific function name and remove unneeded
	macros definition.
	* sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S: Likewise.
	* sysdeps/powerpc/powerpc64/power4/strncmp.S: Set a default function
	name if not defined and pass as parameter to macros accordingly.
	* sysdeps/powerpc/powerpc64/power7/strcmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/power7/strncmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/power8/strcmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/power8/strncmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/power9/strcmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/power9/strncmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/strcmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/strncmp.S: Likewise.
---
 .../powerpc/powerpc64/multiarch/strcasecmp_l-power7.S  | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S     | 18 ++----------------
 sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S   | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S   | 17 +----------------
 sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S   | 17 +----------------
 sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S   | 17 +----------------
 sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/power4/strncmp.S             |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/strcmp.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/strncmp.S             |  8 ++++++--
 sysdeps/powerpc/powerpc64/power8/strcmp.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power8/strncmp.S             |  8 ++++++--
 sysdeps/powerpc/powerpc64/power9/strcmp.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power9/strncmp.S             |  8 ++++++--
 sysdeps/powerpc/powerpc64/strcmp.S                     |  8 ++++++--
 sysdeps/powerpc/powerpc64/strncmp.S                    |  8 ++++++--
 19 files changed, 65 insertions(+), 171 deletions(-)

diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S
index f30a311..da4c405 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S
@@ -18,20 +18,7 @@
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__strcasecmp_l_power7)				\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__strcasecmp_l_power7):				\
-  cfi_startproc;						\
-  LOCALENTRY(__strcasecmp_l_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strcasecmp_l_power7)				\
-  END_2(__strcasecmp_l_power7)
+#define __strcasecmp __strcasecmp_l_power7
 
 #undef weak_alias
 #define weak_alias(name, alias)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S
index b34bd45..82d1b63 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strcmp_power7)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strcmp_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strcmp_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strcmp_power7)					\
-  END_2(__strcmp_power7)
+#define STRCMP __strcmp_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S
index b3aeb6c..b2464a8 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strcmp_power8)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strcmp_power8):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strcmp_power8)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strcmp_power8)					\
-  END_2(__strcmp_power8)
+#define STRCMP __strcmp_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S
index 11dc688..48ea05d 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strcmp_power9)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strcmp_power9):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strcmp_power9)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strcmp_power9)					\
-  END_2(__strcmp_power9)
+#define STRCMP __strcmp_power9
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
index 3cff326..085e747 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
@@ -19,25 +19,11 @@
 #include <sysdep.h>
 
 #if defined SHARED && IS_IN (libc)
-# undef EALIGN
-# define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strcmp_ppc)						\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strcmp_ppc):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strcmp_ppc)
-
-# undef END
-# define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strcmp_ppc)					\
-  END_2(__strcmp_ppc)
+# define STRCMP __strcmp_ppc
 
 # undef libc_hidden_builtin_def
 # define libc_hidden_builtin_def(name)				\
     .globl __GI_strcmp; __GI_strcmp = __strcmp_ppc
-#endif
+#endif /* SHARED && IS_IN  */
 
 #include <sysdeps/powerpc/powerpc64/strcmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S
index fa25d8e..01729a3 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S
@@ -17,21 +17,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name,alignt,words)				\
-  .section ".text";						\
-  ENTRY_2(__strncmp_power4)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strncmp_power4):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strncmp_power4)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strncmp_power4)					\
-  END_2(__strncmp_power4)
+#define STRNCMP __strncmp_power4
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S
index 3aad277..a069d4b 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S
@@ -17,22 +17,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name,alignt,words)				\
-  .section ".text";						\
-  ENTRY_2(__strncmp_power7)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strncmp_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strncmp_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strncmp_power7)					\
-  END_2(__strncmp_power7)
-
+#define STRNCMP __strncmp_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S
index 496d19e..3cbcaad 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S
@@ -17,22 +17,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name,alignt,words)				\
-  .section ".text";						\
-  ENTRY_2(__strncmp_power8)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strncmp_power8):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strncmp_power8)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strncmp_power8)					\
-  END_2(__strncmp_power8)
-
+#define STRNCMP __strncmp_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S
index bd09285..6d0deaa 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S
@@ -17,22 +17,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name,alignt,words)				\
-  .section ".text";						\
-  ENTRY_2(__strncmp_power9)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strncmp_power9):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strncmp_power9)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strncmp_power9)					\
-  END_2(__strncmp_power9)
-
+#define STRNCMP __strncmp_power9
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S
index 2e7885b..e4b93ae 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S
@@ -18,21 +18,7 @@
 #include <sysdep.h>
 
 #if defined SHARED && IS_IN (libc)
-#undef EALIGN
-#define EALIGN(name,alignt,words)				\
-  .section ".text";						\
-  ENTRY_2(__strncmp_ppc)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strncmp_ppc):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strncmp_ppc)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strncmp_ppc)					\
-  END_2(__strncmp_ppc)
+# define STRNCMP __strncmp_ppc
 
 # undef libc_hidden_builtin_def
 # define libc_hidden_builtin_def(name)				\
diff --git a/sysdeps/powerpc/powerpc64/power4/strncmp.S b/sysdeps/powerpc/powerpc64/power4/strncmp.S
index e8a0970..2b0c00d 100644
--- a/sysdeps/powerpc/powerpc64/power4/strncmp.S
+++ b/sysdeps/powerpc/powerpc64/power4/strncmp.S
@@ -18,11 +18,15 @@
 
 #include <sysdep.h>
 
+#ifndef STRNCMP
+# define STRNCMP strncmp
+#endif
+
 /* See strlen.s for comments on how the end-of-string testing works.  */
 
 /* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5])  */
 
-EALIGN (strncmp, 4, 0)
+EALIGN (STRNCMP, 4, 0)
 	CALL_MCOUNT 3
 
 #define rTMP2	r0
@@ -217,5 +221,5 @@ L(u4):	sub	rRTN, rWORD1, rWORD2
 L(ux):
 	li	rRTN, 0
 	blr
-END (strncmp)
+END (STRNCMP)
 libc_hidden_builtin_def (strncmp)
diff --git a/sysdeps/powerpc/powerpc64/power7/strcmp.S b/sysdeps/powerpc/powerpc64/power7/strcmp.S
index e468103..14e14f4 100644
--- a/sysdeps/powerpc/powerpc64/power7/strcmp.S
+++ b/sysdeps/powerpc/powerpc64/power7/strcmp.S
@@ -23,10 +23,14 @@
 
 #include <sysdep.h>
 
+#ifndef STRCMP
+# define STRCMP strcmp
+#endif
+
 /* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])  */
 
 	.machine	power7
-EALIGN (strcmp, 4, 0)
+EALIGN (STRCMP, 4, 0)
 	CALL_MCOUNT 2
 
 	or r9, r3, r4
@@ -160,5 +164,5 @@ L(diffOfNULL):
 	extsw r3, r10		/* sign extend result  */
 	blr			/* return  */
 
-END (strcmp)
+END (STRCMP)
 libc_hidden_builtin_def (strcmp)
diff --git a/sysdeps/powerpc/powerpc64/power7/strncmp.S b/sysdeps/powerpc/powerpc64/power7/strncmp.S
index 6a03da5..d53b31b 100644
--- a/sysdeps/powerpc/powerpc64/power7/strncmp.S
+++ b/sysdeps/powerpc/powerpc64/power7/strncmp.S
@@ -18,13 +18,17 @@
 
 #include <sysdep.h>
 
+#ifndef STRNCMP
+# define STRNCMP strncmp
+#endif
+
 /* See strlen.s for comments on how the end-of-string testing works.  */
 
 /* int [r3] strncmp (const char *s1 [r3],
 		     const char *s2 [r4],
 		     size_t size [r5])  */
 
-EALIGN (strncmp,5,0)
+EALIGN (STRNCMP,5,0)
 	CALL_MCOUNT 3
 
 #define rTMP2	r0
@@ -219,5 +223,5 @@ L(u4):	sub	rRTN,rWORD1,rWORD2
 L(ux):
 	li	rRTN,0
 	blr
-END (strncmp)
+END (STRNCMP)
 libc_hidden_builtin_def (strncmp)
diff --git a/sysdeps/powerpc/powerpc64/power8/strcmp.S b/sysdeps/powerpc/powerpc64/power8/strcmp.S
index d46bff8..770484f 100644
--- a/sysdeps/powerpc/powerpc64/power8/strcmp.S
+++ b/sysdeps/powerpc/powerpc64/power8/strcmp.S
@@ -18,6 +18,10 @@
 
 #include <sysdep.h>
 
+#ifndef STRCMP
+# define STRCMP strcmp
+#endif
+
 /* Implements the function
 
    size_t [r3] strcmp (const char *s1 [r3], const char *s2 [r4])
@@ -27,7 +31,7 @@
    64K as default, the page cross handling assumes minimum page size of
    4k.  */
 
-EALIGN (strcmp, 4, 0)
+EALIGN (STRCMP, 4, 0)
 	li	r0,0
 
 	/* Check if [s1]+16 or [s2]+16 will cross a 4K page boundary using
@@ -239,5 +243,5 @@ L(pagecross_retdiff):
 L(pagecross_nullfound):
 	li	r3,0
 	b	L(pagecross_retdiff)
-END (strcmp)
+END (STRCMP)
 libc_hidden_builtin_def (strcmp)
diff --git a/sysdeps/powerpc/powerpc64/power8/strncmp.S b/sysdeps/powerpc/powerpc64/power8/strncmp.S
index b93a16e..3d8df90 100644
--- a/sysdeps/powerpc/powerpc64/power8/strncmp.S
+++ b/sysdeps/powerpc/powerpc64/power8/strncmp.S
@@ -18,6 +18,10 @@
 
 #include <sysdep.h>
 
+#ifndef STRNCMP
+# define STRNCMP strncmp
+#endif
+
 /* Implements the function
 
    int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t [r5] n)
@@ -28,7 +32,7 @@
    4k.  */
 
 	.machine  power7
-EALIGN (strncmp, 4, 0)
+EALIGN (STRNCMP, 4, 0)
 	/* Check if size is 0.  */
 	mr.	r10,r5
 	beq	cr0,L(ret0)
@@ -319,5 +323,5 @@ L(byte_ne_4):
 	extsw	r10,r9
 	mr	r9,r8
 	b	L(size_reached_1)
-END(strncmp)
+END(STRNCMP)
 libc_hidden_builtin_def(strncmp)
diff --git a/sysdeps/powerpc/powerpc64/power9/strcmp.S b/sysdeps/powerpc/powerpc64/power9/strcmp.S
index 17ec8c2..2dc4f6c 100644
--- a/sysdeps/powerpc/powerpc64/power9/strcmp.S
+++ b/sysdeps/powerpc/powerpc64/power9/strcmp.S
@@ -18,6 +18,10 @@
 #ifdef __LITTLE_ENDIAN__
 #include <sysdep.h>
 
+#ifndef STRCMP
+# define STRCMP strcmp
+#endif
+
 /* Implements the function
 
    int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])
@@ -62,7 +66,7 @@
    allows it.  */
 
 	.machine  power7
-EALIGN (strcmp, 4, 0)
+EALIGN (STRCMP, 4, 0)
 	li	r0, 0
 
 	/* Check if [s1]+16 or [s2]+16 will cross a 4K page boundary using
@@ -257,7 +261,7 @@ L(pagecross_retdiff):
 L(pagecross_nullfound):
 	li	r3, 0
 	b	L(pagecross_retdiff)
-END (strcmp)
+END (STRCMP)
 libc_hidden_builtin_def (strcmp)
 #else
 #include <sysdeps/powerpc/powerpc64/power8/strcmp.S>
diff --git a/sysdeps/powerpc/powerpc64/power9/strncmp.S b/sysdeps/powerpc/powerpc64/power9/strncmp.S
index 14d016a..c946a5c 100644
--- a/sysdeps/powerpc/powerpc64/power9/strncmp.S
+++ b/sysdeps/powerpc/powerpc64/power9/strncmp.S
@@ -26,6 +26,10 @@
    code paths depending of data alignment for first 32 bytes and uses
    vectorised loops after that.  */
 
+#ifndef STRNCMP
+# define STRNCMP strncmp
+#endif
+
 /* TODO: Change this to actual instructions when minimum binutils is upgraded
    to 2.27. Macros are defined below for these newer instructions in order
    to maintain compatibility.  */
@@ -64,7 +68,7 @@
 /* TODO: change this to .machine power9 when minimum binutils
    is upgraded to 2.27.  */
 	.machine  power7
-EALIGN (strncmp, 4, 0)
+EALIGN (STRNCMP, 4, 0)
 	/* Check if size is 0.  */
 	cmpdi	cr0, r5, 0
 	beq	cr0, L(ret0)
@@ -368,7 +372,7 @@ L(byte_ne_2):
 L(byte_ne_3):
 	extsw	r7, r7
 	b	L(byte_ne_1)
-END(strncmp)
+END(STRNCMP)
 libc_hidden_builtin_def(strncmp)
 #else
 #include <sysdeps/powerpc/powerpc64/power8/strncmp.S>
diff --git a/sysdeps/powerpc/powerpc64/strcmp.S b/sysdeps/powerpc/powerpc64/strcmp.S
index 3cadcca..ab5f8c2 100644
--- a/sysdeps/powerpc/powerpc64/strcmp.S
+++ b/sysdeps/powerpc/powerpc64/strcmp.S
@@ -22,7 +22,11 @@
 
 /* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])  */
 
-EALIGN (strcmp, 4, 0)
+#ifndef STRCMP
+# define STRCMP strcmp
+#endif
+
+EALIGN (STRCMP, 4, 0)
 	CALL_MCOUNT 2
 
 #define rTMP2	r0
@@ -172,5 +176,5 @@ L(u3):	sub	rRTN, rWORD1, rWORD2
 L(u4):	lbz	rWORD1, -1(rSTR1)
 	sub	rRTN, rWORD1, rWORD2
 	blr
-END (strcmp)
+END (STRCMP)
 libc_hidden_builtin_def (strcmp)
diff --git a/sysdeps/powerpc/powerpc64/strncmp.S b/sysdeps/powerpc/powerpc64/strncmp.S
index d560e4f..0765998 100644
--- a/sysdeps/powerpc/powerpc64/strncmp.S
+++ b/sysdeps/powerpc/powerpc64/strncmp.S
@@ -22,7 +22,11 @@
 
 /* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5])  */
 
-EALIGN (strncmp, 4, 0)
+#ifndef STRNCMP
+# define STRNCMP strncmp
+#endif
+
+EALIGN (STRNCMP, 4, 0)
 	CALL_MCOUNT 3
 
 #define rTMP2	r0
@@ -202,5 +206,5 @@ L(u1):
 L(u2):	lbzu	rWORD1, -1(rSTR1)
 L(u3):	sub	rRTN, rWORD1, rWORD2
 	blr
-END (strncmp)
+END (STRNCMP)
 libc_hidden_builtin_def (strncmp)
-- 
1.9.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 0/9] powerpc: cleanup IFUNC implementations.
@ 2017-04-03 21:19 Wainer dos Santos Moschetta
  2017-04-03 21:19 ` [PATCH 1/9] powerpc: refactor stpcpy, stpncpy, strcpy, and strncpy IFUNC Wainer dos Santos Moschetta
                   ` (11 more replies)
  0 siblings, 12 replies; 14+ messages in thread
From: Wainer dos Santos Moschetta @ 2017-04-03 21:19 UTC (permalink / raw)
  To: libc-alpha

Almost all IFUNC string implementations in powerpc define one
or more of the ENTRY, EALIGN, END, and END_GEN_TB macros. But
these are already defined in sysdeps/powerpc/powerpc64/sysdep.h,
making them redundant.

The following set of patch cleans up the IFUNC implementations
for powerpc in order to remove unneeded macro definitions.

Tested on ppc64le with and without --disable-multi-arch flag.

Wainer dos Santos Moschetta (9):
  powerpc: refactor stpcpy, stpncpy, strcpy, and strncpy IFUNC.
  powerpc: refactor strcasecmp, strcmp, and strncmp IFUNC.
  powerpc: refactory strnlen and strlen IFUNC.
  powerpc: refactor strchr, strchrnul, and strrchr IFUNC.
  powerpc: refactor strcasestr and strstr IFUNC.
  powerpc: refactor memset IFUNC.
  powerpc: refactor memchr, memrchr, and rawmemchr IFUNC.
  powerpc: refactor memcpy and mempcpy IFUNC.
  powerpc: refactor memcmp and memmove IFUNC.

 sysdeps/powerpc/powerpc64/a2/memcpy.S                  |  8 ++++++--
 sysdeps/powerpc/powerpc64/cell/memcpy.S                |  8 ++++++--
 sysdeps/powerpc/powerpc64/memcpy.S                     |  8 ++++++--
 sysdeps/powerpc/powerpc64/memset.S                     |  8 ++++++--
 sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S    | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S        | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S      | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S     | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S   | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S   | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S   | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/memset-power4.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memset-power6.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memset-power7.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memset-power8.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S     | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S   | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S   | 16 +---------------
 .../powerpc/powerpc64/multiarch/strcasecmp_l-power7.S  | 15 +--------------
 .../powerpc/powerpc64/multiarch/strcasestr-power8.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S    | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S    | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S     | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S     | 18 ++----------------
 sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S    | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S    | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S     | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S   | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S   | 17 +----------------
 sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S   | 17 +----------------
 sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S   | 17 +----------------
 sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S   | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S   | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S   | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S   | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/power4/memcmp.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power4/memcpy.S              |  7 +++++--
 sysdeps/powerpc/powerpc64/power4/memset.S              |  7 +++++--
 sysdeps/powerpc/powerpc64/power4/strncmp.S             |  8 ++++++--
 sysdeps/powerpc/powerpc64/power6/memcpy.S              |  7 +++++--
 sysdeps/powerpc/powerpc64/power6/memset.S              |  7 +++++--
 sysdeps/powerpc/powerpc64/power7/memchr.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/memcmp.S              |  8 +++++---
 sysdeps/powerpc/powerpc64/power7/memcpy.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/memmove.S             |  7 +++++--
 sysdeps/powerpc/powerpc64/power7/mempcpy.S             |  7 +++++--
 sysdeps/powerpc/powerpc64/power7/memrchr.S             |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/memset.S              |  7 +++++--
 sysdeps/powerpc/powerpc64/power7/rawmemchr.S           |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/strchr.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/strchrnul.S           | 11 +++++++----
 sysdeps/powerpc/powerpc64/power7/strcmp.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/strlen.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/strncmp.S             |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/strncpy.S             | 14 +++++++++++---
 sysdeps/powerpc/powerpc64/power7/strnlen.S             |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/strrchr.S             |  9 +++++++--
 sysdeps/powerpc/powerpc64/power7/strstr.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power8/memset.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power8/strcasestr.S          |  8 ++++++--
 sysdeps/powerpc/powerpc64/power8/strchr.S              | 15 ++++++++++++---
 sysdeps/powerpc/powerpc64/power8/strcmp.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power8/strcpy.S              | 14 +++++++++++---
 sysdeps/powerpc/powerpc64/power8/strlen.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power8/strncmp.S             |  8 ++++++--
 sysdeps/powerpc/powerpc64/power8/strncpy.S             | 14 +++++++++++---
 sysdeps/powerpc/powerpc64/power9/strcmp.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power9/strncmp.S             |  8 ++++++--
 sysdeps/powerpc/powerpc64/strchr.S                     |  8 ++++++--
 sysdeps/powerpc/powerpc64/strcmp.S                     |  8 ++++++--
 sysdeps/powerpc/powerpc64/strlen.S                     |  8 ++++++--
 sysdeps/powerpc/powerpc64/strncmp.S                    |  8 ++++++--
 87 files changed, 308 insertions(+), 769 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 4/9] powerpc: refactor strchr, strchrnul, and strrchr IFUNC.
  2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
                   ` (2 preceding siblings ...)
  2017-04-03 21:19 ` [PATCH 2/9] powerpc: refactor strcasecmp, strcmp, and strncmp IFUNC Wainer dos Santos Moschetta
@ 2017-04-03 21:19 ` Wainer dos Santos Moschetta
  2017-04-11 18:21   ` Tulio Magno Quites Machado Filho
  2017-04-03 21:20 ` [PATCH 8/9] powerpc: refactor memcpy and mempcpy IFUNC Wainer dos Santos Moschetta
                   ` (7 subsequent siblings)
  11 siblings, 1 reply; 14+ messages in thread
From: Wainer dos Santos Moschetta @ 2017-04-03 21:19 UTC (permalink / raw)
  To: libc-alpha

2017-04-03  Wainer dos Santos Moschetta  <wainersm@linux.vnet.ibm.com>

	* sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S: Define the
	implementation-specific function name and remove unneeded macros definition.
	* sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/power7/strchr.S: Set a default function name
	if not defined and pass as parameter to macros accordingly.
	* sysdeps/powerpc/powerpc64/power7/strchrnul.S: Likewise.
	* sysdeps/powerpc/powerpc64/power7/strrchr.S: Likewise.
	* sysdeps/powerpc/powerpc64/power8/strchr.S: Likewise.
	* sysdeps/powerpc/powerpc64/strchr.S: Likewise.
---
 sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S    | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S    | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S     | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S   | 15 +--------------
 sysdeps/powerpc/powerpc64/power7/strchr.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/strchrnul.S           | 11 +++++++----
 sysdeps/powerpc/powerpc64/power7/strrchr.S             |  9 +++++++--
 sysdeps/powerpc/powerpc64/power8/strchr.S              | 15 ++++++++++++---
 sysdeps/powerpc/powerpc64/strchr.S                     |  8 ++++++--
 11 files changed, 44 insertions(+), 97 deletions(-)

diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S
index c0228dc..e64c0b7 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S
@@ -18,20 +18,7 @@
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__strchr_power7)					\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__strchr_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strchr_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strchr_power7)					\
-  END_2(__strchr_power7)
+#define STRCHR __strchr_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S
index 461b8a9..bbda7b0 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S
@@ -18,20 +18,7 @@
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__strchr_power8)					\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__strchr_power8):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strchr_power8)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strchr_power8)					\
-  END_2(__strchr_power8)
+#define STRCHR __strchr_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S
index 9354239..769f9f0 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S
@@ -19,20 +19,7 @@
 #include <sysdep.h>
 
 #ifdef SHARED
-# undef ENTRY
-# define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__strchr_ppc)						\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__strchr_ppc):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strchr_ppc)
-
-# undef END
-# define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strchr_ppc)					\
-  END_2(__strchr_ppc)
+# define STRCHR __strchr_ppc
 
 # undef libc_hidden_builtin_def
 # define libc_hidden_builtin_def(name)				\
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S
index 57186f2..c8e2872 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S
@@ -18,20 +18,7 @@
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__strchrnul_power7)					\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__strchrnul_power7):				\
-  cfi_startproc;						\
-  LOCALENTRY(__strchrnul_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strchrnul_power7)					\
-  END_2(__strchrnul_power7)
+#define STRCHRNUL __strchrnul_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S
index 5a701c7..1cd39fc 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S
@@ -18,20 +18,7 @@
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__strchrnul_power8)					\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__strchrnul_power8):				\
-  cfi_startproc;						\
-  LOCALENTRY(__strchrnul_power8)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strchrnul_power8)					\
-  END_2(__strchrnul_power8)
+#define STRCHRNUL __strchrnul_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S
index 841b933..10bab2e 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S
@@ -18,20 +18,7 @@
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__strrchr_power7)					\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__strrchr_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strrchr_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strrchr_power7)					\
-  END_2(__strrchr_power7)
+#define STRRCHR __strrchr_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/power7/strchr.S b/sysdeps/powerpc/powerpc64/power7/strchr.S
index 9a210c9..a18e2e1 100644
--- a/sysdeps/powerpc/powerpc64/power7/strchr.S
+++ b/sysdeps/powerpc/powerpc64/power7/strchr.S
@@ -19,9 +19,13 @@
 
 #include <sysdep.h>
 
+#ifndef STRCHR
+# define STRCHR strchr
+#endif
+
 /* int [r3] strchr (char *s [r3], int c [r4])  */
 	.machine  power7
-ENTRY (strchr)
+ENTRY (STRCHR)
 	CALL_MCOUNT 2
 	dcbt	0,r3
 	clrrdi	r8,r3,3	      /* Align the address to doubleword boundary.  */
@@ -221,6 +225,6 @@ L(done_null):
 	srdi	r0,r0,3	      /* Convert leading zeros to bytes.  */
 	add	r3,r8,r0      /* Return address of the matching null byte.  */
 	blr
-END (strchr)
+END (STRCHR)
 weak_alias (strchr, index)
 libc_hidden_builtin_def (strchr)
diff --git a/sysdeps/powerpc/powerpc64/power7/strchrnul.S b/sysdeps/powerpc/powerpc64/power7/strchrnul.S
index 99aa157..8a87aea 100644
--- a/sysdeps/powerpc/powerpc64/power7/strchrnul.S
+++ b/sysdeps/powerpc/powerpc64/power7/strchrnul.S
@@ -19,9 +19,12 @@
 
 #include <sysdep.h>
 
+#ifndef STRCHRNUL
+# def STRCHRNUL __strchrnul
+#endif
 /* int [r3] strchrnul (char *s [r3], int c [r4])  */
 	.machine  power7
-ENTRY (__strchrnul)
+ENTRY (STRCHRNUL)
 	CALL_MCOUNT 2
 	dcbt	0,r3
 	clrrdi	r8,r3,3	      /* Align the address to doubleword boundary.  */
@@ -123,6 +126,6 @@ L(done):
 	srdi	r0,r0,3	      /* Convert leading zeros to bytes.  */
 	add	r3,r8,r0      /* Return address of matching c/null byte.  */
 	blr
-END (__strchrnul)
-weak_alias (__strchrnul,strchrnul)
-libc_hidden_builtin_def (__strchrnul)
+END (STRCHRNUL)
+weak_alias (STRCHRNUL, strchrnul)
+libc_hidden_builtin_def (STRCHRNUL)
diff --git a/sysdeps/powerpc/powerpc64/power7/strrchr.S b/sysdeps/powerpc/powerpc64/power7/strrchr.S
index ee20122..c22393d 100644
--- a/sysdeps/powerpc/powerpc64/power7/strrchr.S
+++ b/sysdeps/powerpc/powerpc64/power7/strrchr.S
@@ -19,8 +19,13 @@
 #include <sysdep.h>
 
 /* int [r3] strrchr (char *s [r3], int c [r4])  */
+
+#ifndef STRRCHR
+# define STRRCHR strrchr
+#endif
+
 	.machine  power7
-ENTRY (strrchr)
+ENTRY (STRRCHR)
 	CALL_MCOUNT 2
 	dcbt	0,r3
 	clrrdi	r8,r3,3	      /* Align the address to doubleword boundary.  */
@@ -250,6 +255,6 @@ L(done_null):
 	srdi	r0,r0,3	      /* Convert trailing zeros to bytes.  */
 	add	r3,r8,r0      /* Return address of the matching null byte.  */
 	blr
-END (strrchr)
+END (STRRCHR)
 weak_alias (strrchr, rindex)
 libc_hidden_builtin_def (strrchr)
diff --git a/sysdeps/powerpc/powerpc64/power8/strchr.S b/sysdeps/powerpc/powerpc64/power8/strchr.S
index 5d6fa5d..e0c185c 100644
--- a/sysdeps/powerpc/powerpc64/power8/strchr.S
+++ b/sysdeps/powerpc/powerpc64/power8/strchr.S
@@ -19,10 +19,19 @@
 #include <sysdep.h>
 
 #ifdef USE_AS_STRCHRNUL
-# define FUNC_NAME __strchrnul
+# ifndef STRCHRNUL
+#   define FUNC_NAME __strchrnul
+# else
+#   define FUNC_NAME STRCHRNUL
+# endif
 #else
-# define FUNC_NAME strchr
-#endif
+# ifndef STRCHR
+#  define FUNC_NAME strchr
+# else
+#  define FUNC_NAME STRCHR
+# endif
+#endif  /* !USE_AS_STRCHRNUL  */
+
 /* int [r3] strchr (char *s [r3], int c [r4])  */
 /* TODO: change these to the actual instructions when the minimum required
    binutils allows it.  */
diff --git a/sysdeps/powerpc/powerpc64/strchr.S b/sysdeps/powerpc/powerpc64/strchr.S
index dc5ddb1..cbfcc14 100644
--- a/sysdeps/powerpc/powerpc64/strchr.S
+++ b/sysdeps/powerpc/powerpc64/strchr.S
@@ -22,7 +22,11 @@
 
 /* char * [r3] strchr (const char *s [r3] , int c [r4] )  */
 
-ENTRY (strchr)
+#ifndef STRCHR
+# define STRCHR strchr
+#endif
+
+ENTRY (STRCHR)
 	CALL_MCOUNT 2
 
 #define rTMP1	r0
@@ -145,7 +149,7 @@ L(foundit):
 #endif
 	add	rRTN, rSTR, rCLZB
 	blr
-END (strchr)
+END (STRCHR)
 
 weak_alias (strchr, index)
 libc_hidden_builtin_def (strchr)
-- 
1.9.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 3/9] powerpc: refactor strnlen and strlen IFUNC.
  2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
  2017-04-03 21:19 ` [PATCH 1/9] powerpc: refactor stpcpy, stpncpy, strcpy, and strncpy IFUNC Wainer dos Santos Moschetta
@ 2017-04-03 21:19 ` Wainer dos Santos Moschetta
  2017-04-03 21:19 ` [PATCH 2/9] powerpc: refactor strcasecmp, strcmp, and strncmp IFUNC Wainer dos Santos Moschetta
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Wainer dos Santos Moschetta @ 2017-04-03 21:19 UTC (permalink / raw)
  To: libc-alpha

2017-04-03  Wainer dos Santos Moschetta  <wainersm@linux.vnet.ibm.com>

	* sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S: Define
	the strlen implementation name and remove unneeded macros definition.
	* sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S: Define
	the strnlen implementation name and remove unneeded macros definition.
	* sysdeps/powerpc/powerpc64/power7/strlen.S: Set a default function
	name if not defined and pass as parameter to macros accordingly.
	* sysdeps/powerpc/powerpc64/power7/strnlen.S: Likewise.
	* sysdeps/powerpc/powerpc64/power8/strlen.S: Likewise.
	* sysdeps/powerpc/powerpc64/strlen.S: Likewise.
---
 sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S  | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S  | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S   | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S | 15 +--------------
 sysdeps/powerpc/powerpc64/power7/strlen.S            |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/strnlen.S           |  8 ++++++--
 sysdeps/powerpc/powerpc64/power8/strlen.S            |  8 ++++++--
 sysdeps/powerpc/powerpc64/strlen.S                   |  8 ++++++--
 8 files changed, 28 insertions(+), 64 deletions(-)

diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S
index b3f0536..333496e 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S
@@ -18,20 +18,7 @@
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__strlen_power7)					\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__strlen_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strlen_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strlen_power7)					\
-  END_2(__strlen_power7)
+#define STRLEN __strlen_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S
index ff9032f..b4deea5 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S
@@ -18,20 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strlen_power8)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strlen_power8):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strlen_power8)
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strlen_power8)					\
-  END_2(__strlen_power8)
+#define STRLEN __strlen_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S
index bec8036..13231b8 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S
@@ -19,20 +19,7 @@
 #include <sysdep.h>
 
 #if defined SHARED && IS_IN (libc)
-# undef ENTRY
-# define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__strlen_ppc)						\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__strlen_ppc):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strlen_ppc)
-
-# undef END
-# define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strlen_ppc)					\
-  END_2(__strlen_ppc)
+# define STRLEN __strlen_ppc
 
 # undef libc_hidden_builtin_def
 # define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S
index ec6ce38..2f0a183 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S
@@ -18,20 +18,7 @@
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__strnlen_power7)					\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__strnlen_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strnlen_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strnlen_power7)					\
-  END_2(__strnlen_power7)
+#define STRNLEN __strnlen_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/power7/strlen.S b/sysdeps/powerpc/powerpc64/power7/strlen.S
index 62db6d4..63848c4 100644
--- a/sysdeps/powerpc/powerpc64/power7/strlen.S
+++ b/sysdeps/powerpc/powerpc64/power7/strlen.S
@@ -20,8 +20,12 @@
 #include <sysdep.h>
 
 /* int [r3] strlen (char *s [r3])  */
+
+#ifndef STRLEN
+# define STRLEN strlen
+#endif
 	.machine  power7
-ENTRY (strlen)
+ENTRY (STRLEN)
 	CALL_MCOUNT 1
 	dcbt	0,r3
 	clrrdi	r4,r3,3	      /* Align the address to doubleword boundary.  */
@@ -99,5 +103,5 @@ L(done):
 	srdi	r0,r0,3	      /* Convert leading/trailing zeros to bytes.  */
 	add	r3,r5,r0      /* Compute final length.  */
 	blr
-END (strlen)
+END (STRLEN)
 libc_hidden_builtin_def (strlen)
diff --git a/sysdeps/powerpc/powerpc64/power7/strnlen.S b/sysdeps/powerpc/powerpc64/power7/strnlen.S
index d066ea7..a970b6c 100644
--- a/sysdeps/powerpc/powerpc64/power7/strnlen.S
+++ b/sysdeps/powerpc/powerpc64/power7/strnlen.S
@@ -19,9 +19,13 @@
 
 #include <sysdep.h>
 
+#ifndef STRNLEN
+# define STRNLEN __strnlen
+#endif
+
 /* int [r3] strnlen (char *s [r3], int size [r4])  */
 	.machine  power7
-ENTRY (__strnlen)
+ENTRY (STRNLEN)
 	CALL_MCOUNT 2
 	dcbt	0,r3
 	clrrdi	r8,r3,3
@@ -172,7 +176,7 @@ L(loop_small):
 	mr	r3,r4
 	blr
 
-END (__strnlen)
+END (STRNLEN)
 libc_hidden_def (__strnlen)
 weak_alias (__strnlen, strnlen)
 libc_hidden_def (strnlen)
diff --git a/sysdeps/powerpc/powerpc64/power8/strlen.S b/sysdeps/powerpc/powerpc64/power8/strlen.S
index 2afc6b3..8f4a1fc 100644
--- a/sysdeps/powerpc/powerpc64/power8/strlen.S
+++ b/sysdeps/powerpc/powerpc64/power8/strlen.S
@@ -29,10 +29,14 @@
 
 /* int [r3] strlen (char *s [r3])  */
 
+#ifndef STRLEN
+# define STRLEN strlen
+#endif
+
 /* TODO: change this to .machine power8 when the minimum required binutils
    allows it.  */
 	.machine  power7
-EALIGN (strlen, 4, 0)
+EALIGN (STRLEN, 4, 0)
 	CALL_MCOUNT 1
 	dcbt	0,r3
 	clrrdi	r4,r3,3	      /* Align the address to doubleword boundary.  */
@@ -293,5 +297,5 @@ L(vmx_zero):
 	add	r3,r5,r0      /* Compute final length.  */
 	blr
 
-END (strlen)
+END (STRLEN)
 libc_hidden_builtin_def (strlen)
diff --git a/sysdeps/powerpc/powerpc64/strlen.S b/sysdeps/powerpc/powerpc64/strlen.S
index 4bd5db2..1466624 100644
--- a/sysdeps/powerpc/powerpc64/strlen.S
+++ b/sysdeps/powerpc/powerpc64/strlen.S
@@ -80,7 +80,11 @@
 
 /* int [r3] strlen (char *s [r3])  */
 
-ENTRY (strlen)
+#ifndef STRLEN
+# define STRLEN strlen
+#endif
+
+ENTRY (STRLEN)
 	CALL_MCOUNT 1
 
 #define rTMP4	r0
@@ -195,5 +199,5 @@ L(done1):
 	blr
 #endif
 
-END (strlen)
+END (STRLEN)
 libc_hidden_builtin_def (strlen)
-- 
1.9.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/9] powerpc: refactor stpcpy, stpncpy, strcpy, and strncpy IFUNC.
  2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
@ 2017-04-03 21:19 ` Wainer dos Santos Moschetta
  2017-04-03 21:19 ` [PATCH 3/9] powerpc: refactor strnlen and strlen IFUNC Wainer dos Santos Moschetta
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Wainer dos Santos Moschetta @ 2017-04-03 21:19 UTC (permalink / raw)
  To: libc-alpha

2017-04-03  Wainer dos Santos Moschetta  <wainersm@linux.vnet.ibm.com>

	* sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S: Define the
	implementation-specific function name and remove unneeded macros definition.
	* sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S: Likewise.
	* sysdeps/powerpc/powerpc64/power7/strncpy.S: Set a default
	function name if not defined.
	* sysdeps/powerpc/powerpc64/power8/strcpy.S: Likewise.
	* sysdeps/powerpc/powerpc64/power8/strncpy.S: Likewise.
---
 sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S  | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S  | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S | 16 +---------------
 sysdeps/powerpc/powerpc64/power7/strncpy.S           | 14 +++++++++++---
 sysdeps/powerpc/powerpc64/power8/strcpy.S            | 14 +++++++++++---
 sysdeps/powerpc/powerpc64/power8/strncpy.S           | 14 +++++++++++---
 9 files changed, 39 insertions(+), 99 deletions(-)

diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S
index a614b5b..9353471 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__stpcpy_power8)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__stpcpy_power8):					\
-  cfi_startproc;						\
-  LOCALENTRY(__stpcpy_power8)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__stpcpy_power8)					\
-  END_2(__stpcpy_power8)
+#define STPCPY __stpcpy_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S
index 6c88da3..6636b01 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S
@@ -20,21 +20,7 @@
 
 #define USE_AS_STPNCPY
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__stpncpy_power7)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__stpncpy_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__stpncpy_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__stpncpy_power7)					\
-  END_2(__stpncpy_power7)
+#define STPNCPY __stpncpy_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S
index ff6d3dd..6ce706a 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S
@@ -20,21 +20,7 @@
 
 #define USE_AS_STPNCPY
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__stpncpy_power8)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__stpncpy_power8):					\
-  cfi_startproc;						\
-  LOCALENTRY(__stpncpy_power8)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__stpncpy_power8)					\
-  END_2(__stpncpy_power8)
+#define STPNCPY __stpncpy_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S
index 576d260..6c753b5 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcpy-power8.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strcpy_power8)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strcpy_power8):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strcpy_power8)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strcpy_power8)					\
-  END_2(__strcpy_power8)
+#define STRCPY __strcpy_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S
index 5387e49..03f7f83 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strncpy_power7)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strncpy_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strncpy_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strncpy_power7)					\
-  END_2(__strncpy_power7)
+#define STRNCPY __strncpy_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S
index 37902cf..17117eb 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strncpy_power8)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strncpy_power8):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strncpy_power8)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strncpy_power8)					\
-  END_2(__strncpy_power8)
+#define STRNCPY __strncpy_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/power7/strncpy.S b/sysdeps/powerpc/powerpc64/power7/strncpy.S
index 98aabda..0224f74 100644
--- a/sysdeps/powerpc/powerpc64/power7/strncpy.S
+++ b/sysdeps/powerpc/powerpc64/power7/strncpy.S
@@ -40,10 +40,18 @@
       memset.  */
 
 #ifdef USE_AS_STPNCPY
-# define FUNC_NAME __stpncpy
+# ifndef STPNCPY
+#  define FUNC_NAME __stpncpy
+# else
+#  define FUNC_NAME STPNCPY
+# endif
 #else
-# define FUNC_NAME strncpy
-#endif
+# ifndef STRNCPY
+#  define FUNC_NAME strncpy
+# else
+#  define FUNC_NAME STRNCPY
+# endif
+#endif  /* !USE_AS_STPNCPY  */
 
 #define		FRAMESIZE	(FRAME_MIN_SIZE+32)
 
diff --git a/sysdeps/powerpc/powerpc64/power8/strcpy.S b/sysdeps/powerpc/powerpc64/power8/strcpy.S
index 27440cd..7f2cee4 100644
--- a/sysdeps/powerpc/powerpc64/power8/strcpy.S
+++ b/sysdeps/powerpc/powerpc64/power8/strcpy.S
@@ -19,10 +19,18 @@
 #include <sysdep.h>
 
 #ifdef USE_AS_STPCPY
-# define FUNC_NAME __stpcpy
+# ifndef STPCPY
+#   define FUNC_NAME __stpcpy
+# else
+#   define FUNC_NAME STPCPY
+# endif
 #else
-# define FUNC_NAME strcpy
-#endif
+# ifndef STRCPY
+#  define FUNC_NAME strcpy
+# else
+#  define FUNC_NAME STRCPY
+# endif
+#endif  /* !USE_AS_STPCPY  */
 
 /* Implements the function
 
diff --git a/sysdeps/powerpc/powerpc64/power8/strncpy.S b/sysdeps/powerpc/powerpc64/power8/strncpy.S
index 622a55d..6d40f30 100644
--- a/sysdeps/powerpc/powerpc64/power8/strncpy.S
+++ b/sysdeps/powerpc/powerpc64/power8/strncpy.S
@@ -19,10 +19,18 @@
 #include <sysdep.h>
 
 #ifdef USE_AS_STPNCPY
-# define FUNC_NAME __stpncpy
+# ifndef STPNCPY
+#   define FUNC_NAME __stpncpy
+# else
+#   define FUNC_NAME STPNCPY
+# endif
 #else
-# define FUNC_NAME strncpy
-#endif
+# ifndef STRNCPY
+#  define FUNC_NAME strncpy
+# else
+#  define FUNC_NAME STRNCPY
+# endif
+#endif  /* !USE_AS_STPNCPY  */
 
 #ifndef MEMSET
 /* For builds without IFUNC support, local calls should be made to internal
-- 
1.9.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 7/9] powerpc: refactor memchr, memrchr, and rawmemchr IFUNC.
  2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
                   ` (7 preceding siblings ...)
  2017-04-03 21:20 ` [PATCH 6/9] powerpc: refactor memset IFUNC Wainer dos Santos Moschetta
@ 2017-04-03 21:20 ` Wainer dos Santos Moschetta
  2017-04-10  8:42 ` [PATCH 0/9] powerpc: cleanup IFUNC implementations Rajalakshmi Srinivasaraghavan
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Wainer dos Santos Moschetta @ 2017-04-03 21:20 UTC (permalink / raw)
  To: libc-alpha

2017-04-03  Wainer dos Santos Moschetta  <wainersm@linux.vnet.ibm.com>

	* sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S: Define the
        implementation-specific function name and remove unneeded macros definition.
	* sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/power7/memchr.S: Set a default function name
	if not defined and pass as parameter to macros accordingly.
	* sysdeps/powerpc/powerpc64/power7/memrchr.S: Likewise.
	* sysdeps/powerpc/powerpc64/power7/rawmemchr.S: Likewise.
---
 sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S    | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S   | 15 +--------------
 sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S | 15 +--------------
 sysdeps/powerpc/powerpc64/power7/memchr.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/memrchr.S             |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/rawmemchr.S           |  8 ++++++--
 6 files changed, 21 insertions(+), 48 deletions(-)

diff --git a/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S
index 5d783ab..fedca9c 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S
@@ -18,20 +18,7 @@
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__memchr_power7)					\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__memchr_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memchr_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__memchr_power7)					\
-  END_2(__memchr_power7)
+#define MEMCHR __memchr_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S
index 9ee6a3b..052aa73 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S
@@ -18,20 +18,7 @@
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__memrchr_power7)					\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__memrchr_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memrchr_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__memrchr_power7)					\
-  END_2(__memrchr_power7)
+#define MEMRCHR __memrchr_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S
index ad2fd80..d79d728 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S
@@ -18,19 +18,6 @@
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__rawmemchr_power7)					\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__rawmemchr_power7):				\
-  cfi_startproc;						\
-  LOCALENTRY(__rawmemchr_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__rawmemchr_power7)					\
-  END_2(__rawmemchr_power7)
+#define RAWMEMCHR __rawmemchr_power7
 
 #include <sysdeps/powerpc/powerpc64/power7/rawmemchr.S>
diff --git a/sysdeps/powerpc/powerpc64/power7/memchr.S b/sysdeps/powerpc/powerpc64/power7/memchr.S
index 6ef665f2..5e9707a 100644
--- a/sysdeps/powerpc/powerpc64/power7/memchr.S
+++ b/sysdeps/powerpc/powerpc64/power7/memchr.S
@@ -20,8 +20,12 @@
 #include <sysdep.h>
 
 /* int [r3] memchr (char *s [r3], int byte [r4], int size [r5])  */
+
+#ifndef MEMCHR
+# define MEMCHR __memchr
+#endif
 	.machine  power7
-ENTRY (__memchr)
+ENTRY (MEMCHR)
 	CALL_MCOUNT 3
 	dcbt	0,r3
 	clrrdi  r8,r3,3
@@ -190,6 +194,6 @@ L(small_range):
 	bne	cr6,L(done)
 	blr
 
-END (__memchr)
+END (MEMCHR)
 weak_alias (__memchr, memchr)
 libc_hidden_builtin_def (memchr)
diff --git a/sysdeps/powerpc/powerpc64/power7/memrchr.S b/sysdeps/powerpc/powerpc64/power7/memrchr.S
index 4e86400..4276768 100644
--- a/sysdeps/powerpc/powerpc64/power7/memrchr.S
+++ b/sysdeps/powerpc/powerpc64/power7/memrchr.S
@@ -20,8 +20,12 @@
 #include <sysdep.h>
 
 /* int [r3] memrchr (char *s [r3], int byte [r4], int size [r5])  */
+
+#ifndef MEMRCHR
+# define MEMRCHR __memrchr
+#endif
 	.machine  power7
-ENTRY (__memrchr)
+ENTRY (MEMRCHR)
 	CALL_MCOUNT 3
 	add	r7,r3,r5      /* Calculate the last acceptable address.  */
 	neg	r0,r7
@@ -192,6 +196,6 @@ L(loop_small):
 	bne	L(loop_small)
 	blr
 
-END (__memrchr)
+END (MEMRCHR)
 weak_alias (__memrchr, memrchr)
 libc_hidden_builtin_def (memrchr)
diff --git a/sysdeps/powerpc/powerpc64/power7/rawmemchr.S b/sysdeps/powerpc/powerpc64/power7/rawmemchr.S
index b99ad62..48afb75 100644
--- a/sysdeps/powerpc/powerpc64/power7/rawmemchr.S
+++ b/sysdeps/powerpc/powerpc64/power7/rawmemchr.S
@@ -20,8 +20,12 @@
 #include <sysdep.h>
 
 /* int [r3] rawmemchr (void *s [r3], int c [r4])  */
+
+#ifndef RAWMEMCHR
+# define RAWMEMCHR __rawmemchr
+#endif
 	.machine  power7
-ENTRY (__rawmemchr)
+ENTRY (RAWMEMCHR)
 	CALL_MCOUNT 2
 	dcbt	0,r3
 	clrrdi	r8,r3,3	      /* Align the address to doubleword boundary.  */
@@ -106,6 +110,6 @@ L(done):
 	srdi	r0,r0,3	      /* Convert leading zeros to bytes.  */
 	add	r3,r8,r0      /* Return address of the matching char.  */
 	blr
-END (__rawmemchr)
+END (RAWMEMCHR)
 weak_alias (__rawmemchr,rawmemchr)
 libc_hidden_builtin_def (__rawmemchr)
-- 
1.9.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 8/9] powerpc: refactor memcpy and mempcpy IFUNC.
  2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
                   ` (3 preceding siblings ...)
  2017-04-03 21:19 ` [PATCH 4/9] powerpc: refactor strchr, strchrnul, and strrchr IFUNC Wainer dos Santos Moschetta
@ 2017-04-03 21:20 ` Wainer dos Santos Moschetta
  2017-04-03 21:20 ` [PATCH 9/9] powerpc: refactor memcmp and memmove IFUNC Wainer dos Santos Moschetta
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Wainer dos Santos Moschetta @ 2017-04-03 21:20 UTC (permalink / raw)
  To: libc-alpha

2017-04-03  Wainer dos Santos Moschetta  <wainersm@linux.vnet.ibm.com>

	* sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S: Define the
	implementation-specific function name and remove unneeded
	macros definition.
	* sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/a2/memcpy.S: Set a default function
	name if not defined and pass as parameter to macros accordingly.
	* sysdeps/powerpc/powerpc64/cell/memcpy.S: Likewise.
	* sysdeps/powerpc/powerpc64/memcpy.S: Likewise.
	* sysdeps/powerpc/powerpc64/power4/memcpy.S: Likewise.
	* sysdeps/powerpc/powerpc64/power6/memcpy.S: Likewise.
	* sysdeps/powerpc/powerpc64/power7/memcpy.S: Likewise.
	* sysdeps/powerpc/powerpc64/power7/mempcpy.S: Likewise.
---
 sysdeps/powerpc/powerpc64/a2/memcpy.S                |  8 ++++++--
 sysdeps/powerpc/powerpc64/cell/memcpy.S              |  8 ++++++--
 sysdeps/powerpc/powerpc64/memcpy.S                   |  8 ++++++--
 sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S      | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S    | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S  | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S  | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S  | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S   | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S | 16 +---------------
 sysdeps/powerpc/powerpc64/power4/memcpy.S            |  7 +++++--
 sysdeps/powerpc/powerpc64/power6/memcpy.S            |  7 +++++--
 sysdeps/powerpc/powerpc64/power7/memcpy.S            |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/mempcpy.S           |  7 +++++--
 14 files changed, 46 insertions(+), 119 deletions(-)

diff --git a/sysdeps/powerpc/powerpc64/a2/memcpy.S b/sysdeps/powerpc/powerpc64/a2/memcpy.S
index eb30608..ff30898 100644
--- a/sysdeps/powerpc/powerpc64/a2/memcpy.S
+++ b/sysdeps/powerpc/powerpc64/a2/memcpy.S
@@ -19,6 +19,10 @@
 
 #include <sysdep.h>
 
+#ifndef MEMCPY
+# define MEMCPY memcpy
+#endif
+
 #define PREFETCH_AHEAD 4        /* no cache lines SRC prefetching ahead  */
 #define ZERO_AHEAD 2            /* no cache lines DST zeroing ahead  */
 
@@ -30,7 +34,7 @@
 
 
 	.machine  a2
-EALIGN (memcpy, 5, 0)
+EALIGN (MEMCPY, 5, 0)
 	CALL_MCOUNT 3
 
 	dcbt    0,r4            /* Prefetch ONE SRC cacheline  */
@@ -520,5 +524,5 @@ L(endloop2_128):
 	b       L(lessthancacheline)
 
 
-END_GEN_TB (memcpy,TB_TOCLESS)
+END_GEN_TB (MEMCPY,TB_TOCLESS)
 libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/cell/memcpy.S b/sysdeps/powerpc/powerpc64/cell/memcpy.S
index e163a5c..1cc6645 100644
--- a/sysdeps/powerpc/powerpc64/cell/memcpy.S
+++ b/sysdeps/powerpc/powerpc64/cell/memcpy.S
@@ -18,6 +18,10 @@
 
 #include <sysdep.h>
 
+#ifndef MEMCPY
+# define MEMCPY memcpy
+#endif
+
 #define PREFETCH_AHEAD 6	/* no cache lines SRC prefetching ahead  */
 #define ZERO_AHEAD 4		/* no cache lines DST zeroing ahead  */
 
@@ -39,7 +43,7 @@
 
 .align  7
 
-EALIGN (memcpy, 5, 0)
+EALIGN (MEMCPY, 5, 0)
 	CALL_MCOUNT 3
 
 	dcbt	0,r4		/* Prefetch ONE SRC cacheline  */
@@ -238,5 +242,5 @@ EALIGN (memcpy, 5, 0)
 	stb	r0,0(r6)
 1:	blr
 
-END_GEN_TB (memcpy,TB_TOCLESS)
+END_GEN_TB (MEMCPY,TB_TOCLESS)
 libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/memcpy.S b/sysdeps/powerpc/powerpc64/memcpy.S
index 1b6d806..a4c82c3 100644
--- a/sysdeps/powerpc/powerpc64/memcpy.S
+++ b/sysdeps/powerpc/powerpc64/memcpy.S
@@ -33,7 +33,11 @@
    possible when both source and destination are doubleword aligned.
    Each case has a optimized unrolled loop.   */
 
-EALIGN (memcpy, 5, 0)
+#ifndef MEMCPY
+# define MEMCPY memcpy
+#endif
+
+EALIGN (MEMCPY, 5, 0)
 	CALL_MCOUNT 3
 
     cmpldi cr1,5,31
@@ -389,5 +393,5 @@ EALIGN (memcpy, 5, 0)
     ld 31,-8(1)
     ld 3,-16(1)
     blr
-END_GEN_TB (memcpy,TB_TOCLESS)
+END_GEN_TB (MEMCPY,TB_TOCLESS)
 libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S
index 7311762..a942287 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memcpy_a2)						\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memcpy_a2):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memcpy_a2)
-
-#undef END_GEN_TB
-#define END_GEN_TB(name, mask)					\
-  cfi_endproc;							\
-  TRACEBACK_MASK(__memcpy_a2,mask)				\
-  END_2(__memcpy_a2)
+#define MEMCPY __memcpy_a2
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S
index dd1a7f1..39aa30c 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memcpy_cell)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memcpy_cell):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memcpy_cell)
-
-#undef END_GEN_TB
-#define END_GEN_TB(name, mask)					\
-  cfi_endproc;							\
-  TRACEBACK_MASK(__memcpy_cell,mask)				\
-  END_2(__memcpy_cell)
+#define MEMCPY __memcpy_cell
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S
index de86da4..6e7fea3 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memcpy_power4)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memcpy_power4):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memcpy_power4)
-
-#undef END_GEN_TB
-#define END_GEN_TB(name, mask)					\
-  cfi_endproc;							\
-  TRACEBACK_MASK(__memcpy_power4,mask)				\
-  END_2(__memcpy_power4)
+#define MEMCPY __memcpy_power4
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S
index 8c2ef7c..40bcdb1 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memcpy_power6)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memcpy_power6):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memcpy_power6)
-
-#undef END_GEN_TB
-#define END_GEN_TB(name, mask)					\
-  cfi_endproc;							\
-  TRACEBACK_MASK(__memcpy_power6,mask)				\
-  END_2(__memcpy_power6)
+#define MEMCPY __memcpy_power6
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S
index 7751b33..222936a 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memcpy_power7)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memcpy_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memcpy_power7)
-
-#undef END_GEN_TB
-#define END_GEN_TB(name, mask)					\
-  cfi_endproc;							\
-  TRACEBACK_MASK(__memcpy_power7,mask)				\
-  END_2(__memcpy_power7)
+#define MEMCPY __memcpy_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S
index 16f9f1b..2dc644c 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S
@@ -19,21 +19,7 @@
 #include <sysdep.h>
 
 #if defined SHARED && IS_IN (libc)
-# undef EALIGN
-# define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memcpy_ppc)						\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memcpy_ppc):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memcpy_ppc)
-
-# undef END_GEN_TB
-# define END_GEN_TB(name, mask)					\
-   cfi_endproc;							\
-   TRACEBACK_MASK(__memcpy_ppc,mask)				\
-   END_2(__memcpy_ppc)
+# define MEMCPY __memcpy_ppc
 
 # undef libc_hidden_builtin_def
 # define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S
index 27fa52c..08f1336 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__mempcpy_power7)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__mempcpy_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__mempcpy_power7)
-
-#undef END_GEN_TB
-#define END_GEN_TB(name, mask)					\
-  cfi_endproc;							\
-  TRACEBACK_MASK(__mempcpy_power7,mask)				\
-  END_2(__mempcpy_power7)
+#define MEMPCPY __mempcpy_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/power4/memcpy.S b/sysdeps/powerpc/powerpc64/power4/memcpy.S
index ff9db25..2e96376 100644
--- a/sysdeps/powerpc/powerpc64/power4/memcpy.S
+++ b/sysdeps/powerpc/powerpc64/power4/memcpy.S
@@ -33,8 +33,11 @@
    possible when both source and destination are doubleword aligned.
    Each case has a optimized unrolled loop.   */
 
+#ifndef MEMCPY
+# define MEMCPY memcpy
+#endif
 	.machine power4
-EALIGN (memcpy, 5, 0)
+EALIGN (MEMCPY, 5, 0)
 	CALL_MCOUNT 3
 
     cmpldi cr1,5,31
@@ -470,5 +473,5 @@ EALIGN (memcpy, 5, 0)
     ld 31,-8(1)
     ld 3,-16(1)
     blr
-END_GEN_TB (memcpy,TB_TOCLESS)
+END_GEN_TB (MEMCPY,TB_TOCLESS)
 libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/power6/memcpy.S b/sysdeps/powerpc/powerpc64/power6/memcpy.S
index f5e770a..1f7294b 100644
--- a/sysdeps/powerpc/powerpc64/power6/memcpy.S
+++ b/sysdeps/powerpc/powerpc64/power6/memcpy.S
@@ -40,8 +40,11 @@
    the source but may take a risk and only require word alignment
    for the destination.  */
 
+#ifndef MEMCPY
+# define MEMCPY memcpy
+#endif
 	.machine	"power6"
-EALIGN (memcpy, 7, 0)
+EALIGN (MEMCPY, 7, 0)
 	CALL_MCOUNT 3
 
     cmpldi cr1,5,31
@@ -1492,5 +1495,5 @@ L(du_done):
     ld 31,-8(1)
     ld 3,-16(1)
     blr
-END_GEN_TB (memcpy,TB_TOCLESS)
+END_GEN_TB (MEMCPY,TB_TOCLESS)
 libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/power7/memcpy.S b/sysdeps/powerpc/powerpc64/power7/memcpy.S
index ae2db21..e08993c 100644
--- a/sysdeps/powerpc/powerpc64/power7/memcpy.S
+++ b/sysdeps/powerpc/powerpc64/power7/memcpy.S
@@ -23,12 +23,16 @@
 /* __ptr_t [r3] memcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
    Returns 'dst'.  */
 
+#ifndef MEMCPY
+# define MEMCPY memcpy
+#endif
+
 #define dst 11		/* Use r11 so r3 kept unchanged.  */
 #define src 4
 #define cnt 5
 
 	.machine power7
-EALIGN (memcpy, 5, 0)
+EALIGN (MEMCPY, 5, 0)
 	CALL_MCOUNT 3
 
 	cmpldi	cr1,cnt,31
@@ -422,5 +426,5 @@ L(end_unaligned_loop):
 	/* Return original DST pointer.  */
 	blr
 
-END_GEN_TB (memcpy,TB_TOCLESS)
+END_GEN_TB (MEMCPY,TB_TOCLESS)
 libc_hidden_builtin_def (memcpy)
diff --git a/sysdeps/powerpc/powerpc64/power7/mempcpy.S b/sysdeps/powerpc/powerpc64/power7/mempcpy.S
index fdf6b6f..4e15d1e 100644
--- a/sysdeps/powerpc/powerpc64/power7/mempcpy.S
+++ b/sysdeps/powerpc/powerpc64/power7/mempcpy.S
@@ -23,8 +23,11 @@
 /* __ptr_t [r3] __mempcpy (__ptr_t dst [r3], __ptr_t src [r4], size_t len [r5]);
     Returns 'dst' + 'len'.  */
 
+#ifndef MEMPCPY
+# define MEMPCPY __mempcpy
+#endif
 	.machine  power7
-EALIGN (__mempcpy, 5, 0)
+EALIGN (MEMPCPY, 5, 0)
 	CALL_MCOUNT 3
 
 	cmpldi	cr1,5,31
@@ -463,7 +466,7 @@ L(end_unaligned_loop):
 	add	3,3,5
 	blr
 
-END_GEN_TB (__mempcpy,TB_TOCLESS)
+END_GEN_TB (MEMPCPY,TB_TOCLESS)
 libc_hidden_def (__mempcpy)
 weak_alias (__mempcpy, mempcpy)
 libc_hidden_builtin_def (mempcpy)
-- 
1.9.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 6/9] powerpc: refactor memset IFUNC.
  2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
                   ` (6 preceding siblings ...)
  2017-04-03 21:20 ` [PATCH 5/9] powerpc: refactor strcasestr and strstr IFUNC Wainer dos Santos Moschetta
@ 2017-04-03 21:20 ` Wainer dos Santos Moschetta
  2017-04-03 21:20 ` [PATCH 7/9] powerpc: refactor memchr, memrchr, and rawmemchr IFUNC Wainer dos Santos Moschetta
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Wainer dos Santos Moschetta @ 2017-04-03 21:20 UTC (permalink / raw)
  To: libc-alpha

2017-04-03  Wainer dos Santos Moschetta  <wainersm@linux.vnet.ibm.com>

	* sysdeps/powerpc/powerpc64/multiarch/memset-power4.S: Define the
	implementation-specific function name and remove unneeded macros definition.
	* sysdeps/powerpc/powerpc64/multiarch/memset-power6.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/memset-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/memset-power8.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S: Likewise.
	* sysdeps/powerpc/powerpc64/memset.S: Set a default function name if
	not defined and pass as parameter to macros accordingly.
	* sysdeps/powerpc/powerpc64/power4/memset.S: Likewise.
	* sysdeps/powerpc/powerpc64/power6/memset.S: Likewise.
	* sysdeps/powerpc/powerpc64/power7/memset.S: Likewise.
	* sysdeps/powerpc/powerpc64/power8/memset.S: Likewise.
---
 sysdeps/powerpc/powerpc64/memset.S                  |  8 ++++++--
 sysdeps/powerpc/powerpc64/multiarch/memset-power4.S | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memset-power6.S | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memset-power7.S | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memset-power8.S | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S  | 16 +---------------
 sysdeps/powerpc/powerpc64/power4/memset.S           |  7 +++++--
 sysdeps/powerpc/powerpc64/power6/memset.S           |  7 +++++--
 sysdeps/powerpc/powerpc64/power7/memset.S           |  7 +++++--
 sysdeps/powerpc/powerpc64/power8/memset.S           |  8 ++++++--
 10 files changed, 32 insertions(+), 85 deletions(-)

diff --git a/sysdeps/powerpc/powerpc64/memset.S b/sysdeps/powerpc/powerpc64/memset.S
index 9a3c31e..f6581b5 100644
--- a/sysdeps/powerpc/powerpc64/memset.S
+++ b/sysdeps/powerpc/powerpc64/memset.S
@@ -31,7 +31,11 @@
    cache line (256 bits). There is a special case for setting cache lines
    to 0, to take advantage of the dcbz instruction.  */
 
-EALIGN (memset, 5, 0)
+#ifndef MEMSET
+# define MEMSET memset
+#endif
+
+EALIGN (MEMSET, 5, 0)
 	CALL_MCOUNT 3
 
 #define rTMP	r0
@@ -244,7 +248,7 @@ L(medium_27f):
 L(medium_28t):
 	std	rCHR, -8(rMEMP)
 	blr
-END_GEN_TB (memset,TB_TOCLESS)
+END_GEN_TB (MEMSET,TB_TOCLESS)
 libc_hidden_builtin_def (memset)
 
 #ifndef NO_BZERO_IMPL
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S
index 6a11d6d..3908e8e 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memset_power4)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memset_power4):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memset_power4)
-
-#undef END_GEN_TB
-#define END_GEN_TB(name, mask)					\
-  cfi_endproc;							\
-  TRACEBACK_MASK(__memset_power4,mask)				\
-  END_2(__memset_power4)
+#define MEMSET __memset_power4
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S
index 7791c10..4ddbd2e 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memset_power6)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memset_power6):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memset_power6)
-
-#undef END_GEN_TB
-#define END_GEN_TB(name, mask)					\
-  cfi_endproc;							\
-  TRACEBACK_MASK(__memset_power6,mask)				\
-  END_2(__memset_power6)
+#define MEMSET __memset_power6
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S
index 1755503..97f686b 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memset_power7)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memset_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memset_power7)
-
-#undef END_GEN_TB
-#define END_GEN_TB(name, mask)					\
-  cfi_endproc;							\
-  TRACEBACK_MASK(__memset_power7,mask)				\
-  END_2(__memset_power7)
+#define MEMSET __memset_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S
index 70856cb..ea30353 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memset_power8)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memset_power8):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memset_power8)
-
-#undef END_GEN_TB
-#define END_GEN_TB(name, mask)					\
-  cfi_endproc;							\
-  TRACEBACK_MASK(__memset_power8,mask)				\
-  END_2(__memset_power8)
+#define MEMSET __memset_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S
index aaa2ba9..0f16e21 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S
@@ -30,21 +30,7 @@ END_GEN_TB (__bzero_ppc,TB_TOCLESS)
 
 
 #if defined SHARED && IS_IN (libc)
-# undef EALIGN
-# define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memset_ppc)						\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memset_ppc):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memset_ppc)
-
-# undef END_GEN_TB
-# define END_GEN_TB(name, mask)					\
-  cfi_endproc;							\
-  TRACEBACK_MASK(__memset_ppc,mask)				\
-  END_2(__memset_ppc)
+# define MEMSET __memset_ppc
 
 # undef libc_hidden_builtin_def
 # define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/power4/memset.S b/sysdeps/powerpc/powerpc64/power4/memset.S
index 6686005..a57214e 100644
--- a/sysdeps/powerpc/powerpc64/power4/memset.S
+++ b/sysdeps/powerpc/powerpc64/power4/memset.S
@@ -25,8 +25,11 @@
    cache line (256 bits). There is a special case for setting cache lines
    to 0, to take advantage of the dcbz instruction.  */
 
+#ifndef MEMSET
+# define MEMSET memset
+#endif
 	.machine power4
-EALIGN (memset, 5, 0)
+EALIGN (MEMSET, 5, 0)
 	CALL_MCOUNT 3
 
 #define rTMP	r0
@@ -232,7 +235,7 @@ L(medium_27f):
 L(medium_28t):
 	std	rCHR, -8(rMEMP)
 	blr
-END_GEN_TB (memset,TB_TOCLESS)
+END_GEN_TB (MEMSET,TB_TOCLESS)
 libc_hidden_builtin_def (memset)
 
 /* Copied from bzero.S to prevent the linker from inserting a stub
diff --git a/sysdeps/powerpc/powerpc64/power6/memset.S b/sysdeps/powerpc/powerpc64/power6/memset.S
index 6130a1c..aee1c8e 100644
--- a/sysdeps/powerpc/powerpc64/power6/memset.S
+++ b/sysdeps/powerpc/powerpc64/power6/memset.S
@@ -25,8 +25,11 @@
    cache line (256 bits). There is a special case for setting cache lines
    to 0, to take advantage of the dcbz instruction.  */
 
+#ifndef MEMSET
+# define MEMSET memset
+#endif
 	.machine power6
-EALIGN (memset, 7, 0)
+EALIGN (MEMSET, 7, 0)
 	CALL_MCOUNT 3
 
 #define rTMP	r0
@@ -376,7 +379,7 @@ L(medium_27f):
 L(medium_28t):
 	std	rCHR, -8(rMEMP)
 	blr
-END_GEN_TB (memset,TB_TOCLESS)
+END_GEN_TB (MEMSET,TB_TOCLESS)
 libc_hidden_builtin_def (memset)
 
 /* Copied from bzero.S to prevent the linker from inserting a stub
diff --git a/sysdeps/powerpc/powerpc64/power7/memset.S b/sysdeps/powerpc/powerpc64/power7/memset.S
index 2fe1757..21933c0 100644
--- a/sysdeps/powerpc/powerpc64/power7/memset.S
+++ b/sysdeps/powerpc/powerpc64/power7/memset.S
@@ -22,8 +22,11 @@
 /* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
    Returns 's'.  */
 
+#ifndef MEMSET
+# define MEMSET memset
+#endif
 	.machine power7
-EALIGN (memset, 5, 0)
+EALIGN (MEMSET, 5, 0)
 	CALL_MCOUNT 3
 
 L(_memset):
@@ -380,7 +383,7 @@ L(small):
 	stw	4,4(10)
 	blr
 
-END_GEN_TB (memset,TB_TOCLESS)
+END_GEN_TB (MEMSET,TB_TOCLESS)
 libc_hidden_builtin_def (memset)
 
 /* Copied from bzero.S to prevent the linker from inserting a stub
diff --git a/sysdeps/powerpc/powerpc64/power8/memset.S b/sysdeps/powerpc/powerpc64/power8/memset.S
index 5dc257d..bc734c9 100644
--- a/sysdeps/powerpc/powerpc64/power8/memset.S
+++ b/sysdeps/powerpc/powerpc64/power8/memset.S
@@ -23,11 +23,15 @@
 /* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
    Returns 's'.  */
 
+#ifndef MEMSET
+# define MEMSET memset
+#endif
+
 	/* No need to use .machine power8 since mtvsrd is already
 	   handled by the define.  It avoid breakage on binutils
 	   that does not support this machine specifier.  */
 	.machine power7
-EALIGN (memset, 5, 0)
+EALIGN (MEMSET, 5, 0)
 	CALL_MCOUNT 3
 
 L(_memset):
@@ -438,7 +442,7 @@ L(write_LE_8):
 	stw	r4,0(r10)
 	stw	r4,4(r10)
 	blr
-END_GEN_TB (memset,TB_TOCLESS)
+END_GEN_TB (MEMSET,TB_TOCLESS)
 libc_hidden_builtin_def (memset)
 
 /* Copied from bzero.S to prevent the linker from inserting a stub
-- 
1.9.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 9/9] powerpc: refactor memcmp and memmove IFUNC.
  2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
                   ` (4 preceding siblings ...)
  2017-04-03 21:20 ` [PATCH 8/9] powerpc: refactor memcpy and mempcpy IFUNC Wainer dos Santos Moschetta
@ 2017-04-03 21:20 ` Wainer dos Santos Moschetta
  2017-04-03 21:20 ` [PATCH 5/9] powerpc: refactor strcasestr and strstr IFUNC Wainer dos Santos Moschetta
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Wainer dos Santos Moschetta @ 2017-04-03 21:20 UTC (permalink / raw)
  To: libc-alpha

2017-04-03  Wainer dos Santos Moschetta  <wainersm@vnet.linux.ibm.com>

	* sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S: Define the
	implementation-specific function name and remove unneeded
	macros definition.
	* sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/power4/memcmp.S: Set a default function
	name if not defined and pass as parameter to macros accordingly.
	* sysdeps/powerpc/powerpc64/power7/memcmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/power7/memmove.S: Likewise.
---
 sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S  | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S  | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S | 16 +---------------
 sysdeps/powerpc/powerpc64/power4/memcmp.S            |  8 ++++++--
 sysdeps/powerpc/powerpc64/power7/memcmp.S            |  8 +++++---
 sysdeps/powerpc/powerpc64/power7/memmove.S           |  7 +++++--
 6 files changed, 19 insertions(+), 52 deletions(-)

diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S
index fa107f1..e38b2a9 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memcmp_power4)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memcmp_power4):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memcmp_power4)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__memcmp_power4)					\
-  END_2(__memcmp_power4)
+#define MEMCMP __memcmp_power4
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S
index 0fb597d..a9cc979 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memcmp_power7)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memcmp_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memcmp_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__memcmp_power7)					\
-  END_2(__memcmp_power7)
+#define MEMCMP __memcmp_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S
index 46dddeb..a9435fa 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/memmove-power7.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__memmove_power7)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__memmove_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__memmove_power7)
-
-#undef END_GEN_TB
-#define END_GEN_TB(name, mask)					\
-  cfi_endproc;							\
-  TRACEBACK_MASK(__memmove_power7,mask)				\
-  END_2(__memmove_power7)
+#define MEMMOVE __memmove_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/power4/memcmp.S b/sysdeps/powerpc/powerpc64/power4/memcmp.S
index 02e28c4..6ca98e9 100644
--- a/sysdeps/powerpc/powerpc64/power4/memcmp.S
+++ b/sysdeps/powerpc/powerpc64/power4/memcmp.S
@@ -22,8 +22,12 @@
 		    const char *s2 [r4],
 		    size_t size [r5])  */
 
+#ifndef MEMCMP
+# define MEMCMP memcmp
+#endif
+
 	.machine power4
-EALIGN (memcmp, 4, 0)
+EALIGN (MEMCMP, 4, 0)
 	CALL_MCOUNT 3
 
 #define rRTN	r3
@@ -1360,6 +1364,6 @@ L(duzeroLength):
 	li	rRTN, 0
 	blr
 
-END (memcmp)
+END (MEMCMP)
 libc_hidden_builtin_def (memcmp)
 weak_alias (memcmp, bcmp)
diff --git a/sysdeps/powerpc/powerpc64/power7/memcmp.S b/sysdeps/powerpc/powerpc64/power7/memcmp.S
index 75399cb..96ce8ce 100644
--- a/sysdeps/powerpc/powerpc64/power7/memcmp.S
+++ b/sysdeps/powerpc/powerpc64/power7/memcmp.S
@@ -21,9 +21,11 @@
 /* int [r3] memcmp (const char *s1 [r3],
 		    const char *s2 [r4],
 		    size_t size [r5])  */
-
+#ifndef MEMCMP
+# define MEMCMP memcmp
+#endif
 	.machine power7
-EALIGN (memcmp, 4, 0)
+EALIGN (MEMCMP, 4, 0)
 	CALL_MCOUNT 3
 
 #define rRTN		r3
@@ -1054,6 +1056,6 @@ L(duzeroLength):
 	li	rRTN, 0
 	blr
 
-END (memcmp)
+END (MEMCMP)
 libc_hidden_builtin_def (memcmp)
 weak_alias (memcmp, bcmp)
diff --git a/sysdeps/powerpc/powerpc64/power7/memmove.S b/sysdeps/powerpc/powerpc64/power7/memmove.S
index 6afe80a..4c0f7c3 100644
--- a/sysdeps/powerpc/powerpc64/power7/memmove.S
+++ b/sysdeps/powerpc/powerpc64/power7/memmove.S
@@ -27,8 +27,11 @@
    If source and destiny overlaps, a optimized backwards memcpy is used
    instead.  */
 
+#ifndef MEMMOVE
+# define MEMMOVE memmove
+#endif
 	.machine power7
-EALIGN (memmove, 5, 0)
+EALIGN (MEMMOVE, 5, 0)
 	CALL_MCOUNT 3
 
 L(_memmove):
@@ -816,7 +819,7 @@ L(end_unaligned_loop_bwd):
 	stb	r8,-7(r11)
 	/* Return original DST pointer.  */
 	blr
-END_GEN_TB (memmove, TB_TOCLESS)
+END_GEN_TB (MEMMOVE, TB_TOCLESS)
 libc_hidden_builtin_def (memmove)
 
 
-- 
1.9.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 5/9] powerpc: refactor strcasestr and strstr IFUNC.
  2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
                   ` (5 preceding siblings ...)
  2017-04-03 21:20 ` [PATCH 9/9] powerpc: refactor memcmp and memmove IFUNC Wainer dos Santos Moschetta
@ 2017-04-03 21:20 ` Wainer dos Santos Moschetta
  2017-04-03 21:20 ` [PATCH 6/9] powerpc: refactor memset IFUNC Wainer dos Santos Moschetta
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 14+ messages in thread
From: Wainer dos Santos Moschetta @ 2017-04-03 21:20 UTC (permalink / raw)
  To: libc-alpha

2017-04-03  Wainer dos Santos Moschetta  <wainersm@linux.vnet.ibm.com>

	* sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S: Define the
	strcasestr implementation name and remove unneeded macros definition.
	* sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S: Define
	strstr implementation name and remove unneeded macros definition.
	* sysdeps/powerpc/powerpc64/power7/strstr.S: Set a default function
	name if not defined and pass as parameter to macros accordingly.
	* sysdeps/powerpc/powerpc64/power8/strcasestr.S: Likewise.
---
 sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S | 16 +---------------
 sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S     | 16 +---------------
 sysdeps/powerpc/powerpc64/power7/strstr.S               |  8 ++++++--
 sysdeps/powerpc/powerpc64/power8/strcasestr.S           |  8 ++++++--
 4 files changed, 14 insertions(+), 34 deletions(-)

diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S
index 5a0eb9c..2cfb5ae 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strcasestr_power8)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strcasestr_power8):				\
-  cfi_startproc;						\
-  LOCALENTRY(__strcasestr_power8)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strcasestr_power8)				\
-  END_2(__strcasestr_power8)
+#define STRCASESTR __strcasestr_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S
index 5ac7b85..3991df7 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strstr_power7)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strstr_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strstr_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strstr_power7)					\
-  END_2(__strstr_power7)
+#define STRSTR __strstr_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/power7/strstr.S b/sysdeps/powerpc/powerpc64/power7/strstr.S
index 2a79b8b..260db2e 100644
--- a/sysdeps/powerpc/powerpc64/power7/strstr.S
+++ b/sysdeps/powerpc/powerpc64/power7/strstr.S
@@ -25,6 +25,10 @@
 
 #define ITERATIONS	64
 
+#ifndef STRSTR
+# define STRSTR strstr
+#endif
+
 #ifndef STRLEN
 /* For builds with no IFUNC support, local calls should be made to internal
    GLIBC symbol (created by libc_hidden_builtin_def).  */
@@ -55,7 +59,7 @@
 
 #define	FRAMESIZE	(FRAME_MIN_SIZE+32)
 	.machine  power7
-EALIGN (strstr, 4, 0)
+EALIGN (STRSTR, 4, 0)
 	CALL_MCOUNT 2
 	mflr	r0			/* Load link register LR to r0.  */
 	std	r31, -8(r1)		/* Save callers register r31.  */
@@ -513,5 +517,5 @@ L(end):
 	ld	r31, -8(r1)	/* Restore callers save register r31.  */
 	mtlr	r0		/* Branch to link register.  */
 	blr
-END (strstr)
+END (STRSTR)
 libc_hidden_builtin_def (strstr)
diff --git a/sysdeps/powerpc/powerpc64/power8/strcasestr.S b/sysdeps/powerpc/powerpc64/power8/strcasestr.S
index 86f1672..6ac6572 100644
--- a/sysdeps/powerpc/powerpc64/power8/strcasestr.S
+++ b/sysdeps/powerpc/powerpc64/power8/strcasestr.S
@@ -27,6 +27,10 @@
    fallback to default.  */
 #define ITERATIONS	64
 
+#ifndef STRCASESTR
+# define STRCASESTR __strcasestr
+#endif
+
 #ifndef STRLEN
 /* For builds without IFUNC support, local calls should be made to internal
    GLIBC symbol (created by libc_hidden_builtin_def).  */
@@ -81,7 +85,7 @@
 /* TODO: change this to .machine power8 when the minimum required binutils
    allows it.  */
 	.machine  power7
-EALIGN (__strcasestr, 4, 0)
+EALIGN (STRCASESTR, 4, 0)
 	CALL_MCOUNT 2
 	mflr	r0			/* Load link register LR to r0.  */
 	std	r31, -8(r1)		/* Save callers register r31.  */
@@ -527,7 +531,7 @@ L(end):
 	cfi_restore(r31)
 	mtlr	r0		/* Branch to link register.  */
 	blr
-END (__strcasestr)
+END (STRCASESTR)
 
 weak_alias (__strcasestr, strcasestr)
 libc_hidden_def (__strcasestr)
-- 
1.9.1

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 0/9] powerpc: cleanup IFUNC implementations.
  2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
                   ` (8 preceding siblings ...)
  2017-04-03 21:20 ` [PATCH 7/9] powerpc: refactor memchr, memrchr, and rawmemchr IFUNC Wainer dos Santos Moschetta
@ 2017-04-10  8:42 ` Rajalakshmi Srinivasaraghavan
  2017-04-10 18:17 ` Adhemerval Zanella
  2017-04-11 20:22 ` Tulio Magno Quites Machado Filho
  11 siblings, 0 replies; 14+ messages in thread
From: Rajalakshmi Srinivasaraghavan @ 2017-04-10  8:42 UTC (permalink / raw)
  To: libc-alpha



On 04/04/2017 02:49 AM, Wainer dos Santos Moschetta wrote:
> Almost all IFUNC string implementations in powerpc define one
> or more of the ENTRY, EALIGN, END, and END_GEN_TB macros. But
> these are already defined in sysdeps/powerpc/powerpc64/sysdep.h,
> making them redundant.
>
> The following set of patch cleans up the IFUNC implementations
> for powerpc in order to remove unneeded macro definitions.
>
> Tested on ppc64le with and without --disable-multi-arch flag.

LGTM.

-- 
Thanks
Rajalakshmi S

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 0/9] powerpc: cleanup IFUNC implementations.
  2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
                   ` (9 preceding siblings ...)
  2017-04-10  8:42 ` [PATCH 0/9] powerpc: cleanup IFUNC implementations Rajalakshmi Srinivasaraghavan
@ 2017-04-10 18:17 ` Adhemerval Zanella
  2017-04-11 20:22 ` Tulio Magno Quites Machado Filho
  11 siblings, 0 replies; 14+ messages in thread
From: Adhemerval Zanella @ 2017-04-10 18:17 UTC (permalink / raw)
  To: libc-alpha



On 03/04/2017 18:19, Wainer dos Santos Moschetta wrote:
> Almost all IFUNC string implementations in powerpc define one
> or more of the ENTRY, EALIGN, END, and END_GEN_TB macros. But
> these are already defined in sysdeps/powerpc/powerpc64/sysdep.h,
> making them redundant.
> 
> The following set of patch cleans up the IFUNC implementations
> for powerpc in order to remove unneeded macro definitions.
> 
> Tested on ppc64le with and without --disable-multi-arch flag.
> 
> Wainer dos Santos Moschetta (9):
>   powerpc: refactor stpcpy, stpncpy, strcpy, and strncpy IFUNC.
>   powerpc: refactor strcasecmp, strcmp, and strncmp IFUNC.
>   powerpc: refactory strnlen and strlen IFUNC.
>   powerpc: refactor strchr, strchrnul, and strrchr IFUNC.
>   powerpc: refactor strcasestr and strstr IFUNC.
>   powerpc: refactor memset IFUNC.
>   powerpc: refactor memchr, memrchr, and rawmemchr IFUNC.
>   powerpc: refactor memcpy and mempcpy IFUNC.
>   powerpc: refactor memcmp and memmove IFUNC.

Thanks for the cleanup, the changes seems straightforward enough.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 4/9] powerpc: refactor strchr, strchrnul, and strrchr IFUNC.
  2017-04-03 21:19 ` [PATCH 4/9] powerpc: refactor strchr, strchrnul, and strrchr IFUNC Wainer dos Santos Moschetta
@ 2017-04-11 18:21   ` Tulio Magno Quites Machado Filho
  0 siblings, 0 replies; 14+ messages in thread
From: Tulio Magno Quites Machado Filho @ 2017-04-11 18:21 UTC (permalink / raw)
  To: libc-alpha, wainersm

Wainer dos Santos Moschetta <wainersm@linux.vnet.ibm.com> writes:

> diff --git a/sysdeps/powerpc/powerpc64/power7/strchrnul.S b/sysdeps/powerpc/powerpc64/power7/strchrnul.S
> index 99aa157..8a87aea 100644
> --- a/sysdeps/powerpc/powerpc64/power7/strchrnul.S
> +++ b/sysdeps/powerpc/powerpc64/power7/strchrnul.S
> @@ -19,9 +19,12 @@
>
>  #include <sysdep.h>
>
> +#ifndef STRCHRNUL
> +# def STRCHRNUL __strchrnul

Oops.  There is a typo here.
I'll fix it before pushing it.

-- 
Tulio Magno

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 0/9] powerpc: cleanup IFUNC implementations.
  2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
                   ` (10 preceding siblings ...)
  2017-04-10 18:17 ` Adhemerval Zanella
@ 2017-04-11 20:22 ` Tulio Magno Quites Machado Filho
  11 siblings, 0 replies; 14+ messages in thread
From: Tulio Magno Quites Machado Filho @ 2017-04-11 20:22 UTC (permalink / raw)
  To: wainersm, libc-alpha

Wainer dos Santos Moschetta <wainersm@linux.vnet.ibm.com> writes:

> Almost all IFUNC string implementations in powerpc define one
> or more of the ENTRY, EALIGN, END, and END_GEN_TB macros. But
> these are already defined in sysdeps/powerpc/powerpc64/sysdep.h,
> making them redundant.
>
> The following set of patch cleans up the IFUNC implementations
> for powerpc in order to remove unneeded macro definitions.
>
> Tested on ppc64le with and without --disable-multi-arch flag.

I fixed the issue I pointed in another email and pushed all these patches.

Thanks!

-- 
Tulio Magno

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-04-11 20:22 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-03 21:19 [PATCH 0/9] powerpc: cleanup IFUNC implementations Wainer dos Santos Moschetta
2017-04-03 21:19 ` [PATCH 1/9] powerpc: refactor stpcpy, stpncpy, strcpy, and strncpy IFUNC Wainer dos Santos Moschetta
2017-04-03 21:19 ` [PATCH 3/9] powerpc: refactor strnlen and strlen IFUNC Wainer dos Santos Moschetta
2017-04-03 21:19 ` [PATCH 2/9] powerpc: refactor strcasecmp, strcmp, and strncmp IFUNC Wainer dos Santos Moschetta
2017-04-03 21:19 ` [PATCH 4/9] powerpc: refactor strchr, strchrnul, and strrchr IFUNC Wainer dos Santos Moschetta
2017-04-11 18:21   ` Tulio Magno Quites Machado Filho
2017-04-03 21:20 ` [PATCH 8/9] powerpc: refactor memcpy and mempcpy IFUNC Wainer dos Santos Moschetta
2017-04-03 21:20 ` [PATCH 9/9] powerpc: refactor memcmp and memmove IFUNC Wainer dos Santos Moschetta
2017-04-03 21:20 ` [PATCH 5/9] powerpc: refactor strcasestr and strstr IFUNC Wainer dos Santos Moschetta
2017-04-03 21:20 ` [PATCH 6/9] powerpc: refactor memset IFUNC Wainer dos Santos Moschetta
2017-04-03 21:20 ` [PATCH 7/9] powerpc: refactor memchr, memrchr, and rawmemchr IFUNC Wainer dos Santos Moschetta
2017-04-10  8:42 ` [PATCH 0/9] powerpc: cleanup IFUNC implementations Rajalakshmi Srinivasaraghavan
2017-04-10 18:17 ` Adhemerval Zanella
2017-04-11 20:22 ` Tulio Magno Quites Machado Filho

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).