]> git.ipfire.org Git - thirdparty/glibc.git/commit
powerpc: round/roundf refactor
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 8 Mar 2019 15:20:08 +0000 (15:20 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 9 May 2019 12:39:07 +0000 (09:39 -0300)
commita1cb1888b7aaa65cfa6d4e067c7516e2e08d8942
treed9df8b4705fe0aa6e74b224efbdf55ed3edd0c03
parent252296c625a7ab59633a3837954d426f0ce89d3b
powerpc: round/roundf refactor

This patches consolidates all the powerpc round{f} implementations on
the generic sysdeps/powerpc/fpu/s_round{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
ROUND handling.
(round_mode): Add definition for ROUND.
(round_to_integer_float): Likewise.
* sysdeps/powerpc/fpu/s_round.c: New file.
* sysdeps/powerpc/fpu/s_roundf.c: New file.
* sysdeps/powerpc/powerpc32/fpu/s_round.S: Remove file.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_round-power5+.S:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_round-ppc32.S:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_roundf-power5+.S:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_roundf-ppc32.S:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_round-power5+.c: New
file.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_round-ppc32.c:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_roundf-power5+.c:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_roundf-ppc32.c:
Likewise.
* sysdep/powerpc/powerpc32/power5+/fpu/s_round.S: Remove file.
* sysdep/powerpc/powerpc32/power5+/fpu/s_roundf.S: Likewise.
* sysdep/powerpc/powerpc64/be/fpu/multiarch/Makefile
(libm-sysdep_routines): Add s_round-power5+, s_round-ppc64,
s_roundf-power5+, and s_roundf-ppc64.
(CFLAGS-s_round-power5+.c, CFLAGS-s_roundf-power5+.c): New rule.
* sysdep/powerpc/powercp64/be/fpu/multiarch/s_round-power5+.c: New
file.
* sysdep/powerpc/powercp64/be/fpu/multiarch/s_round-ppc64.c: Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c: Move to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_round.c: ... here.
* sysdep/powerpc/powercp64/be/fpu/multiarch/s_roundf-power5+.c: New
file.
* sysdep/powerpc/powercp64/be/fpu/multiarch/s_roundf-ppc64.c:
Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c: Move to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_roundf.c: ... here.
* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
(libm-sysdep_routines): Remove s_round-power5+, s_round-ppc64,
s_roundf-power5+, and s_roundf-ppc64.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S: Remove
file.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S: Likewise.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S:
Likewise.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_round.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_roundf.S: Likewise.
* sysdep/powerpc/powerpc64/power5+/fpu/s_round.S: Likewise.
* sysdep/powerpc/powerpc64/power5+/fpu/s_roundf.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_round.c [new file with mode: 0644]
sysdeps/powerpc/fpu/s_roundf.c [new file with mode: 0644]
sysdeps/powerpc/powerpc32/fpu/s_round.S [deleted file]
sysdeps/powerpc/powerpc32/fpu/s_roundf.S [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round-power5+.S [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round-power5+.c [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round-ppc32.S [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_round-ppc32.c [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf-power5+.S [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf-power5+.c [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf-ppc32.S [deleted file]
sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_roundf-ppc32.c [new file with mode: 0644]
sysdeps/powerpc/powerpc32/power5+/fpu/s_round.S [deleted file]
sysdeps/powerpc/powerpc32/power5+/fpu/s_roundf.S [deleted file]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/Makefile
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_round-power5+.c [new file with mode: 0644]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_round-ppc64.c [new file with mode: 0644]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_round.c [moved from sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c with 100% similarity]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_roundf-power5+.c [new file with mode: 0644]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_roundf-ppc64.c [new file with mode: 0644]
sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_roundf.c [moved from sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c with 100% similarity]
sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/s_round.S [deleted file]
sysdeps/powerpc/powerpc64/fpu/s_roundf.S [deleted file]
sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S [deleted file]
sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S [deleted file]