]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
powerpc: refactor memcpy and mempcpy IFUNC.
authorWainer dos Santos Moschetta <wainersm@linux.vnet.ibm.com>
Tue, 11 Apr 2017 17:18:35 +0000 (14:18 -0300)
committerTulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
Tue, 11 Apr 2017 20:13:56 +0000 (17:13 -0300)
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/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.

15 files changed:
ChangeLog
sysdeps/powerpc/powerpc64/a2/memcpy.S
sysdeps/powerpc/powerpc64/cell/memcpy.S
sysdeps/powerpc/powerpc64/memcpy.S
sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S
sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S
sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S
sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S
sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S
sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S
sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S
sysdeps/powerpc/powerpc64/power4/memcpy.S
sysdeps/powerpc/powerpc64/power6/memcpy.S
sysdeps/powerpc/powerpc64/power7/memcpy.S
sysdeps/powerpc/powerpc64/power7/mempcpy.S

index 48187ba927a950107823d3cb88e4e03bce78acf0..bfdb18c04a290bbd3bdab0799620294f48b76ee3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,23 @@
 2017-04-11  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/multiarch/memchr-power7.S: Define the
        implementation-specific function name and remove unneeded macros
        definition.
index eb306086e9c794a9dc3fe2d80b0b949d566e2dcd..ff30898df5fa5ce3ae4f067c62f64c1c09b35108 100644 (file)
 
 #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)
index e163a5c44a0593c069e99b05c4d2bd4973e0d6fa..1cc66456e3747a1d7727bcca4795573e28442655 100644 (file)
 
 #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)
index 1b6d80608c2e1265e603a238b36caac19fa5ba95..a4c82c31ef46a7b397d00ecc0e47cba48461d387 100644 (file)
    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)
index 7311762fcac832465e0aa16e619d0737ac6f08af..a942287900848843573a00c78c0f5dd23812feb9 100644 (file)
 
 #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)
index dd1a7f1fae0a1c0cfa1b6746ff19b34daf1696d7..39aa30c72997829c46c77dc553b56fccbb47f913 100644 (file)
 
 #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)
index de86da4fdb7e49759d995c3bedf9bc182945235d..6e7fea382b27e20cf0052ea46ab8db8e2f84fce6 100644 (file)
 
 #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)
index 8c2ef7c8abf1487d126f9174dfe26953b63b7172..40bcdb1161c82b94e95d29e107bcfc7bb1d38d40 100644 (file)
 
 #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)
index 7751b33fea8a43b4ce0d09f615c925379270fbc9..222936af63e10d4a5f5e8006c3c2c7f70d20877c 100644 (file)
 
 #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)
index 16f9f1babcd1287824a55dbe5f893a138fd6e86a..2dc644c80945fc3ce357ac15fcede13c4a7785d0 100644 (file)
 #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)
index 27fa52c89f23bee98bcfa59fb3d3569a18223378..08f133644a7f90c60cf8e94f4f8e4c6f7a4b9a5c 100644 (file)
 
 #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)
index ff9db25a70e1681512456e5c48db90c59644819e..2e96376b9f0d8e6ccdc071b7532ea890fcfc14e8 100644 (file)
    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)
index f5e770a7050fa87a09a9c1ea959a60b71e674610..1f7294b8ed41e5419f4d6a93a7dd3a92f235281e 100644 (file)
    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)
index ae2db216f3d3f79e47bbdf1b67c60125db0eca51..e08993cbc3d7efa828fb90225588646744bf6744 100644 (file)
 /* __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)
index fdf6b6f130f5eb66b91099c0c28fc56805901b57..4e15d1e40cdad23b93d550297e8e4172d3087765 100644 (file)
 /* __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)