]> git.ipfire.org Git - thirdparty/glibc.git/commit
powerpc: trunc/truncf refactor
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 15 Mar 2019 20:37:23 +0000 (20:37 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 9 May 2019 12:39:28 +0000 (09:39 -0300)
commitae45cf84afba7c6c34c6ebec4598901ed78c28f1
tree9ac22c7c12b242ba1d3d1a99a4ffef4db466082c
parenta1cb1888b7aaa65cfa6d4e067c7516e2e08d8942
powerpc: trunc/truncf refactor

This patches consolidates all the powerpc trunc{f} implementations on
the generic sysdeps/powerpc/fpu/s_trunc{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/trunc_to_integer.h (set_fenv_mode): Add
 TRUNC handling.
(round_mode): Add definition for TRUNC.
* sysdeps/powerpc/fpu/s_trunc.c: New file.
* sysdeps/powerpc/fpu/s_truncf.c: New file.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: Remove file.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_trunc-power5+.S:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_trunc-ppc32.S:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_truncf-power5+.S:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_truncf-ppc32.S:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_trunc-power5+.c: New
file.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_trunc-ppc32.c:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_truncf-power5+.c:
Likewise.
* sysdep/powerpc/powepc32/power4/fpu/multiarch/s_truncf-ppc32.c:
Likewise.
* sysdep/powerpc/powerpc32/power5+/fpu/s_trunc.S: Remove file.
* sysdep/powerpc/powerpc32/power5+/fpu/s_truncf.S: Likewise.
* sysdep/powerpc/powerpc64/be/fpu/multiarch/Makefile
(libm-sysdep_routines): Add s_trunc-power5+, s_trunc-ppc64,
s_truncf-power5+, and s_truncf-ppc64.
(CFLAGS-s_trunc-power5+.c, CFLAGS-s_truncf-power5+.c): New rule.
* sysdep/powerpc/powercp64/be/fpu/multiarch/s_trunc-power5+.c: New
file.
* sysdep/powerpc/powercp64/be/fpu/multiarch/s_trunc-ppc64.c: Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c: Move to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_trunc.c: ... here.
* sysdep/powerpc/powercp64/be/fpu/multiarch/s_truncf-power5+.c: New
file.
* sysdep/powerpc/powercp64/be/fpu/multiarch/s_truncf-ppc64.c:
Likewise.
* sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c: Move to ...
* sysdeps/powerpc/powerpc64/be/fpu/multiarch/s_truncf.c: ... here.
* sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile
(libm-sysdep_routines): Remove s_trunc-power5+, s_trunc-ppc64,
s_truncf-power5+, and s_truncf-ppc64.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S: Remove
file.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_trunc-ppc64.S: Likewise.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S:
Likewise.
* sysdep/powerpc/powerpc64/fpu/multiarch/s_truncf-ppc64.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_trunc.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Likewise.
* sysdep/powerpc/powerpc64/power5+/fpu/s_trunc.S: Likewise.
* sysdep/powerpc/powerpc64/power5+/fpu/s_truncf.S: Likewise.

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