about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-02-06 15:44:07 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-02-06 15:44:07 +0000
commit1c7a4a51a30dd001c81630156458ee55fc2e883c (patch)
tree3116ff19257a9cb385bc0f70d67becdb742d0395
parent61f006c12d8ff3a80a95a36fed81c908a2e39650 (diff)
downloadglibc-1c7a4a51a30dd001c81630156458ee55fc2e883c.tar.gz
glibc-1c7a4a51a30dd001c81630156458ee55fc2e883c.tar.xz
glibc-1c7a4a51a30dd001c81630156458ee55fc2e883c.zip
soft-fp: Fix _FP_FMA when product is zero and third argument is finite (bug 17932).
soft-fp's _FP_FMA fails to set the result's exponent for cases where
the result of the multiplication is 0, yielding incorrect (arbitrary,
depending on uninitialized values) results for those cases.  This
affects libm for architectures using soft-fp to implement fma.  This
patch adds the exponent setting and tests for this case.

Tested for ARM soft-float (which uses soft-fp fma), x86_64 and x86 (to
verify not introducing new libm test failures there).

(This bug showed up in testing my patch to move the Linux kernel to
current soft-fp.  math/Makefile has "override CFLAGS +=
-Wno-uninitialized" which would have stopped compiler warnings from
showing up this problem, although I wouldn't be surprised if removing
that shows spurious warnings from this code, if the compiler fails to
follow that various cases where the exponent is uninitialized don't
need it initialized because the class is set to a value meaning the
uninitialized exponent isn't used.)

	[BZ #17932]
	* soft-fp/op-common.h (_FP_FMA): Set exponent of result in case
	where multiplication results in zero and third argument is finite
	and nonzero.
	* math/auto-libm-test-in: Add more tests of fma.
	* math/auto-libm-test-out: Regenerated.
-rw-r--r--ChangeLog7
-rw-r--r--NEWS6
-rw-r--r--math/auto-libm-test-in10
-rw-r--r--math/auto-libm-test-out357
-rw-r--r--soft-fp/op-common.h1
5 files changed, 381 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 32b766728e..8fa864c2a6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2015-02-06  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #17932]
+	* soft-fp/op-common.h (_FP_FMA): Set exponent of result in case
+	where multiplication results in zero and third argument is finite
+	and nonzero.
+	* math/auto-libm-test-in: Add more tests of fma.
+	* math/auto-libm-test-out: Regenerated.
+
 	* soft-fp/op-common.h (_FP_CMP_CHECK_DENORM): New macro.
 	(_FP_CMP_CHECK_FLUSH_ZERO): Likewise.
 	(_FP_CMP): Use_FP_CMP_CHECK_DENORM and _FP_CMP_CHECK_FLUSH_ZERO.
diff --git a/NEWS b/NEWS
index 617cdbb605..1f839bce2a 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,12 @@ See the end for copying conditions.
 Please send GNU C library bug reports via <http://sourceware.org/bugzilla/>
 using `glibc' in the "product" field.
 
+Version 2.22
+
+* The following bugs are resolved with this release:
+
+  17932.
+
 Version 2.21
 
 * The following bugs are resolved with this release:
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 8db3eb6041..ad43113fd1 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -1024,6 +1024,16 @@ fma 1.0 -1.0 1.0
 fma -1.0 1.0 1.0
 fma -1.0 -1.0 -1.0
 
+fma 0 0 1
+fma 0 0 2
+fma 0 0 max
+fma 0 1 1
+fma 1 0 1
+fma 0 1 2
+fma 1 0 2
+fma 0 1 max
+fma 1 0 max
+
 # Bug 6801: errno setting may be missing.
 fma min min 0 missing-errno
 fma min min -0 missing-errno
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index 4187d610b2..daa1468c03 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -94542,6 +94542,363 @@ fma -1.0 -1.0 -1.0
 = fma tonearest ldbl-128ibm -0x1p+0L -0x1p+0L -0x1p+0L : 0x0p+0L :
 = fma towardzero ldbl-128ibm -0x1p+0L -0x1p+0L -0x1p+0L : 0x0p+0L :
 = fma upward ldbl-128ibm -0x1p+0L -0x1p+0L -0x1p+0L : 0x0p+0L :
+fma 0 0 1
+= fma downward flt-32 0x0p+0f 0x0p+0f 0x1p+0f : 0x1p+0f :
+= fma tonearest flt-32 0x0p+0f 0x0p+0f 0x1p+0f : 0x1p+0f :
+= fma towardzero flt-32 0x0p+0f 0x0p+0f 0x1p+0f : 0x1p+0f :
+= fma upward flt-32 0x0p+0f 0x0p+0f 0x1p+0f : 0x1p+0f :
+= fma downward dbl-64 0x0p+0 0x0p+0 0x1p+0 : 0x1p+0 :
+= fma tonearest dbl-64 0x0p+0 0x0p+0 0x1p+0 : 0x1p+0 :
+= fma towardzero dbl-64 0x0p+0 0x0p+0 0x1p+0 : 0x1p+0 :
+= fma upward dbl-64 0x0p+0 0x0p+0 0x1p+0 : 0x1p+0 :
+= fma downward ldbl-96-intel 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma tonearest ldbl-96-intel 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma towardzero ldbl-96-intel 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma upward ldbl-96-intel 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma downward ldbl-96-m68k 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma tonearest ldbl-96-m68k 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma towardzero ldbl-96-m68k 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma upward ldbl-96-m68k 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma downward ldbl-128 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma tonearest ldbl-128 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma towardzero ldbl-128 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma upward ldbl-128 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma downward ldbl-128ibm 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma tonearest ldbl-128ibm 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma towardzero ldbl-128ibm 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma upward ldbl-128ibm 0x0p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+fma 0 0 2
+= fma downward flt-32 0x0p+0f 0x0p+0f 0x2p+0f : 0x2p+0f :
+= fma tonearest flt-32 0x0p+0f 0x0p+0f 0x2p+0f : 0x2p+0f :
+= fma towardzero flt-32 0x0p+0f 0x0p+0f 0x2p+0f : 0x2p+0f :
+= fma upward flt-32 0x0p+0f 0x0p+0f 0x2p+0f : 0x2p+0f :
+= fma downward dbl-64 0x0p+0 0x0p+0 0x2p+0 : 0x2p+0 :
+= fma tonearest dbl-64 0x0p+0 0x0p+0 0x2p+0 : 0x2p+0 :
+= fma towardzero dbl-64 0x0p+0 0x0p+0 0x2p+0 : 0x2p+0 :
+= fma upward dbl-64 0x0p+0 0x0p+0 0x2p+0 : 0x2p+0 :
+= fma downward ldbl-96-intel 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma tonearest ldbl-96-intel 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma towardzero ldbl-96-intel 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma upward ldbl-96-intel 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma downward ldbl-96-m68k 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma tonearest ldbl-96-m68k 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma towardzero ldbl-96-m68k 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma upward ldbl-96-m68k 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma downward ldbl-128 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma tonearest ldbl-128 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma towardzero ldbl-128 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma upward ldbl-128 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma downward ldbl-128ibm 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma tonearest ldbl-128ibm 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma towardzero ldbl-128ibm 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma upward ldbl-128ibm 0x0p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+fma 0 0 max
+= fma downward flt-32 0x0p+0f 0x0p+0f 0xf.fffffp+124f : 0xf.fffffp+124f :
+= fma tonearest flt-32 0x0p+0f 0x0p+0f 0xf.fffffp+124f : 0xf.fffffp+124f :
+= fma towardzero flt-32 0x0p+0f 0x0p+0f 0xf.fffffp+124f : 0xf.fffffp+124f :
+= fma upward flt-32 0x0p+0f 0x0p+0f 0xf.fffffp+124f : 0xf.fffffp+124f :
+= fma downward dbl-64 0x0p+0 0x0p+0 0xf.fffffp+124 : 0xf.fffffp+124 :
+= fma tonearest dbl-64 0x0p+0 0x0p+0 0xf.fffffp+124 : 0xf.fffffp+124 :
+= fma towardzero dbl-64 0x0p+0 0x0p+0 0xf.fffffp+124 : 0xf.fffffp+124 :
+= fma upward dbl-64 0x0p+0 0x0p+0 0xf.fffffp+124 : 0xf.fffffp+124 :
+= fma downward ldbl-96-intel 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma tonearest ldbl-96-intel 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma towardzero ldbl-96-intel 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma upward ldbl-96-intel 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma downward ldbl-96-m68k 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma tonearest ldbl-96-m68k 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma towardzero ldbl-96-m68k 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma upward ldbl-96-m68k 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma downward ldbl-128 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma tonearest ldbl-128 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma towardzero ldbl-128 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma upward ldbl-128 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma downward ldbl-128ibm 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma tonearest ldbl-128ibm 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma towardzero ldbl-128ibm 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma upward ldbl-128ibm 0x0p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma downward dbl-64 0x0p+0 0x0p+0 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+1020 :
+= fma tonearest dbl-64 0x0p+0 0x0p+0 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+1020 :
+= fma towardzero dbl-64 0x0p+0 0x0p+0 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+1020 :
+= fma upward dbl-64 0x0p+0 0x0p+0 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+1020 :
+= fma downward ldbl-96-intel 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma tonearest ldbl-96-intel 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma towardzero ldbl-96-intel 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma upward ldbl-96-intel 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma downward ldbl-96-m68k 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma tonearest ldbl-96-m68k 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma towardzero ldbl-96-m68k 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma upward ldbl-96-m68k 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma downward ldbl-128 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma tonearest ldbl-128 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma towardzero ldbl-128 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma upward ldbl-128 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma downward ldbl-128ibm 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma tonearest ldbl-128ibm 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma towardzero ldbl-128ibm 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma upward ldbl-128ibm 0x0p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma downward ldbl-96-intel 0x0p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma tonearest ldbl-96-intel 0x0p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma towardzero ldbl-96-intel 0x0p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma upward ldbl-96-intel 0x0p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma downward ldbl-96-m68k 0x0p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma tonearest ldbl-96-m68k 0x0p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma towardzero ldbl-96-m68k 0x0p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma upward ldbl-96-m68k 0x0p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma downward ldbl-128 0x0p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma tonearest ldbl-128 0x0p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma towardzero ldbl-128 0x0p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma upward ldbl-128 0x0p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma downward ldbl-128 0x0p+0L 0x0p+0L 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p+16380L :
+= fma tonearest ldbl-128 0x0p+0L 0x0p+0L 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p+16380L :
+= fma towardzero ldbl-128 0x0p+0L 0x0p+0L 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p+16380L :
+= fma upward ldbl-128 0x0p+0L 0x0p+0L 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p+16380L :
+= fma downward ldbl-128 0x0p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma tonearest ldbl-128 0x0p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma towardzero ldbl-128 0x0p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma upward ldbl-128 0x0p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma downward ldbl-128ibm 0x0p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma tonearest ldbl-128ibm 0x0p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma towardzero ldbl-128ibm 0x0p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma upward ldbl-128ibm 0x0p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+fma 0 1 1
+= fma downward flt-32 0x0p+0f 0x1p+0f 0x1p+0f : 0x1p+0f :
+= fma tonearest flt-32 0x0p+0f 0x1p+0f 0x1p+0f : 0x1p+0f :
+= fma towardzero flt-32 0x0p+0f 0x1p+0f 0x1p+0f : 0x1p+0f :
+= fma upward flt-32 0x0p+0f 0x1p+0f 0x1p+0f : 0x1p+0f :
+= fma downward dbl-64 0x0p+0 0x1p+0 0x1p+0 : 0x1p+0 :
+= fma tonearest dbl-64 0x0p+0 0x1p+0 0x1p+0 : 0x1p+0 :
+= fma towardzero dbl-64 0x0p+0 0x1p+0 0x1p+0 : 0x1p+0 :
+= fma upward dbl-64 0x0p+0 0x1p+0 0x1p+0 : 0x1p+0 :
+= fma downward ldbl-96-intel 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma tonearest ldbl-96-intel 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma towardzero ldbl-96-intel 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma upward ldbl-96-intel 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma downward ldbl-96-m68k 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma tonearest ldbl-96-m68k 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma towardzero ldbl-96-m68k 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma upward ldbl-96-m68k 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma downward ldbl-128 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma tonearest ldbl-128 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma towardzero ldbl-128 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma upward ldbl-128 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma downward ldbl-128ibm 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma tonearest ldbl-128ibm 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma towardzero ldbl-128ibm 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+= fma upward ldbl-128ibm 0x0p+0L 0x1p+0L 0x1p+0L : 0x1p+0L :
+fma 1 0 1
+= fma downward flt-32 0x1p+0f 0x0p+0f 0x1p+0f : 0x1p+0f :
+= fma tonearest flt-32 0x1p+0f 0x0p+0f 0x1p+0f : 0x1p+0f :
+= fma towardzero flt-32 0x1p+0f 0x0p+0f 0x1p+0f : 0x1p+0f :
+= fma upward flt-32 0x1p+0f 0x0p+0f 0x1p+0f : 0x1p+0f :
+= fma downward dbl-64 0x1p+0 0x0p+0 0x1p+0 : 0x1p+0 :
+= fma tonearest dbl-64 0x1p+0 0x0p+0 0x1p+0 : 0x1p+0 :
+= fma towardzero dbl-64 0x1p+0 0x0p+0 0x1p+0 : 0x1p+0 :
+= fma upward dbl-64 0x1p+0 0x0p+0 0x1p+0 : 0x1p+0 :
+= fma downward ldbl-96-intel 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma tonearest ldbl-96-intel 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma towardzero ldbl-96-intel 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma upward ldbl-96-intel 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma downward ldbl-96-m68k 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma tonearest ldbl-96-m68k 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma towardzero ldbl-96-m68k 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma upward ldbl-96-m68k 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma downward ldbl-128 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma tonearest ldbl-128 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma towardzero ldbl-128 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma upward ldbl-128 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma downward ldbl-128ibm 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma tonearest ldbl-128ibm 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma towardzero ldbl-128ibm 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+= fma upward ldbl-128ibm 0x1p+0L 0x0p+0L 0x1p+0L : 0x1p+0L :
+fma 0 1 2
+= fma downward flt-32 0x0p+0f 0x1p+0f 0x2p+0f : 0x2p+0f :
+= fma tonearest flt-32 0x0p+0f 0x1p+0f 0x2p+0f : 0x2p+0f :
+= fma towardzero flt-32 0x0p+0f 0x1p+0f 0x2p+0f : 0x2p+0f :
+= fma upward flt-32 0x0p+0f 0x1p+0f 0x2p+0f : 0x2p+0f :
+= fma downward dbl-64 0x0p+0 0x1p+0 0x2p+0 : 0x2p+0 :
+= fma tonearest dbl-64 0x0p+0 0x1p+0 0x2p+0 : 0x2p+0 :
+= fma towardzero dbl-64 0x0p+0 0x1p+0 0x2p+0 : 0x2p+0 :
+= fma upward dbl-64 0x0p+0 0x1p+0 0x2p+0 : 0x2p+0 :
+= fma downward ldbl-96-intel 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma tonearest ldbl-96-intel 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma towardzero ldbl-96-intel 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma upward ldbl-96-intel 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma downward ldbl-96-m68k 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma tonearest ldbl-96-m68k 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma towardzero ldbl-96-m68k 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma upward ldbl-96-m68k 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma downward ldbl-128 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma tonearest ldbl-128 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma towardzero ldbl-128 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma upward ldbl-128 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma downward ldbl-128ibm 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma tonearest ldbl-128ibm 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma towardzero ldbl-128ibm 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+= fma upward ldbl-128ibm 0x0p+0L 0x1p+0L 0x2p+0L : 0x2p+0L :
+fma 1 0 2
+= fma downward flt-32 0x1p+0f 0x0p+0f 0x2p+0f : 0x2p+0f :
+= fma tonearest flt-32 0x1p+0f 0x0p+0f 0x2p+0f : 0x2p+0f :
+= fma towardzero flt-32 0x1p+0f 0x0p+0f 0x2p+0f : 0x2p+0f :
+= fma upward flt-32 0x1p+0f 0x0p+0f 0x2p+0f : 0x2p+0f :
+= fma downward dbl-64 0x1p+0 0x0p+0 0x2p+0 : 0x2p+0 :
+= fma tonearest dbl-64 0x1p+0 0x0p+0 0x2p+0 : 0x2p+0 :
+= fma towardzero dbl-64 0x1p+0 0x0p+0 0x2p+0 : 0x2p+0 :
+= fma upward dbl-64 0x1p+0 0x0p+0 0x2p+0 : 0x2p+0 :
+= fma downward ldbl-96-intel 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma tonearest ldbl-96-intel 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma towardzero ldbl-96-intel 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma upward ldbl-96-intel 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma downward ldbl-96-m68k 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma tonearest ldbl-96-m68k 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma towardzero ldbl-96-m68k 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma upward ldbl-96-m68k 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma downward ldbl-128 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma tonearest ldbl-128 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma towardzero ldbl-128 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma upward ldbl-128 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma downward ldbl-128ibm 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma tonearest ldbl-128ibm 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma towardzero ldbl-128ibm 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+= fma upward ldbl-128ibm 0x1p+0L 0x0p+0L 0x2p+0L : 0x2p+0L :
+fma 0 1 max
+= fma downward flt-32 0x0p+0f 0x1p+0f 0xf.fffffp+124f : 0xf.fffffp+124f :
+= fma tonearest flt-32 0x0p+0f 0x1p+0f 0xf.fffffp+124f : 0xf.fffffp+124f :
+= fma towardzero flt-32 0x0p+0f 0x1p+0f 0xf.fffffp+124f : 0xf.fffffp+124f :
+= fma upward flt-32 0x0p+0f 0x1p+0f 0xf.fffffp+124f : 0xf.fffffp+124f :
+= fma downward dbl-64 0x0p+0 0x1p+0 0xf.fffffp+124 : 0xf.fffffp+124 :
+= fma tonearest dbl-64 0x0p+0 0x1p+0 0xf.fffffp+124 : 0xf.fffffp+124 :
+= fma towardzero dbl-64 0x0p+0 0x1p+0 0xf.fffffp+124 : 0xf.fffffp+124 :
+= fma upward dbl-64 0x0p+0 0x1p+0 0xf.fffffp+124 : 0xf.fffffp+124 :
+= fma downward ldbl-96-intel 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma tonearest ldbl-96-intel 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma towardzero ldbl-96-intel 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma upward ldbl-96-intel 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma downward ldbl-96-m68k 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma tonearest ldbl-96-m68k 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma towardzero ldbl-96-m68k 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma upward ldbl-96-m68k 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma downward ldbl-128 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma tonearest ldbl-128 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma towardzero ldbl-128 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma upward ldbl-128 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma downward ldbl-128ibm 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma tonearest ldbl-128ibm 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma towardzero ldbl-128ibm 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma upward ldbl-128ibm 0x0p+0L 0x1p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma downward dbl-64 0x0p+0 0x1p+0 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+1020 :
+= fma tonearest dbl-64 0x0p+0 0x1p+0 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+1020 :
+= fma towardzero dbl-64 0x0p+0 0x1p+0 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+1020 :
+= fma upward dbl-64 0x0p+0 0x1p+0 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+1020 :
+= fma downward ldbl-96-intel 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma tonearest ldbl-96-intel 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma towardzero ldbl-96-intel 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma upward ldbl-96-intel 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma downward ldbl-96-m68k 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma tonearest ldbl-96-m68k 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma towardzero ldbl-96-m68k 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma upward ldbl-96-m68k 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma downward ldbl-128 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma tonearest ldbl-128 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma towardzero ldbl-128 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma upward ldbl-128 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma downward ldbl-128ibm 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma tonearest ldbl-128ibm 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma towardzero ldbl-128ibm 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma upward ldbl-128ibm 0x0p+0L 0x1p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma downward ldbl-96-intel 0x0p+0L 0x1p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma tonearest ldbl-96-intel 0x0p+0L 0x1p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma towardzero ldbl-96-intel 0x0p+0L 0x1p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma upward ldbl-96-intel 0x0p+0L 0x1p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma downward ldbl-96-m68k 0x0p+0L 0x1p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma tonearest ldbl-96-m68k 0x0p+0L 0x1p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma towardzero ldbl-96-m68k 0x0p+0L 0x1p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma upward ldbl-96-m68k 0x0p+0L 0x1p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma downward ldbl-128 0x0p+0L 0x1p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma tonearest ldbl-128 0x0p+0L 0x1p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma towardzero ldbl-128 0x0p+0L 0x1p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma upward ldbl-128 0x0p+0L 0x1p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma downward ldbl-128 0x0p+0L 0x1p+0L 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p+16380L :
+= fma tonearest ldbl-128 0x0p+0L 0x1p+0L 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p+16380L :
+= fma towardzero ldbl-128 0x0p+0L 0x1p+0L 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p+16380L :
+= fma upward ldbl-128 0x0p+0L 0x1p+0L 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p+16380L :
+= fma downward ldbl-128 0x0p+0L 0x1p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma tonearest ldbl-128 0x0p+0L 0x1p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma towardzero ldbl-128 0x0p+0L 0x1p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma upward ldbl-128 0x0p+0L 0x1p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma downward ldbl-128ibm 0x0p+0L 0x1p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma tonearest ldbl-128ibm 0x0p+0L 0x1p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma towardzero ldbl-128ibm 0x0p+0L 0x1p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma upward ldbl-128ibm 0x0p+0L 0x1p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+fma 1 0 max
+= fma downward flt-32 0x1p+0f 0x0p+0f 0xf.fffffp+124f : 0xf.fffffp+124f :
+= fma tonearest flt-32 0x1p+0f 0x0p+0f 0xf.fffffp+124f : 0xf.fffffp+124f :
+= fma towardzero flt-32 0x1p+0f 0x0p+0f 0xf.fffffp+124f : 0xf.fffffp+124f :
+= fma upward flt-32 0x1p+0f 0x0p+0f 0xf.fffffp+124f : 0xf.fffffp+124f :
+= fma downward dbl-64 0x1p+0 0x0p+0 0xf.fffffp+124 : 0xf.fffffp+124 :
+= fma tonearest dbl-64 0x1p+0 0x0p+0 0xf.fffffp+124 : 0xf.fffffp+124 :
+= fma towardzero dbl-64 0x1p+0 0x0p+0 0xf.fffffp+124 : 0xf.fffffp+124 :
+= fma upward dbl-64 0x1p+0 0x0p+0 0xf.fffffp+124 : 0xf.fffffp+124 :
+= fma downward ldbl-96-intel 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma tonearest ldbl-96-intel 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma towardzero ldbl-96-intel 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma upward ldbl-96-intel 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma downward ldbl-96-m68k 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma tonearest ldbl-96-m68k 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma towardzero ldbl-96-m68k 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma upward ldbl-96-m68k 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma downward ldbl-128 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma tonearest ldbl-128 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma towardzero ldbl-128 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma upward ldbl-128 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma downward ldbl-128ibm 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma tonearest ldbl-128ibm 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma towardzero ldbl-128ibm 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma upward ldbl-128ibm 0x1p+0L 0x0p+0L 0xf.fffffp+124L : 0xf.fffffp+124L :
+= fma downward dbl-64 0x1p+0 0x0p+0 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+1020 :
+= fma tonearest dbl-64 0x1p+0 0x0p+0 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+1020 :
+= fma towardzero dbl-64 0x1p+0 0x0p+0 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+1020 :
+= fma upward dbl-64 0x1p+0 0x0p+0 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+1020 :
+= fma downward ldbl-96-intel 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma tonearest ldbl-96-intel 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma towardzero ldbl-96-intel 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma upward ldbl-96-intel 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma downward ldbl-96-m68k 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma tonearest ldbl-96-m68k 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma towardzero ldbl-96-m68k 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma upward ldbl-96-m68k 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma downward ldbl-128 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma tonearest ldbl-128 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma towardzero ldbl-128 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma upward ldbl-128 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma downward ldbl-128ibm 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma tonearest ldbl-128ibm 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma towardzero ldbl-128ibm 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma upward ldbl-128ibm 0x1p+0L 0x0p+0L 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffff8p+1020L :
+= fma downward ldbl-96-intel 0x1p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma tonearest ldbl-96-intel 0x1p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma towardzero ldbl-96-intel 0x1p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma upward ldbl-96-intel 0x1p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma downward ldbl-96-m68k 0x1p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma tonearest ldbl-96-m68k 0x1p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma towardzero ldbl-96-m68k 0x1p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma upward ldbl-96-m68k 0x1p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma downward ldbl-128 0x1p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma tonearest ldbl-128 0x1p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma towardzero ldbl-128 0x1p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma upward ldbl-128 0x1p+0L 0x0p+0L 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp+16380L :
+= fma downward ldbl-128 0x1p+0L 0x0p+0L 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p+16380L :
+= fma tonearest ldbl-128 0x1p+0L 0x0p+0L 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p+16380L :
+= fma towardzero ldbl-128 0x1p+0L 0x0p+0L 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p+16380L :
+= fma upward ldbl-128 0x1p+0L 0x0p+0L 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p+16380L :
+= fma downward ldbl-128 0x1p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma tonearest ldbl-128 0x1p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma towardzero ldbl-128 0x1p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma upward ldbl-128 0x1p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma downward ldbl-128ibm 0x1p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma tonearest ldbl-128ibm 0x1p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma towardzero ldbl-128ibm 0x1p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
+= fma upward ldbl-128ibm 0x1p+0L 0x0p+0L 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L :
 fma min min 0 missing-errno
 = fma downward flt-32 0x4p-128f 0x4p-128f 0x0p+0f : 0x0p+0f : inexact underflow errno-erange errno-erange-ok
 = fma tonearest flt-32 0x4p-128f 0x4p-128f 0x0p+0f : 0x0p+0f : inexact underflow errno-erange errno-erange-ok
diff --git a/soft-fp/op-common.h b/soft-fp/op-common.h
index 389ba3fcfa..342532a4cc 100644
--- a/soft-fp/op-common.h
+++ b/soft-fp/op-common.h
@@ -1116,6 +1116,7 @@
 	  R##_s = Z##_s;						\
 	  _FP_FRAC_COPY_##wc (R, Z);					\
 	  R##_c = Z##_c;						\
+	  R##_e = Z##_e;						\
 	  break;							\
 									\
 	case _FP_CLS_COMBINE (FP_CLS_INF, FP_CLS_INF):			\