brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · c151d30 Raw
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