mbox series

[0/1] Add IFUNC POWER optimization for e_pow and e_exp

Message ID 20170709182430.91459-1-juvenal.silva.jr@gmail.com
Headers show
Series Add IFUNC POWER optimization for e_pow and e_exp | expand

Message

Juvenal Silva July 9, 2017, 6:24 p.m. UTC
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