aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-09-24 16:48:32 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-09-24 16:48:32 +0000
commit51df2605064a2bfd44fa0655ef9815812347de80 (patch)
treea0abf7172d01f3766a34ccea0dbb5ea85703c42a
parent24ffcbfc24e08212cc5b1fa8318940e75b06313c (diff)
downloadglibc-51df2605064a2bfd44fa0655ef9815812347de80.zip
glibc-51df2605064a2bfd44fa0655ef9815812347de80.tar.gz
glibc-51df2605064a2bfd44fa0655ef9815812347de80.tar.bz2
Fix x86_64 fma4 pow inappropriate contraction (bug 19003).
The x86_64 fma4 version of pow fails to disable contraction of operations other than those explicitly intended to use fma instructions, so resulting in large ulps errors on processors with fma4 instructions, as in bug 18104 (165ulp for the test added for that bug; error originally reported by "blaaa" on #glibc). This patch adds $(config-cflags-nofma) for e_pow-fma4.c, corresponding to the use for e_pow.c in sysdeps/ieee754/dbl-64/Makefile. Tested for x86_64 on a processor with fma4. [BZ #19003] * sysdeps/x86_64/fpu/multiarch/Makefile (CFLAGS-e_pow-fma4.c): Add $(config-cflags-nofma).
-rw-r--r--ChangeLog6
-rw-r--r--NEWS2
-rw-r--r--sysdeps/x86_64/fpu/multiarch/Makefile2
3 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index c900f20..df079ca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-09-24 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #19003]
+ * sysdeps/x86_64/fpu/multiarch/Makefile (CFLAGS-e_pow-fma4.c): Add
+ $(config-cflags-nofma).
+
2015-09-24 Szabolcs Nagy <szabolcs.nagy@arm.com>
* sysdeps/aarch64/libm-test-ulps: Regenerated.
diff --git a/NEWS b/NEWS
index bf16f4f..b06a826 100644
--- a/NEWS
+++ b/NEWS
@@ -16,7 +16,7 @@ Version 2.23
18647, 18661, 18674, 18675, 18681, 18757, 18778, 18781, 18787, 18789,
18790, 18795, 18796, 18820, 18823, 18824, 18857, 18863, 18870, 18872,
18873, 18875, 18887, 18921, 18951, 18952, 18961, 18966, 18967, 18970,
- 18977, 18980, 18981.
+ 18977, 18980, 18981, 19003.
* The obsolete header <regexp.h> has been removed. Programs that require
this header must be updated to use <regex.h> instead.
diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile
index 86ea473..631534a 100644
--- a/sysdeps/x86_64/fpu/multiarch/Makefile
+++ b/sysdeps/x86_64/fpu/multiarch/Makefile
@@ -16,7 +16,7 @@ CFLAGS-e_asin-fma4.c = -mfma4
CFLAGS-e_atan2-fma4.c = -mfma4
CFLAGS-e_exp-fma4.c = -mfma4
CFLAGS-e_log-fma4.c = -mfma4
-CFLAGS-e_pow-fma4.c = -mfma4
+CFLAGS-e_pow-fma4.c = -mfma4 $(config-cflags-nofma)
CFLAGS-halfulp-fma4.c = -mfma4
CFLAGS-mpa-fma4.c = -mfma4
CFLAGS-mpatan-fma4.c = -mfma4