mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 07:10:06 +00:00
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:
parent
c8b3296bbe
commit
774a2669af
@ -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
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user