From 18e0054bf7c57cb5e6b90961be167164d58b1098 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 memset 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/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. --- ChangeLog | 14 ++++++++++++++ sysdeps/powerpc/powerpc64/memset.S | 8 ++++++-- .../powerpc/powerpc64/multiarch/memset-power4.S | 16 +--------------- .../powerpc/powerpc64/multiarch/memset-power6.S | 16 +--------------- .../powerpc/powerpc64/multiarch/memset-power7.S | 16 +--------------- .../powerpc/powerpc64/multiarch/memset-power8.S | 16 +--------------- .../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 ++++++-- 11 files changed, 46 insertions(+), 85 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3b069a9209..7c0ce8964f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,19 @@ 2017-04-11 Wainer dos Santos Moschetta + * 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/multiarch/strcasestr-power8.S: Define the strcasestr implementation name and remove unneeded macros definition. * sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S: Define diff --git a/sysdeps/powerpc/powerpc64/memset.S b/sysdeps/powerpc/powerpc64/memset.S index 9a3c31ef7a..f6581b50f7 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 6a11d6d7b7..3908e8e412 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S +++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S @@ -18,21 +18,7 @@ #include -#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 7791c10888..4ddbd2e274 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S +++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S @@ -18,21 +18,7 @@ #include -#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 1755503dae..97f686b35d 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S @@ -18,21 +18,7 @@ #include -#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 70856cb473..ea303533f4 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power8.S @@ -18,21 +18,7 @@ #include -#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 aaa2ba9628..0f16e21c61 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 6686005474..a57214e0b0 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 6130a1c4f5..aee1c8eabb 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 2fe1757dc8..21933c0672 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 5dc257dd5b..bc734c9f4f 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 -- 2.43.5