* [PATCH 0/2] unnormal test case fixes @ 2021-01-04 14:24 Siddhesh Poyarekar 2021-01-04 14:24 ` [PATCH 1/2] Drop nan-pseudo-number.h usage from tests Siddhesh Poyarekar 2021-01-04 14:24 ` [PATCH 2/2] Limit unnormal tests to supported long double formats Siddhesh Poyarekar 0 siblings, 2 replies; 13+ messages in thread From: Siddhesh Poyarekar @ 2021-01-04 14:24 UTC (permalink / raw) To: libc-alpha; +Cc: fweimer, joseph The following two patches fix issues that Joseph pointed out in the unnormal tests. The first patch fixes the breakage caused by moving nan-pseudo-number.h and in the process also fixes the macro condition used to limit conditions under which the test is built. The second patch limits the macro condition further so that the unnormal tests build only for long double and Float64x on intel96. Further, it cleans up the test macro names and casts test arguments to the type being tested. Verified with build-many-glibcs.py for ia64, m68k, i686 and aarch64 and with a native build and test for x86_64. Florian is helping me with a full build-many-glibcs.py run since I don't have compilers for all architectures yet. Siddhesh Poyarekar (2): Drop nan-pseudo-number.h usage from tests Limit unnormal tests to supported long double formats math/libm-test-driver.c | 17 +++++++++-------- 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 + sysdeps/ieee754/ldbl-96/nan-pseudo-number.h | 4 +--- sysdeps/x86/fpu/nan-pseudo-number.h | 1 - 10 files changed, 50 insertions(+), 48 deletions(-) -- 2.29.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/2] Drop nan-pseudo-number.h usage from tests 2021-01-04 14:24 [PATCH 0/2] unnormal test case fixes Siddhesh Poyarekar @ 2021-01-04 14:24 ` Siddhesh Poyarekar 2021-01-04 14:29 ` Florian Weimer 2021-01-04 14:24 ` [PATCH 2/2] Limit unnormal tests to supported long double formats Siddhesh Poyarekar 1 sibling, 1 reply; 13+ messages in thread From: Siddhesh Poyarekar @ 2021-01-04 14:24 UTC (permalink / raw) To: libc-alpha; +Cc: fweimer, joseph Make the tests use TEST_COND_intel96 to decide on whether to build the unnormal tests instead of the macro in nan-pseudo-number.h and then drop the header inclusion. This unbreaks test runs on all architectures that do not have ldbl-96. Also drop the HANDLE_PSEUDO_NUMBERS macro since it is not used anywhere. --- math/libm-test-driver.c | 5 ++--- math/libm-test-fpclassify.inc | 4 ++-- math/libm-test-isinf.inc | 4 ++-- math/libm-test-isnan.inc | 4 ++-- math/libm-test-issignaling.inc | 4 ++-- sysdeps/ieee754/ldbl-96/nan-pseudo-number.h | 4 +--- sysdeps/x86/fpu/nan-pseudo-number.h | 1 - 7 files changed, 11 insertions(+), 15 deletions(-) diff --git a/math/libm-test-driver.c b/math/libm-test-driver.c index 87f2793061..f7c0861c39 100644 --- a/math/libm-test-driver.c +++ b/math/libm-test-driver.c @@ -19,7 +19,6 @@ #include "libm-test-support.h" #include <math-tests-arch.h> -#include <nan-pseudo-number.h> /* Flags set by the including file. */ const int flag_test_errno = TEST_ERRNO; @@ -124,7 +123,7 @@ const char qtype_str[] = TYPE_STR; #define snan_value_ld __builtin_nansl ("") /* For pseudo-normal number tests. */ -#if HANDLE_PSEUDO_NUMBERS +#if TEST_COND_intel96 # include <math_ldbl.h> #define pseudo_inf { .parts = { 0x00000000, 0x00000000, 0x7fff }} #define pseudo_zero { .parts = { 0x00000000, 0x00000000, 0x0100 }} @@ -328,7 +327,7 @@ 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 HANDLE_PSEUDO_NUMBERS +#if TEST_COND_intel96 struct test_f_i_data_u { const char *arg_str; diff --git a/math/libm-test-fpclassify.inc b/math/libm-test-fpclassify.inc index 39728d0771..c1c7e1ead1 100644 --- a/math/libm-test-fpclassify.inc +++ b/math/libm-test-fpclassify.inc @@ -37,7 +37,7 @@ 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 HANDLE_PSEUDO_NUMBERS +#if TEST_COND_intel96 static const struct test_f_i_data_u fpclassify_test_data_u[] = { TEST_f_i (fpclassify, pseudo_zero, FP_NAN, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), @@ -52,7 +52,7 @@ static void fpclassify_test (void) { ALL_RM_TEST (fpclassify, 1, fpclassify_test_data, RUN_TEST_LOOP_f_i_tg, END); -#if HANDLE_PSEUDO_NUMBERS +#if TEST_COND_intel96 ALL_RM_TEST (fpclassify, 1, fpclassify_test_data_u, RUN_TEST_LOOP_f_i_tg_u, END); #endif } diff --git a/math/libm-test-isinf.inc b/math/libm-test-isinf.inc index 38f973ba38..7d4b27a45c 100644 --- a/math/libm-test-isinf.inc +++ b/math/libm-test-isinf.inc @@ -37,7 +37,7 @@ static const struct test_f_i_data isinf_test_data[] = TEST_f_b (isinf, -snan_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), }; -#if HANDLE_PSEUDO_NUMBERS +#if TEST_COND_intel96 static const struct test_f_i_data_u isinf_test_data_u[] = { TEST_f_b (isinf, pseudo_zero, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), @@ -52,7 +52,7 @@ static void isinf_test (void) { ALL_RM_TEST (isinf, 1, isinf_test_data, RUN_TEST_LOOP_f_b_tg, END); -#if HANDLE_PSEUDO_NUMBERS +#if TEST_COND_intel96 ALL_RM_TEST (isinf, 1, isinf_test_data_u, RUN_TEST_LOOP_f_b_tg_u, END); #endif } diff --git a/math/libm-test-isnan.inc b/math/libm-test-isnan.inc index 948a3afdec..501bb1856f 100644 --- a/math/libm-test-isnan.inc +++ b/math/libm-test-isnan.inc @@ -37,7 +37,7 @@ static const struct test_f_i_data isnan_test_data[] = TEST_f_b (isnan, -snan_value, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), }; -#if HANDLE_PSEUDO_NUMBERS +#if TEST_COND_intel96 static const struct test_f_i_data_u isnan_test_data_u[] = { TEST_f_b (isnan, pseudo_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), @@ -52,7 +52,7 @@ static void isnan_test (void) { ALL_RM_TEST (isnan, 1, isnan_test_data, RUN_TEST_LOOP_f_b_tg, END); -#if HANDLE_PSEUDO_NUMBERS +#if TEST_COND_intel96 ALL_RM_TEST (isnan, 1, isnan_test_data_u, RUN_TEST_LOOP_f_b_tg_u, END); #endif } diff --git a/math/libm-test-issignaling.inc b/math/libm-test-issignaling.inc index cc7c801e29..bea61a3664 100644 --- a/math/libm-test-issignaling.inc +++ b/math/libm-test-issignaling.inc @@ -39,7 +39,7 @@ static const struct test_f_i_data issignaling_test_data[] = TEST_f_b (issignaling, -snan_value_MACRO, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), }; -#if HANDLE_PSEUDO_NUMBERS +#if TEST_COND_intel96 static const struct test_f_i_data_u issignaling_test_data_u[] = { TEST_f_b (issignaling, pseudo_zero, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), @@ -54,7 +54,7 @@ static void issignaling_test (void) { ALL_RM_TEST (issignaling, 1, issignaling_test_data, RUN_TEST_LOOP_f_b_tg, END); -#if HANDLE_PSEUDO_NUMBERS +#if TEST_COND_intel96 ALL_RM_TEST (issignaling, 1, issignaling_test_data_u, RUN_TEST_LOOP_f_b_tg_u, END); #endif } diff --git a/sysdeps/ieee754/ldbl-96/nan-pseudo-number.h b/sysdeps/ieee754/ldbl-96/nan-pseudo-number.h index 771515a546..4df3b2e4de 100644 --- a/sysdeps/ieee754/ldbl-96/nan-pseudo-number.h +++ b/sysdeps/ieee754/ldbl-96/nan-pseudo-number.h @@ -19,9 +19,7 @@ #ifndef NAN_PSEUDO_NUMBER_H #define NAN_PSEUDO_NUMBER_H 1 -/* Set this macro and override the definition of IS_PSEUDO_SIGNALING if pseudo - numbers need special handling. */ -#define HANDLE_PSEUDO_NUMBERS 0 +/* Default is to assume that pseudo numbers are not signaling. */ static inline int is_pseudo_signaling (uint32_t exi, uint32_t hxi) { diff --git a/sysdeps/x86/fpu/nan-pseudo-number.h b/sysdeps/x86/fpu/nan-pseudo-number.h index e4e015b09f..84a05ea040 100644 --- a/sysdeps/x86/fpu/nan-pseudo-number.h +++ b/sysdeps/x86/fpu/nan-pseudo-number.h @@ -19,7 +19,6 @@ #ifndef NAN_PSEUDO_NUMBER_H #define NAN_PSEUDO_NUMBER_H 1 -#define HANDLE_PSEUDO_NUMBERS 1 /* Pseudo numbers on x86 are always signaling. */ static inline int is_pseudo_signaling (uint32_t exi, uint32_t hxi) -- 2.29.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] Drop nan-pseudo-number.h usage from tests 2021-01-04 14:24 ` [PATCH 1/2] Drop nan-pseudo-number.h usage from tests Siddhesh Poyarekar @ 2021-01-04 14:29 ` Florian Weimer 2021-01-04 14:37 ` Siddhesh Poyarekar 0 siblings, 1 reply; 13+ messages in thread From: Florian Weimer @ 2021-01-04 14:29 UTC (permalink / raw) To: Siddhesh Poyarekar; +Cc: libc-alpha, joseph * Siddhesh Poyarekar: > Make the tests use TEST_COND_intel96 to decide on whether to build the > unnormal tests instead of the macro in nan-pseudo-number.h and then > drop the header inclusion. This unbreaks test runs on all > architectures that do not have ldbl-96. > > Also drop the HANDLE_PSEUDO_NUMBERS macro since it is not used > anywhere. Is this identical to the patch you shared previously? Then it fixes the build at least, so please push this. Thanks, Florian -- Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn, Commercial register: Amtsgericht Muenchen, HRB 153243, Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] Drop nan-pseudo-number.h usage from tests 2021-01-04 14:29 ` Florian Weimer @ 2021-01-04 14:37 ` Siddhesh Poyarekar 2021-01-04 15:13 ` Szabolcs Nagy 2021-01-04 15:17 ` Florian Weimer 0 siblings, 2 replies; 13+ messages in thread From: Siddhesh Poyarekar @ 2021-01-04 14:37 UTC (permalink / raw) To: Florian Weimer; +Cc: libc-alpha, joseph On 1/4/21 7:59 PM, Florian Weimer via Libc-alpha wrote: > Is this identical to the patch you shared previously? Then it fixes the > build at least, so please push this. There's an additional change which drops the HANDLE_PSEUDO_NUMBERS macro altogether since it's unused now. That should have no functional difference though. Siddhesh ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] Drop nan-pseudo-number.h usage from tests 2021-01-04 14:37 ` Siddhesh Poyarekar @ 2021-01-04 15:13 ` Szabolcs Nagy 2021-01-04 15:21 ` Siddhesh Poyarekar 2021-01-04 15:17 ` Florian Weimer 1 sibling, 1 reply; 13+ messages in thread From: Szabolcs Nagy @ 2021-01-04 15:13 UTC (permalink / raw) To: Siddhesh Poyarekar; +Cc: Florian Weimer, libc-alpha, joseph The 01/04/2021 20:07, Siddhesh Poyarekar via Libc-alpha wrote: > On 1/4/21 7:59 PM, Florian Weimer via Libc-alpha wrote: > > Is this identical to the patch you shared previously? Then it fixes the > > build at least, so please push this. > > There's an additional change which drops the HANDLE_PSEUDO_NUMBERS macro > altogether since it's unused now. That should have no functional difference > though. please fix the build. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] Drop nan-pseudo-number.h usage from tests 2021-01-04 15:13 ` Szabolcs Nagy @ 2021-01-04 15:21 ` Siddhesh Poyarekar 0 siblings, 0 replies; 13+ messages in thread From: Siddhesh Poyarekar @ 2021-01-04 15:21 UTC (permalink / raw) To: Szabolcs Nagy; +Cc: Florian Weimer, libc-alpha, joseph On 1/4/21 8:43 PM, Szabolcs Nagy via Libc-alpha wrote: > The 01/04/2021 20:07, Siddhesh Poyarekar via Libc-alpha wrote: >> On 1/4/21 7:59 PM, Florian Weimer via Libc-alpha wrote: >>> Is this identical to the patch you shared previously? Then it fixes the >>> build at least, so please push this. >> >> There's an additional change which drops the HANDLE_PSEUDO_NUMBERS macro >> altogether since it's unused now. That should have no functional difference >> though. > > please fix the build. > Done, sorry about the breakage again. Siddhesh ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] Drop nan-pseudo-number.h usage from tests 2021-01-04 14:37 ` Siddhesh Poyarekar 2021-01-04 15:13 ` Szabolcs Nagy @ 2021-01-04 15:17 ` Florian Weimer 2021-01-04 15:21 ` Siddhesh Poyarekar 1 sibling, 1 reply; 13+ messages in thread From: Florian Weimer @ 2021-01-04 15:17 UTC (permalink / raw) To: Siddhesh Poyarekar; +Cc: libc-alpha, joseph * Siddhesh Poyarekar: > On 1/4/21 7:59 PM, Florian Weimer via Libc-alpha wrote: >> Is this identical to the patch you shared previously? Then it fixes the >> build at least, so please push this. > > There's an additional change which drops the HANDLE_PSEUDO_NUMBERS > macro altogether since it's unused now. That should have no > functional difference though. I think this is okay, build-many-glibcs.py hasn't completed yet, but a good mix of targets have built successfully. Thanks, Florian -- Red Hat GmbH, https://de.redhat.com/ , Registered seat: Grasbrunn, Commercial register: Amtsgericht Muenchen, HRB 153243, Managing Directors: Charles Cachera, Brian Klemm, Laurie Krebs, Michael O'Neill ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] Drop nan-pseudo-number.h usage from tests 2021-01-04 15:17 ` Florian Weimer @ 2021-01-04 15:21 ` Siddhesh Poyarekar 0 siblings, 0 replies; 13+ messages in thread From: Siddhesh Poyarekar @ 2021-01-04 15:21 UTC (permalink / raw) To: Florian Weimer; +Cc: libc-alpha, joseph On 1/4/21 8:47 PM, Florian Weimer via Libc-alpha wrote: > I think this is okay, build-many-glibcs.py hasn't completed yet, but a > good mix of targets have built successfully. Thanks Florian! Siddhesh ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/2] Limit unnormal tests to supported long double formats 2021-01-04 14:24 [PATCH 0/2] unnormal test case fixes Siddhesh Poyarekar 2021-01-04 14:24 ` [PATCH 1/2] Drop nan-pseudo-number.h usage from tests Siddhesh Poyarekar @ 2021-01-04 14:24 ` Siddhesh Poyarekar 2021-01-12 7:22 ` [PING][PATCH " Siddhesh Poyarekar 1 sibling, 1 reply; 13+ messages in thread From: Siddhesh Poyarekar @ 2021-01-04 14:24 UTC (permalink / raw) To: libc-alpha; +Cc: fweimer, joseph 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 -- 2.29.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PING][PATCH 2/2] Limit unnormal tests to supported long double formats 2021-01-04 14:24 ` [PATCH 2/2] Limit unnormal tests to supported long double formats Siddhesh Poyarekar @ 2021-01-12 7:22 ` Siddhesh Poyarekar 2021-01-12 18:21 ` Joseph Myers 0 siblings, 1 reply; 13+ messages in thread From: Siddhesh Poyarekar @ 2021-01-12 7:22 UTC (permalink / raw) To: Siddhesh Poyarekar, libc-alpha; +Cc: fweimer, joseph 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 > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PING][PATCH 2/2] Limit unnormal tests to supported long double formats 2021-01-12 7:22 ` [PING][PATCH " Siddhesh Poyarekar @ 2021-01-12 18:21 ` Joseph Myers 2021-01-13 4:38 ` [PATCH v2] Use the right argument code in unnormal tests Siddhesh Poyarekar 0 siblings, 1 reply; 13+ messages in thread From: Joseph Myers @ 2021-01-12 18:21 UTC (permalink / raw) To: Siddhesh Poyarekar; +Cc: Siddhesh Poyarekar, libc-alpha, fweimer 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. -- Joseph S. Myers joseph@codesourcery.com ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2] Use the right argument code in unnormal tests 2021-01-12 18:21 ` Joseph Myers @ 2021-01-13 4:38 ` Siddhesh Poyarekar 2021-01-13 17:41 ` Joseph Myers 0 siblings, 1 reply; 13+ messages in thread From: Siddhesh Poyarekar @ 2021-01-13 4:38 UTC (permalink / raw) To: libc-alpha; +Cc: joseph Use the right argument code (j) in the unnormal tests and cast inputs from the ieee_long_double_shape_type struct to Float64x to properly test it. --- Changes: - Dropped the TEST_COND_unnormal macro since TEST_COND_intel96 was sufficient; I failed to notice that TEST_COND_intel96 would only be true for long double. math/libm-test-driver.c | 12 +++++++----- math/libm-test-fpclassify.inc | 14 +++++++------- math/libm-test-isinf.inc | 14 +++++++------- math/libm-test-isnan.inc | 14 +++++++------- math/libm-test-issignaling.inc | 14 +++++++------- 5 files changed, 35 insertions(+), 33 deletions(-) diff --git a/math/libm-test-driver.c b/math/libm-test-driver.c index f7c0861c39..0a430a8606 100644 --- a/math/libm-test-driver.c +++ b/math/libm-test-driver.c @@ -328,7 +328,7 @@ struct test_f_i_data }; /* 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 +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..1e30479473 100644 --- a/math/libm-test-fpclassify.inc +++ b/math/libm-test-fpclassify.inc @@ -38,13 +38,13 @@ static const struct test_f_i_data fpclassify_test_data[] = }; #if TEST_COND_intel96 -static const struct test_f_i_data_u fpclassify_test_data_u[] = +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 @@ -53,7 +53,7 @@ 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); + 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..7eeb33c211 100644 --- a/math/libm-test-isinf.inc +++ b/math/libm-test-isinf.inc @@ -38,13 +38,13 @@ static const struct test_f_i_data isinf_test_data[] = }; #if TEST_COND_intel96 -static const struct test_f_i_data_u isinf_test_data_u[] = +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 @@ -53,7 +53,7 @@ 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); + 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..c78143da37 100644 --- a/math/libm-test-isnan.inc +++ b/math/libm-test-isnan.inc @@ -38,13 +38,13 @@ static const struct test_f_i_data isnan_test_data[] = }; #if TEST_COND_intel96 -static const struct test_f_i_data_u isnan_test_data_u[] = +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 @@ -53,7 +53,7 @@ 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); + 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..3e27474f77 100644 --- a/math/libm-test-issignaling.inc +++ b/math/libm-test-issignaling.inc @@ -40,13 +40,13 @@ static const struct test_f_i_data issignaling_test_data[] = }; #if TEST_COND_intel96 -static const struct test_f_i_data_u issignaling_test_data_u[] = +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 @@ -55,7 +55,7 @@ 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); + ALL_RM_TEST (issignaling, 1, issignaling_test_data_u, RUN_TEST_LOOP_j_b_tg_u, END); #endif } -- 2.29.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] Use the right argument code in unnormal tests 2021-01-13 4:38 ` [PATCH v2] Use the right argument code in unnormal tests Siddhesh Poyarekar @ 2021-01-13 17:41 ` Joseph Myers 0 siblings, 0 replies; 13+ messages in thread From: Joseph Myers @ 2021-01-13 17:41 UTC (permalink / raw) To: Siddhesh Poyarekar; +Cc: libc-alpha On Wed, 13 Jan 2021, Siddhesh Poyarekar via Libc-alpha wrote: > Use the right argument code (j) in the unnormal tests and cast inputs > from the ieee_long_double_shape_type struct to Float64x to properly > test it. This patch is OK. -- Joseph S. Myers joseph@codesourcery.com ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2021-01-13 17:41 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-01-04 14:24 [PATCH 0/2] unnormal test case fixes Siddhesh Poyarekar 2021-01-04 14:24 ` [PATCH 1/2] Drop nan-pseudo-number.h usage from tests Siddhesh Poyarekar 2021-01-04 14:29 ` Florian Weimer 2021-01-04 14:37 ` Siddhesh Poyarekar 2021-01-04 15:13 ` Szabolcs Nagy 2021-01-04 15:21 ` Siddhesh Poyarekar 2021-01-04 15:17 ` Florian Weimer 2021-01-04 15:21 ` Siddhesh Poyarekar 2021-01-04 14:24 ` [PATCH 2/2] Limit unnormal tests to supported long double formats Siddhesh Poyarekar 2021-01-12 7:22 ` [PING][PATCH " Siddhesh Poyarekar 2021-01-12 18:21 ` Joseph Myers 2021-01-13 4:38 ` [PATCH v2] Use the right argument code in unnormal tests Siddhesh Poyarekar 2021-01-13 17:41 ` Joseph Myers
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).