diff mbox series

[2/2] Limit unnormal tests to supported long double formats

Message ID 20210104142443.3034204-3-siddhesh@sourceware.org
State New
Headers show
Series unnormal test case fixes | expand

Commit Message

Siddhesh Poyarekar Jan. 4, 2021, 2:24 p.m. UTC
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(-)

Comments

Siddhesh Poyarekar Jan. 12, 2021, 7:22 a.m. UTC | #1
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
>
Joseph Myers Jan. 12, 2021, 6:21 p.m. UTC | #2
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 mbox series

Patch

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