Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / compiler-rt / test / builtins / Unit / trunctfsf2_test.c
blobc151d306ef16492f70fe198cff9339d513d30abb
1 // RUN: %clang_builtins %s %librt -o %t && %run %t
2 // REQUIRES: librt_has_trunctfsf2
4 #include "int_lib.h"
5 #include <stdio.h>
7 #if __LDBL_MANT_DIG__ == 113
9 #include "fp_test.h"
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);
18 if (ret){
19 printf("error in test__trunctfsf2(%.20Lf) = %f, "
20 "expected %f\n", a, x, fromRep32(expected));
22 return ret;
25 char assumption_1[sizeof(long double) * CHAR_BIT == 128] = {0};
27 #endif
29 int main()
31 #if __LDBL_MANT_DIG__ == 113
32 // qNaN
33 if (test__trunctfsf2(makeQNaN128(),
34 UINT32_C(0x7fc00000)))
35 return 1;
36 // NaN
37 if (test__trunctfsf2(makeNaN128(UINT64_C(0x810000000000)),
38 UINT32_C(0x7fc08000)))
39 return 1;
40 // inf
41 if (test__trunctfsf2(makeInf128(),
42 UINT32_C(0x7f800000)))
43 return 1;
44 // zero
45 if (test__trunctfsf2(0.0L, UINT32_C(0x0)))
46 return 1;
48 if (test__trunctfsf2(0x1.23a2abb4a2ddee355f36789abcdep+5L,
49 UINT32_C(0x4211d156)))
50 return 1;
51 if (test__trunctfsf2(0x1.e3d3c45bd3abfd98b76a54cc321fp-9L,
52 UINT32_C(0x3b71e9e2)))
53 return 1;
54 if (test__trunctfsf2(0x1.234eebb5faa678f4488693abcdefp+4534L,
55 UINT32_C(0x7f800000)))
56 return 1;
57 if (test__trunctfsf2(0x1.edcba9bb8c76a5a43dd21f334634p-435L,
58 UINT32_C(0x0)))
59 return 1;
61 #else
62 printf("skipped\n");
64 #endif
65 return 0;