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