• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_builtins %s %librt -o %t && %run %t
2 // REQUIRES: librt_has_fixsfsivfp
3 
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <math.h>
7 
8 
9 extern int __fixsfsivfp(float a);
10 
11 #if defined(__arm__) && defined(__ARM_FP) && (__ARM_FP & 0x4)
test__fixsfsivfp(float a)12 int test__fixsfsivfp(float a)
13 {
14 	int actual = __fixsfsivfp(a);
15 	int expected = a;
16     if (actual != expected)
17         printf("error in test__fixsfsivfp(%f) = %u, expected %u\n",
18                a, actual, expected);
19     return actual != expected;
20 }
21 #endif
22 
main()23 int main()
24 {
25 #if defined(__arm__) && defined(__ARM_FP) && (__ARM_FP & 0x4)
26     if (test__fixsfsivfp(0.0))
27         return 1;
28     if (test__fixsfsivfp(1.0))
29         return 1;
30     if (test__fixsfsivfp(-1.0))
31         return 1;
32     if (test__fixsfsivfp(2147483647.0))
33         return 1;
34     if (test__fixsfsivfp(-2147483648.0))
35         return 1;
36     if (test__fixsfsivfp(65536.0))
37         return 1;
38 #else
39     printf("skipped\n");
40 #endif
41     return 0;
42 }
43