mirror of git://sourceware.org/git/glibc.git
Similarly to sqrt in <https://sourceware.org/ml/libc-alpha/2015-02/msg00353.html>, the powerpc sqrtf implementation for when _ARCH_PPCSQ is not defined also relies on a * b + c being contracted into a fused multiply-add. Although this contraction is not explicitly disabled for e_sqrtf.c, it still seems appropriate to make the file explicit about its requirements by using __builtin_fmaf; this patch does so. Furthermore, it turns out that doing so fixes the observed inaccuracy and missing exceptions (that is, that without explicit __builtin_fmaf usage, it was not being compiled as intended). Tested for powerpc32 (hard float). [BZ #17967] * sysdeps/powerpc/fpu/e_sqrtf.c (__slow_ieee754_sqrtf): Use __builtin_fmaf instead of relying on contraction of a * b + c. |
||
|---|---|---|
| .. | ||
| bits | ||
| fpu | ||
| nofpu | ||
| nptl | ||
| power4 | ||
| power5+/fpu | ||
| power6 | ||
| power7/fpu | ||
| powerpc32 | ||
| powerpc64 | ||
| soft-fp | ||
| sys/platform | ||
| Implies | ||
| Makefile | ||
| Versions | ||
| abort-instr.h | ||
| dl-procinfo.c | ||
| dl-procinfo.h | ||
| dl-tls.h | ||
| ffs.c | ||
| fpu_control.h | ||
| gccframe.h | ||
| ifunc-sel.h | ||
| jmpbuf-offsets.h | ||
| jmpbuf-unwind.h | ||
| ldsodefs.h | ||
| locale-defines.sym | ||
| longjmp.c | ||
| machine-gmon.h | ||
| math-tests.h | ||
| memusage.h | ||
| mp_clz_tab.c | ||
| novmx-longjmp.c | ||
| novmx-sigjmp.c | ||
| novmxsetjmp.h | ||
| preconfigure | ||
| rtld-global-offsets.sym | ||
| sched_cpucount.c | ||
| sigjmp.c | ||
| sotruss-lib.c | ||
| stackinfo.h | ||
| strcat.c | ||
| sysdep.h | ||
| test-arith.c | ||
| test-arithf.c | ||
| test-gettimebase.c | ||
| tls-macros.h | ||
| tst-stack-align.h | ||