#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*/ abort();
long long d2sll(double);
unsigned long long d2ull(double);
long long f2sll(float);
unsigned long long f2ull(float);
long long ld2sll(long double);
unsigned long long ld2ull(long double);
test_float_to_longlong_integer() {
  if (f2ull(0.0) != 0LL)
    abort();
  if (f2ull(0.999) != 0LL)
    abort();
  if (f2ull(1.0) != 1LL)
    abort();
  if (f2ull(1.99) != 1LL)
    abort();
  if (f2ull((float)((~0ULL) >> 1)) != (~0ULL) >> 1 &&
      f2ull((float)((~0ULL) >> 1)) != ((~0ULL) >> 1) + 1)
    abort();
  if (f2ull((float)~((~0ULL) >> 1)) != ~((~0ULL) >> 1))
    abort();
  if (d2ull(0.0) != 0LL)
    abort();
  if (d2ull(0.999) != 0LL)
    abort();
  if (d2ull(1.0) != 1LL)
    abort();
  if (d2ull(1.99) != 1LL)
    abort();
  if (d2ull((double)((~0ULL) >> 1)) != (~0ULL) >> 1 &&
      d2ull((double)((~0ULL) >> 1)) != ((~0ULL) >> 1) + 1)
    abort();
  if (d2ull((double)~((~0ULL) >> 1)) != ~((~0ULL) >> 1))
    abort();
  if (ld2ull(0.0) != 0LL)
    abort();
  if (ld2ull(0.999) != 0LL)
    abort();
  if (ld2ull(1.0) != 1LL)
    abort();
  if (ld2ull(1.99) != 1LL)
    abort();
  if (ld2ull((long double)((~0ULL) >> 1)) != (~0ULL) >> 1 &&
      ld2ull((long double)((~0ULL) >> 1)) != ((~0ULL) >> 1) + 1)
    abort();
  if (ld2ull((long double)~((~0ULL) >> 1)) != ~((~0ULL) >> 1))
    abort();
  if (f2sll(0.0) != 0LL)
    abort();
  if (f2sll(0.999) != 0LL)
    abort();
  if (f2sll(1.0) != 1LL)
    abort();
  if (f2sll(1.99) != 1LL)
    abort();
  if (f2sll(-0.999) != 0LL)
    abort();
  if (f2sll(-1.0) != -1LL)
    abort();
  if (f2sll(-1.99) != -1LL)
    abort();
  if (f2sll((float)(long long int)~((~0ULL) >> 1)) !=
      (long long int)~((~0ULL) >> 1))
    abort();
  if (d2sll(0.0) != 0LL)
    abort();
  if (d2sll(0.999) != 0LL)
    abort();
  if (d2sll(1.0) != 1LL)
    abort();
  if (d2sll(1.99) != 1LL)
    abort();
  if (d2sll(-0.999) != 0LL)
    abort();
  if (d2sll(-1.0) != -1LL)
    abort();
  if (d2sll(-1.99) != -1LL)
    abort();
  if (d2sll((double)(long long int)~((~0ULL) >> 1)) !=
      (long long int)~((~0ULL) >> 1))
    abort();
  if (ld2sll(0.0) != 0LL)
    abort();
  if (ld2sll(0.999) != 0LL)
    abort();
  if (ld2sll(1.0) != 1LL)
    abort();
  if (ld2sll(1.99) != 1LL)
    abort();
  if (ld2sll(-0.999) != 0LL)
    abort();
  if (ld2sll(-1.0) != -1LL)
    abort();
  if (ld2sll(-1.99) != -1LL)
    abort();
  if (ld2sll((long double)(long long int)~((~0ULL) >> 1)) !=
      (long long int)~((~0ULL) >> 1))
    abort();
}


x86 assembly (clang, -O0):
<test_float_to_longlong_integer>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
xorps  %xmm0,%xmm0
call   1090 <f2ull@plt>
cmp    $0x0,%rax
je     1191 <test_float_to_longlong_integer+0x21>
mov    $0x0,%al
call   1040 <abort@plt>
movss  0xe67(%rip),%xmm0
call   1090 <f2ull@plt>
cmp    $0x0,%rax
je     11af <test_float_to_longlong_integer+0x3f>
mov    $0x0,%al
call   1040 <abort@plt>
movss  0xe4d(%rip),%xmm0
call   1090 <f2ull@plt>
cmp    $0x1,%rax
je     11cd <test_float_to_longlong_integer+0x5d>
mov    $0x0,%al
call   1040 <abort@plt>
movss  0xe33(%rip),%xmm0
call   1090 <f2ull@plt>
cmp    $0x1,%rax
je     11eb <test_float_to_longlong_integer+0x7b>
mov    $0x0,%al
call   1040 <abort@plt>
movss  0xe19(%rip),%xmm0
call   1090 <f2ull@plt>
movabs $0x7fffffffffffffff,%rcx
ff ff 7f
cmp    %rcx,%rax
je     1232 <test_float_to_longlong_integer+0xc2>
movss  0xdf9(%rip),%xmm0
call   1090 <f2ull@plt>
movabs $0x8000000000000000,%rcx
cmp    %rcx,%rax
je     1232 <test_float_to_longlong_integer+0xc2>
mov    $0x0,%al
call   1040 <abort@plt>
movss  0xdd2(%rip),%xmm0
call   1090 <f2ull@plt>
movabs $0x8000000000000000,%rcx
cmp    %rcx,%rax
je     1259 <test_float_to_longlong_integer+0xe9>
mov    $0x0,%al
call   1040 <abort@plt>
xorps  %xmm0,%xmm0
call   1030 <d2ull@plt>
cmp    $0x0,%rax
je     1272 <test_float_to_longlong_integer+0x102>
mov    $0x0,%al
call   1040 <abort@plt>
movsd  0xda6(%rip),%xmm0
call   1030 <d2ull@plt>
cmp    $0x0,%rax
je     1290 <test_float_to_longlong_integer+0x120>
mov    $0x0,%al
call   1040 <abort@plt>
movsd  0xd90(%rip),%xmm0
call   1030 <d2ull@plt>
cmp    $0x1,%rax
je     12ae <test_float_to_longlong_integer+0x13e>
mov    $0x0,%al
call   1040 <abort@plt>
movsd  0xd7a(%rip),%xmm0
call   1030 <d2ull@plt>
cmp    $0x1,%rax
je     12cc <test_float_to_longlong_integer+0x15c>
mov    $0x0,%al
call   1040 <abort@plt>
movsd  0xd64(%rip),%xmm0
call   1030 <d2ull@plt>
movabs $0x7fffffffffffffff,%rcx
ff ff 7f
cmp    %rcx,%rax
je     1313 <test_float_to_longlong_integer+0x1a3>
movsd  0xd44(%rip),%xmm0
call   1030 <d2ull@plt>
movabs $0x8000000000000000,%rcx
cmp    %rcx,%rax
je     1313 <test_float_to_longlong_integer+0x1a3>
mov    $0x0,%al
call   1040 <abort@plt>
movsd  0xd1d(%rip),%xmm0
call   1030 <d2ull@plt>
movabs $0x8000000000000000,%rcx
cmp    %rcx,%rax
je     133a <test_float_to_longlong_integer+0x1ca>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
fldz
fstpt  (%rax)
call   1060 <ld2ull@plt>
cmp    $0x0,%rax
je     1357 <test_float_to_longlong_integer+0x1e7>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
fldl   0xcc0(%rip)
fstpt  (%rax)
call   1060 <ld2ull@plt>
cmp    $0x0,%rax
je     1378 <test_float_to_longlong_integer+0x208>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
fld1
fstpt  (%rax)
call   1060 <ld2ull@plt>
cmp    $0x1,%rax
je     1395 <test_float_to_longlong_integer+0x225>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
fldl   0xc92(%rip)
fstpt  (%rax)
call   1060 <ld2ull@plt>
cmp    $0x1,%rax
je     13b6 <test_float_to_longlong_integer+0x246>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
fldt   0xca1(%rip)
fstpt  (%rax)
call   1060 <ld2ull@plt>
movabs $0x7fffffffffffffff,%rcx
ff ff 7f
cmp    %rcx,%rax
je     1403 <test_float_to_longlong_integer+0x293>
mov    %rsp,%rax
fldt   0xc7e(%rip)
fstpt  (%rax)
call   1060 <ld2ull@plt>
movabs $0x8000000000000000,%rcx
cmp    %rcx,%rax
je     1403 <test_float_to_longlong_integer+0x293>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
flds   0xc00(%rip)
fstpt  (%rax)
call   1060 <ld2ull@plt>
movabs $0x8000000000000000,%rcx
cmp    %rcx,%rax
je     142d <test_float_to_longlong_integer+0x2bd>
mov    $0x0,%al
call   1040 <abort@plt>
xorps  %xmm0,%xmm0
call   1070 <f2sll@plt>
cmp    $0x0,%rax
je     1446 <test_float_to_longlong_integer+0x2d6>
mov    $0x0,%al
call   1040 <abort@plt>
movss  0xbb2(%rip),%xmm0
call   1070 <f2sll@plt>
cmp    $0x0,%rax
je     1464 <test_float_to_longlong_integer+0x2f4>
mov    $0x0,%al
call   1040 <abort@plt>
movss  0xb98(%rip),%xmm0
call   1070 <f2sll@plt>
cmp    $0x1,%rax
je     1482 <test_float_to_longlong_integer+0x312>
mov    $0x0,%al
call   1040 <abort@plt>
movss  0xb7e(%rip),%xmm0
call   1070 <f2sll@plt>
cmp    $0x1,%rax
je     14a0 <test_float_to_longlong_integer+0x330>
mov    $0x0,%al
call   1040 <abort@plt>
movss  0xb68(%rip),%xmm0
call   1070 <f2sll@plt>
cmp    $0x0,%rax
je     14be <test_float_to_longlong_integer+0x34e>
mov    $0x0,%al
call   1040 <abort@plt>
movss  0xb4e(%rip),%xmm0
call   1070 <f2sll@plt>
cmp    $0xffffffffffffffff,%rax
je     14dc <test_float_to_longlong_integer+0x36c>
mov    $0x0,%al
call   1040 <abort@plt>
movss  0xb34(%rip),%xmm0
call   1070 <f2sll@plt>
cmp    $0xffffffffffffffff,%rax
je     14fa <test_float_to_longlong_integer+0x38a>
mov    $0x0,%al
call   1040 <abort@plt>
movss  0xb1a(%rip),%xmm0
call   1070 <f2sll@plt>
movabs $0x8000000000000000,%rcx
cmp    %rcx,%rax
je     1521 <test_float_to_longlong_integer+0x3b1>
mov    $0x0,%al
call   1040 <abort@plt>
xorps  %xmm0,%xmm0
call   1080 <d2sll@plt>
cmp    $0x0,%rax
je     153a <test_float_to_longlong_integer+0x3ca>
mov    $0x0,%al
call   1040 <abort@plt>
movsd  0xade(%rip),%xmm0
call   1080 <d2sll@plt>
cmp    $0x0,%rax
je     1558 <test_float_to_longlong_integer+0x3e8>
mov    $0x0,%al
call   1040 <abort@plt>
movsd  0xac8(%rip),%xmm0
call   1080 <d2sll@plt>
cmp    $0x1,%rax
je     1576 <test_float_to_longlong_integer+0x406>
mov    $0x0,%al
call   1040 <abort@plt>
movsd  0xab2(%rip),%xmm0
call   1080 <d2sll@plt>
cmp    $0x1,%rax
je     1594 <test_float_to_longlong_integer+0x424>
mov    $0x0,%al
call   1040 <abort@plt>
movsd  0xaa4(%rip),%xmm0
call   1080 <d2sll@plt>
cmp    $0x0,%rax
je     15b2 <test_float_to_longlong_integer+0x442>
mov    $0x0,%al
call   1040 <abort@plt>
movsd  0xa8e(%rip),%xmm0
call   1080 <d2sll@plt>
cmp    $0xffffffffffffffff,%rax
je     15d0 <test_float_to_longlong_integer+0x460>
mov    $0x0,%al
call   1040 <abort@plt>
movsd  0xa78(%rip),%xmm0
call   1080 <d2sll@plt>
cmp    $0xffffffffffffffff,%rax
je     15ee <test_float_to_longlong_integer+0x47e>
mov    $0x0,%al
call   1040 <abort@plt>
movsd  0xa62(%rip),%xmm0
call   1080 <d2sll@plt>
movabs $0x8000000000000000,%rcx
cmp    %rcx,%rax
je     1615 <test_float_to_longlong_integer+0x4a5>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
fldz
fstpt  (%rax)
call   1050 <ld2sll@plt>
cmp    $0x0,%rax
je     1632 <test_float_to_longlong_integer+0x4c2>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
fldl   0x9e5(%rip)
fstpt  (%rax)
call   1050 <ld2sll@plt>
cmp    $0x0,%rax
je     1653 <test_float_to_longlong_integer+0x4e3>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
fld1
fstpt  (%rax)
call   1050 <ld2sll@plt>
cmp    $0x1,%rax
je     1670 <test_float_to_longlong_integer+0x500>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
fldl   0x9b7(%rip)
fstpt  (%rax)
call   1050 <ld2sll@plt>
cmp    $0x1,%rax
je     1691 <test_float_to_longlong_integer+0x521>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
fldl   0x9a6(%rip)
fstpt  (%rax)
call   1050 <ld2sll@plt>
cmp    $0x0,%rax
je     16b2 <test_float_to_longlong_integer+0x542>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
fld1
fchs
fstpt  (%rax)
call   1050 <ld2sll@plt>
cmp    $0xffffffffffffffff,%rax
je     16d1 <test_float_to_longlong_integer+0x561>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
fldl   0x976(%rip)
fstpt  (%rax)
call   1050 <ld2sll@plt>
cmp    $0xffffffffffffffff,%rax
je     16f2 <test_float_to_longlong_integer+0x582>
mov    $0x0,%al
call   1040 <abort@plt>
mov    %rsp,%rax
flds   0x921(%rip)
fstpt  (%rax)
call   1050 <ld2sll@plt>
movabs $0x8000000000000000,%rcx
cmp    %rcx,%rax
je     171c <test_float_to_longlong_integer+0x5ac>
mov    $0x0,%al
call   1040 <abort@plt>
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_float_to_longlong_integer>:
push   %r14
push   %rbx
sub    $0x58,%rsp
xorps  %xmm0,%xmm0
call   1090 <f2ull@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movss  0xe70(%rip),%xmm0
call   1090 <f2ull@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movss  0xe5e(%rip),%xmm0
call   1090 <f2ull@plt>
cmp    $0x1,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movss  0xe4b(%rip),%xmm0
call   1090 <f2ull@plt>
cmp    $0x1,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movabs $0x8000000000000000,%r14
movss  0xe2e(%rip),%xmm0
call   1090 <f2ull@plt>
lea    -0x1(%r14),%rbx
cmp    %rbx,%rax
je     1202 <test_float_to_longlong_integer+0x92>
movss  0xe18(%rip),%xmm0
call   1090 <f2ull@plt>
cmp    %r14,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movss  0xe02(%rip),%xmm0
call   1090 <f2ull@plt>
cmp    %r14,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
xorps  %xmm0,%xmm0
call   1030 <d2ull@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movsd  0xdef(%rip),%xmm0
call   1030 <d2ull@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movsd  0xde1(%rip),%xmm0
call   1030 <d2ull@plt>
cmp    $0x1,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movsd  0xdd2(%rip),%xmm0
call   1030 <d2ull@plt>
cmp    $0x1,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movsd  0xdc3(%rip),%xmm0
call   1030 <d2ull@plt>
cmp    %rbx,%rax
je     1295 <test_float_to_longlong_integer+0x125>
movsd  0xdb1(%rip),%xmm0
call   1030 <d2ull@plt>
cmp    %r14,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movsd  0xd9b(%rip),%xmm0
call   1030 <d2ull@plt>
cmp    %r14,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
fldz
fld    %st(0)
fstpt  0x4c(%rsp)
fstpt  (%rsp)
call   1060 <ld2ull@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
fldl   0xd56(%rip)
fld    %st(0)
fstpt  0x40(%rsp)
fstpt  (%rsp)
call   1060 <ld2ull@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
fld1
fld    %st(0)
fstpt  0x1c(%rsp)
fstpt  (%rsp)
call   1060 <ld2ull@plt>
cmp    $0x1,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
fldl   0xd2f(%rip)
fld    %st(0)
fstpt  0x34(%rsp)
fstpt  (%rsp)
call   1060 <ld2ull@plt>
cmp    $0x1,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
fldt   0xd41(%rip)
fld    %st(0)
fstpt  0x28(%rsp)
fstpt  (%rsp)
call   1060 <ld2ull@plt>
cmp    %rbx,%rax
je     1347 <test_float_to_longlong_integer+0x1d7>
fldt   0x28(%rsp)
fstpt  (%rsp)
call   1060 <ld2ull@plt>
cmp    %r14,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
flds   0xcbf(%rip)
fstpt  (%rsp)
call   1060 <ld2ull@plt>
cmp    %r14,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
xorps  %xmm0,%xmm0
call   1070 <f2sll@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movss  0xc89(%rip),%xmm0
call   1070 <f2sll@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movss  0xc77(%rip),%xmm0
call   1070 <f2sll@plt>
cmp    $0x1,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movss  0xc64(%rip),%xmm0
call   1070 <f2sll@plt>
cmp    $0x1,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movss  0xc55(%rip),%xmm0
call   1070 <f2sll@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movss  0xc43(%rip),%xmm0
call   1070 <f2sll@plt>
cmp    $0xffffffffffffffff,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movss  0xc30(%rip),%xmm0
call   1070 <f2sll@plt>
cmp    $0xffffffffffffffff,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movss  0xc1d(%rip),%xmm0
call   1070 <f2sll@plt>
cmp    %r14,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
xorps  %xmm0,%xmm0
call   1080 <d2sll@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movsd  0xbfa(%rip),%xmm0
call   1080 <d2sll@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movsd  0xbec(%rip),%xmm0
call   1080 <d2sll@plt>
cmp    $0x1,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movsd  0xbdd(%rip),%xmm0
call   1080 <d2sll@plt>
cmp    $0x1,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movsd  0xbd6(%rip),%xmm0
call   1080 <d2sll@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movsd  0xbc8(%rip),%xmm0
call   1080 <d2sll@plt>
cmp    $0xffffffffffffffff,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movsd  0xbb9(%rip),%xmm0
call   1080 <d2sll@plt>
cmp    $0xffffffffffffffff,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
movsd  0xbaa(%rip),%xmm0
call   1080 <d2sll@plt>
cmp    %r14,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
fldt   0x4c(%rsp)
fstpt  (%rsp)
call   1050 <ld2sll@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
fldt   0x40(%rsp)
fstpt  (%rsp)
call   1050 <ld2sll@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
fldt   0x1c(%rsp)
fstpt  (%rsp)
call   1050 <ld2sll@plt>
cmp    $0x1,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
fldt   0x34(%rsp)
fstpt  (%rsp)
call   1050 <ld2sll@plt>
cmp    $0x1,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
fldl   0xb34(%rip)
fstpt  (%rsp)
call   1050 <ld2sll@plt>
test   %rax,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
fldt   0x1c(%rsp)
fchs
fstpt  (%rsp)
call   1050 <ld2sll@plt>
cmp    $0xffffffffffffffff,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
fldl   0xb1d(%rip)
fstpt  (%rsp)
call   1050 <ld2sll@plt>
cmp    $0xffffffffffffffff,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
flds   0xad5(%rip)
fstpt  (%rsp)
call   1050 <ld2sll@plt>
cmp    %r14,%rax
jne    155c <test_float_to_longlong_integer+0x3ec>
add    $0x58,%rsp
pop    %rbx
pop    %r14
ret
xor    %eax,%eax
call   1040 <abort@plt>

LLVM IR (-O0):
define i32 @test_float_to_longlong_integer() {
%1 = alloca i32
%2 = call i64 @f2ull(float 0.000000e+00)
%3 = icmp ne i64 %2, 0
br i1 %3, label %4, label %6
4: ; preds = %0
%5 = call i32 (...) @abort()
unreachable
6: ; preds = %0
%7 = call i64 @f2ull(float 0x3FEFF7CEE0000000)
%8 = icmp ne i64 %7, 0
br i1 %8, label %9, label %11
9: ; preds = %6
%10 = call i32 (...) @abort()
unreachable
11: ; preds = %6
%12 = call i64 @f2ull(float 1.000000e+00)
%13 = icmp ne i64 %12, 1
br i1 %13, label %14, label %16
14: ; preds = %11
%15 = call i32 (...) @abort()
unreachable
16: ; preds = %11
%17 = call i64 @f2ull(float 0x3FFFD70A40000000)
%18 = icmp ne i64 %17, 1
br i1 %18, label %19, label %21
19: ; preds = %16
%20 = call i32 (...) @abort()
unreachable
21: ; preds = %16
%22 = call i64 @f2ull(float 0x43E0000000000000)
%23 = icmp ne i64 %22, 9223372036854775807
br i1 %23, label %24, label %29
24: ; preds = %21
%25 = call i64 @f2ull(float 0x43E0000000000000)
%26 = icmp ne i64 %25, -9223372036854775808
br i1 %26, label %27, label %29
27: ; preds = %24
%28 = call i32 (...) @abort()
unreachable
29: ; preds = %24, %21
%30 = call i64 @f2ull(float 0x43E0000000000000)
%31 = icmp ne i64 %30, -9223372036854775808
br i1 %31, label %32, label %34
32: ; preds = %29
%33 = call i32 (...) @abort()
unreachable
34: ; preds = %29
%35 = call i64 @d2ull(double 0.000000e+00)
%36 = icmp ne i64 %35, 0
br i1 %36, label %37, label %39
37: ; preds = %34
%38 = call i32 (...) @abort()
unreachable
39: ; preds = %34
%40 = call i64 @d2ull(double 0x3FEFF7CED916872B)
%41 = icmp ne i64 %40, 0
br i1 %41, label %42, label %44
42: ; preds = %39
%43 = call i32 (...) @abort()
unreachable
44: ; preds = %39
%45 = call i64 @d2ull(double 1.000000e+00)
%46 = icmp ne i64 %45, 1
br i1 %46, label %47, label %49
47: ; preds = %44
%48 = call i32 (...) @abort()
unreachable
49: ; preds = %44
%50 = call i64 @d2ull(double 1.990000e+00)
%51 = icmp ne i64 %50, 1
br i1 %51, label %52, label %54
52: ; preds = %49
%53 = call i32 (...) @abort()
unreachable
54: ; preds = %49
%55 = call i64 @d2ull(double 0x43E0000000000000)
%56 = icmp ne i64 %55, 9223372036854775807
br i1 %56, label %57, label %62
57: ; preds = %54
%58 = call i64 @d2ull(double 0x43E0000000000000)
%59 = icmp ne i64 %58, -9223372036854775808
br i1 %59, label %60, label %62
60: ; preds = %57
%61 = call i32 (...) @abort()
unreachable
62: ; preds = %57, %54
%63 = call i64 @d2ull(double 0x43E0000000000000)
%64 = icmp ne i64 %63, -9223372036854775808
br i1 %64, label %65, label %67
65: ; preds = %62
%66 = call i32 (...) @abort()
unreachable
67: ; preds = %62
%68 = call i64 @ld2ull(x86_fp80 0xK00000000000000000000)
%69 = icmp ne i64 %68, 0
br i1 %69, label %70, label %72
70: ; preds = %67
%71 = call i32 (...) @abort()
unreachable
72: ; preds = %67
%73 = call i64 @ld2ull(x86_fp80 0xK3FFEFFBE76C8B4395800)
%74 = icmp ne i64 %73, 0
br i1 %74, label %75, label %77
75: ; preds = %72
%76 = call i32 (...) @abort()
unreachable
77: ; preds = %72
%78 = call i64 @ld2ull(x86_fp80 0xK3FFF8000000000000000)
%79 = icmp ne i64 %78, 1
br i1 %79, label %80, label %82
80: ; preds = %77
%81 = call i32 (...) @abort()
unreachable
82: ; preds = %77
%83 = call i64 @ld2ull(x86_fp80 0xK3FFFFEB851EB851EB800)
%84 = icmp ne i64 %83, 1
br i1 %84, label %85, label %87
85: ; preds = %82
%86 = call i32 (...) @abort()
unreachable
87: ; preds = %82
%88 = call i64 @ld2ull(x86_fp80 0xK403DFFFFFFFFFFFFFFFE)
%89 = icmp ne i64 %88, 9223372036854775807
br i1 %89, label %90, label %95
90: ; preds = %87
%91 = call i64 @ld2ull(x86_fp80 0xK403DFFFFFFFFFFFFFFFE)
%92 = icmp ne i64 %91, -9223372036854775808
br i1 %92, label %93, label %95
93: ; preds = %90
%94 = call i32 (...) @abort()
unreachable
95: ; preds = %90, %87
%96 = call i64 @ld2ull(x86_fp80 0xK403E8000000000000000)
%97 = icmp ne i64 %96, -9223372036854775808
br i1 %97, label %98, label %100
98: ; preds = %95
%99 = call i32 (...) @abort()
unreachable
100: ; preds = %95
%101 = call i64 @f2sll(float 0.000000e+00)
%102 = icmp ne i64 %101, 0
br i1 %102, label %103, label %105
103: ; preds = %100
%104 = call i32 (...) @abort()
unreachable
105: ; preds = %100
%106 = call i64 @f2sll(float 0x3FEFF7CEE0000000)
%107 = icmp ne i64 %106, 0
br i1 %107, label %108, label %110
108: ; preds = %105
%109 = call i32 (...) @abort()
unreachable
110: ; preds = %105
%111 = call i64 @f2sll(float 1.000000e+00)
%112 = icmp ne i64 %111, 1
br i1 %112, label %113, label %115
113: ; preds = %110
%114 = call i32 (...) @abort()
unreachable
115: ; preds = %110
%116 = call i64 @f2sll(float 0x3FFFD70A40000000)
%117 = icmp ne i64 %116, 1
br i1 %117, label %118, label %120
118: ; preds = %115
%119 = call i32 (...) @abort()
unreachable
120: ; preds = %115
%121 = call i64 @f2sll(float 0xBFEFF7CEE0000000)
%122 = icmp ne i64 %121, 0
br i1 %122, label %123, label %125
123: ; preds = %120
%124 = call i32 (...) @abort()
unreachable
125: ; preds = %120
%126 = call i64 @f2sll(float -1.000000e+00)
%127 = icmp ne i64 %126, -1
br i1 %127, label %128, label %130
128: ; preds = %125
%129 = call i32 (...) @abort()
unreachable
130: ; preds = %125
%131 = call i64 @f2sll(float 0xBFFFD70A40000000)
%132 = icmp ne i64 %131, -1
br i1 %132, label %133, label %135
133: ; preds = %130
%134 = call i32 (...) @abort()
unreachable
135: ; preds = %130
%136 = call i64 @f2sll(float 0xC3E0000000000000)
%137 = icmp ne i64 %136, -9223372036854775808
br i1 %137, label %138, label %140
138: ; preds = %135
%139 = call i32 (...) @abort()
unreachable
140: ; preds = %135
%141 = call i64 @d2sll(double 0.000000e+00)
%142 = icmp ne i64 %141, 0
br i1 %142, label %143, label %145
143: ; preds = %140
%144 = call i32 (...) @abort()
unreachable
145: ; preds = %140
%146 = call i64 @d2sll(double 0x3FEFF7CED916872B)
%147 = icmp ne i64 %146, 0
br i1 %147, label %148, label %150
148: ; preds = %145
%149 = call i32 (...) @abort()
unreachable
150: ; preds = %145
%151 = call i64 @d2sll(double 1.000000e+00)
%152 = icmp ne i64 %151, 1
br i1 %152, label %153, label %155
153: ; preds = %150
%154 = call i32 (...) @abort()
unreachable
155: ; preds = %150
%156 = call i64 @d2sll(double 1.990000e+00)
%157 = icmp ne i64 %156, 1
br i1 %157, label %158, label %160
158: ; preds = %155
%159 = call i32 (...) @abort()
unreachable
160: ; preds = %155
%161 = call i64 @d2sll(double 0xBFEFF7CED916872B)
%162 = icmp ne i64 %161, 0
br i1 %162, label %163, label %165
163: ; preds = %160
%164 = call i32 (...) @abort()
unreachable
165: ; preds = %160
%166 = call i64 @d2sll(double -1.000000e+00)
%167 = icmp ne i64 %166, -1
br i1 %167, label %168, label %170
168: ; preds = %165
%169 = call i32 (...) @abort()
unreachable
170: ; preds = %165
%171 = call i64 @d2sll(double -1.990000e+00)
%172 = icmp ne i64 %171, -1
br i1 %172, label %173, label %175
173: ; preds = %170
%174 = call i32 (...) @abort()
unreachable
175: ; preds = %170
%176 = call i64 @d2sll(double 0xC3E0000000000000)
%177 = icmp ne i64 %176, -9223372036854775808
br i1 %177, label %178, label %180
178: ; preds = %175
%179 = call i32 (...) @abort()
unreachable
180: ; preds = %175
%181 = call i64 @ld2sll(x86_fp80 0xK00000000000000000000)
%182 = icmp ne i64 %181, 0
br i1 %182, label %183, label %185
183: ; preds = %180
%184 = call i32 (...) @abort()
unreachable
185: ; preds = %180
%186 = call i64 @ld2sll(x86_fp80 0xK3FFEFFBE76C8B4395800)
%187 = icmp ne i64 %186, 0
br i1 %187, label %188, label %190
188: ; preds = %185
%189 = call i32 (...) @abort()
unreachable
190: ; preds = %185
%191 = call i64 @ld2sll(x86_fp80 0xK3FFF8000000000000000)
%192 = icmp ne i64 %191, 1
br i1 %192, label %193, label %195
193: ; preds = %190
%194 = call i32 (...) @abort()
unreachable
195: ; preds = %190
%196 = call i64 @ld2sll(x86_fp80 0xK3FFFFEB851EB851EB800)
%197 = icmp ne i64 %196, 1
br i1 %197, label %198, label %200
198: ; preds = %195
%199 = call i32 (...) @abort()
unreachable
200: ; preds = %195
%201 = call i64 @ld2sll(x86_fp80 0xKBFFEFFBE76C8B4395800)
%202 = icmp ne i64 %201, 0
br i1 %202, label %203, label %205
203: ; preds = %200
%204 = call i32 (...) @abort()
unreachable
205: ; preds = %200
%206 = call i64 @ld2sll(x86_fp80 0xKBFFF8000000000000000)
%207 = icmp ne i64 %206, -1
br i1 %207, label %208, label %210
208: ; preds = %205
%209 = call i32 (...) @abort()
unreachable
210: ; preds = %205
%211 = call i64 @ld2sll(x86_fp80 0xKBFFFFEB851EB851EB800)
%212 = icmp ne i64 %211, -1
br i1 %212, label %213, label %215
213: ; preds = %210
%214 = call i32 (...) @abort()
unreachable
215: ; preds = %210
%216 = call i64 @ld2sll(x86_fp80 0xKC03E8000000000000000)
%217 = icmp ne i64 %216, -9223372036854775808
br i1 %217, label %218, label %220
218: ; preds = %215
%219 = call i32 (...) @abort()
unreachable
220: ; preds = %215
%221 = load i32, i32* %1
ret i32 %221
}

LLVM IR (-O2):
define i32 @test_float_to_longlong_integer() {
%1 = tail call i64 @f2ull(float 0.000000e+00)
%2 = icmp eq i64 %1, 0
br i1 %2, label %5, label %3
3: ; preds = %0
%4 = tail call i32 (...) @abort()
unreachable
5: ; preds = %0
%6 = tail call i64 @f2ull(float 0x3FEFF7CEE0000000)
%7 = icmp eq i64 %6, 0
br i1 %7, label %10, label %8
8: ; preds = %5
%9 = tail call i32 (...) @abort()
unreachable
10: ; preds = %5
%11 = tail call i64 @f2ull(float 1.000000e+00)
%12 = icmp eq i64 %11, 1
br i1 %12, label %15, label %13
13: ; preds = %10
%14 = tail call i32 (...) @abort()
unreachable
15: ; preds = %10
%16 = tail call i64 @f2ull(float 0x3FFFD70A40000000)
%17 = icmp eq i64 %16, 1
br i1 %17, label %20, label %18
18: ; preds = %15
%19 = tail call i32 (...) @abort()
unreachable
20: ; preds = %15
%21 = tail call i64 @f2ull(float 0x43E0000000000000)
%22 = icmp eq i64 %21, 9223372036854775807
br i1 %22, label %28, label %23
23: ; preds = %20
%24 = tail call i64 @f2ull(float 0x43E0000000000000)
%25 = icmp eq i64 %24, -9223372036854775808
br i1 %25, label %28, label %26
26: ; preds = %23
%27 = tail call i32 (...) @abort()
unreachable
28: ; preds = %23, %20
%29 = tail call i64 @f2ull(float 0x43E0000000000000)
%30 = icmp eq i64 %29, -9223372036854775808
br i1 %30, label %33, label %31
31: ; preds = %28
%32 = tail call i32 (...) @abort()
unreachable
33: ; preds = %28
%34 = tail call i64 @d2ull(double 0.000000e+00)
%35 = icmp eq i64 %34, 0
br i1 %35, label %38, label %36
36: ; preds = %33
%37 = tail call i32 (...) @abort()
unreachable
38: ; preds = %33
%39 = tail call i64 @d2ull(double 0x3FEFF7CED916872B)
%40 = icmp eq i64 %39, 0
br i1 %40, label %43, label %41
41: ; preds = %38
%42 = tail call i32 (...) @abort()
unreachable
43: ; preds = %38
%44 = tail call i64 @d2ull(double 1.000000e+00)
%45 = icmp eq i64 %44, 1
br i1 %45, label %48, label %46
46: ; preds = %43
%47 = tail call i32 (...) @abort()
unreachable
48: ; preds = %43
%49 = tail call i64 @d2ull(double 1.990000e+00)
%50 = icmp eq i64 %49, 1
br i1 %50, label %53, label %51
51: ; preds = %48
%52 = tail call i32 (...) @abort()
unreachable
53: ; preds = %48
%54 = tail call i64 @d2ull(double 0x43E0000000000000)
%55 = icmp eq i64 %54, 9223372036854775807
br i1 %55, label %61, label %56
56: ; preds = %53
%57 = tail call i64 @d2ull(double 0x43E0000000000000)
%58 = icmp eq i64 %57, -9223372036854775808
br i1 %58, label %61, label %59
59: ; preds = %56
%60 = tail call i32 (...) @abort()
unreachable
61: ; preds = %56, %53
%62 = tail call i64 @d2ull(double 0x43E0000000000000)
%63 = icmp eq i64 %62, -9223372036854775808
br i1 %63, label %66, label %64
64: ; preds = %61
%65 = tail call i32 (...) @abort()
unreachable
66: ; preds = %61
%67 = tail call i64 @ld2ull(x86_fp80 0xK00000000000000000000)
%68 = icmp eq i64 %67, 0
br i1 %68, label %71, label %69
69: ; preds = %66
%70 = tail call i32 (...) @abort()
unreachable
71: ; preds = %66
%72 = tail call i64 @ld2ull(x86_fp80 0xK3FFEFFBE76C8B4395800)
%73 = icmp eq i64 %72, 0
br i1 %73, label %76, label %74
74: ; preds = %71
%75 = tail call i32 (...) @abort()
unreachable
76: ; preds = %71
%77 = tail call i64 @ld2ull(x86_fp80 0xK3FFF8000000000000000)
%78 = icmp eq i64 %77, 1
br i1 %78, label %81, label %79
79: ; preds = %76
%80 = tail call i32 (...) @abort()
unreachable
81: ; preds = %76
%82 = tail call i64 @ld2ull(x86_fp80 0xK3FFFFEB851EB851EB800)
%83 = icmp eq i64 %82, 1
br i1 %83, label %86, label %84
84: ; preds = %81
%85 = tail call i32 (...) @abort()
unreachable
86: ; preds = %81
%87 = tail call i64 @ld2ull(x86_fp80 0xK403DFFFFFFFFFFFFFFFE)
%88 = icmp eq i64 %87, 9223372036854775807
br i1 %88, label %94, label %89
89: ; preds = %86
%90 = tail call i64 @ld2ull(x86_fp80 0xK403DFFFFFFFFFFFFFFFE)
%91 = icmp eq i64 %90, -9223372036854775808
br i1 %91, label %94, label %92
92: ; preds = %89
%93 = tail call i32 (...) @abort()
unreachable
94: ; preds = %89, %86
%95 = tail call i64 @ld2ull(x86_fp80 0xK403E8000000000000000)
%96 = icmp eq i64 %95, -9223372036854775808
br i1 %96, label %99, label %97
97: ; preds = %94
%98 = tail call i32 (...) @abort()
unreachable
99: ; preds = %94
%100 = tail call i64 @f2sll(float 0.000000e+00)
%101 = icmp eq i64 %100, 0
br i1 %101, label %104, label %102
102: ; preds = %99
%103 = tail call i32 (...) @abort()
unreachable
104: ; preds = %99
%105 = tail call i64 @f2sll(float 0x3FEFF7CEE0000000)
%106 = icmp eq i64 %105, 0
br i1 %106, label %109, label %107
107: ; preds = %104
%108 = tail call i32 (...) @abort()
unreachable
109: ; preds = %104
%110 = tail call i64 @f2sll(float 1.000000e+00)
%111 = icmp eq i64 %110, 1
br i1 %111, label %114, label %112
112: ; preds = %109
%113 = tail call i32 (...) @abort()
unreachable
114: ; preds = %109
%115 = tail call i64 @f2sll(float 0x3FFFD70A40000000)
%116 = icmp eq i64 %115, 1
br i1 %116, label %119, label %117
117: ; preds = %114
%118 = tail call i32 (...) @abort()
unreachable
119: ; preds = %114
%120 = tail call i64 @f2sll(float 0xBFEFF7CEE0000000)
%121 = icmp eq i64 %120, 0
br i1 %121, label %124, label %122
122: ; preds = %119
%123 = tail call i32 (...) @abort()
unreachable
124: ; preds = %119
%125 = tail call i64 @f2sll(float -1.000000e+00)
%126 = icmp eq i64 %125, -1
br i1 %126, label %129, label %127
127: ; preds = %124
%128 = tail call i32 (...) @abort()
unreachable
129: ; preds = %124
%130 = tail call i64 @f2sll(float 0xBFFFD70A40000000)
%131 = icmp eq i64 %130, -1
br i1 %131, label %134, label %132
132: ; preds = %129
%133 = tail call i32 (...) @abort()
unreachable
134: ; preds = %129
%135 = tail call i64 @f2sll(float 0xC3E0000000000000)
%136 = icmp eq i64 %135, -9223372036854775808
br i1 %136, label %139, label %137
137: ; preds = %134
%138 = tail call i32 (...) @abort()
unreachable
139: ; preds = %134
%140 = tail call i64 @d2sll(double 0.000000e+00)
%141 = icmp eq i64 %140, 0
br i1 %141, label %144, label %142
142: ; preds = %139
%143 = tail call i32 (...) @abort()
unreachable
144: ; preds = %139
%145 = tail call i64 @d2sll(double 0x3FEFF7CED916872B)
%146 = icmp eq i64 %145, 0
br i1 %146, label %149, label %147
147: ; preds = %144
%148 = tail call i32 (...) @abort()
unreachable
149: ; preds = %144
%150 = tail call i64 @d2sll(double 1.000000e+00)
%151 = icmp eq i64 %150, 1
br i1 %151, label %154, label %152
152: ; preds = %149
%153 = tail call i32 (...) @abort()
unreachable
154: ; preds = %149
%155 = tail call i64 @d2sll(double 1.990000e+00)
%156 = icmp eq i64 %155, 1
br i1 %156, label %159, label %157
157: ; preds = %154
%158 = tail call i32 (...) @abort()
unreachable
159: ; preds = %154
%160 = tail call i64 @d2sll(double 0xBFEFF7CED916872B)
%161 = icmp eq i64 %160, 0
br i1 %161, label %164, label %162
162: ; preds = %159
%163 = tail call i32 (...) @abort()
unreachable
164: ; preds = %159
%165 = tail call i64 @d2sll(double -1.000000e+00)
%166 = icmp eq i64 %165, -1
br i1 %166, label %169, label %167
167: ; preds = %164
%168 = tail call i32 (...) @abort()
unreachable
169: ; preds = %164
%170 = tail call i64 @d2sll(double -1.990000e+00)
%171 = icmp eq i64 %170, -1
br i1 %171, label %174, label %172
172: ; preds = %169
%173 = tail call i32 (...) @abort()
unreachable
174: ; preds = %169
%175 = tail call i64 @d2sll(double 0xC3E0000000000000)
%176 = icmp eq i64 %175, -9223372036854775808
br i1 %176, label %179, label %177
177: ; preds = %174
%178 = tail call i32 (...) @abort()
unreachable
179: ; preds = %174
%180 = tail call i64 @ld2sll(x86_fp80 0xK00000000000000000000)
%181 = icmp eq i64 %180, 0
br i1 %181, label %184, label %182
182: ; preds = %179
%183 = tail call i32 (...) @abort()
unreachable
184: ; preds = %179
%185 = tail call i64 @ld2sll(x86_fp80 0xK3FFEFFBE76C8B4395800)
%186 = icmp eq i64 %185, 0
br i1 %186, label %189, label %187
187: ; preds = %184
%188 = tail call i32 (...) @abort()
unreachable
189: ; preds = %184
%190 = tail call i64 @ld2sll(x86_fp80 0xK3FFF8000000000000000)
%191 = icmp eq i64 %190, 1
br i1 %191, label %194, label %192
192: ; preds = %189
%193 = tail call i32 (...) @abort()
unreachable
194: ; preds = %189
%195 = tail call i64 @ld2sll(x86_fp80 0xK3FFFFEB851EB851EB800)
%196 = icmp eq i64 %195, 1
br i1 %196, label %199, label %197
197: ; preds = %194
%198 = tail call i32 (...) @abort()
unreachable
199: ; preds = %194
%200 = tail call i64 @ld2sll(x86_fp80 0xKBFFEFFBE76C8B4395800)
%201 = icmp eq i64 %200, 0
br i1 %201, label %204, label %202
202: ; preds = %199
%203 = tail call i32 (...) @abort()
unreachable
204: ; preds = %199
%205 = tail call i64 @ld2sll(x86_fp80 0xKBFFF8000000000000000)
%206 = icmp eq i64 %205, -1
br i1 %206, label %209, label %207
207: ; preds = %204
%208 = tail call i32 (...) @abort()
unreachable
209: ; preds = %204
%210 = tail call i64 @ld2sll(x86_fp80 0xKBFFFFEB851EB851EB800)
%211 = icmp eq i64 %210, -1
br i1 %211, label %214, label %212
212: ; preds = %209
%213 = tail call i32 (...) @abort()
unreachable
214: ; preds = %209
%215 = tail call i64 @ld2sll(x86_fp80 0xKC03E8000000000000000)
%216 = icmp eq i64 %215, -9223372036854775808
br i1 %216, label %219, label %217
217: ; preds = %214
%218 = tail call i32 (...) @abort()
unreachable
219: ; preds = %214
ret i32 undef
}