aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sysdeps/ieee754/dbl-64/dla.h6
-rw-r--r--sysdeps/x86_64/dla.h9
2 files changed, 6 insertions, 9 deletions
diff --git a/sysdeps/ieee754/dbl-64/dla.h b/sysdeps/ieee754/dbl-64/dla.h
index af202ad7a7..cb12dbc8fb 100644
--- a/sysdeps/ieee754/dbl-64/dla.h
+++ b/sysdeps/ieee754/dbl-64/dla.h
@@ -60,9 +60,9 @@
/* satisfies z+zz = x*y exactly. p,hx,tx,hy,ty are temporary */
/* storage variables of type double. */
-#ifdef DLA_FMA
+#ifdef DLA_FMS
# define EMULV(x,y,z,zz,p,hx,tx,hy,ty) \
- z=x*y; zz=DLA_FMA(x,y,z);
+ z=x*y; zz=DLA_FMS(x,y,z);
#else
# define EMULV(x,y,z,zz,p,hx,tx,hy,ty) \
p=CN*(x); hx=((x)-p)+p; tx=(x)-hx; \
@@ -76,7 +76,7 @@
/* that satisfies z+zz = x*y exactly. p,hx,tx,hy,ty,q are temporary */
/* storage variables of type double. */
-#ifdef DLA_FMA
+#ifdef DLA_FMS
# define MUL12(x,y,z,zz,p,hx,tx,hy,ty,q) \
EMULV(x,y,z,zz,p,hx,tx,hy,ty)
#else
diff --git a/sysdeps/x86_64/dla.h b/sysdeps/x86_64/dla.h
index bb6c8c4be0..7aa06e5f6f 100644
--- a/sysdeps/x86_64/dla.h
+++ b/sysdeps/x86_64/dla.h
@@ -1,9 +1,6 @@
-#ifdef __FMA4__
-# define DLA_FMA(x,y,z) \
- ({ double __zz; \
- asm ("vfmsubsd %3, %2, %1, %0" \
- : "=x" (__zz) : "x" (x), "xm" (y), "x" (z)); \
- __zz; })
+#if defined __FMA4__ || defined __FMA__
+# define DLA_FMS(x,y,z) \
+ __builtin_fma (x, y, -z)
#endif
#include "sysdeps/ieee754/dbl-64/dla.h"