]> git.ipfire.org Git - thirdparty/glibc.git/commit
powerpc: Refactor modf{f}
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 18 Mar 2019 20:18:49 +0000 (20:18 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 8 Jul 2019 20:22:22 +0000 (17:22 -0300)
commit931c616eedc303d48fdd3b05bc063b354a133c74
treee820e2f8c8e7d7d9e0120e147643995b4ed62790
parent69461d989669d3da051a2bfdae8d5b0ff3dc0749
powerpc: Refactor modf{f}

The modf{f} optimization is not an optimization for ISA 2.07+.  This
patch move the IFUNC for powerpc64 only, move the power5+ to generic
location, and include the generic implementation for ISA 2.07+.

The performance changes are based on modf benchtests:

  * POWER9 - ppc64
  "modf": {
   "": {
    "duration": 4.97057e+09,
    "iterations": 1.00688e+09,
    "max": 28.76,
    "min": 4.912,
    "mean": 4.9366
   }
  }
  * POWER9 - power5+
  "modf": {
   "": {
    "duration": 4.98291e+09,
    "iterations": 9.32818e+08,
    "max": 15.058,
    "min": 5.107,
    "mean": 5.34178
   }
  }

  * POWER8 - ppc64
   "modf": {
   "": {
    "duration": 5.05329e+09,
    "iterations": 8.38814e+08,
    "max": 518.051,
    "min": 5.79,
    "mean": 6.02433
   }
  }
  * POWER8 - power5+
  "modf": {
   "": {
    "duration": 5.05573e+09,
    "iterations": 8.35254e+08,
    "max": 63.141,
    "min": 5.873,
    "mean": 6.05293
   }
  }

  * POWER7 - ppc64
  "modf": {
   "": {
    "duration": 4.89818e+09,
    "iterations": 1.08408e+09,
    "max": 57.556,
    "min": 3.953,
    "mean": 4.51827
   }
  }
  * POWER7 - power5+
  "modf": {
   "": {
    "duration": 4.83789e+09,
    "iterations": 1.33409e+09,
    "max": 46.608,
    "min": 2.224,
    "mean": 3.62636
   }
  }

Checked on powerpc-linux-gnu (built without --with-cpu, with
--with-cpu=power4 and with --with-cpu=power5+ and --disable-multi-arch),
powerpc64-linux-gnu (built without --with-cp and with --with-cpu=power5+
and --disable-multi-arch).

* sysdeps/powerpc/power5+/fpu/s_modf.c: Move to ...
* sysdeps/powerpc/fpu/s_modf.c: ... here.  Add ISA 2.07 optimization.
* sysdeps/powerpc/power5+/fpu/s_modff.c: Move to ...
* sysdeps/powerpc/fpu/s_modff.c: ... here.  Add ISA 2.07 optimization.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c:
Adjust include.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c:
Likewise.
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/Makefile (sysdep_calls,
sysdep_routines): Add s_modf* objects.
(CFLAGS-s_modf-power5+.c, CFLAGS-s_modff-power5+.c,
CFLAGS-s_modf-ppc64.c, CFLAGS-s_modff-ppc64.c): New rule.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c: Move
to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_modf-power5+.c:
... here.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c: Movo
to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_modf-power5+.c: Move
... here.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c: Move to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_modf.c: ... here.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c: Move
to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_modff-power5+.c:
... here.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c: Move to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_modff-ppc64.c:
... here.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c: Move to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_modff.c: ... here.

Reviewed-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
13 files changed:
ChangeLog
sysdeps/powerpc/fpu/s_modf.c [moved from sysdeps/powerpc/power5+/fpu/s_modf.c with 74% similarity]
sysdeps/powerpc/fpu/s_modff.c [moved from sysdeps/powerpc/power5+/fpu/s_modff.c with 77% similarity]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c
sysdeps/powerpc/powerpc64/be/fpu/multiarch/Makefile
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_modf-power5+.c [moved from sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c with 91% similarity]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_modf-ppc64.c [moved from sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-ppc64.c with 100% similarity]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_modf.c [moved from sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c with 100% similarity]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_modff-power5+.c [moved from sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c with 91% similarity]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_modff-ppc64.c [moved from sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c with 100% similarity]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_modff.c [moved from sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c with 100% similarity]
sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile