58 lines · c
1// RUN: %clang_builtins %s %librt -o %t && %run %t2// REQUIRES: librt_has_fixunstfsi3 4#include <stdio.h>5 6#if __LDBL_MANT_DIG__ == 1137 8#include "fp_test.h"9 10unsigned int __fixunstfsi(long double a);11 12int test__fixunstfsi(long double a, unsigned int expected)13{14 unsigned int x = __fixunstfsi(a);15 int ret = (x != expected);16 17 if (ret)18 {19 printf("error in test__fixunstfsi(%.20Lf) = %u, "20 "expected %u\n", a, x, expected);21 }22 return ret;23}24 25char assumption_1[sizeof(long double) * CHAR_BIT == 128] = {0};26 27#endif28 29int main()30{31#if __LDBL_MANT_DIG__ == 11332 if (test__fixunstfsi(makeInf128(), UINT32_C(0xffffffff)))33 return 1;34 if (test__fixunstfsi(0, UINT32_C(0x0)))35 return 1;36 if (test__fixunstfsi(0x1.23456789abcdefp+5, UINT32_C(0x24)))37 return 1;38 if (test__fixunstfsi(0x1.23456789abcdefp-3, UINT32_C(0x0)))39 return 1;40 if (test__fixunstfsi(0x1.23456789abcdefp+20, UINT32_C(0x123456)))41 return 1;42 if (test__fixunstfsi(0x1.23456789abcdefp+40, UINT32_C(0xffffffff)))43 return 1;44 if (test__fixunstfsi(0x1.23456789abcdefp+256, UINT32_C(0xffffffff)))45 return 1;46 if (test__fixunstfsi(-0x1.23456789abcdefp+3, UINT32_C(0x0)))47 return 1;48 49 if (test__fixunstfsi(0x1.p+32, 0xFFFFFFFFLL))50 return 1;51 52#else53 printf("skipped\n");54 55#endif56 return 0;57}58