]> git.ipfire.org Git - thirdparty/gcc.git/commit - libgcc/ChangeLog
Make MIPS soft-fp preserve NaN payloads for NAN2008.
authorJoseph Myers <joseph@codesourcery.com>
Wed, 4 Jan 2017 17:06:33 +0000 (17:06 +0000)
committerJoseph Myers <jsm28@gcc.gnu.org>
Wed, 4 Jan 2017 17:06:33 +0000 (17:06 +0000)
commitfec5f4e04195323a076ac92c9adc68e97dec738a
tree1f779d04a8a371cdb55a64c7a6a80b9043c4f1ca
parent58adb11b3021a6495d990ba7840f09022e2a6dfd
Make MIPS soft-fp preserve NaN payloads for NAN2008.

The MIPS sfp-machine.h has an _FP_CHOOSENAN implementation which
emulates hardware semantics of not preserving signaling NaN payloads
for an operation with two NaN arguments (although that doesn't suffice
to avoid sNaN payload preservation in any case with just one NaN
argument).

However, those are only hardware semantics in the legacy NaN case; in
the NAN2008 case, the architecture documentation says hardware
preserves payloads in such cases.  Furthermore, this implementation
assumes legacy NaN semantics, so in the NAN2008 case the
implementation actually has the effect of preserving sNaN payloads but
not preserving qNaN payloads, when both should be preserved.

This patch fixes the code just to copy from the first argument (at the
level of libgcc, it's not meaningful which argument is the first and
which is the second).

Tested for mips64-linux-gnu (soft float, NAN2008) with the glibc math/
tests.

* config/mips/sfp-machine.h (_FP_CHOOSENAN): Always preserve NaN
payload if [__mips_nan2008].

From-SVN: r244059
libgcc/ChangeLog
libgcc/config/mips/sfp-machine.h