]> sourceware.org Git - glibc.git/commitdiff
tile: use ieee754/dbl-64 version of fma() and fmaf()
authorChris Metcalf <cmetcalf@tilera.com>
Thu, 17 May 2012 15:27:36 +0000 (11:27 -0400)
committerChris Metcalf <cmetcalf@tilera.com>
Thu, 17 May 2012 15:27:36 +0000 (11:27 -0400)
It turns out that even if you stub out the rounding and exception
support and use the ieee754 version, it's still much better than
the generic version that just uses normal multiply and add.
The resulting functions have only 1 ULP of error according to the tests.

ChangeLog.tile
sysdeps/tile/s_fma.c
sysdeps/tile/s_fmaf.c

index b80011219632319b7c1959538660aaf9a806adaf..7d3c7bde7e145178b9adb5615df022fdf89c3076 100644 (file)
@@ -1,3 +1,8 @@
+2012-05-17  Chris Metcalf  <cmetcalf@tilera.com>
+
+       * sysdeps/tile/s_fma.c: Use ieee754/dbl-64 without rounding or
+       exception support; it's still much better than the generic version.
+
 2012-05-16  Chris Metcalf  <cmetcalf@tilera.com>
 
        * sysdeps/unix/sysv/linux/tile/ucontext_i: Fix tilegx32 offset bug.
index 355b4edf6a9737e0976a5253884bd4ef40b1d4c7..5be586562e5ab70429cda5b9481206b600670430 100644 (file)
@@ -1,3 +1,8 @@
-/* Although tile uses ieee754/dbl-64, it does not support the
-   rounding modes required to use the standard dbl-64 s_fma.c.  */
-#include <math/s_fma.c>
+/* tile does not support the rounding modes required by the ieee754/dbl-64
+   implementation, but it's still better than the generic implementation.  */
+
+#define libc_feholdexcept_setround(e, x) do { (void) (e); } while (0)
+#define libc_feupdateenv_test(e, x) ((void) (e), 0)
+#define libc_fetestexcept(x) 0
+
+#include <sysdeps/ieee754/dbl-64/s_fma.c>
index caa8e40654cfac27c5ff1904ce804602e414576d..92d66b25780b3233f6baa6449fda009bae24f5d9 100644 (file)
@@ -1,3 +1,8 @@
-/* Although tile uses ieee754/dbl-64, it does not support the
-   rounding modes required to use the standard dbl-64 s_fmaf.c.  */
-#include <math/s_fmaf.c>
+/* tile does not support the rounding modes required by the ieee754/dbl-64
+   implementation, but it's still better than the generic implementation.  */
+
+#define libc_feholdexcept_setround(e, x) do { (void) (e); } while (0)
+#define libc_feupdateenv_test(e, x) ((void) (e), 0)
+#define libc_fetestexcept(x) 0
+
+#include <sysdeps/ieee754/dbl-64/s_fmaf.c>
This page took 0.0477 seconds and 5 git commands to generate.