Joseph Myers <jos...@codesourcery.com> writes:
> 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.  OK to commit?
> 
> 2017-01-02  Joseph Myers  <jos...@codesourcery.com>
> 
>       * config/mips/sfp-machine.h (_FP_CHOOSENAN): Always preserve NaN
>       payload if [__mips_nan2008].

Thanks for finding and fixing this.

OK to commit.

Matthew

Reply via email to