From 6d15a5c2e9450a1e926d5b4991759e1cfa50fccf Mon Sep 17 00:00:00 2001 From: Wainer dos Santos Moschetta Date: Tue, 11 Apr 2017 14:18:35 -0300 Subject: [PATCH] powerpc: refactor strchr, strchrnul, and strrchr IFUNC. Clean up the IFUNC implementations for powerpc in order to remove unneeded macro definitions. Tested on ppc64le with and without --disable-multi-arch flag. * 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. --- ChangeLog | 16 ++++++++++++++++ .../powerpc/powerpc64/multiarch/strchr-power7.S | 15 +-------------- .../powerpc/powerpc64/multiarch/strchr-power8.S | 15 +-------------- .../powerpc/powerpc64/multiarch/strchr-ppc64.S | 15 +-------------- .../powerpc64/multiarch/strchrnul-power7.S | 15 +-------------- .../powerpc64/multiarch/strchrnul-power8.S | 15 +-------------- .../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 ++++++-- 12 files changed, 60 insertions(+), 97 deletions(-) diff --git a/ChangeLog b/ChangeLog index 004d6a8065..a02f848c5a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,21 @@ 2017-04-11 Wainer dos Santos Moschetta + * 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/strlen-power7.S: Define the strlen implementation name and remove unneeded macros definition. * sysdeps/powerpc/powerpc64/multiarch/strlen-power8.S: Likewise. diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S index c0228dc650..e64c0b7c82 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S @@ -18,20 +18,7 @@ #include -#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 461b8a9e13..bbda7b0505 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S @@ -18,20 +18,7 @@ #include -#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 9354239294..769f9f07d4 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S @@ -19,20 +19,7 @@ #include #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 57186f24e5..c8e28721fd 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S @@ -18,20 +18,7 @@ #include -#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 5a701c7d88..1cd39fc1b3 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power8.S @@ -18,20 +18,7 @@ #include -#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 841b933288..10bab2ec54 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strrchr-power7.S @@ -18,20 +18,7 @@ #include -#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 9a210c9d4c..a18e2e101c 100644 --- a/sysdeps/powerpc/powerpc64/power7/strchr.S +++ b/sysdeps/powerpc/powerpc64/power7/strchr.S @@ -19,9 +19,13 @@ #include +#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 99aa1576ff..27bc1f0682 100644 --- a/sysdeps/powerpc/powerpc64/power7/strchrnul.S +++ b/sysdeps/powerpc/powerpc64/power7/strchrnul.S @@ -19,9 +19,12 @@ #include +#ifndef STRCHRNUL +# define 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 ee201223a6..c22393deb5 100644 --- a/sysdeps/powerpc/powerpc64/power7/strrchr.S +++ b/sysdeps/powerpc/powerpc64/power7/strrchr.S @@ -19,8 +19,13 @@ #include /* 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 5d6fa5d46e..e0c185c162 100644 --- a/sysdeps/powerpc/powerpc64/power8/strchr.S +++ b/sysdeps/powerpc/powerpc64/power8/strchr.S @@ -19,10 +19,19 @@ #include #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 dc5ddb103c..cbfcc14cfe 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)