From 7c08a05c5f4f86f9e249c2554b1628da0f812364 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 18 Oct 2010 07:29:50 -0400 Subject: IEEE quad fmal fixes --- sysdeps/ieee754/ldbl-128/s_fmal.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/ieee754/ldbl-128/s_fmal.c b/sysdeps/ieee754/ldbl-128/s_fmal.c index 9ec5ba9ee9..b750538b8a 100644 --- a/sysdeps/ieee754/ldbl-128/s_fmal.c +++ b/sysdeps/ieee754/ldbl-128/s_fmal.c @@ -175,6 +175,8 @@ __fmal (long double x, long double y, long double z) if ((u.ieee.mantissa3 & 1) == 0) u.ieee.mantissa3 |= fetestexcept (FE_INEXACT) != 0; v.d = a1 + u.d; + /* Ensure the addition is not scheduled after fetestexcept call. */ + asm volatile ("" : "m" (v)); int j = fetestexcept (FE_INEXACT) != 0; feupdateenv (&env); /* Ensure the following computations are performed in default rounding @@ -207,9 +209,9 @@ __fmal (long double x, long double y, long double z) { v.d *= 0x1p-226L; if (v.ieee.negative) - return v.d - 0x1p-16493L /* __LDBL_DENORM_MIN__ */; + return v.d - 0x1p-16494L /* __LDBL_DENORM_MIN__ */; else - return v.d + 0x1p-16493L /* __LDBL_DENORM_MIN__ */; + return v.d + 0x1p-16494L /* __LDBL_DENORM_MIN__ */; } else return v.d * 0x1p-226L; -- cgit 1.4.1