67 lines · c
1// RUN: %clang_builtins %s %librt -o %t && %run %t2// REQUIRES: librt_has_trunctfsf23 4#include "int_lib.h"5#include <stdio.h>6 7#if __LDBL_MANT_DIG__ == 1138 9#include "fp_test.h"10 11COMPILER_RT_ABI float __trunctfsf2(long double a);12 13int test__trunctfsf2(long double a, uint32_t expected)14{15 float x = __trunctfsf2(a);16 int ret = compareResultF(x, expected);17 18 if (ret){19 printf("error in test__trunctfsf2(%.20Lf) = %f, "20 "expected %f\n", a, x, fromRep32(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 // qNaN33 if (test__trunctfsf2(makeQNaN128(),34 UINT32_C(0x7fc00000)))35 return 1;36 // NaN37 if (test__trunctfsf2(makeNaN128(UINT64_C(0x810000000000)),38 UINT32_C(0x7fc08000)))39 return 1;40 // inf41 if (test__trunctfsf2(makeInf128(),42 UINT32_C(0x7f800000)))43 return 1;44 // zero45 if (test__trunctfsf2(0.0L, UINT32_C(0x0)))46 return 1;47 48 if (test__trunctfsf2(0x1.23a2abb4a2ddee355f36789abcdep+5L,49 UINT32_C(0x4211d156)))50 return 1;51 if (test__trunctfsf2(0x1.e3d3c45bd3abfd98b76a54cc321fp-9L,52 UINT32_C(0x3b71e9e2)))53 return 1;54 if (test__trunctfsf2(0x1.234eebb5faa678f4488693abcdefp+4534L,55 UINT32_C(0x7f800000)))56 return 1;57 if (test__trunctfsf2(0x1.edcba9bb8c76a5a43dd21f334634p-435L,58 UINT32_C(0x0)))59 return 1;60 61#else62 printf("skipped\n");63 64#endif65 return 0;66}67