glibc/sysdeps/powerpc/fpu
Adhemerval Zanella 931c616eed 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>
2019-07-08 17:22:22 -03:00
..
e_hypot.c powerpc: hypot refactor and optimization 2019-07-08 17:21:15 -03:00
e_hypotf.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
e_sqrt.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
e_sqrtf.c Use float in e_sqrt.c 2019-02-11 12:03:23 -02:00
fclrexcpt.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fe_mask.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fe_nomask.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fedisblxcpt.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
feenablxcpt.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fegetenv.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fegetexcept.c powerpc: Use faster means to access FPSCR when possible in some cases 2019-06-30 08:40:44 -03:00
fegetmode.c powerpc: Use faster means to access FPSCR when possible in some cases 2019-06-30 08:40:44 -03:00
fegetround.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
feholdexcpt.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fenv_const.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fenv_libc.h powerpc: Use faster means to access FPSCR when possible in some cases 2019-06-30 08:40:44 -03:00
fenv_private.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fesetenv.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fesetexcept.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fesetmode.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fesetround.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
feupdateenv.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fgetexcptflg.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fix-fp-int-compare-invalid.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fraiseexcpt.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
fsetexcptflg.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
ftestexcept.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
get-rounding-mode.h [powerpc] get_rounding_mode: utilize faster method to get rounding mode 2019-06-06 14:11:56 -05:00
libm-test-ulps Add new exp and exp2 implementations 2018-09-05 16:22:00 +01:00
libm-test-ulps-name Do not hardcode platform names in manual/libm-err-tab.pl (bug 14139). 2016-11-04 16:49:06 +00:00
Makefile
math_ldbl.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
math_private.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
math-barriers.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
math-tests-trap-force.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
round_to_integer.h powerpc: consolidate rint 2019-06-12 11:46:22 -03:00
s_ceil.c powerpc: ceil/ceilf refactor 2019-04-29 08:43:37 -03:00
s_ceilf.c powerpc: ceil/ceilf refactor 2019-04-29 08:43:37 -03:00
s_copysign.c powerpc: copysign cleanup 2019-06-12 11:46:26 -03:00
s_copysignf.c powerpc: copysign cleanup 2019-06-12 11:46:26 -03:00
s_floor.c powerpc: floor/floorf refactor 2019-05-09 09:38:40 -03:00
s_floorf.c powerpc: floor/floorf refactor 2019-05-09 09:38:40 -03:00
s_fma.c powerpc: Fix format issue from 3a16dd780e 2019-04-17 18:32:01 -03:00
s_fmaf.c powerpc: Fix format issue from 3a16dd780e 2019-04-17 18:32:01 -03:00
s_lrintf.c powerpc: Refactor powerpc32 lrint/lrintf/llrint/llrintf 2019-06-17 09:27:02 -03:00
s_modf.c powerpc: Refactor modf{f} 2019-07-08 17:22:22 -03:00
s_modff.c powerpc: Refactor modf{f} 2019-07-08 17:22:22 -03:00
s_nearbyint.c powerpc: generic nearbyint/nearbyintf 2019-05-28 18:16:48 -03:00
s_nearbyintf.c powerpc: generic nearbyint/nearbyintf 2019-05-28 18:16:48 -03:00
s_rint.c powerpc: consolidate rint 2019-06-12 11:46:22 -03:00
s_rintf.c powerpc: consolidate rint 2019-06-12 11:46:22 -03:00
s_round.c powerpc: round/roundf refactor 2019-05-09 09:39:07 -03:00
s_roundf.c powerpc: round/roundf refactor 2019-05-09 09:39:07 -03:00
s_trunc.c powerpc: trunc/truncf refactor 2019-05-09 09:39:28 -03:00
s_truncf.c powerpc: trunc/truncf refactor 2019-05-09 09:39:28 -03:00
t_sqrt.c
tst-setcontext-fpscr.c [powerpc] Use __builtin_{mffs,mtfsf} 2019-03-29 19:16:34 -05:00