brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 64ea023 Raw
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