mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-27 13:10:29 +00:00
f39cd196c6
Testing for MIPS soft float shows that the issue with NaN payload preservation applies to soft float as well as hard float: the sfp-machine.h emulates hardware non-preservation semantics, although only for the case of two NaN arguments. This patch duly changes the MIPS math-tests.h to expect such non-preservation for soft float as well as hard float. The issue in the NAN2008 case for which I posted <https://gcc.gnu.org/ml/gcc-patches/2017-01/msg00034.html>, of sNaN payloads being preserved but qNaN payloads not being preserved, is not currently an issue for glibc tests because we don't have any tests that check for qNaN payloads being preserved by arithmetic, so a simple __mips_nan2008 conditional suffices without needing compiler version checks in the __mips_nan2008 case. Tested for mips64 soft float. * sysdeps/mips/math-tests.h (SNAN_TESTS_PRESERVE_PAYLOAD): Do not condition on [__mips_hard_float].
45 lines
1.8 KiB
C
45 lines
1.8 KiB
C
/* Configuration for math tests. MIPS version.
|
|
Copyright (C) 2013-2017 Free Software Foundation, Inc.
|
|
This file is part of the GNU C Library.
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with the GNU C Library; if not, see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
#include <features.h>
|
|
#include <sgidefs.h>
|
|
|
|
/* MIPS soft float does not support exceptions and rounding modes, and
|
|
before GCC 4.9 long double when wider than double is implemented
|
|
using fp-bit which does not integrate with hardware exceptions and
|
|
rounding modes. */
|
|
#ifdef __mips_soft_float
|
|
# define ROUNDING_TESTS_float(MODE) ((MODE) == FE_TONEAREST)
|
|
# define ROUNDING_TESTS_double(MODE) ((MODE) == FE_TONEAREST)
|
|
# define ROUNDING_TESTS_long_double(MODE) ((MODE) == FE_TONEAREST)
|
|
# define EXCEPTION_TESTS_float 0
|
|
# define EXCEPTION_TESTS_double 0
|
|
# define EXCEPTION_TESTS_long_double 0
|
|
#elif _MIPS_SIM != _ABIO32 && !__GNUC_PREREQ (4, 9)
|
|
# define ROUNDING_TESTS_long_double(MODE) ((MODE) == FE_TONEAREST)
|
|
# define EXCEPTION_TESTS_long_double 0
|
|
#endif
|
|
|
|
/* NaN payload preservation when converting a signaling NaN to quiet
|
|
is only required in NAN2008 mode. */
|
|
#ifndef __mips_nan2008
|
|
# define SNAN_TESTS_PRESERVE_PAYLOAD 0
|
|
#endif
|
|
|
|
#include_next <math-tests.h>
|