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) |
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 | |
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(format: "skipped\n" ); |
40 | #endif |
41 | return 0; |
42 | } |
43 | |