1 /* Test various type-generic builtins by calling "main_tests()". */
3 void __attribute__ ((__noinline__
))
4 foo_1 (float f
, double d
, long double ld
,
5 int res_unord
, int res_isnan
, int res_isinf
,
6 int res_isfin
, int res_isnorm
)
8 if (__builtin_isunordered (f
, 0) != res_unord
)
10 if (__builtin_isunordered (0, f
) != res_unord
)
12 if (__builtin_isunordered (d
, 0) != res_unord
)
14 if (__builtin_isunordered (0, d
) != res_unord
)
16 if (__builtin_isunordered (ld
, 0) != res_unord
)
18 if (__builtin_isunordered (0, ld
) != res_unord
)
21 if (__builtin_isnan (f
) != res_isnan
)
23 if (__builtin_isnan (d
) != res_isnan
)
25 if (__builtin_isnan (ld
) != res_isnan
)
27 if (__builtin_isnanf (f
) != res_isnan
)
29 if (__builtin_isnanl (ld
) != res_isnan
)
32 if (__builtin_isinf (f
) != res_isinf
)
34 if (__builtin_isinf (d
) != res_isinf
)
36 if (__builtin_isinf (ld
) != res_isinf
)
38 if (__builtin_isinff (f
) != res_isinf
)
40 if (__builtin_isinfl (ld
) != res_isinf
)
43 if (__builtin_isnormal (f
) != res_isnorm
)
45 if (__builtin_isnormal (d
) != res_isnorm
)
47 if (__builtin_isnormal (ld
) != res_isnorm
)
50 if (__builtin_isfinite (f
) != res_isfin
)
52 if (__builtin_isfinite (d
) != res_isfin
)
54 if (__builtin_isfinite (ld
) != res_isfin
)
57 if (__builtin_finitef (f
) != res_isfin
)
59 if (__builtin_finite (f
) != res_isfin
)
61 if (__builtin_finite (d
) != res_isfin
)
63 if (__builtin_finitel (d
) != res_isfin
)
65 if (__builtin_finitel (ld
) != res_isfin
)
69 void __attribute__ ((__noinline__
))
70 foo (float f
, double d
, long double ld
,
71 int res_unord
, int res_isnan
, int res_isinf
,
72 int res_isfin
, int res_isnorm
)
74 foo_1 (f
, d
, ld
, res_unord
, res_isnan
, res_isinf
, res_isfin
, res_isnorm
);
75 /* Try all the values negated as well. */
76 foo_1 (-f
, -d
, -ld
, res_unord
, res_isnan
, res_isinf
, res_isfin
, res_isnorm
);
79 int __attribute__ ((__noinline__
))
87 f
= __builtin_nanf(""); d
= __builtin_nan(""); ld
= __builtin_nanl("");
88 foo(f
, d
, ld
, /*unord=*/ 1, /*isnan=*/ 1, /*isinf=*/ 0, /*isfin=*/ 0, /*isnorm=*/ 0);
91 f
= __builtin_inff(); d
= __builtin_inf(); ld
= __builtin_infl();
92 foo(f
, d
, ld
, /*unord=*/ 0, /*isnan=*/ 0, /*isinf=*/ 1, /*isfin=*/ 0, /*isnorm=*/ 0);
96 foo(f
, d
, ld
, /*unord=*/ 0, /*isnan=*/ 0, /*isinf=*/ 0, /*isfin=*/ 1, /*isnorm=*/ 0);
100 foo(f
, d
, ld
, /*unord=*/ 0, /*isnan=*/ 0, /*isinf=*/ 0, /*isfin=*/ 1, /*isnorm=*/ 1);
102 /* Test minimum values. */
103 f
= __FLT_MIN__
; d
= __DBL_MIN__
; ld
= __LDBL_MIN__
;
104 foo(f
, d
, ld
, /*unord=*/ 0, /*isnan=*/ 0, /*isinf=*/ 0, /*isfin=*/ 1, /*isnorm=*/ 1);
106 /* Test subnormal values. */
107 f
= __FLT_MIN__
/2; d
= __DBL_MIN__
/2; ld
= __LDBL_MIN__
/2;
108 foo(f
, d
, ld
, /*unord=*/ 0, /*isnan=*/ 0, /*isinf=*/ 0, /*isfin=*/ 1, /*isnorm=*/ 0);
110 /* Test maximum values. */
111 f
= __FLT_MAX__
; d
= __DBL_MAX__
; ld
= __LDBL_MAX__
;
112 foo(f
, d
, ld
, /*unord=*/ 0, /*isnan=*/ 0, /*isinf=*/ 0, /*isfin=*/ 1, /*isnorm=*/ 1);
114 /* Test overflow values. */
115 f
= __FLT_MAX__
*2; d
= __DBL_MAX__
*2; ld
= __LDBL_MAX__
*2;
116 foo(f
, d
, ld
, /*unord=*/ 0, /*isnan=*/ 0, /*isinf=*/ 1, /*isfin=*/ 0, /*isnorm=*/ 0);