glibc/sysdeps/powerpc/powerpc64/power7
Adhemerval Zanella 1192696069 powerpc: Remove optimized finite
The powerpc finite optimization do not show much gain:

  - 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 patterns, but at
    cost of others.  Comparing against generic C implementation built
    for powerpc64-linux-gnu-power7 (--with-cpu=power7):

    - Generic sysdeps/ieee754 implementation:
       "isfinite": {
        "": {
         "duration": 5.0082e+09,
         "iterations": 2.45299e+09,
         "max": 43.824,
         "min": 2.008,
         "mean": 2.04167
        },
        "INF": {
         "duration": 4.66554e+09,
         "iterations": 2.28288e+09,
         "max": 35.73,
         "min": 2.008,
         "mean": 2.04371
        },
        "NAN": {
         "duration": 4.66274e+09,
         "iterations": 2.28716e+09,
         "max": 34.161,
         "min": 2.009,
         "mean": 2.03866
        }
       }

    - power7 optimized one:
       "isfinite": {
        "": {
         "duration": 4.99111e+09,
         "iterations": 2.65566e+09,
         "max": 25.015,
         "min": 1.716,
         "mean": 1.87942
        },
        "INF": {
         "duration": 4.6783e+09,
         "iterations": 2.0999e+09,
         "max": 35.264,
         "min": 1.868,
         "mean": 2.22787
        },
        "NAN": {
         "duration": 4.67915e+09,
         "iterations": 2.08678e+09,
         "max": 38.099,
         "min": 1.869,
         "mean": 2.24228
        }
       }

     So it basically optimizes marginally for normal numbers while
     increasing the latency for other kind of FP.

  - 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_finite*
	objects.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-power7.S:
	Remove file.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite-ppc32.c:
	Likewise.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finite.c: Likewise.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef-ppc32.c:
	Likewise.
	* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_finitef.c: Likewise.
	* sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S: Likewise.
	* sysdeps/powerpc/powerpc32/power7/fpu/s_finitef.S: Likewise.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile (sysdep_call):
	Remove s_finite* objects.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S: Remove file.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power8.S: Likewise.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c: Likewise.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c: Likewise.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c: Likewise.
	* sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c: Likewise.
	* sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S: Likewise.
	* sysdeps/powerpc/powerpc64/power7/fpu/s_finitef.S: Likewise.
	* sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S: Likewise.
	* sysdeps/powerpc/powerpc64/power8/fpu/s_finitef.S: Likewise.

Reviewed-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
2019-06-12 14:32:39 -03:00
..
fpu powerpc: Remove optimized finite 2019-06-12 14:32:39 -03:00
add_n.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
bcopy.c PowerPC: optimized memmove for POWER7/PPC64 2014-07-07 15:41:21 -05:00
Makefile powerpc: Fix strstr/power7 build 2015-08-11 10:03:09 -03:00
memchr.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
memcmp.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
memcpy.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
memmove.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
mempcpy.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
memrchr.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
memset.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
rawmemchr.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
stpncpy.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strcasecmp_l.S Optimized strcasecmp for Power7 2011-12-17 20:32:59 -05:00
strcasecmp.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strchr.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strchrnul.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strcmp.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strlen.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strncmp.S powerpc: Fix build failures with current GCC 2019-05-30 11:10:48 -03:00
strncpy.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strnlen.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strrchr.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strstr-ppc64.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
strstr.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
sub_n.S Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00