/* Configuration for math tests. Generic version.
- Copyright (C) 2013-2016 Free Software Foundation, Inc.
+ Copyright (C) 2013-2019 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
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/>. */
+ <https://www.gnu.org/licenses/>. */
-/* Indicate whether to run tests involving sNaN values for the float, double,
- and long double C data types, respectively. All are run unless
- overridden. */
-#ifndef SNAN_TESTS_float
-# define SNAN_TESTS_float 1
-#endif
-#ifndef SNAN_TESTS_double
-# define SNAN_TESTS_double 1
-#endif
-#ifndef SNAN_TESTS_long_double
-# define SNAN_TESTS_long_double 1
-#endif
-
-/* Return nonzero value if to run tests involving sNaN values for X. */
-#define SNAN_TESTS(x) \
- (sizeof (x) == sizeof (float) ? SNAN_TESTS_float \
- : sizeof (x) == sizeof (double) ? SNAN_TESTS_double \
- : SNAN_TESTS_long_double)
-
-/* Indicate whether to run tests involving type casts of sNaN values. These
- are run unless overridden. */
-#ifndef SNAN_TESTS_TYPE_CAST
-# define SNAN_TESTS_TYPE_CAST 1
-#endif
+#include <bits/floatn.h>
-/* Indicate whether to run tests involving a given rounding mode for a
- given floating-point type, given that fesetround succeeds for that
- mode. All are run if fesetround succeeds unless overridden. */
-#ifndef ROUNDING_TESTS_float
-# define ROUNDING_TESTS_float(MODE) 1
-#endif
-#ifndef ROUNDING_TESTS_double
-# define ROUNDING_TESTS_double(MODE) 1
-#endif
-#ifndef ROUNDING_TESTS_long_double
-# define ROUNDING_TESTS_long_double(MODE) 1
+/* Expand the appropriate macro for whether to enable tests for a
+ given type. */
+#if __HAVE_DISTINCT_FLOAT128
+# define MATH_TESTS_TG(PREFIX, ARGS, TYPE) \
+ (sizeof (TYPE) == sizeof (float) ? PREFIX ## float ARGS \
+ : sizeof (TYPE) == sizeof (double) ? PREFIX ## double ARGS \
+ : __builtin_types_compatible_p (TYPE, _Float128) ? PREFIX ## float128 ARGS \
+ : PREFIX ## long_double ARGS)
+# else
+# define MATH_TESTS_TG(PREFIX, ARGS, TYPE) \
+ (sizeof (TYPE) == sizeof (float) ? PREFIX ## float ARGS \
+ : sizeof (TYPE) == sizeof (double) ? PREFIX ## double ARGS \
+ : PREFIX ## long_double ARGS)
#endif
-#define ROUNDING_TESTS(TYPE, MODE) \
- (sizeof (TYPE) == sizeof (float) ? ROUNDING_TESTS_float (MODE) \
- : sizeof (TYPE) == sizeof (double) ? ROUNDING_TESTS_double (MODE) \
- : ROUNDING_TESTS_long_double (MODE))
+/* Return nonzero value if to run tests involving sNaN values for X. */
+#define SNAN_TESTS(x) MATH_TESTS_TG (SNAN_TESTS_, , x)
-/* Indicate whether to run tests of floating-point exceptions for a
- given floating-point type, given that the exception macros are
- defined. All are run unless overridden. */
-#ifndef EXCEPTION_TESTS_float
-# define EXCEPTION_TESTS_float 1
-#endif
-#ifndef EXCEPTION_TESTS_double
-# define EXCEPTION_TESTS_double 1
-#endif
-#ifndef EXCEPTION_TESTS_long_double
-# define EXCEPTION_TESTS_long_double 1
-#endif
+#define ROUNDING_TESTS(TYPE, MODE) \
+ MATH_TESTS_TG (ROUNDING_TESTS_, (MODE), TYPE)
-#define EXCEPTION_TESTS(TYPE) \
- (sizeof (TYPE) == sizeof (float) ? EXCEPTION_TESTS_float \
- : sizeof (TYPE) == sizeof (double) ? EXCEPTION_TESTS_double \
- : EXCEPTION_TESTS_long_double)
+#define EXCEPTION_TESTS(TYPE) MATH_TESTS_TG (EXCEPTION_TESTS_, , TYPE)
-/* Indicate whether the given exception trap(s) can be enabled
- in feenableexcept. If non-zero, the traps are always supported.
- If zero, traps may or may not be supported depending on the
- target (this can be determined by checking the return value
- of feenableexcept). This enables skipping of tests which use
- traps. By default traps are supported unless overridden. */
-#ifndef EXCEPTION_ENABLE_SUPPORTED
-# define EXCEPTION_ENABLE_SUPPORTED(EXCEPT) \
- (EXCEPTION_TESTS_float || EXCEPTION_TESTS_double)
-#endif
+#include <math-tests-exceptions.h>
+#include <math-tests-rounding.h>
+#include <math-tests-snan.h>
+#include <math-tests-snan-cast.h>
+#include <math-tests-snan-payload.h>
+#include <math-tests-trap.h>
+#include <math-tests-trap-force.h>