• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_builtins %s %librt -o %t && %run %t
2 // REQUIRES: librt_has_fixunstfsi
3 
4 #include <stdio.h>
5 
6 #if __LDBL_MANT_DIG__ == 113
7 
8 #include "fp_test.h"
9 
10 unsigned int __fixunstfsi(long double a);
11 
test__fixunstfsi(long double a,unsigned int expected)12 int test__fixunstfsi(long double a, unsigned int expected)
13 {
14     unsigned int x = __fixunstfsi(a);
15     int ret = (x != expected);
16 
17     if (ret)
18     {
19         printf("error in test__fixunstfsi(%.20Lf) = %u, "
20                "expected %u\n", a, x, expected);
21     }
22     return ret;
23 }
24 
25 char assumption_1[sizeof(long double) * CHAR_BIT == 128] = {0};
26 
27 #endif
28 
main()29 int main()
30 {
31 #if __LDBL_MANT_DIG__ == 113
32     if (test__fixunstfsi(makeInf128(), UINT32_C(0xffffffff)))
33         return 1;
34     if (test__fixunstfsi(0, UINT32_C(0x0)))
35         return 1;
36     if (test__fixunstfsi(0x1.23456789abcdefp+5, UINT32_C(0x24)))
37         return 1;
38     if (test__fixunstfsi(0x1.23456789abcdefp-3, UINT32_C(0x0)))
39         return 1;
40     if (test__fixunstfsi(0x1.23456789abcdefp+20, UINT32_C(0x123456)))
41         return 1;
42     if (test__fixunstfsi(0x1.23456789abcdefp+40, UINT32_C(0xffffffff)))
43         return 1;
44     if (test__fixunstfsi(0x1.23456789abcdefp+256, UINT32_C(0xffffffff)))
45         return 1;
46     if (test__fixunstfsi(-0x1.23456789abcdefp+3, UINT32_C(0x0)))
47         return 1;
48 
49     if (test__fixunstfsi(0x1.p+32, 0xFFFFFFFFLL))
50         return 1;
51 
52 #else
53     printf("skipped\n");
54 
55 #endif
56     return 0;
57 }
58