1 // RUN: %clang_builtins %s %librt -o %t && %run %t
2 // REQUIRES: librt_has_trunctfsf2
7 #if __LDBL_MANT_DIG__ == 113
11 COMPILER_RT_ABI
float __trunctfsf2(long double a
);
13 int test__trunctfsf2(long double a
, uint32_t expected
)
15 float x
= __trunctfsf2(a
);
16 int ret
= compareResultF(x
, expected
);
19 printf("error in test__trunctfsf2(%.20Lf) = %f, "
20 "expected %f\n", a
, x
, fromRep32(expected
));
25 char assumption_1
[sizeof(long double) * CHAR_BIT
== 128] = {0};
31 #if __LDBL_MANT_DIG__ == 113
33 if (test__trunctfsf2(makeQNaN128(),
34 UINT32_C(0x7fc00000)))
37 if (test__trunctfsf2(makeNaN128(UINT64_C(0x810000000000)),
38 UINT32_C(0x7fc08000)))
41 if (test__trunctfsf2(makeInf128(),
42 UINT32_C(0x7f800000)))
45 if (test__trunctfsf2(0.0L, UINT32_C(0x0)))
48 if (test__trunctfsf2(0x1.23a2abb4a2ddee355f36789abcdep
+5L,
49 UINT32_C(0x4211d156)))
51 if (test__trunctfsf2(0x1.e3d3c45bd3abfd98b76a54cc321fp
-9L,
52 UINT32_C(0x3b71e9e2)))
54 if (test__trunctfsf2(0x1.234eebb5faa678f4488693abcdefp
+4534L,
55 UINT32_C(0x7f800000)))
57 if (test__trunctfsf2(0x1.edcba9bb8c76a5a43dd21f334634p
-435L,