Message ID | 20210104142443.3034204-3-siddhesh@sourceware.org |
---|---|
State | New |
Headers | show |
Series | unnormal test case fixes | expand |
On 1/4/21 7:54 PM, Siddhesh Poyarekar via Libc-alpha wrote: > Use the right argument code (j) in the unnormal tests and prevent > compilation of the tests in anything other than long double and > Float64x. Additionally, cast inputs from the > ieee_long_double_shape_type struct to Float64x to properly test it. > --- > math/libm-test-driver.c | 16 +++++++++------- > math/libm-test-fpclassify.inc | 18 +++++++++--------- > math/libm-test-isinf.inc | 18 +++++++++--------- > math/libm-test-isnan.inc | 18 +++++++++--------- > math/libm-test-issignaling.inc | 18 +++++++++--------- > math/libm-test-support.h | 2 ++ > math/test-float64x.h | 1 + > math/test-ldouble.h | 1 + > 8 files changed, 49 insertions(+), 43 deletions(-) > > diff --git a/math/libm-test-driver.c b/math/libm-test-driver.c > index f7c0861c39..6826ffac20 100644 > --- a/math/libm-test-driver.c > +++ b/math/libm-test-driver.c > @@ -123,7 +123,7 @@ const char qtype_str[] = TYPE_STR; > #define snan_value_ld __builtin_nansl ("") > > /* For pseudo-normal number tests. */ > -#if TEST_COND_intel96 > +#if TEST_COND_unnormal > # include <math_ldbl.h> > #define pseudo_inf { .parts = { 0x00000000, 0x00000000, 0x7fff }} > #define pseudo_zero { .parts = { 0x00000000, 0x00000000, 0x0100 }} > @@ -327,8 +327,8 @@ struct test_f_i_data > } rd, rn, rz, ru; > }; > /* Used for RUN_TEST_LOOP_f_i_tg_u and RUN_TEST_LOOP_f_b_tg_u. */ > -#if TEST_COND_intel96 > -struct test_f_i_data_u > +#if TEST_COND_unnormal > +struct test_j_i_data_u > { > const char *arg_str; > ieee_long_double_shape_type arg; > @@ -855,17 +855,19 @@ struct test_Ff_b1_data > (ARRAY)[i].RM_##ROUNDING_MODE.expected, \ > (ARRAY)[i].RM_##ROUNDING_MODE.exceptions); \ > ROUND_RESTORE_ ## ROUNDING_MODE > -#define RUN_TEST_LOOP_f_b_tg_u(FUNC_NAME, ARRAY, ROUNDING_MODE) \ > +#define RUN_TEST_LOOP_j_b_tg_u(FUNC_NAME, ARRAY, ROUNDING_MODE) \ > IF_ROUND_INIT_ ## ROUNDING_MODE \ > for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \ > - RUN_TEST_f_b_tg ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg.value, \ > + RUN_TEST_f_b_tg ((ARRAY)[i].arg_str, FUNC_NAME, \ > + (FLOAT)(ARRAY)[i].arg.value, \ > (ARRAY)[i].RM_##ROUNDING_MODE.expected, \ > (ARRAY)[i].RM_##ROUNDING_MODE.exceptions); \ > ROUND_RESTORE_ ## ROUNDING_MODE > -#define RUN_TEST_LOOP_f_i_tg_u(FUNC_NAME, ARRAY, ROUNDING_MODE) \ > +#define RUN_TEST_LOOP_j_i_tg_u(FUNC_NAME, ARRAY, ROUNDING_MODE) \ > IF_ROUND_INIT_ ## ROUNDING_MODE \ > for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \ > - RUN_TEST_f_i_tg ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg.value, \ > + RUN_TEST_f_i_tg ((ARRAY)[i].arg_str, FUNC_NAME, \ > + (FLOAT)(ARRAY)[i].arg.value, \ > (ARRAY)[i].RM_##ROUNDING_MODE.expected, \ > (ARRAY)[i].RM_##ROUNDING_MODE.exceptions); \ > ROUND_RESTORE_ ## ROUNDING_MODE > diff --git a/math/libm-test-fpclassify.inc b/math/libm-test-fpclassify.inc > index c1c7e1ead1..2243146f40 100644 > --- a/math/libm-test-fpclassify.inc > +++ b/math/libm-test-fpclassify.inc > @@ -37,14 +37,14 @@ static const struct test_f_i_data fpclassify_test_data[] = > TEST_f_i (fpclassify, -min_subnorm_value, FP_SUBNORMAL, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > }; > > -#if TEST_COND_intel96 > -static const struct test_f_i_data_u fpclassify_test_data_u[] = > +#if TEST_COND_unnormal > +static const struct test_j_i_data_u fpclassify_test_data_u[] = > { > - TEST_f_i (fpclassify, pseudo_zero, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_i (fpclassify, pseudo_inf, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_i (fpclassify, pseudo_qnan, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_i (fpclassify, pseudo_snan, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_i (fpclassify, pseudo_unnormal, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_i (fpclassify, pseudo_zero, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_i (fpclassify, pseudo_inf, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_i (fpclassify, pseudo_qnan, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_i (fpclassify, pseudo_snan, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_i (fpclassify, pseudo_unnormal, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > }; > #endif > > @@ -52,8 +52,8 @@ static void > fpclassify_test (void) > { > ALL_RM_TEST (fpclassify, 1, fpclassify_test_data, RUN_TEST_LOOP_f_i_tg, END); > -#if TEST_COND_intel96 > - ALL_RM_TEST (fpclassify, 1, fpclassify_test_data_u, RUN_TEST_LOOP_f_i_tg_u, END); > +#if TEST_COND_unnormal > + ALL_RM_TEST (fpclassify, 1, fpclassify_test_data_u, RUN_TEST_LOOP_j_i_tg_u, END); > #endif > } > > diff --git a/math/libm-test-isinf.inc b/math/libm-test-isinf.inc > index 7d4b27a45c..23b536ff17 100644 > --- a/math/libm-test-isinf.inc > +++ b/math/libm-test-isinf.inc > @@ -37,14 +37,14 @@ static const struct test_f_i_data isinf_test_data[] = > TEST_f_b (isinf, -snan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > }; > > -#if TEST_COND_intel96 > -static const struct test_f_i_data_u isinf_test_data_u[] = > +#if TEST_COND_unnormal > +static const struct test_j_i_data_u isinf_test_data_u[] = > { > - TEST_f_b (isinf, pseudo_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_b (isinf, pseudo_inf, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_b (isinf, pseudo_qnan, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_b (isinf, pseudo_snan, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_b (isinf, pseudo_unnormal, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (isinf, pseudo_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (isinf, pseudo_inf, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (isinf, pseudo_qnan, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (isinf, pseudo_snan, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (isinf, pseudo_unnormal, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > }; > #endif > > @@ -52,8 +52,8 @@ static void > isinf_test (void) > { > ALL_RM_TEST (isinf, 1, isinf_test_data, RUN_TEST_LOOP_f_b_tg, END); > -#if TEST_COND_intel96 > - ALL_RM_TEST (isinf, 1, isinf_test_data_u, RUN_TEST_LOOP_f_b_tg_u, END); > +#if TEST_COND_unnormal > + ALL_RM_TEST (isinf, 1, isinf_test_data_u, RUN_TEST_LOOP_j_b_tg_u, END); > #endif > } > > diff --git a/math/libm-test-isnan.inc b/math/libm-test-isnan.inc > index 501bb1856f..489b9c666e 100644 > --- a/math/libm-test-isnan.inc > +++ b/math/libm-test-isnan.inc > @@ -37,14 +37,14 @@ static const struct test_f_i_data isnan_test_data[] = > TEST_f_b (isnan, -snan_value, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > }; > > -#if TEST_COND_intel96 > -static const struct test_f_i_data_u isnan_test_data_u[] = > +#if TEST_COND_unnormal > +static const struct test_j_i_data_u isnan_test_data_u[] = > { > - TEST_f_b (isnan, pseudo_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_b (isnan, pseudo_inf, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_b (isnan, pseudo_qnan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_b (isnan, pseudo_snan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_b (isnan, pseudo_unnormal, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (isnan, pseudo_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (isnan, pseudo_inf, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (isnan, pseudo_qnan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (isnan, pseudo_snan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (isnan, pseudo_unnormal, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > }; > #endif > > @@ -52,8 +52,8 @@ static void > isnan_test (void) > { > ALL_RM_TEST (isnan, 1, isnan_test_data, RUN_TEST_LOOP_f_b_tg, END); > -#if TEST_COND_intel96 > - ALL_RM_TEST (isnan, 1, isnan_test_data_u, RUN_TEST_LOOP_f_b_tg_u, END); > +#if TEST_COND_unnormal > + ALL_RM_TEST (isnan, 1, isnan_test_data_u, RUN_TEST_LOOP_j_b_tg_u, END); > #endif > } > > diff --git a/math/libm-test-issignaling.inc b/math/libm-test-issignaling.inc > index bea61a3664..31012f08e6 100644 > --- a/math/libm-test-issignaling.inc > +++ b/math/libm-test-issignaling.inc > @@ -39,14 +39,14 @@ static const struct test_f_i_data issignaling_test_data[] = > TEST_f_b (issignaling, -snan_value_MACRO, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > }; > > -#if TEST_COND_intel96 > -static const struct test_f_i_data_u issignaling_test_data_u[] = > +#if TEST_COND_unnormal > +static const struct test_j_i_data_u issignaling_test_data_u[] = > { > - TEST_f_b (issignaling, pseudo_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_b (issignaling, pseudo_inf, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_b (issignaling, pseudo_qnan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_b (issignaling, pseudo_snan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > - TEST_f_b (issignaling, pseudo_unnormal, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (issignaling, pseudo_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (issignaling, pseudo_inf, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (issignaling, pseudo_qnan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (issignaling, pseudo_snan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > + TEST_j_b (issignaling, pseudo_unnormal, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), > }; > #endif > > @@ -54,8 +54,8 @@ static void > issignaling_test (void) > { > ALL_RM_TEST (issignaling, 1, issignaling_test_data, RUN_TEST_LOOP_f_b_tg, END); > -#if TEST_COND_intel96 > - ALL_RM_TEST (issignaling, 1, issignaling_test_data_u, RUN_TEST_LOOP_f_b_tg_u, END); > +#if TEST_COND_unnormal > + ALL_RM_TEST (issignaling, 1, issignaling_test_data_u, RUN_TEST_LOOP_j_b_tg_u, END); > #endif > } > > diff --git a/math/libm-test-support.h b/math/libm-test-support.h > index ba67001454..c218e2611a 100644 > --- a/math/libm-test-support.h > +++ b/math/libm-test-support.h > @@ -168,6 +168,8 @@ extern const char doc[]; > #define TEST_COND_before_rounding (!TININESS_AFTER_ROUNDING) > #define TEST_COND_after_rounding TININESS_AFTER_ROUNDING > > +#define TEST_COND_unnormal (TEST_COND_intel96 && defined TEST_UNNORMAL) > + > int enable_test (int); > void init_max_error (const char *, int, int); > void print_max_error (const char *); > diff --git a/math/test-float64x.h b/math/test-float64x.h > index 578323b809..59bda920ac 100644 > --- a/math/test-float64x.h > +++ b/math/test-float64x.h > @@ -40,3 +40,4 @@ > #define FTOSTR strfromf64x > #define snan_value_MACRO SNANF64X > #define FUNC_NARROW_PREFIX f64x > +#define TEST_UNNORMAL 1 > diff --git a/math/test-ldouble.h b/math/test-ldouble.h > index 6037782292..e0b7c94ca6 100644 > --- a/math/test-ldouble.h > +++ b/math/test-ldouble.h > @@ -41,3 +41,4 @@ > #define FTOSTR strfroml > #define snan_value_MACRO SNANL > #define TEST_FLOATN 0 > +#define TEST_UNNORMAL 1 >
On Tue, 12 Jan 2021, Siddhesh Poyarekar wrote: > On 1/4/21 7:54 PM, Siddhesh Poyarekar via Libc-alpha wrote: > > Use the right argument code (j) in the unnormal tests and prevent > > compilation of the tests in anything other than long double and > > Float64x. Additionally, cast inputs from the > > ieee_long_double_shape_type struct to Float64x to properly test it. I don't see how TEST_COND_unnormal makes sense here. When would it ever have a different value from TEST_COND_intel96? TEST_UNNORMAL seems redundant since TEST_COND_intel96 should always be false anyway except for cases where long double or _Float64x is being tested. If ia64 processors handle some of these representations differently from x86 processors (something best checked on hardware) then there might need to be different conditionals for that, depending on whether some, all or none of these tests describe semantics that correspond to how ia64 hardware handles these representations. But that would involve some sort of architecture-specific macro definition, not one in the headers for particular types being tested.
diff --git a/math/libm-test-driver.c b/math/libm-test-driver.c index f7c0861c39..6826ffac20 100644 --- a/math/libm-test-driver.c +++ b/math/libm-test-driver.c @@ -123,7 +123,7 @@ const char qtype_str[] = TYPE_STR; #define snan_value_ld __builtin_nansl ("") /* For pseudo-normal number tests. */ -#if TEST_COND_intel96 +#if TEST_COND_unnormal # include <math_ldbl.h> #define pseudo_inf { .parts = { 0x00000000, 0x00000000, 0x7fff }} #define pseudo_zero { .parts = { 0x00000000, 0x00000000, 0x0100 }} @@ -327,8 +327,8 @@ struct test_f_i_data } rd, rn, rz, ru; }; /* Used for RUN_TEST_LOOP_f_i_tg_u and RUN_TEST_LOOP_f_b_tg_u. */ -#if TEST_COND_intel96 -struct test_f_i_data_u +#if TEST_COND_unnormal +struct test_j_i_data_u { const char *arg_str; ieee_long_double_shape_type arg; @@ -855,17 +855,19 @@ struct test_Ff_b1_data (ARRAY)[i].RM_##ROUNDING_MODE.expected, \ (ARRAY)[i].RM_##ROUNDING_MODE.exceptions); \ ROUND_RESTORE_ ## ROUNDING_MODE -#define RUN_TEST_LOOP_f_b_tg_u(FUNC_NAME, ARRAY, ROUNDING_MODE) \ +#define RUN_TEST_LOOP_j_b_tg_u(FUNC_NAME, ARRAY, ROUNDING_MODE) \ IF_ROUND_INIT_ ## ROUNDING_MODE \ for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \ - RUN_TEST_f_b_tg ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg.value, \ + RUN_TEST_f_b_tg ((ARRAY)[i].arg_str, FUNC_NAME, \ + (FLOAT)(ARRAY)[i].arg.value, \ (ARRAY)[i].RM_##ROUNDING_MODE.expected, \ (ARRAY)[i].RM_##ROUNDING_MODE.exceptions); \ ROUND_RESTORE_ ## ROUNDING_MODE -#define RUN_TEST_LOOP_f_i_tg_u(FUNC_NAME, ARRAY, ROUNDING_MODE) \ +#define RUN_TEST_LOOP_j_i_tg_u(FUNC_NAME, ARRAY, ROUNDING_MODE) \ IF_ROUND_INIT_ ## ROUNDING_MODE \ for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \ - RUN_TEST_f_i_tg ((ARRAY)[i].arg_str, FUNC_NAME, (ARRAY)[i].arg.value, \ + RUN_TEST_f_i_tg ((ARRAY)[i].arg_str, FUNC_NAME, \ + (FLOAT)(ARRAY)[i].arg.value, \ (ARRAY)[i].RM_##ROUNDING_MODE.expected, \ (ARRAY)[i].RM_##ROUNDING_MODE.exceptions); \ ROUND_RESTORE_ ## ROUNDING_MODE diff --git a/math/libm-test-fpclassify.inc b/math/libm-test-fpclassify.inc index c1c7e1ead1..2243146f40 100644 --- a/math/libm-test-fpclassify.inc +++ b/math/libm-test-fpclassify.inc @@ -37,14 +37,14 @@ static const struct test_f_i_data fpclassify_test_data[] = TEST_f_i (fpclassify, -min_subnorm_value, FP_SUBNORMAL, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), }; -#if TEST_COND_intel96 -static const struct test_f_i_data_u fpclassify_test_data_u[] = +#if TEST_COND_unnormal +static const struct test_j_i_data_u fpclassify_test_data_u[] = { - TEST_f_i (fpclassify, pseudo_zero, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_i (fpclassify, pseudo_inf, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_i (fpclassify, pseudo_qnan, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_i (fpclassify, pseudo_snan, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_i (fpclassify, pseudo_unnormal, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_i (fpclassify, pseudo_zero, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_i (fpclassify, pseudo_inf, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_i (fpclassify, pseudo_qnan, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_i (fpclassify, pseudo_snan, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_i (fpclassify, pseudo_unnormal, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), }; #endif @@ -52,8 +52,8 @@ static void fpclassify_test (void) { ALL_RM_TEST (fpclassify, 1, fpclassify_test_data, RUN_TEST_LOOP_f_i_tg, END); -#if TEST_COND_intel96 - ALL_RM_TEST (fpclassify, 1, fpclassify_test_data_u, RUN_TEST_LOOP_f_i_tg_u, END); +#if TEST_COND_unnormal + ALL_RM_TEST (fpclassify, 1, fpclassify_test_data_u, RUN_TEST_LOOP_j_i_tg_u, END); #endif } diff --git a/math/libm-test-isinf.inc b/math/libm-test-isinf.inc index 7d4b27a45c..23b536ff17 100644 --- a/math/libm-test-isinf.inc +++ b/math/libm-test-isinf.inc @@ -37,14 +37,14 @@ static const struct test_f_i_data isinf_test_data[] = TEST_f_b (isinf, -snan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), }; -#if TEST_COND_intel96 -static const struct test_f_i_data_u isinf_test_data_u[] = +#if TEST_COND_unnormal +static const struct test_j_i_data_u isinf_test_data_u[] = { - TEST_f_b (isinf, pseudo_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_b (isinf, pseudo_inf, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_b (isinf, pseudo_qnan, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_b (isinf, pseudo_snan, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_b (isinf, pseudo_unnormal, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (isinf, pseudo_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (isinf, pseudo_inf, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (isinf, pseudo_qnan, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (isinf, pseudo_snan, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (isinf, pseudo_unnormal, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), }; #endif @@ -52,8 +52,8 @@ static void isinf_test (void) { ALL_RM_TEST (isinf, 1, isinf_test_data, RUN_TEST_LOOP_f_b_tg, END); -#if TEST_COND_intel96 - ALL_RM_TEST (isinf, 1, isinf_test_data_u, RUN_TEST_LOOP_f_b_tg_u, END); +#if TEST_COND_unnormal + ALL_RM_TEST (isinf, 1, isinf_test_data_u, RUN_TEST_LOOP_j_b_tg_u, END); #endif } diff --git a/math/libm-test-isnan.inc b/math/libm-test-isnan.inc index 501bb1856f..489b9c666e 100644 --- a/math/libm-test-isnan.inc +++ b/math/libm-test-isnan.inc @@ -37,14 +37,14 @@ static const struct test_f_i_data isnan_test_data[] = TEST_f_b (isnan, -snan_value, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), }; -#if TEST_COND_intel96 -static const struct test_f_i_data_u isnan_test_data_u[] = +#if TEST_COND_unnormal +static const struct test_j_i_data_u isnan_test_data_u[] = { - TEST_f_b (isnan, pseudo_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_b (isnan, pseudo_inf, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_b (isnan, pseudo_qnan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_b (isnan, pseudo_snan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_b (isnan, pseudo_unnormal, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (isnan, pseudo_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (isnan, pseudo_inf, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (isnan, pseudo_qnan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (isnan, pseudo_snan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (isnan, pseudo_unnormal, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), }; #endif @@ -52,8 +52,8 @@ static void isnan_test (void) { ALL_RM_TEST (isnan, 1, isnan_test_data, RUN_TEST_LOOP_f_b_tg, END); -#if TEST_COND_intel96 - ALL_RM_TEST (isnan, 1, isnan_test_data_u, RUN_TEST_LOOP_f_b_tg_u, END); +#if TEST_COND_unnormal + ALL_RM_TEST (isnan, 1, isnan_test_data_u, RUN_TEST_LOOP_j_b_tg_u, END); #endif } diff --git a/math/libm-test-issignaling.inc b/math/libm-test-issignaling.inc index bea61a3664..31012f08e6 100644 --- a/math/libm-test-issignaling.inc +++ b/math/libm-test-issignaling.inc @@ -39,14 +39,14 @@ static const struct test_f_i_data issignaling_test_data[] = TEST_f_b (issignaling, -snan_value_MACRO, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), }; -#if TEST_COND_intel96 -static const struct test_f_i_data_u issignaling_test_data_u[] = +#if TEST_COND_unnormal +static const struct test_j_i_data_u issignaling_test_data_u[] = { - TEST_f_b (issignaling, pseudo_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_b (issignaling, pseudo_inf, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_b (issignaling, pseudo_qnan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_b (issignaling, pseudo_snan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_f_b (issignaling, pseudo_unnormal, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (issignaling, pseudo_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (issignaling, pseudo_inf, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (issignaling, pseudo_qnan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (issignaling, pseudo_snan, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), + TEST_j_b (issignaling, pseudo_unnormal, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), }; #endif @@ -54,8 +54,8 @@ static void issignaling_test (void) { ALL_RM_TEST (issignaling, 1, issignaling_test_data, RUN_TEST_LOOP_f_b_tg, END); -#if TEST_COND_intel96 - ALL_RM_TEST (issignaling, 1, issignaling_test_data_u, RUN_TEST_LOOP_f_b_tg_u, END); +#if TEST_COND_unnormal + ALL_RM_TEST (issignaling, 1, issignaling_test_data_u, RUN_TEST_LOOP_j_b_tg_u, END); #endif } diff --git a/math/libm-test-support.h b/math/libm-test-support.h index ba67001454..c218e2611a 100644 --- a/math/libm-test-support.h +++ b/math/libm-test-support.h @@ -168,6 +168,8 @@ extern const char doc[]; #define TEST_COND_before_rounding (!TININESS_AFTER_ROUNDING) #define TEST_COND_after_rounding TININESS_AFTER_ROUNDING +#define TEST_COND_unnormal (TEST_COND_intel96 && defined TEST_UNNORMAL) + int enable_test (int); void init_max_error (const char *, int, int); void print_max_error (const char *); diff --git a/math/test-float64x.h b/math/test-float64x.h index 578323b809..59bda920ac 100644 --- a/math/test-float64x.h +++ b/math/test-float64x.h @@ -40,3 +40,4 @@ #define FTOSTR strfromf64x #define snan_value_MACRO SNANF64X #define FUNC_NARROW_PREFIX f64x +#define TEST_UNNORMAL 1 diff --git a/math/test-ldouble.h b/math/test-ldouble.h index 6037782292..e0b7c94ca6 100644 --- a/math/test-ldouble.h +++ b/math/test-ldouble.h @@ -41,3 +41,4 @@ #define FTOSTR strfroml #define snan_value_MACRO SNANL #define TEST_FLOATN 0 +#define TEST_UNNORMAL 1