1 // RUN: %clang_builtins %s %librt -o %t && %run %t
3 #define SINGLE_PRECISION
9 int test__compiler_rt_fmaxf(fp_t x
, fp_t y
) {
10 fp_t crt_value
= __compiler_rt_fmaxf(x
, y
);
11 fp_t libm_value
= fmaxf(x
, y
);
12 // Consider +0 and -0 equal, and also disregard the sign/payload of two NaNs.
13 if (crt_value
!= libm_value
&&
14 !(crt_isnan(crt_value
) && crt_isnan(libm_value
))) {
15 printf("error: in __compiler_rt_fmaxf(%a [%X], %a [%X]) = %a [%X] "
17 x
, toRep(x
), y
, toRep(y
), crt_value
, toRep(crt_value
), libm_value
,
25 -NAN
, NAN
, -INFINITY
, INFINITY
, -0.0, 0.0, -1, 1, -2, 2,
26 -0x1.0p
-127, 0x1.0p
-127, -0x1.0p
-128, 0x1.0p
-128, // subnormals
27 -1.001, 1.001, -1.002, 1.002,
31 const unsigned N
= sizeof(cases
) / sizeof(cases
[0]);
33 for (i
= 0; i
< N
; ++i
) {
34 for (j
= 0; j
< N
; ++j
) {
35 if (test__compiler_rt_fmaxf(cases
[i
], cases
[j
])) return 1;