This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug math/17964] [powerpc] sqrt inaccurate


https://sourceware.org/bugzilla/show_bug.cgi?id=17964

--- Comment #4 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, release/2.19/master has been updated
       via  0a62a5c401cf5b4e79e8290e46ce36f4c6dd08da (commit)
      from  a0b2d5b252477b6bc374390c14c3c8ed6aae420c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0a62a5c401cf5b4e79e8290e46ce36f4c6dd08da

commit 0a62a5c401cf5b4e79e8290e46ce36f4c6dd08da
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu Feb 12 23:05:37 2015 +0000

    Fix powerpc software sqrt (bug 17964).

    As Adhemerval noted in
    <https://sourceware.org/ml/libc-alpha/2015-01/msg00451.html>, the
    powerpc sqrt implementation for when _ARCH_PPCSQ is not defined is
    inaccurate in some cases.

    The problem is that this code relies on fused multiply-add, and relies
    on the compiler contracting a * b + c to get a fused operation.  But
    sysdeps/ieee754/dbl-64/Makefile disables contraction for e_sqrt.c,
    because the implementation in that directory relies on *not* having
    contracted operations.

    While it would be possible to arrange makefiles so that an earlier
    sysdeps directory can disable the setting in
    sysdeps/ieee754/dbl-64/Makefile, it seems a lot cleaner to make the
    dependence on fused operations explicit in the .c file.  GCC 4.6
    introduced support for __builtin_fma on powerpc and other
    architectures with such instructions, so we can rely on that; this
    patch duly makes the code use __builtin_fma for all such fused
    operations.

    Tested for powerpc32 (hard float).

    2015-02-12  Joseph Myers  <joseph@codesourcery.com>

        [BZ #17964]
        * sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrt): Use
        __builtin_fma instead of relying on contraction of a * b + c.

    (cherry picked from commit e8bd5286c68bc35be3b41e94c15c4387dcb3bec9)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                    |    6 ++++++
 NEWS                         |    4 ++--
 sysdeps/powerpc/fpu/e_sqrt.c |   33 ++++++++++++++++++---------------
 3 files changed, 26 insertions(+), 17 deletions(-)

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]