From 6427a6ac8cfe6c6e64214db606c5dced67213e8d Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Fri, 8 Mar 2019 20:26:00 +0000 Subject: 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 --- ChangeLog | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index 03c74fe067..b9bcc3a210 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,31 @@ 2019-06-12 Adhemerval Zanella + * 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. + * sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c: Move to ... * sysdeps/ieee754/dbl-64/s_isinf.c: ... here and format code. -- cgit 1.4.1