]> git.ipfire.org Git - thirdparty/glibc.git/commit
powerpc: floor/floorf refactor
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 8 Mar 2019 15:04:02 +0000 (15:04 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 9 May 2019 12:38:40 +0000 (09:38 -0300)
commit252296c625a7ab59633a3837954d426f0ce89d3b
treec34a2d2b7194e3da36441a05c14b78b5d30c5848
parent33647a7294266b57dab33491abc9ca969b6798e3
powerpc: floor/floorf refactor

This patches consolidates all the powerpc floor{f} implementations on
the generic sysdeps/powerpc/fpu/s_floor{f}.  The generic implementation
uses either the compiler builts for ISA 2.03+ (which generates the
frim instruction) or a generic implementation which uses FP only
operations.

The IFUNC organization for powerpc64 is also change to be enabled only
for powerpc64 and not for powerpc64le (since minium ISA of 2.08 does not
require the fallback generic implementation).

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/fpu/round_to_integer.h (set_fenv_mode):
Add FLOOR option.
(round_mode): Add definition for FLOOR.
* sysdeps/powerpc/fpu/s_floor.c: New file.
* sysdeps/powerpc/fpu/s_floorf.c: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S: Remove file.
* sysdeps/powerpc/powerpc32/fpu/s_floorf.S: Likewise.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-power5+.S:
Remove file.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-ppc32.S:
Likewise
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-power5+.S:
Likewise.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-ppc32.S:
Likewise.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-power5+.c:
New file.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-ppc32.c:
Likewise.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-power5+.c:
Likewise.
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-ppc32.c:
Likewise.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S: Remove file.
* sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S: Remove file.
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/Makefile
(libm-sysdep_routines): Add s_floor-power5+, s_floor-ppc64,
s_floorf-power5+, and s_floorf-ppc64.
(CFLAGS-s_floor-power5+.c, CFLAGS-s_floorf-power5+.c): New rule.
* sysdep/powerpc/powerpc64/be/fpu/multiarch/s_floor-power5+.c: New
file.
* sysdep/powerpc/powerpc64/be/fpu/multiarch/s_floor-ppc64.c: Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c: Move to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_floor.c: ... here.
* sysdep/powerpc/powerpc64/be/fpu/multiarch/s_floorf-power5+.c: New
file.
* sysdep/powerpc/powerpc64/be/fpu/multiarch/s_floorf-ppc64.c:
Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c: Move to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_floorf.c: ... here.
* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
(libm-sysdep_routines): Remove s_floor-power5+, s_floor-ppc64,
s_floorf-power5+, and s_floorf-ppc64.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S: Remove
file.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-ppc64.S: Remove
file.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S:
Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S:
Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_floor.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_floorf.S: Likewise.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S: Likewise.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S: Likewise.

Reviewed-by: Gabriel F. T. Gomes <gabriel@inconstante.eti.br>
32 files changed:
ChangeLog
sysdeps/powerpc/fpu/round_to_integer.h
sysdeps/powerpc/fpu/s_floor.c [new file with mode: 0644]
sysdeps/powerpc/fpu/s_floorf.c [new file with mode: 0644]
sysdeps/powerpc/powerpc32/fpu/s_floor.S [deleted file]
sysdeps/powerpc/powerpc32/fpu/s_floorf.S [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-power5+.S [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-power5+.c [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-ppc32.S [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floor-ppc32.c [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-power5+.S [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-power5+.c [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-ppc32.S [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_floorf-ppc32.c [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power5+/fpu/s_floor.S [deleted file]
sysdeps/powerpc/powerpc32/power5+/fpu/s_floorf.S [deleted file]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/Makefile
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_floor-power5+.c [new file with mode: 0644]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_floor-ppc64.c [new file with mode: 0644]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_floor.c [moved from sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c with 100% similarity]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_floorf-power5+.c [new file with mode: 0644]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_floorf-ppc64.c [new file with mode: 0644]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_floorf.c [moved from sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c with 100% similarity]
sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-ppc64.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/s_floor.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/s_floorf.S [deleted file]
sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S [deleted file]
sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S [deleted file]