* [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 4/9] powerpc: refactor strchr, strchrnul, and strrchr 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 1/9] powerpc: refactor stpcpy, stpncpy, strcpy, and strncpy 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 4/9] powerpc: refactor strchr, strchrnul, and strrchr 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
@ 2017-04-03 21:19 ` Wainer dos Santos Moschetta
2017-04-11 18:21 ` Tulio Magno Quites Machado Filho
2017-04-03 21:19 ` [PATCH 3/9] powerpc: refactor strnlen and strlen IFUNC Wainer dos Santos Moschetta
` (10 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 4/9] powerpc: refactor strchr, strchrnul, and strrchr 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
` (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-03 21:20 ` [PATCH 5/9] powerpc: refactor strcasestr and strstr IFUNC Wainer dos Santos Moschetta
` (7 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
` (4 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 9/9] powerpc: refactor memcmp and memmove 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@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
` (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/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 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 8/9] powerpc: refactor memcpy and mempcpy 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
` (5 preceding siblings ...)
2017-04-03 21:20 ` [PATCH 7/9] powerpc: refactor memchr, memrchr, and rawmemchr 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@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
` (3 preceding siblings ...)
2017-04-03 21:19 ` [PATCH 1/9] powerpc: refactor stpcpy, stpncpy, strcpy, and strncpy 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
` (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/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 8/9] powerpc: refactor memcpy and mempcpy 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 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: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 1/9] powerpc: refactor stpcpy, stpncpy, strcpy, and strncpy 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 7/9] powerpc: refactor memchr, memrchr, and rawmemchr 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 6/9] powerpc: refactor memset IFUNC Wainer dos Santos Moschetta
2017-04-03 21:20 ` [PATCH 8/9] powerpc: refactor memcpy and mempcpy 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).