This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.26.9000-968-g6f7c009
- From: jsm28 at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 12 Dec 2017 23:35:41 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.26.9000-968-g6f7c009
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 6f7c009282a5f7129e359c9ba8556e7e3ac229ec (commit)
from ac817e083b37a5c25d05cde8bde302d7a93ffc5e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6f7c009282a5f7129e359c9ba8556e7e3ac229ec
commit 6f7c009282a5f7129e359c9ba8556e7e3ac229ec
Author: Joseph Myers <joseph@codesourcery.com>
Date: Tue Dec 12 23:34:05 2017 +0000
Add sysdeps/ieee754/soft-fp.
The default sysdeps/ieee754 fma implementations rely on exceptions and
rounding modes to achieve correct results through internal use of
round-to-odd. Thus, glibc configurations without support for
exceptions and rounding modes instead need to use implementations of
fma based on soft-fp.
At present, this is achieved via having implementation files in
soft-fp/ that are #included by sysdeps files for each glibc
configuration that needs them. In general this means such a
configuration has its own s_fma.c and s_fmaf.c.
TS 18661-1 adds functions that do an operation (+ - * / sqrt fma) on
arguments wider than the return type, with a single rounding of the
infinite-precision result to that return type. These are also
naturally implemented using round-to-odd on platforms with hardware
support for rounding modes and exceptions but lacking hardware support
for these narrowing operations themselves. (Platforms that have
direct hardware support for such narrowing operations include at least
ia64, and Power ISA 2.07 or later, which I think means POWER8 or
later.)
So adding the remaining TS 18661-1 functions would mean at least six
narrowing function implementations (fadd fsub fmul fdiv ffma fsqrt),
with aliases for other types and further implementations in some
configurations, that need to be overridden for configurations lacking
hardware exceptions and rounding modes. Requiring all such
configurations (currently seven of them) to have their own source
files for all those functions seems undesirable.
Thus, this patch adds a directory sysdeps/ieee754/soft-fp to contain
libm function implementations based on soft-fp. This directory is
then used via Implies from all the configurations that need it, so no
more files need adding to every such configuration when adding more
functions with soft-fp implementations. A configuration can still
selectively #include a particular file from this directory if desired;
thus, the MIPS #include of the fmal implementation is retained, since
that's appropriate even for hard float (because long double is always
implementated in software for MIPS64, so the soft-fp implementation of
fmal is better than the ldbl-128 one).
This also provides additional motivation for my recent patch removing
--with-fp / --without-fp: previously there was no need for correct use
of --without-fp for no-FPU ARM or SH3, and now we have autodetection
nofpu/ sysdeps directories can be used by this patch for those
configurations without imposing any new requirements on how glibc is
configured.
(The mips64/*/fpu/s_fma.c files added by this patch are needed to keep
the dbl-64 version of fma for double, rather than the ldbl-128 one,
used in that case.)
Tested with build-many-glibcs.py that installed stripped shared
libraries are unchanged by this patch.
* soft-fp/fmadf4.c: Move to ....
* sysdeps/ieee754/soft-fp/s_fma.c: ... here.
* soft-fp/fmasf4.c: Move to ....
* sysdeps/ieee754/soft-fp/s_fmaf.c: ... here.
* soft-fp/fmatf4.c: Move to ....
* sysdeps/ieee754/soft-fp/s_fmal.c: ... here.
* sysdeps/ieee754/soft-fp/Makefile: New file.
* sysdeps/arm/preconfigure.ac: Define with_fp_cond.
* sysdeps/arm/preconfigure: Regenerated.
* sysdeps/arm/nofpu/Implies: New file.
* sysdeps/arm/s_fma.c: Remove file.
* sysdeps/arm/s_fmaf.c: Likewise.
* sysdeps/m68k/coldfire/nofpu/Implies: New file.
* sysdeps/m68k/coldfire/nofpu/s_fma.c: Remove file.
* sysdeps/m68k/coldfire/nofpu/s_fmaf.c: Likewise.
* sysdeps/microblaze/Implies: Add ieee754/soft-fp.
* sysdeps/microblaze/s_fma.c: Remove file.
* sysdeps/microblaze/s_fmaf.c: Likewise.
* sysdeps/mips/mips32/nofpu/Implies: New file.
* sysdeps/mips/mips64/n32/fpu/s_fma.c: Likewise.
* sysdeps/mips/mips64/n32/nofpu/Implies: Likewise.
* sysdeps/mips/mips64/n64/fpu/s_fma.c: Likewise.
* sysdeps/mips/mips64/n64/nofpu/Implies: Likewise.
* sysdeps/mips/ieee754/s_fma.c: Remove file.
* sysdeps/mips/ieee754/s_fmaf.c: Likewise.
* sysdeps/mips/ieee754/s_fmal.c: Update include for move of fmal
implementation.
* sysdeps/nios2/Implies: Add ieee754/soft-fp.
* sysdeps/nios2/s_fma.c: Remove file.
* sysdeps/nios2/s_fmaf.c: Likewise.
* sysdeps/sh/nofpu/Implies: New file.
* sysdeps/sh/s_fma.c: Remove file.
* sysdeps/sh/s_fmaf.c: Likewise.
* sysdeps/tile/Implies: Add ieee754/soft-fp.
* sysdeps/tile/s_fma.c: Remove file.
* sysdeps/tile/s_fmaf.c: Likewise.
diff --git a/ChangeLog b/ChangeLog
index 2ceae53..f560b2a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,42 @@
+2017-12-12 Joseph Myers <joseph@codesourcery.com>
+
+ * soft-fp/fmadf4.c: Move to ....
+ * sysdeps/ieee754/soft-fp/s_fma.c: ... here.
+ * soft-fp/fmasf4.c: Move to ....
+ * sysdeps/ieee754/soft-fp/s_fmaf.c: ... here.
+ * soft-fp/fmatf4.c: Move to ....
+ * sysdeps/ieee754/soft-fp/s_fmal.c: ... here.
+ * sysdeps/ieee754/soft-fp/Makefile: New file.
+ * sysdeps/arm/preconfigure.ac: Define with_fp_cond.
+ * sysdeps/arm/preconfigure: Regenerated.
+ * sysdeps/arm/nofpu/Implies: New file.
+ * sysdeps/arm/s_fma.c: Remove file.
+ * sysdeps/arm/s_fmaf.c: Likewise.
+ * sysdeps/m68k/coldfire/nofpu/Implies: New file.
+ * sysdeps/m68k/coldfire/nofpu/s_fma.c: Remove file.
+ * sysdeps/m68k/coldfire/nofpu/s_fmaf.c: Likewise.
+ * sysdeps/microblaze/Implies: Add ieee754/soft-fp.
+ * sysdeps/microblaze/s_fma.c: Remove file.
+ * sysdeps/microblaze/s_fmaf.c: Likewise.
+ * sysdeps/mips/mips32/nofpu/Implies: New file.
+ * sysdeps/mips/mips64/n32/fpu/s_fma.c: Likewise.
+ * sysdeps/mips/mips64/n32/nofpu/Implies: Likewise.
+ * sysdeps/mips/mips64/n64/fpu/s_fma.c: Likewise.
+ * sysdeps/mips/mips64/n64/nofpu/Implies: Likewise.
+ * sysdeps/mips/ieee754/s_fma.c: Remove file.
+ * sysdeps/mips/ieee754/s_fmaf.c: Likewise.
+ * sysdeps/mips/ieee754/s_fmal.c: Update include for move of fmal
+ implementation.
+ * sysdeps/nios2/Implies: Add ieee754/soft-fp.
+ * sysdeps/nios2/s_fma.c: Remove file.
+ * sysdeps/nios2/s_fmaf.c: Likewise.
+ * sysdeps/sh/nofpu/Implies: New file.
+ * sysdeps/sh/s_fma.c: Remove file.
+ * sysdeps/sh/s_fmaf.c: Likewise.
+ * sysdeps/tile/Implies: Add ieee754/soft-fp.
+ * sysdeps/tile/s_fma.c: Remove file.
+ * sysdeps/tile/s_fmaf.c: Likewise.
+
2017-12-12 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/x86_64/fpu/multiarch/Makefile (libm-sysdep_routines):
diff --git a/sysdeps/arm/nofpu/Implies b/sysdeps/arm/nofpu/Implies
new file mode 100644
index 0000000..abcbadb
--- /dev/null
+++ b/sysdeps/arm/nofpu/Implies
@@ -0,0 +1 @@
+ieee754/soft-fp
diff --git a/sysdeps/arm/preconfigure b/sysdeps/arm/preconfigure
index 33e9501..d803256 100644
--- a/sysdeps/arm/preconfigure
+++ b/sysdeps/arm/preconfigure
@@ -52,4 +52,5 @@ $as_echo "$as_me: WARNING: arm/preconfigure: Did not find ARM architecture type;
esac
machine=arm/$machine
+ with_fp_cond="!defined __SOFTFP__"
esac
diff --git a/sysdeps/arm/preconfigure.ac b/sysdeps/arm/preconfigure.ac
index 20de5bc..43d0140 100644
--- a/sysdeps/arm/preconfigure.ac
+++ b/sysdeps/arm/preconfigure.ac
@@ -47,4 +47,5 @@ arm*)
esac
machine=arm/$machine
+ with_fp_cond="!defined __SOFTFP__"
esac
diff --git a/sysdeps/arm/s_fma.c b/sysdeps/arm/s_fma.c
deleted file mode 100644
index dc4e27b..0000000
--- a/sysdeps/arm/s_fma.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __SOFTFP__
-# include <soft-fp/fmadf4.c>
-#else
-# include <sysdeps/ieee754/dbl-64/s_fma.c>
-#endif
diff --git a/sysdeps/arm/s_fmaf.c b/sysdeps/arm/s_fmaf.c
deleted file mode 100644
index 550d8b8..0000000
--- a/sysdeps/arm/s_fmaf.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __SOFTFP__
-# include <soft-fp/fmasf4.c>
-#else
-# include <sysdeps/ieee754/dbl-64/s_fmaf.c>
-#endif
diff --git a/sysdeps/ieee754/soft-fp/Makefile b/sysdeps/ieee754/soft-fp/Makefile
new file mode 100644
index 0000000..ada13e8
--- /dev/null
+++ b/sysdeps/ieee754/soft-fp/Makefile
@@ -0,0 +1,3 @@
+ifeq ($(subdir),math)
+CPPFLAGS += -I../soft-fp
+endif
diff --git a/soft-fp/fmadf4.c b/sysdeps/ieee754/soft-fp/s_fma.c
similarity index 100%
rename from soft-fp/fmadf4.c
rename to sysdeps/ieee754/soft-fp/s_fma.c
diff --git a/soft-fp/fmasf4.c b/sysdeps/ieee754/soft-fp/s_fmaf.c
similarity index 100%
rename from soft-fp/fmasf4.c
rename to sysdeps/ieee754/soft-fp/s_fmaf.c
diff --git a/soft-fp/fmatf4.c b/sysdeps/ieee754/soft-fp/s_fmal.c
similarity index 100%
rename from soft-fp/fmatf4.c
rename to sysdeps/ieee754/soft-fp/s_fmal.c
diff --git a/sysdeps/m68k/coldfire/nofpu/Implies b/sysdeps/m68k/coldfire/nofpu/Implies
new file mode 100644
index 0000000..abcbadb
--- /dev/null
+++ b/sysdeps/m68k/coldfire/nofpu/Implies
@@ -0,0 +1 @@
+ieee754/soft-fp
diff --git a/sysdeps/m68k/coldfire/nofpu/s_fma.c b/sysdeps/m68k/coldfire/nofpu/s_fma.c
deleted file mode 100644
index d9613fa..0000000
--- a/sysdeps/m68k/coldfire/nofpu/s_fma.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmadf4.c>
diff --git a/sysdeps/m68k/coldfire/nofpu/s_fmaf.c b/sysdeps/m68k/coldfire/nofpu/s_fmaf.c
deleted file mode 100644
index aa5c9b2..0000000
--- a/sysdeps/m68k/coldfire/nofpu/s_fmaf.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmasf4.c>
diff --git a/sysdeps/microblaze/Implies b/sysdeps/microblaze/Implies
index 73c766c..746b21a 100644
--- a/sysdeps/microblaze/Implies
+++ b/sysdeps/microblaze/Implies
@@ -1,4 +1,5 @@
wordsize-32
# MicroBlaze uses IEEE 754 floating point.
+ieee754/soft-fp
ieee754/flt-32
ieee754/dbl-64
diff --git a/sysdeps/microblaze/s_fma.c b/sysdeps/microblaze/s_fma.c
deleted file mode 100644
index d9613fa..0000000
--- a/sysdeps/microblaze/s_fma.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmadf4.c>
diff --git a/sysdeps/microblaze/s_fmaf.c b/sysdeps/microblaze/s_fmaf.c
deleted file mode 100644
index aa5c9b2..0000000
--- a/sysdeps/microblaze/s_fmaf.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmasf4.c>
diff --git a/sysdeps/mips/ieee754/s_fma.c b/sysdeps/mips/ieee754/s_fma.c
deleted file mode 100644
index 5741414..0000000
--- a/sysdeps/mips/ieee754/s_fma.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __mips_hard_float
-# include <sysdeps/ieee754/dbl-64/s_fma.c>
-#else
-# include <soft-fp/fmadf4.c>
-#endif
diff --git a/sysdeps/mips/ieee754/s_fmaf.c b/sysdeps/mips/ieee754/s_fmaf.c
deleted file mode 100644
index 30bcdae..0000000
--- a/sysdeps/mips/ieee754/s_fmaf.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __mips_hard_float
-# include <sysdeps/ieee754/dbl-64/s_fmaf.c>
-#else
-# include <soft-fp/fmasf4.c>
-#endif
diff --git a/sysdeps/mips/ieee754/s_fmal.c b/sysdeps/mips/ieee754/s_fmal.c
index 6b83e91..c523319 100644
--- a/sysdeps/mips/ieee754/s_fmal.c
+++ b/sysdeps/mips/ieee754/s_fmal.c
@@ -4,4 +4,4 @@
# error "long double fma being compiled for o32 ABI"
#endif
-#include <soft-fp/fmatf4.c>
+#include <sysdeps/ieee754/soft-fp/s_fmal.c>
diff --git a/sysdeps/mips/mips32/nofpu/Implies b/sysdeps/mips/mips32/nofpu/Implies
new file mode 100644
index 0000000..abcbadb
--- /dev/null
+++ b/sysdeps/mips/mips32/nofpu/Implies
@@ -0,0 +1 @@
+ieee754/soft-fp
diff --git a/sysdeps/mips/mips64/n32/fpu/s_fma.c b/sysdeps/mips/mips64/n32/fpu/s_fma.c
new file mode 100644
index 0000000..b61fa64
--- /dev/null
+++ b/sysdeps/mips/mips64/n32/fpu/s_fma.c
@@ -0,0 +1 @@
+#include <sysdeps/ieee754/dbl-64/s_fma.c>
diff --git a/sysdeps/mips/mips64/n32/nofpu/Implies b/sysdeps/mips/mips64/n32/nofpu/Implies
new file mode 100644
index 0000000..abcbadb
--- /dev/null
+++ b/sysdeps/mips/mips64/n32/nofpu/Implies
@@ -0,0 +1 @@
+ieee754/soft-fp
diff --git a/sysdeps/mips/mips64/n64/fpu/s_fma.c b/sysdeps/mips/mips64/n64/fpu/s_fma.c
new file mode 100644
index 0000000..b61fa64
--- /dev/null
+++ b/sysdeps/mips/mips64/n64/fpu/s_fma.c
@@ -0,0 +1 @@
+#include <sysdeps/ieee754/dbl-64/s_fma.c>
diff --git a/sysdeps/mips/mips64/n64/nofpu/Implies b/sysdeps/mips/mips64/n64/nofpu/Implies
new file mode 100644
index 0000000..abcbadb
--- /dev/null
+++ b/sysdeps/mips/mips64/n64/nofpu/Implies
@@ -0,0 +1 @@
+ieee754/soft-fp
diff --git a/sysdeps/nios2/Implies b/sysdeps/nios2/Implies
index 387a0ca..7d69983 100644
--- a/sysdeps/nios2/Implies
+++ b/sysdeps/nios2/Implies
@@ -1,3 +1,4 @@
wordsize-32
+ieee754/soft-fp
ieee754/dbl-64
ieee754/flt-32
diff --git a/sysdeps/nios2/s_fma.c b/sysdeps/nios2/s_fma.c
deleted file mode 100644
index d9613fa..0000000
--- a/sysdeps/nios2/s_fma.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmadf4.c>
diff --git a/sysdeps/nios2/s_fmaf.c b/sysdeps/nios2/s_fmaf.c
deleted file mode 100644
index aa5c9b2..0000000
--- a/sysdeps/nios2/s_fmaf.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmasf4.c>
diff --git a/sysdeps/sh/nofpu/Implies b/sysdeps/sh/nofpu/Implies
new file mode 100644
index 0000000..abcbadb
--- /dev/null
+++ b/sysdeps/sh/nofpu/Implies
@@ -0,0 +1 @@
+ieee754/soft-fp
diff --git a/sysdeps/sh/s_fma.c b/sysdeps/sh/s_fma.c
deleted file mode 100644
index d92438d..0000000
--- a/sysdeps/sh/s_fma.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __SH_FPU_ANY__
-# include <sysdeps/ieee754/dbl-64/s_fma.c>
-#else
-# include <soft-fp/fmadf4.c>
-#endif
diff --git a/sysdeps/sh/s_fmaf.c b/sysdeps/sh/s_fmaf.c
deleted file mode 100644
index 3b811ae..0000000
--- a/sysdeps/sh/s_fmaf.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __SH_FPU_ANY__
-# include <sysdeps/ieee754/dbl-64/s_fmaf.c>
-#else
-# include <soft-fp/fmasf4.c>
-#endif
diff --git a/sysdeps/tile/Implies b/sysdeps/tile/Implies
index 5b29b26..1cbc053 100644
--- a/sysdeps/tile/Implies
+++ b/sysdeps/tile/Implies
@@ -1,2 +1,3 @@
+ieee754/soft-fp
ieee754/dbl-64
ieee754/flt-32
diff --git a/sysdeps/tile/s_fma.c b/sysdeps/tile/s_fma.c
deleted file mode 100644
index d9613fa..0000000
--- a/sysdeps/tile/s_fma.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmadf4.c>
diff --git a/sysdeps/tile/s_fmaf.c b/sysdeps/tile/s_fmaf.c
deleted file mode 100644
index aa5c9b2..0000000
--- a/sysdeps/tile/s_fmaf.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmasf4.c>
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 39 ++++++++++++++++++++
sysdeps/arm/nofpu/Implies | 1 +
sysdeps/arm/preconfigure | 1 +
sysdeps/arm/preconfigure.ac | 1 +
sysdeps/arm/s_fma.c | 5 ---
sysdeps/arm/s_fmaf.c | 5 ---
sysdeps/{aarch64 => ieee754}/soft-fp/Makefile | 0
.../fmadf4.c => sysdeps/ieee754/soft-fp/s_fma.c | 0
.../fmasf4.c => sysdeps/ieee754/soft-fp/s_fmaf.c | 0
.../fmatf4.c => sysdeps/ieee754/soft-fp/s_fmal.c | 0
sysdeps/m68k/coldfire/nofpu/Implies | 1 +
sysdeps/m68k/coldfire/nofpu/s_fma.c | 1 -
sysdeps/m68k/coldfire/nofpu/s_fmaf.c | 1 -
sysdeps/microblaze/Implies | 1 +
sysdeps/microblaze/s_fma.c | 1 -
sysdeps/microblaze/s_fmaf.c | 1 -
sysdeps/mips/ieee754/s_fma.c | 5 ---
sysdeps/mips/ieee754/s_fmaf.c | 5 ---
sysdeps/mips/ieee754/s_fmal.c | 2 +-
sysdeps/mips/mips32/nofpu/Implies | 1 +
sysdeps/mips/mips64/n32/fpu/s_fma.c | 1 +
sysdeps/mips/mips64/n32/nofpu/Implies | 1 +
sysdeps/mips/mips64/n64/fpu/s_fma.c | 1 +
sysdeps/mips/mips64/n64/nofpu/Implies | 1 +
sysdeps/nios2/Implies | 1 +
sysdeps/nios2/s_fma.c | 1 -
sysdeps/nios2/s_fmaf.c | 1 -
sysdeps/sh/nofpu/Implies | 1 +
sysdeps/sh/s_fma.c | 5 ---
sysdeps/sh/s_fmaf.c | 5 ---
sysdeps/tile/Implies | 1 +
sysdeps/tile/s_fma.c | 1 -
sysdeps/tile/s_fmaf.c | 1 -
33 files changed, 53 insertions(+), 39 deletions(-)
create mode 100644 sysdeps/arm/nofpu/Implies
delete mode 100644 sysdeps/arm/s_fma.c
delete mode 100644 sysdeps/arm/s_fmaf.c
copy sysdeps/{aarch64 => ieee754}/soft-fp/Makefile (100%)
rename soft-fp/fmadf4.c => sysdeps/ieee754/soft-fp/s_fma.c (100%)
rename soft-fp/fmasf4.c => sysdeps/ieee754/soft-fp/s_fmaf.c (100%)
rename soft-fp/fmatf4.c => sysdeps/ieee754/soft-fp/s_fmal.c (100%)
create mode 100644 sysdeps/m68k/coldfire/nofpu/Implies
delete mode 100644 sysdeps/m68k/coldfire/nofpu/s_fma.c
delete mode 100644 sysdeps/m68k/coldfire/nofpu/s_fmaf.c
delete mode 100644 sysdeps/microblaze/s_fma.c
delete mode 100644 sysdeps/microblaze/s_fmaf.c
delete mode 100644 sysdeps/mips/ieee754/s_fma.c
delete mode 100644 sysdeps/mips/ieee754/s_fmaf.c
create mode 100644 sysdeps/mips/mips32/nofpu/Implies
create mode 100644 sysdeps/mips/mips64/n32/fpu/s_fma.c
create mode 100644 sysdeps/mips/mips64/n32/nofpu/Implies
create mode 100644 sysdeps/mips/mips64/n64/fpu/s_fma.c
create mode 100644 sysdeps/mips/mips64/n64/nofpu/Implies
delete mode 100644 sysdeps/nios2/s_fma.c
delete mode 100644 sysdeps/nios2/s_fmaf.c
create mode 100644 sysdeps/sh/nofpu/Implies
delete mode 100644 sysdeps/sh/s_fma.c
delete mode 100644 sysdeps/sh/s_fmaf.c
delete mode 100644 sysdeps/tile/s_fma.c
delete mode 100644 sysdeps/tile/s_fmaf.c
hooks/post-receive
--
GNU C Library master sources