[PATCHv2] powerpc: refactor strrchr IFUNC
Commit Message
As done in commit 6d15a5c2e9450a1e926d5b4991759e1cfa50fccf
clean up IFUNC implementation for power8 in order to remove
unneeded macro definitions.
2017-06-21 Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
* sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S(STRRCHR): Define
the implementation-specific function name and remove unneeded macros
definition.
* sysdeps/powerpc/powerpc64/power8/strrchr.S(STRRCHR): Set a default
function name if not defined and pass as parameter to macros
accordingly.
---
sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S | 18 +-----------------
sysdeps/powerpc/powerpc64/power8/strrchr.S | 8 ++++++--
2 files changed, 7 insertions(+), 19 deletions(-)
Comments
Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com> writes:
> As done in commit 6d15a5c2e9450a1e926d5b4991759e1cfa50fccf
> clean up IFUNC implementation for power8 in order to remove
> unneeded macro definitions.
>
> 2017-06-21 Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
>
> * sysdeps/powerpc/powerpc64/multiarch/strchr-power8.S(STRRCHR): Define
> the implementation-specific function name and remove unneeded macros
> definition.
> * sysdeps/powerpc/powerpc64/power8/strrchr.S(STRRCHR): Set a default
> function name if not defined and pass as parameter to macros
> accordingly.
OK
> diff --git a/sysdeps/powerpc/powerpc64/power8/strrchr.S b/sysdeps/powerpc/powerpc64/power8/strrchr.S
> index 0ba6138..0c7c900 100644
> --- a/sysdeps/powerpc/powerpc64/power8/strrchr.S
> +++ b/sysdeps/powerpc/powerpc64/power8/strrchr.S
> @@ -76,8 +76,12 @@
> 1: \
> vsumsws v2, v2, v0;
> #endif /* !__LITTLE_ENDIAN__ */
> +
> +#ifndef STRRCHR
> +# define STRRCHR strrchr
> +#endif
> .machine power7
> -ENTRY_TOCLESS (strrchr)
> +ENTRY_TOCLESS (STRRCHR)
> CALL_MCOUNT 2
> dcbt 0,r3
> clrrdi r8,r3,3 /* Align the address to doubleword boundary. */
> @@ -459,6 +463,6 @@ L(continue1):
> #endif
> add r3, r3, r6 /* Compute final length. */
> blr
> -END (strrchr)
> +END (STRRCHR)
Shouldn't it be END_GEN_TB (STRRCHR, TB_TOCLESS) ?
Looks good to me with that change.
@@ -18,23 +18,7 @@
#include <sysdep.h>
-#undef ENTRY_TOCLESS
-#ifndef PROF
-#define ENTRY_TOCLESS(name, ...) \
- ENTRY_3 __strrchr_power8, ## __VA_ARGS__; \
- cfi_startproc
-#else
-#define ENTRY_TOCLESS(name, ...) \
- ENTRY_3 __strrchr_power8, ## __VA_ARGS__; \
- cfi_startproc; \
- LOCALENTRY(__strrchr_power8)
-#endif
-
-#undef END
-#define END(name) \
- cfi_endproc; \
- TRACEBACK(__strrchr_power8); \
- END_2(__strrchr_power8)
+#define STRRCHR __strrchr_power8
#undef libc_hidden_builtin_def
#define libc_hidden_builtin_def(name)
@@ -76,8 +76,12 @@
1: \
vsumsws v2, v2, v0;
#endif /* !__LITTLE_ENDIAN__ */
+
+#ifndef STRRCHR
+# define STRRCHR strrchr
+#endif
.machine power7
-ENTRY_TOCLESS (strrchr)
+ENTRY_TOCLESS (STRRCHR)
CALL_MCOUNT 2
dcbt 0,r3
clrrdi r8,r3,3 /* Align the address to doubleword boundary. */
@@ -459,6 +463,6 @@ L(continue1):
#endif
add r3, r3, r6 /* Compute final length. */
blr
-END (strrchr)
+END (STRRCHR)
weak_alias (strrchr, rindex)
libc_hidden_builtin_def (strrchr)