1 // RUN: %clang_builtins %s %librt -o %t && %run %t 2 // REQUIRES: librt_has_floatunssidfvfp 3 4 #include "int_lib.h" 5 #include <stdio.h> 6 #include <stdlib.h> 7 #include <math.h> 8 9 10 extern COMPILER_RT_ABI double __floatunssidfvfp(unsigned int a); 11 12 #if defined(__arm__) && defined(__ARM_FP) && (__ARM_FP & 0x8) test__floatunssidfvfp(unsigned int a)13int test__floatunssidfvfp(unsigned int a) 14 { 15 double actual = __floatunssidfvfp(a); 16 double expected = a; 17 if (actual != expected) 18 printf("error in test__floatunssidfvfp(%u) = %f, expected %f\n", 19 a, actual, expected); 20 return actual != expected; 21 } 22 #endif 23 main()24int main() 25 { 26 #if defined(__arm__) && defined(__ARM_FP) && (__ARM_FP & 0x8) 27 if (test__floatunssidfvfp(0)) 28 return 1; 29 if (test__floatunssidfvfp(1)) 30 return 1; 31 if (test__floatunssidfvfp(0x7FFFFFFF)) 32 return 1; 33 if (test__floatunssidfvfp(0x80000000)) 34 return 1; 35 if (test__floatunssidfvfp(0xFFFFFFFF)) 36 return 1; 37 #else 38 printf("skipped\n"); 39 #endif 40 return 0; 41 } 42