From: Joseph Myers Date: Thu, 24 Sep 2015 16:48:32 +0000 (+0000) Subject: Fix x86_64 fma4 pow inappropriate contraction (bug 19003). X-Git-Tag: glibc-2.23~438 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=51df2605064a2bfd44fa0655ef9815812347de80;p=thirdparty%2Fglibc.git 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). --- diff --git a/ChangeLog b/ChangeLog index c900f20e89d..df079ca412d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2015-09-24 Joseph Myers + + [BZ #19003] + * sysdeps/x86_64/fpu/multiarch/Makefile (CFLAGS-e_pow-fma4.c): Add + $(config-cflags-nofma). + 2015-09-24 Szabolcs Nagy * sysdeps/aarch64/libm-test-ulps: Regenerated. diff --git a/NEWS b/NEWS index bf16f4f8bae..b06a8265216 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 has been removed. Programs that require this header must be updated to use instead. diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile index 86ea473b4ff..631534a5ce0 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