#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ _exit(int);
int /*<<< orphan*/ dnear(double, double);
int /*<<< orphan*/ fnear(float, float);
int /*<<< orphan*/ ldnear(long double, long double);
double sll2d(long long);
float sll2f(long long);
long double sll2ld(long long);
double ull2d(unsigned long long);
float ull2f(unsigned long long);
long double ull2ld(unsigned long long);
test_longlong_integer_to_float() {
  if (ull2f(0ULL) != (float)0ULL)
    _exit(-25);
  if (ull2f(~0ULL) != (float)~0ULL)
    _exit(-26);
  if (ull2f((~0ULL) >> 1) != (float)((~0ULL) >> 1))
    _exit(-27);
  if (ull2f(~((~0ULL) >> 1)) != (float)~((~0ULL) >> 1))
    _exit(-28);
  if (ull2d(0ULL) != (double)0ULL)
    _exit(-29);
  if (ull2d(~0ULL) != (double)~0ULL)
    _exit(-32);
  if (ull2d((~0ULL) >> 1) != (double)((~0ULL) >> 1))
    _exit(-33);
  if (ull2d(~((~0ULL) >> 1)) != (double)~((~0ULL) >> 1))
    _exit(-34);
  if (ull2ld(0ULL) != (long double)0ULL)
    _exit(-35);
  if (ull2ld(~0ULL) != (long double)~0ULL)
    _exit(-36);
  if (ull2ld((~0ULL) >> 1) != (long double)((~0ULL) >> 1))
    _exit(-37);
  if (ull2ld(~((~0ULL) >> 1)) != (long double)~((~0ULL) >> 1))
    _exit(-38);
  if (sll2f(0LL) != (float)0LL)
    _exit(-39);
  if (sll2f(~0LL) != (float)~0LL)
    _exit(-40);
  if (!fnear(sll2f((long long int)((~0ULL) >> 1)),
             (float)(long long int)((~0ULL) >> 1)))
    _exit(-41);
  if (sll2f((long long int)(~((~0ULL) >> 1))) !=
      (float)(long long int)~((~0ULL) >> 1))
    _exit(-42);
  if (sll2d(0LL) != (double)0LL)
    _exit(-43);
  if (sll2d(~0LL) != (double)~0LL)
    _exit(-44);
  if (!dnear(sll2d((long long int)((~0ULL) >> 1)),
             (double)(long long int)((~0ULL) >> 1)))
    _exit(-45);
  if (!dnear(sll2d((long long int)~((~0ULL) >> 1)),
             (double)(long long int)~((~0ULL) >> 1)))
    _exit(-46);
  if (sll2ld(0LL) != (long double)0LL)
    _exit(-47);
  if (sll2ld(~0LL) != (long double)~0LL)
    _exit(-48);
  if (!ldnear(sll2ld((long long int)((~0ULL) >> 1)),
              (long double)(long long int)((~0ULL) >> 1)))
    _exit(-49);
  if (!ldnear(sll2ld((long long int)~((~0ULL) >> 1)),
              (long double)(long long int)~((~0ULL) >> 1)))
    _exit(-50);
}


x86 assembly (clang, -O0):
<test_longlong_integer_to_float>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
xor    %eax,%eax
mov    %eax,%edi
call   10b0 <ull2f@plt>
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    11c8 <test_longlong_integer_to_float+0x28>
jp     11c8 <test_longlong_integer_to_float+0x28>
jmp    11d2 <test_longlong_integer_to_float+0x32>
mov    $0xffffffe7,%edi
call   1070 <_exit@plt>
mov    $0xffffffffffffffff,%rdi
call   10b0 <ull2f@plt>
movss  0xe1a(%rip),%xmm1
ucomiss %xmm1,%xmm0
jne    11fa <test_longlong_integer_to_float+0x5a>
jp     11fa <test_longlong_integer_to_float+0x5a>
jmp    1204 <test_longlong_integer_to_float+0x64>
mov    $0xffffffe6,%edi
call   1070 <_exit@plt>
movabs $0x7fffffffffffffff,%rdi
ff ff 7f
call   10b0 <ull2f@plt>
movss  0xde9(%rip),%xmm1
ucomiss %xmm1,%xmm0
jne    122f <test_longlong_integer_to_float+0x8f>
jp     122f <test_longlong_integer_to_float+0x8f>
jmp    1239 <test_longlong_integer_to_float+0x99>
mov    $0xffffffe5,%edi
call   1070 <_exit@plt>
movabs $0x8000000000000000,%rdi
call   10b0 <ull2f@plt>
movss  0xdb4(%rip),%xmm1
ucomiss %xmm1,%xmm0
jne    1264 <test_longlong_integer_to_float+0xc4>
jp     1264 <test_longlong_integer_to_float+0xc4>
jmp    126e <test_longlong_integer_to_float+0xce>
mov    $0xffffffe4,%edi
call   1070 <_exit@plt>
xor    %eax,%eax
mov    %eax,%edi
call   10c0 <ull2d@plt>
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    128f <test_longlong_integer_to_float+0xef>
jp     128f <test_longlong_integer_to_float+0xef>
jmp    1299 <test_longlong_integer_to_float+0xf9>
mov    $0xffffffe3,%edi
call   1070 <_exit@plt>
mov    $0xffffffffffffffff,%rdi
call   10c0 <ull2d@plt>
movsd  0xd63(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12c2 <test_longlong_integer_to_float+0x122>
jp     12c2 <test_longlong_integer_to_float+0x122>
jmp    12cc <test_longlong_integer_to_float+0x12c>
mov    $0xffffffe0,%edi
call   1070 <_exit@plt>
movabs $0x7fffffffffffffff,%rdi
ff ff 7f
call   10c0 <ull2d@plt>
movsd  0xd35(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12f8 <test_longlong_integer_to_float+0x158>
jp     12f8 <test_longlong_integer_to_float+0x158>
jmp    1302 <test_longlong_integer_to_float+0x162>
mov    $0xffffffdf,%edi
call   1070 <_exit@plt>
movabs $0x8000000000000000,%rdi
call   10c0 <ull2d@plt>
movsd  0xcff(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    132e <test_longlong_integer_to_float+0x18e>
jp     132e <test_longlong_integer_to_float+0x18e>
jmp    1338 <test_longlong_integer_to_float+0x198>
mov    $0xffffffde,%edi
call   1070 <_exit@plt>
xor    %eax,%eax
mov    %eax,%edi
call   10a0 <ull2ld@plt>
fld    %st(0)
fstp   %st(0)
fldz
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    135e <test_longlong_integer_to_float+0x1be>
jp     135e <test_longlong_integer_to_float+0x1be>
jmp    1368 <test_longlong_integer_to_float+0x1c8>
mov    $0xffffffdd,%edi
call   1070 <_exit@plt>
mov    $0xffffffffffffffff,%rdi
call   10a0 <ull2ld@plt>
fld    %st(0)
fstp   %st(0)
fldt   0xcb2(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    1395 <test_longlong_integer_to_float+0x1f5>
jp     1395 <test_longlong_integer_to_float+0x1f5>
jmp    139f <test_longlong_integer_to_float+0x1ff>
mov    $0xffffffdc,%edi
call   1070 <_exit@plt>
movabs $0x7fffffffffffffff,%rdi
ff ff 7f
call   10a0 <ull2ld@plt>
fld    %st(0)
fstp   %st(0)
fldt   0xc88(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    13cf <test_longlong_integer_to_float+0x22f>
jp     13cf <test_longlong_integer_to_float+0x22f>
jmp    13d9 <test_longlong_integer_to_float+0x239>
mov    $0xffffffdb,%edi
call   1070 <_exit@plt>
movabs $0x8000000000000000,%rdi
call   10a0 <ull2ld@plt>
fld    %st(0)
fstp   %st(0)
flds   0xc12(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    1409 <test_longlong_integer_to_float+0x269>
jp     1409 <test_longlong_integer_to_float+0x269>
jmp    1413 <test_longlong_integer_to_float+0x273>
mov    $0xffffffda,%edi
call   1070 <_exit@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1050 <sll2f@plt>
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    1433 <test_longlong_integer_to_float+0x293>
jp     1433 <test_longlong_integer_to_float+0x293>
jmp    143d <test_longlong_integer_to_float+0x29d>
mov    $0xffffffd9,%edi
call   1070 <_exit@plt>
mov    $0xffffffffffffffff,%rdi
call   1050 <sll2f@plt>
movss  0xbb7(%rip),%xmm1
ucomiss %xmm1,%xmm0
jne    1465 <test_longlong_integer_to_float+0x2c5>
jp     1465 <test_longlong_integer_to_float+0x2c5>
jmp    146f <test_longlong_integer_to_float+0x2cf>
mov    $0xffffffd8,%edi
call   1070 <_exit@plt>
movabs $0x7fffffffffffffff,%rdi
ff ff 7f
call   1050 <sll2f@plt>
movss  0xb7e(%rip),%xmm1
call   1040 <fnear@plt>
cmp    $0x0,%eax
jne    149e <test_longlong_integer_to_float+0x2fe>
mov    $0xffffffd7,%edi
call   1070 <_exit@plt>
movabs $0x8000000000000000,%rdi
call   1050 <sll2f@plt>
movss  0xb57(%rip),%xmm1
ucomiss %xmm1,%xmm0
jne    14c9 <test_longlong_integer_to_float+0x329>
jp     14c9 <test_longlong_integer_to_float+0x329>
jmp    14d3 <test_longlong_integer_to_float+0x333>
mov    $0xffffffd6,%edi
call   1070 <_exit@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1060 <sll2d@plt>
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    14f4 <test_longlong_integer_to_float+0x354>
jp     14f4 <test_longlong_integer_to_float+0x354>
jmp    14fe <test_longlong_integer_to_float+0x35e>
mov    $0xffffffd5,%edi
call   1070 <_exit@plt>
mov    $0xffffffffffffffff,%rdi
call   1060 <sll2d@plt>
movsd  0xb0e(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1527 <test_longlong_integer_to_float+0x387>
jp     1527 <test_longlong_integer_to_float+0x387>
jmp    1531 <test_longlong_integer_to_float+0x391>
mov    $0xffffffd4,%edi
call   1070 <_exit@plt>
movabs $0x7fffffffffffffff,%rdi
ff ff 7f
call   1060 <sll2d@plt>
movsd  0xad0(%rip),%xmm1
call   1090 <dnear@plt>
cmp    $0x0,%eax
jne    1560 <test_longlong_integer_to_float+0x3c0>
mov    $0xffffffd3,%edi
call   1070 <_exit@plt>
movabs $0x8000000000000000,%rdi
call   1060 <sll2d@plt>
movsd  0xab1(%rip),%xmm1
call   1090 <dnear@plt>
cmp    $0x0,%eax
jne    158f <test_longlong_integer_to_float+0x3ef>
mov    $0xffffffd2,%edi
call   1070 <_exit@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1030 <sll2ld@plt>
fld    %st(0)
fstp   %st(0)
fldz
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    15b5 <test_longlong_integer_to_float+0x415>
jp     15b5 <test_longlong_integer_to_float+0x415>
jmp    15bf <test_longlong_integer_to_float+0x41f>
mov    $0xffffffd1,%edi
call   1070 <_exit@plt>
mov    $0xffffffffffffffff,%rdi
call   1030 <sll2ld@plt>
fld    %st(0)
fstp   %st(0)
fld1
fchs
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    15ea <test_longlong_integer_to_float+0x44a>
jp     15ea <test_longlong_integer_to_float+0x44a>
jmp    15f4 <test_longlong_integer_to_float+0x454>
mov    $0xffffffd0,%edi
call   1070 <_exit@plt>
movabs $0x7fffffffffffffff,%rdi
ff ff 7f
call   1030 <sll2ld@plt>
mov    %rsp,%rax
fldt   0xa34(%rip)
fstpt  0x10(%rax)
fstpt  (%rax)
call   1080 <ldnear@plt>
cmp    $0x0,%eax
jne    1629 <test_longlong_integer_to_float+0x489>
mov    $0xffffffcf,%edi
call   1070 <_exit@plt>
movabs $0x8000000000000000,%rdi
call   1030 <sll2ld@plt>
mov    %rsp,%rax
flds   0x9cb(%rip)
fstpt  0x10(%rax)
fstpt  (%rax)
call   1080 <ldnear@plt>
cmp    $0x0,%eax
jne    165e <test_longlong_integer_to_float+0x4be>
mov    $0xffffffce,%edi
call   1070 <_exit@plt>
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_longlong_integer_to_float>:
push   %r14
push   %rbx
sub    $0x38,%rsp
xor    %edi,%edi
call   10b0 <ull2f@plt>
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    148e <test_longlong_integer_to_float+0x2ee>
jp     148e <test_longlong_integer_to_float+0x2ee>
mov    $0xffffffffffffffff,%rdi
call   10b0 <ull2f@plt>
ucomiss 0xe2d(%rip),%xmm0
jne    1498 <test_longlong_integer_to_float+0x2f8>
jp     1498 <test_longlong_integer_to_float+0x2f8>
movabs $0x7fffffffffffffff,%r14
ff ff 7f
mov    %r14,%rdi
call   10b0 <ull2f@plt>
ucomiss 0xe0c(%rip),%xmm0
jne    14a2 <test_longlong_integer_to_float+0x302>
jp     14a2 <test_longlong_integer_to_float+0x302>
lea    0x1(%r14),%rbx
mov    %rbx,%rdi
call   10b0 <ull2f@plt>
ucomiss 0xded(%rip),%xmm0
jne    14ac <test_longlong_integer_to_float+0x30c>
jp     14ac <test_longlong_integer_to_float+0x30c>
xor    %edi,%edi
call   10c0 <ull2d@plt>
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    14b6 <test_longlong_integer_to_float+0x316>
jp     14b6 <test_longlong_integer_to_float+0x316>
mov    $0xffffffffffffffff,%rdi
call   10c0 <ull2d@plt>
ucomisd 0xdbf(%rip),%xmm0
jne    14c0 <test_longlong_integer_to_float+0x320>
jp     14c0 <test_longlong_integer_to_float+0x320>
mov    %r14,%rdi
call   10c0 <ull2d@plt>
ucomisd 0xdab(%rip),%xmm0
jne    14ca <test_longlong_integer_to_float+0x32a>
jp     14ca <test_longlong_integer_to_float+0x32a>
mov    %rbx,%rdi
call   10c0 <ull2d@plt>
ucomisd 0xd8f(%rip),%xmm0
jne    14d4 <test_longlong_integer_to_float+0x334>
jp     14d4 <test_longlong_integer_to_float+0x334>
xor    %edi,%edi
call   10a0 <ull2ld@plt>
fldz
fld    %st(0)
fstpt  0x2c(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    14de <test_longlong_integer_to_float+0x33e>
jp     14de <test_longlong_integer_to_float+0x33e>
mov    $0xffffffffffffffff,%rdi
call   10a0 <ull2ld@plt>
fldt   0xd68(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    14e8 <test_longlong_integer_to_float+0x348>
jp     14e8 <test_longlong_integer_to_float+0x348>
mov    %r14,%rdi
call   10a0 <ull2ld@plt>
fldt   0xd58(%rip)
fld    %st(0)
fstpt  0x20(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    14f2 <test_longlong_integer_to_float+0x352>
jp     14f2 <test_longlong_integer_to_float+0x352>
mov    %rbx,%rdi
call   10a0 <ull2ld@plt>
flds   0xcf6(%rip)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    14fc <test_longlong_integer_to_float+0x35c>
jp     14fc <test_longlong_integer_to_float+0x35c>
xor    %edi,%edi
call   1050 <sll2f@plt>
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    1506 <test_longlong_integer_to_float+0x366>
jp     1506 <test_longlong_integer_to_float+0x366>
mov    $0xffffffffffffffff,%rdi
call   1050 <sll2f@plt>
ucomiss 0xcbc(%rip),%xmm0
jne    1510 <test_longlong_integer_to_float+0x370>
jp     1510 <test_longlong_integer_to_float+0x370>
mov    %r14,%rdi
call   1050 <sll2f@plt>
movss  0xc9c(%rip),%xmm1
call   1040 <fnear@plt>
test   %eax,%eax
je     151a <test_longlong_integer_to_float+0x37a>
mov    %rbx,%rdi
call   1050 <sll2f@plt>
ucomiss 0xc88(%rip),%xmm0
jne    1524 <test_longlong_integer_to_float+0x384>
jp     1524 <test_longlong_integer_to_float+0x384>
xor    %edi,%edi
call   1060 <sll2d@plt>
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    152e <test_longlong_integer_to_float+0x38e>
jp     152e <test_longlong_integer_to_float+0x38e>
mov    $0xffffffffffffffff,%rdi
call   1060 <sll2d@plt>
ucomisd 0xc61(%rip),%xmm0
jne    1538 <test_longlong_integer_to_float+0x398>
jp     1538 <test_longlong_integer_to_float+0x398>
mov    %r14,%rdi
call   1060 <sll2d@plt>
movsd  0xc3d(%rip),%xmm1
call   1090 <dnear@plt>
test   %eax,%eax
je     1542 <test_longlong_integer_to_float+0x3a2>
mov    %rbx,%rdi
call   1060 <sll2d@plt>
movsd  0xc30(%rip),%xmm1
call   1090 <dnear@plt>
test   %eax,%eax
je     154c <test_longlong_integer_to_float+0x3ac>
xor    %edi,%edi
call   1030 <sll2ld@plt>
fldt   0x2c(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    1556 <test_longlong_integer_to_float+0x3b6>
jp     1556 <test_longlong_integer_to_float+0x3b6>
mov    $0xffffffffffffffff,%rdi
call   1030 <sll2ld@plt>
fld1
fchs
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    1560 <test_longlong_integer_to_float+0x3c0>
jp     1560 <test_longlong_integer_to_float+0x3c0>
mov    %r14,%rdi
call   1030 <sll2ld@plt>
fldt   0x20(%rsp)
fstpt  0x10(%rsp)
fstpt  (%rsp)
call   1080 <ldnear@plt>
test   %eax,%eax
je     156a <test_longlong_integer_to_float+0x3ca>
mov    %rbx,%rdi
call   1030 <sll2ld@plt>
flds   0xb9a(%rip)
fstpt  0x10(%rsp)
fstpt  (%rsp)
call   1080 <ldnear@plt>
test   %eax,%eax
je     1574 <test_longlong_integer_to_float+0x3d4>
add    $0x38,%rsp
pop    %rbx
pop    %r14
ret
mov    $0xffffffe7,%edi
call   1070 <_exit@plt>
mov    $0xffffffe6,%edi
call   1070 <_exit@plt>
mov    $0xffffffe5,%edi
call   1070 <_exit@plt>
mov    $0xffffffe4,%edi
call   1070 <_exit@plt>
mov    $0xffffffe3,%edi
call   1070 <_exit@plt>
mov    $0xffffffe0,%edi
call   1070 <_exit@plt>
mov    $0xffffffdf,%edi
call   1070 <_exit@plt>
mov    $0xffffffde,%edi
call   1070 <_exit@plt>
mov    $0xffffffdd,%edi
call   1070 <_exit@plt>
mov    $0xffffffdc,%edi
call   1070 <_exit@plt>
mov    $0xffffffdb,%edi
call   1070 <_exit@plt>
mov    $0xffffffda,%edi
call   1070 <_exit@plt>
mov    $0xffffffd9,%edi
call   1070 <_exit@plt>
mov    $0xffffffd8,%edi
call   1070 <_exit@plt>
mov    $0xffffffd7,%edi
call   1070 <_exit@plt>
mov    $0xffffffd6,%edi
call   1070 <_exit@plt>
mov    $0xffffffd5,%edi
call   1070 <_exit@plt>
mov    $0xffffffd4,%edi
call   1070 <_exit@plt>
mov    $0xffffffd3,%edi
call   1070 <_exit@plt>
mov    $0xffffffd2,%edi
call   1070 <_exit@plt>
mov    $0xffffffd1,%edi
call   1070 <_exit@plt>
mov    $0xffffffd0,%edi
call   1070 <_exit@plt>
mov    $0xffffffcf,%edi
call   1070 <_exit@plt>
mov    $0xffffffce,%edi
call   1070 <_exit@plt>

LLVM IR (-O0):
define i32 @test_longlong_integer_to_float() {
%1 = alloca i32
%2 = call float @ull2f(i64 0)
%3 = fcmp une float %2, 0.000000e+00
br i1 %3, label %4, label %6
4: ; preds = %0
%5 = call i32 @_exit(i32 -25)
unreachable
6: ; preds = %0
%7 = call float @ull2f(i64 -1)
%8 = fcmp une float %7, 0x43F0000000000000
br i1 %8, label %9, label %11
9: ; preds = %6
%10 = call i32 @_exit(i32 -26)
unreachable
11: ; preds = %6
%12 = call float @ull2f(i64 9223372036854775807)
%13 = fcmp une float %12, 0x43E0000000000000
br i1 %13, label %14, label %16
14: ; preds = %11
%15 = call i32 @_exit(i32 -27)
unreachable
16: ; preds = %11
%17 = call float @ull2f(i64 -9223372036854775808)
%18 = fcmp une float %17, 0x43E0000000000000
br i1 %18, label %19, label %21
19: ; preds = %16
%20 = call i32 @_exit(i32 -28)
unreachable
21: ; preds = %16
%22 = call double @ull2d(i64 0)
%23 = fcmp une double %22, 0.000000e+00
br i1 %23, label %24, label %26
24: ; preds = %21
%25 = call i32 @_exit(i32 -29)
unreachable
26: ; preds = %21
%27 = call double @ull2d(i64 -1)
%28 = fcmp une double %27, 0x43F0000000000000
br i1 %28, label %29, label %31
29: ; preds = %26
%30 = call i32 @_exit(i32 -32)
unreachable
31: ; preds = %26
%32 = call double @ull2d(i64 9223372036854775807)
%33 = fcmp une double %32, 0x43E0000000000000
br i1 %33, label %34, label %36
34: ; preds = %31
%35 = call i32 @_exit(i32 -33)
unreachable
36: ; preds = %31
%37 = call double @ull2d(i64 -9223372036854775808)
%38 = fcmp une double %37, 0x43E0000000000000
br i1 %38, label %39, label %41
39: ; preds = %36
%40 = call i32 @_exit(i32 -34)
unreachable
41: ; preds = %36
%42 = call x86_fp80 @ull2ld(i64 0)
%43 = fcmp une x86_fp80 %42, 0xK00000000000000000000
br i1 %43, label %44, label %46
44: ; preds = %41
%45 = call i32 @_exit(i32 -35)
unreachable
46: ; preds = %41
%47 = call x86_fp80 @ull2ld(i64 -1)
%48 = fcmp une x86_fp80 %47, 0xK403EFFFFFFFFFFFFFFFF
br i1 %48, label %49, label %51
49: ; preds = %46
%50 = call i32 @_exit(i32 -36)
unreachable
51: ; preds = %46
%52 = call x86_fp80 @ull2ld(i64 9223372036854775807)
%53 = fcmp une x86_fp80 %52, 0xK403DFFFFFFFFFFFFFFFE
br i1 %53, label %54, label %56
54: ; preds = %51
%55 = call i32 @_exit(i32 -37)
unreachable
56: ; preds = %51
%57 = call x86_fp80 @ull2ld(i64 -9223372036854775808)
%58 = fcmp une x86_fp80 %57, 0xK403E8000000000000000
br i1 %58, label %59, label %61
59: ; preds = %56
%60 = call i32 @_exit(i32 -38)
unreachable
61: ; preds = %56
%62 = call float @sll2f(i64 0)
%63 = fcmp une float %62, 0.000000e+00
br i1 %63, label %64, label %66
64: ; preds = %61
%65 = call i32 @_exit(i32 -39)
unreachable
66: ; preds = %61
%67 = call float @sll2f(i64 -1)
%68 = fcmp une float %67, -1.000000e+00
br i1 %68, label %69, label %71
69: ; preds = %66
%70 = call i32 @_exit(i32 -40)
unreachable
71: ; preds = %66
%72 = call float @sll2f(i64 9223372036854775807)
%73 = call i32 @fnear(float %72, float 0x43E0000000000000)
%74 = icmp ne i32 %73, 0
br i1 %74, label %77, label %75
75: ; preds = %71
%76 = call i32 @_exit(i32 -41)
unreachable
77: ; preds = %71
%78 = call float @sll2f(i64 -9223372036854775808)
%79 = fcmp une float %78, 0xC3E0000000000000
br i1 %79, label %80, label %82
80: ; preds = %77
%81 = call i32 @_exit(i32 -42)
unreachable
82: ; preds = %77
%83 = call double @sll2d(i64 0)
%84 = fcmp une double %83, 0.000000e+00
br i1 %84, label %85, label %87
85: ; preds = %82
%86 = call i32 @_exit(i32 -43)
unreachable
87: ; preds = %82
%88 = call double @sll2d(i64 -1)
%89 = fcmp une double %88, -1.000000e+00
br i1 %89, label %90, label %92
90: ; preds = %87
%91 = call i32 @_exit(i32 -44)
unreachable
92: ; preds = %87
%93 = call double @sll2d(i64 9223372036854775807)
%94 = call i32 @dnear(double %93, double 0x43E0000000000000)
%95 = icmp ne i32 %94, 0
br i1 %95, label %98, label %96
96: ; preds = %92
%97 = call i32 @_exit(i32 -45)
unreachable
98: ; preds = %92
%99 = call double @sll2d(i64 -9223372036854775808)
%100 = call i32 @dnear(double %99, double 0xC3E0000000000000)
%101 = icmp ne i32 %100, 0
br i1 %101, label %104, label %102
102: ; preds = %98
%103 = call i32 @_exit(i32 -46)
unreachable
104: ; preds = %98
%105 = call x86_fp80 @sll2ld(i64 0)
%106 = fcmp une x86_fp80 %105, 0xK00000000000000000000
br i1 %106, label %107, label %109
107: ; preds = %104
%108 = call i32 @_exit(i32 -47)
unreachable
109: ; preds = %104
%110 = call x86_fp80 @sll2ld(i64 -1)
%111 = fcmp une x86_fp80 %110, 0xKBFFF8000000000000000
br i1 %111, label %112, label %114
112: ; preds = %109
%113 = call i32 @_exit(i32 -48)
unreachable
114: ; preds = %109
%115 = call x86_fp80 @sll2ld(i64 9223372036854775807)
%116 = call i32 @ldnear(x86_fp80 %115, x86_fp80 0xK403DFFFFFFFFFFFFFFFE)
%117 = icmp ne i32 %116, 0
br i1 %117, label %120, label %118
118: ; preds = %114
%119 = call i32 @_exit(i32 -49)
unreachable
120: ; preds = %114
%121 = call x86_fp80 @sll2ld(i64 -9223372036854775808)
%122 = call i32 @ldnear(x86_fp80 %121, x86_fp80 0xKC03E8000000000000000)
%123 = icmp ne i32 %122, 0
br i1 %123, label %126, label %124
124: ; preds = %120
%125 = call i32 @_exit(i32 -50)
unreachable
126: ; preds = %120
%127 = load i32, i32* %1
ret i32 %127
}

LLVM IR (-O2):
define i32 @test_longlong_integer_to_float() {
%1 = tail call float @ull2f(i64 0)
%2 = fcmp une float %1, 0.000000e+00
br i1 %2, label %3, label %5
3: ; preds = %0
%4 = tail call i32 @_exit(i32 -25)
unreachable
5: ; preds = %0
%6 = tail call float @ull2f(i64 -1)
%7 = fcmp une float %6, 0x43F0000000000000
br i1 %7, label %8, label %10
8: ; preds = %5
%9 = tail call i32 @_exit(i32 -26)
unreachable
10: ; preds = %5
%11 = tail call float @ull2f(i64 9223372036854775807)
%12 = fcmp une float %11, 0x43E0000000000000
br i1 %12, label %13, label %15
13: ; preds = %10
%14 = tail call i32 @_exit(i32 -27)
unreachable
15: ; preds = %10
%16 = tail call float @ull2f(i64 -9223372036854775808)
%17 = fcmp une float %16, 0x43E0000000000000
br i1 %17, label %18, label %20
18: ; preds = %15
%19 = tail call i32 @_exit(i32 -28)
unreachable
20: ; preds = %15
%21 = tail call double @ull2d(i64 0)
%22 = fcmp une double %21, 0.000000e+00
br i1 %22, label %23, label %25
23: ; preds = %20
%24 = tail call i32 @_exit(i32 -29)
unreachable
25: ; preds = %20
%26 = tail call double @ull2d(i64 -1)
%27 = fcmp une double %26, 0x43F0000000000000
br i1 %27, label %28, label %30
28: ; preds = %25
%29 = tail call i32 @_exit(i32 -32)
unreachable
30: ; preds = %25
%31 = tail call double @ull2d(i64 9223372036854775807)
%32 = fcmp une double %31, 0x43E0000000000000
br i1 %32, label %33, label %35
33: ; preds = %30
%34 = tail call i32 @_exit(i32 -33)
unreachable
35: ; preds = %30
%36 = tail call double @ull2d(i64 -9223372036854775808)
%37 = fcmp une double %36, 0x43E0000000000000
br i1 %37, label %38, label %40
38: ; preds = %35
%39 = tail call i32 @_exit(i32 -34)
unreachable
40: ; preds = %35
%41 = tail call x86_fp80 @ull2ld(i64 0)
%42 = fcmp une x86_fp80 %41, 0xK00000000000000000000
br i1 %42, label %43, label %45
43: ; preds = %40
%44 = tail call i32 @_exit(i32 -35)
unreachable
45: ; preds = %40
%46 = tail call x86_fp80 @ull2ld(i64 -1)
%47 = fcmp une x86_fp80 %46, 0xK403EFFFFFFFFFFFFFFFF
br i1 %47, label %48, label %50
48: ; preds = %45
%49 = tail call i32 @_exit(i32 -36)
unreachable
50: ; preds = %45
%51 = tail call x86_fp80 @ull2ld(i64 9223372036854775807)
%52 = fcmp une x86_fp80 %51, 0xK403DFFFFFFFFFFFFFFFE
br i1 %52, label %53, label %55
53: ; preds = %50
%54 = tail call i32 @_exit(i32 -37)
unreachable
55: ; preds = %50
%56 = tail call x86_fp80 @ull2ld(i64 -9223372036854775808)
%57 = fcmp une x86_fp80 %56, 0xK403E8000000000000000
br i1 %57, label %58, label %60
58: ; preds = %55
%59 = tail call i32 @_exit(i32 -38)
unreachable
60: ; preds = %55
%61 = tail call float @sll2f(i64 0)
%62 = fcmp une float %61, 0.000000e+00
br i1 %62, label %63, label %65
63: ; preds = %60
%64 = tail call i32 @_exit(i32 -39)
unreachable
65: ; preds = %60
%66 = tail call float @sll2f(i64 -1)
%67 = fcmp une float %66, -1.000000e+00
br i1 %67, label %68, label %70
68: ; preds = %65
%69 = tail call i32 @_exit(i32 -40)
unreachable
70: ; preds = %65
%71 = tail call float @sll2f(i64 9223372036854775807)
%72 = tail call i32 @fnear(float %71, float 0x43E0000000000000)
%73 = icmp eq i32 %72, 0
br i1 %73, label %74, label %76
74: ; preds = %70
%75 = tail call i32 @_exit(i32 -41)
unreachable
76: ; preds = %70
%77 = tail call float @sll2f(i64 -9223372036854775808)
%78 = fcmp une float %77, 0xC3E0000000000000
br i1 %78, label %79, label %81
79: ; preds = %76
%80 = tail call i32 @_exit(i32 -42)
unreachable
81: ; preds = %76
%82 = tail call double @sll2d(i64 0)
%83 = fcmp une double %82, 0.000000e+00
br i1 %83, label %84, label %86
84: ; preds = %81
%85 = tail call i32 @_exit(i32 -43)
unreachable
86: ; preds = %81
%87 = tail call double @sll2d(i64 -1)
%88 = fcmp une double %87, -1.000000e+00
br i1 %88, label %89, label %91
89: ; preds = %86
%90 = tail call i32 @_exit(i32 -44)
unreachable
91: ; preds = %86
%92 = tail call double @sll2d(i64 9223372036854775807)
%93 = tail call i32 @dnear(double %92, double 0x43E0000000000000)
%94 = icmp eq i32 %93, 0
br i1 %94, label %95, label %97
95: ; preds = %91
%96 = tail call i32 @_exit(i32 -45)
unreachable
97: ; preds = %91
%98 = tail call double @sll2d(i64 -9223372036854775808)
%99 = tail call i32 @dnear(double %98, double 0xC3E0000000000000)
%100 = icmp eq i32 %99, 0
br i1 %100, label %101, label %103
101: ; preds = %97
%102 = tail call i32 @_exit(i32 -46)
unreachable
103: ; preds = %97
%104 = tail call x86_fp80 @sll2ld(i64 0)
%105 = fcmp une x86_fp80 %104, 0xK00000000000000000000
br i1 %105, label %106, label %108
106: ; preds = %103
%107 = tail call i32 @_exit(i32 -47)
unreachable
108: ; preds = %103
%109 = tail call x86_fp80 @sll2ld(i64 -1)
%110 = fcmp une x86_fp80 %109, 0xKBFFF8000000000000000
br i1 %110, label %111, label %113
111: ; preds = %108
%112 = tail call i32 @_exit(i32 -48)
unreachable
113: ; preds = %108
%114 = tail call x86_fp80 @sll2ld(i64 9223372036854775807)
%115 = tail call i32 @ldnear(x86_fp80 %114, x86_fp80 0xK403DFFFFFFFFFFFFFFFE)
%116 = icmp eq i32 %115, 0
br i1 %116, label %117, label %119
117: ; preds = %113
%118 = tail call i32 @_exit(i32 -49)
unreachable
119: ; preds = %113
%120 = tail call x86_fp80 @sll2ld(i64 -9223372036854775808)
%121 = tail call i32 @ldnear(x86_fp80 %120, x86_fp80 0xKC03E8000000000000000)
%122 = icmp eq i32 %121, 0
br i1 %122, label %123, label %125
123: ; preds = %119
%124 = tail call i32 @_exit(i32 -50)
unreachable
125: ; preds = %119
ret i32 undef
}