From: Wainer dos Santos Moschetta Date: Tue, 11 Apr 2017 17:18:35 +0000 (-0300) Subject: powerpc: refactor strchr, strchrnul, and strrchr IFUNC. X-Git-Tag: upstream/2.30~3558 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6d15a5c2e9450a1e926d5b4991759e1cfa50fccf;p=platform%2Fupstream%2Fglibc.git 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. --- diff --git a/ChangeLog b/ChangeLog index 004d6a80..a02f848 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 c0228dc..e64c0b7 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 461b8a9..bbda7b0 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 9354239..769f9f0 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 57186f2..c8e2872 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 5a701c7..1cd39fc 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 841b933..10bab2e 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 9a210c9..a18e2e1 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 99aa157..27bc1f0 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 ee20122..c22393d 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 5d6fa5d..e0c185c 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 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)