Clean up FMA use

The macro's name should reflect that subtraction is being done.  And
use __builtin_fma, it seems to work after all.
This commit is contained in:
Ulrich Drepper 2011-10-23 13:31:01 -04:00
parent c8b3296bbe
commit 774a2669af
2 changed files with 6 additions and 9 deletions

View File

@ -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

View File

@ -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"