• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===-------------- trunctfdf2_test.c - Test __trunctfdf2 -----------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file tests __trunctfdf2 for the compiler_rt library.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #include "int_lib.h"
15 #include <stdio.h>
16 
17 #if __LDBL_MANT_DIG__ == 113
18 
19 #include "fp_test.h"
20 
21 COMPILER_RT_ABI double __trunctfdf2(long double a);
22 
test__trunctfdf2(long double a,uint64_t expected)23 int test__trunctfdf2(long double a, uint64_t expected)
24 {
25     double x = __trunctfdf2(a);
26     int ret = compareResultD(x, expected);
27 
28     if (ret)
29     {
30         printf("error in test__trunctfdf2(%.20Lf) = %lf, "
31                "expected %lf\n", a, x, fromRep64(expected));
32     }
33     return ret;
34 }
35 
36 char assumption_1[sizeof(long double) * CHAR_BIT == 128] = {0};
37 
38 #endif
39 
main()40 int main()
41 {
42 #if __LDBL_MANT_DIG__ == 113
43     // qNaN
44     if (test__trunctfdf2(makeQNaN128(),
45                          UINT64_C(0x7ff8000000000000)))
46         return 1;
47     // NaN
48     if (test__trunctfdf2(makeNaN128(UINT64_C(0x810000000000)),
49                          UINT64_C(0x7ff8100000000000)))
50         return 1;
51     // inf
52     if (test__trunctfdf2(makeInf128(),
53                          UINT64_C(0x7ff0000000000000)))
54         return 1;
55     // zero
56     if (test__trunctfdf2(0.0L, UINT64_C(0x0)))
57         return 1;
58 
59     if (test__trunctfdf2(0x1.af23456789bbaaab347645365cdep+5L,
60                          UINT64_C(0x404af23456789bbb)))
61         return 1;
62     if (test__trunctfdf2(0x1.dedafcff354b6ae9758763545432p-9L,
63                          UINT64_C(0x3f6dedafcff354b7)))
64         return 1;
65     if (test__trunctfdf2(0x1.2f34dd5f437e849b4baab754cdefp+4534L,
66                          UINT64_C(0x7ff0000000000000)))
67         return 1;
68     if (test__trunctfdf2(0x1.edcbff8ad76ab5bf46463233214fp-435L,
69                          UINT64_C(0x24cedcbff8ad76ab)))
70         return 1;
71 
72 #else
73     printf("skipped\n");
74 
75 #endif
76     return 0;
77 }
78