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