This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 0/1] Add IFUNC POWER optimization for e_pow and e_exp
- From: "Juvenal A. Silva Jr" <juvenal dot silva dot jr at gmail dot com>
- To: libc-alpha at sourceware dot org
- Cc: "Juvenal A. Silva Jr" <juvenal dot silva dot jr at gmail dot com>, tuliom at linux dot vnet dot ibm dot com
- Date: Sun, 9 Jul 2017 15:24:29 -0300
- Subject: [PATCH 0/1] Add IFUNC POWER optimization for e_pow and e_exp
- Authentication-results: sourceware.org; auth=none
This patch applies an optimization scheme used on other architectures to POWER
as a base speedup process. It uses GCC to generate multiple optimized code
versions, and the IFUNC technique to select the best one at runtime.
I did some crude measures on a POWER8 VM, using GCC 6.3.1 and I was able to
achieve an average 15%-20% speedup for those two double functions (exp and pow).
I'd like to run better measures, but I only have access to a virtual POWER
machine, so if any of you have access to POWER bare metal or even VMs on a more
controlled environment, I'd love to hear how good your measurements unfold.
I'd be glad to hear your comments and opinions...
Juvenal A. Silva Jr (1):
Add IFUNC POWER optimization for e_pow and e_exp
sysdeps/ieee754/dbl-64/e_pow.c | 2 +-
sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile | 18 ++++++++++-
.../powerpc/powerpc64/fpu/multiarch/e_exp-power7.c | 28 ++++++++++++++++
.../powerpc/powerpc64/fpu/multiarch/e_exp-power8.c | 28 ++++++++++++++++
.../powerpc/powerpc64/fpu/multiarch/e_exp-power9.c | 28 ++++++++++++++++
.../powerpc/powerpc64/fpu/multiarch/e_exp-ppc64.c | 26 +++++++++++++++
sysdeps/powerpc/powerpc64/fpu/multiarch/e_exp.c | 37 ++++++++++++++++++++++
.../powerpc/powerpc64/fpu/multiarch/e_pow-power7.c | 28 ++++++++++++++++
.../powerpc/powerpc64/fpu/multiarch/e_pow-power8.c | 28 ++++++++++++++++
.../powerpc/powerpc64/fpu/multiarch/e_pow-power9.c | 28 ++++++++++++++++
.../powerpc/powerpc64/fpu/multiarch/e_pow-ppc64.c | 26 +++++++++++++++
sysdeps/powerpc/powerpc64/fpu/multiarch/e_pow.c | 37 ++++++++++++++++++++++
.../powerpc64/fpu/multiarch/slowexp-power7.c | 26 +++++++++++++++
.../powerpc64/fpu/multiarch/slowexp-power8.c | 26 +++++++++++++++
.../powerpc64/fpu/multiarch/slowexp-power9.c | 26 +++++++++++++++
.../powerpc64/fpu/multiarch/slowexp-ppc64.c | 24 ++++++++++++++
.../powerpc64/fpu/multiarch/slowpow-power7.c | 26 +++++++++++++++
.../powerpc64/fpu/multiarch/slowpow-power8.c | 26 +++++++++++++++
.../powerpc64/fpu/multiarch/slowpow-power9.c | 26 +++++++++++++++
.../powerpc64/fpu/multiarch/slowpow-ppc64.c | 24 ++++++++++++++
20 files changed, 516 insertions(+), 2 deletions(-)
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/e_exp-power7.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/e_exp-power8.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/e_exp-power9.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/e_exp-ppc64.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/e_exp.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/e_pow-power7.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/e_pow-power8.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/e_pow-power9.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/e_pow-ppc64.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/e_pow.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/slowexp-power7.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/slowexp-power8.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/slowexp-power9.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/slowexp-ppc64.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/slowpow-power7.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/slowpow-power8.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/slowpow-power9.c
create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/slowpow-ppc64.c
--
2.13.2