aboutsummaryrefslogtreecommitdiff
path: root/libm/upstream-freebsd/lib/msun/src/s_fma.c
diff options
context:
space:
mode:
Diffstat (limited to 'libm/upstream-freebsd/lib/msun/src/s_fma.c')
-rw-r--r--libm/upstream-freebsd/lib/msun/src/s_fma.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libm/upstream-freebsd/lib/msun/src/s_fma.c b/libm/upstream-freebsd/lib/msun/src/s_fma.c
index 41a6424fd..95cffd0ba 100644
--- a/libm/upstream-freebsd/lib/msun/src/s_fma.c
+++ b/libm/upstream-freebsd/lib/msun/src/s_fma.c
@@ -35,6 +35,13 @@ __FBSDID("$FreeBSD$");
#include "math_private.h"
+#ifdef USE_BUILTIN_FMA
+double
+fma(double x, double y, double z)
+{
+ return (__builtin_fma(x, y, z));
+}
+#else
/*
* A struct dd represents a floating-point number with twice the precision
* of a double. We maintain the invariant that "hi" stores the 53 high-order
@@ -284,6 +291,7 @@ fma(double x, double y, double z)
else
return (add_and_denormalize(r.hi, adj, spread));
}
+#endif /* !USE_BUILTIN_FMA */
#if (LDBL_MANT_DIG == 53)
__weak_reference(fma, fmal);