]> git.ipfire.org Git - thirdparty/glibc.git/commit
powerpc: Remove optimized isinf
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 8 Mar 2019 20:26:00 +0000 (20:26 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 12 Jun 2019 17:32:39 +0000 (14:32 -0300)
commit6427a6ac8cfe6c6e64214db606c5dced67213e8d
treeb8b52b884fe5960a75100042fa076f47e0df114a
parenta8c590f7896ab661df873e64ad0cbb559d399dbf
powerpc: Remove optimized isinf

The powerpc isinf optimizations onyl adds complexity:

  - GCC will call libm iff -fsignaling-nans is used. This usage pattern
    is usually not performance oriented and for such calls PLT overhead
    should dominate execution time.

  - The power7 uses ftdiv to optimize for some input pattern and branch
    implementation for INF and denormal that does:

    return (ix & UINT64_C (0x7fffffffffffffff)) == UINT64_C (0x7ff0000000000000)

    Although it does show slight better latency than generic algorithm
    (as below), it is only for power7 and requires it to override it
    for power8.

  - The power8 implementation is just the generic implementation using
    ISA 2.07 mfvsrd instruction (which GCC uses for generic implementation).
    So generic implementation is the best option for powerpc64le.

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/powerpc32/power4/fpu/multiarch/Makefile
(sysdeps_routines, libm-sysdep_routines): Remove s_isinf* and s_isinf*
objects.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf-power7.S:
Remove file.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf-ppc32.c:
Likewise.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf.c: Likewise.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinff-ppc32.c:
Likewise.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinff.c: Likewise.
* sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S: Likewise.
* sysdeps/powerpc/powerpc32/power7/fpu/s_isinff.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile (sysdep_call):
Remove s_isinf* and s_isinf* objects.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power7.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-ppc64.c: Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c: Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c: Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c: Likewise.
* sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/fpu/s_isinff.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/fpu/s_isinff.S: Likewise.

Reviewed-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
20 files changed:
ChangeLog
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf-power7.S [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf-ppc32.c [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinf.c [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinff-ppc32.c [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_isinff.c [deleted file]
sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S [deleted file]
sysdeps/powerpc/powerpc32/power7/fpu/s_isinff.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power7.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power8.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-ppc64.c [deleted file]
sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c [deleted file]
sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c [deleted file]
sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c [deleted file]
sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S [deleted file]
sysdeps/powerpc/powerpc64/power7/fpu/s_isinff.S [deleted file]
sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S [deleted file]
sysdeps/powerpc/powerpc64/power8/fpu/s_isinff.S [deleted file]