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

20 files changed:
ChangeLog
sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S
sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S
sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S
sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S
sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S
sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S
sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S
sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S
sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S
sysdeps/powerpc/powerpc64/power4/strncmp.S
sysdeps/powerpc/powerpc64/power7/strcmp.S
sysdeps/powerpc/powerpc64/power7/strncmp.S
sysdeps/powerpc/powerpc64/power8/strcmp.S
sysdeps/powerpc/powerpc64/power8/strncmp.S
sysdeps/powerpc/powerpc64/power9/strcmp.S
sysdeps/powerpc/powerpc64/power9/strncmp.S
sysdeps/powerpc/powerpc64/strcmp.S
sysdeps/powerpc/powerpc64/strncmp.S

index d4bbc560f4a6e6c7998cb800412b6c09ee2d54a3..0dc5c074ed7caaf46dbb824046d846fb691763d1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,28 @@
 2017-04-11  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.
+
        * sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S: Define the
        implementation-specific function name and remove unneeded macros
        definition.
index f30a3119ed293e037fb66c8ff188a0b8469fb17a..da4c4054c37ee5f4502900d9c068706dd72ff7ee 100644 (file)
 
 #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)
index b34bd4580b9bebc1393dc8dc558ff6db34b6ee8b..82d1b63af95dcb65cbff90482251c9c40a9ca7d3 100644 (file)
 
 #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)
index b3aeb6cc06ab1dea627abe50a6fa3dc7fac1b653..b2464a80186ec2f0ad2e3e5ff86c838b41170374 100644 (file)
 
 #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)
index 11dc688e7f243a3d49d5a441a5fde614ebb36c32..48ea05d2c5018329b0a3ecda96b320e09c5dbd8a 100644 (file)
 
 #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)
index 3cff3266be09774fc1fa5f0f7f6a7ced96880b97..085e74758f209a83668323ebd596e5a30091bf20 100644 (file)
 #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>
index fa25d8e3ecf948431342fea644fbd2b944bc6a35..01729a3bba2e4eeeec05d20fc2644d2c2e9e9bf4 100644 (file)
 
 #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)
index 3aad27782af082232dbab312e73acaa3741cc800..a069d4b21c16e572884e6dc8802c7b5d3b1ca7e1 100644 (file)
 
 #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)
index 496d19e848ce7b4a58269f0cd506d97cbdef7250..3cbcaada62831ff769d298ae046a6897c6deabc0 100644 (file)
 
 #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)
index bd09285b9d668d3f62c5a9937ed9936899f9bbf7..6d0deaa6e6816a61f707bfa56378b2437d9cc735 100644 (file)
 
 #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)
index 2e7885b3410fe765f45b744d2027f9fc198857ba..e4b93ae8f2cf09fdf952f73a720f1860a354d27a 100644 (file)
 #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)                         \
index e8a0970f4fc396f756ead9b7809eef696d51c74c..2b0c00dfb251611503433146b7c45947fa211e05 100644 (file)
 
 #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)
index e468103ddc97642f16c44a3aa771e90a79407805..14e14f457e376c7e1c900ae77e9ccf54c6ec10bd 100644 (file)
 
 #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)
index 6a03da5f2b10b0e305d35991d9fd4b3273f3d192..d53b31be8e5f2b5a50dedaac01cf7cfc156c6e16 100644 (file)
 
 #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)
index d46bff80cdcbb2aa6faac68cb50ccc3df8f84d27..770484f1e160440a0b5148ccd6f25a91596cbd7a 100644 (file)
 
 #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)
index b93a16edc7c26faf40d154843dcaaea370b6b957..3d8df9053885b62b48db9dd9255992c8ddb99eb1 100644 (file)
 
 #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)
index 17ec8c24c3e7969dca4108216282d856628809cf..2dc4f6c722873de9814f9693f6bf1cae408d19f0 100644 (file)
 #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>
index 14d016a0e27e700dbe0daef5c6194d981668ed00..c946a5c6387800f0d6b512cd29a2cc475cb4f33e 100644 (file)
    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>
index 3cadccac7ad20bc4cdf5e87976bfc9ff478007c6..ab5f8c231cbfc52b4748cdee93dd317e73e17605 100644 (file)
 
 /* 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)
index d560e4fd5d1385642bc4488e8310fe6071b18965..076599804a58d17368fc56834b7a1ac92fbb0be6 100644 (file)
 
 /* 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)