1 // RUN: %clang_builtins %s %librt -o %t && %run %t
2 // REQUIRES: librt_has_floatsitf
7 #if __LDBL_MANT_DIG__ == 113
11 COMPILER_RT_ABI
long double __floatsitf(si_int a
);
13 int test__floatsitf(si_int a
, uint64_t expectedHi
, uint64_t expectedLo
)
15 long double x
= __floatsitf(a
);
16 int ret
= compareResultF128(x
, expectedHi
, expectedLo
);
20 printf("error in test__floatsitf(%d) = %.20Lf, "
21 "expected %.20Lf\n", a
, x
, fromRep128(expectedHi
, expectedLo
));
26 char assumption_1
[sizeof(long double) * CHAR_BIT
== 128] = {0};
32 #if __LDBL_MANT_DIG__ == 113
33 if (test__floatsitf(0x80000000, UINT64_C(0xc01e000000000000), UINT64_C(0x0)))
35 if (test__floatsitf(0x7fffffff, UINT64_C(0x401dfffffffc0000), UINT64_C(0x0)))
37 if (test__floatsitf(0, UINT64_C(0x0), UINT64_C(0x0)))
39 if (test__floatsitf(0xffffffff, UINT64_C(0xbfff000000000000), UINT64_C(0x0)))
41 if (test__floatsitf(0x12345678, UINT64_C(0x401b234567800000), UINT64_C(0x0)))
43 if (test__floatsitf(-0x12345678, UINT64_C(0xc01b234567800000), UINT64_C(0x0)))