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