mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
Add a barrier in the double fma implementation.
This commit is contained in:
parent
29bcce7ce4
commit
efb734887e
@ -1,3 +1,8 @@
|
|||||||
|
2012-06-01 Aurelien Jarno <aurelien@aurel32.net>
|
||||||
|
|
||||||
|
* sysdeps/ieee754/dbl-64/s_fma.c (__fma): Ensure a1 + u.d
|
||||||
|
computation is not scheduled after fetestexcept.
|
||||||
|
|
||||||
2012-06-01 H.J. Lu <hongjiu.lu@intel.com>
|
2012-06-01 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
[BZ #14117]
|
[BZ #14117]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Compute x * y + z as ternary operation.
|
/* Compute x * y + z as ternary operation.
|
||||||
Copyright (C) 2010, 2011 Free Software Foundation, Inc.
|
Copyright (C) 2010-2012 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
|
Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
|
||||||
|
|
||||||
@ -158,6 +158,8 @@ __fma (double x, double y, double z)
|
|||||||
if ((u.ieee.mantissa1 & 1) == 0)
|
if ((u.ieee.mantissa1 & 1) == 0)
|
||||||
u.ieee.mantissa1 |= libc_fetestexcept (FE_INEXACT) != 0;
|
u.ieee.mantissa1 |= libc_fetestexcept (FE_INEXACT) != 0;
|
||||||
v.d = a1 + u.d;
|
v.d = a1 + u.d;
|
||||||
|
/* Ensure the addition is not scheduled after fetestexcept call. */
|
||||||
|
math_force_eval (v.d);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reset rounding mode and test for inexact simultaneously. */
|
/* Reset rounding mode and test for inexact simultaneously. */
|
||||||
|
Loading…
Reference in New Issue
Block a user