int main() {
  if (test__extendhfsf2(UINT16_C(0x7e00), makeQNaN32()))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x7e00), makeNaN32(UINT32_C(0x8000))))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x7c00), makeInf32()))
    return 1;
  if (test__extendhfsf2(UINT16_C(0xfc00), -makeInf32()))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x0), 0.0f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x8000), -0.0f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x4248), 3.1415926535f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0xc248), -3.1415926535f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x7c00), 0x1.987124876876324p+100f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x6e62), 0x1.988p+12f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x3c00), 0x1.0p+0f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x0400), 0x1.0p-14f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x0010), 0x1.0p-20f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x0001), 0x1.0p-24f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x8001), -0x1.0p-24f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x0001), 0x1.5p-25f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x0000), 0x1.0p-25f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x8000), -0x1.0p-25f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x7bff), 65504.0f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x7bff), 65504.0f))
    return 1;
  if (test__extendhfsf2(UINT16_C(0x7c00), makeInf32()))
    return 1;
  if (test__extendhfsf2(UINT16_C(0xfc00), -makeInf32()))
    return 1;
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x7e00,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,-0x8(%rbp)
mov    $0x0,%al
call   1030 <makeQNaN32@plt>
mov    -0x8(%rbp),%edi
mov    %eax,%esi
mov    $0x0,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     11a6 <main+0x46>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x7e00,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,-0xc(%rbp)
mov    $0x8000,%edi
mov    $0x0,%al
call   1070 <UINT32_C@plt>
mov    %eax,%edi
mov    $0x0,%al
call   1050 <makeNaN32@plt>
mov    -0xc(%rbp),%edi
mov    %eax,%esi
mov    $0x0,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     11eb <main+0x8b>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x7c00,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,-0x10(%rbp)
mov    $0x0,%al
call   1060 <makeInf32@plt>
mov    -0x10(%rbp),%edi
mov    %eax,%esi
mov    $0x0,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     1222 <main+0xc2>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0xfc00,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,-0x14(%rbp)
mov    $0x0,%al
call   1060 <makeInf32@plt>
mov    -0x14(%rbp),%edi
xor    %esi,%esi
sub    %eax,%esi
mov    $0x0,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     125b <main+0xfb>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
xor    %edi,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
xorps  %xmm0,%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     1285 <main+0x125>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x8000,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xd65(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     12b7 <main+0x157>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x4248,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xd3b(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     12e9 <main+0x189>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0xc248,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xd11(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     131b <main+0x1bb>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x7c00,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xce7(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     134d <main+0x1ed>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x6e62,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xcbd(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     137f <main+0x21f>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x3c00,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xc93(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     13b1 <main+0x251>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x400,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xc69(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     13e3 <main+0x283>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x10,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xc3f(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     1415 <main+0x2b5>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x1,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xc15(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     1447 <main+0x2e7>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x8001,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xbeb(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     1479 <main+0x319>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x1,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xbc1(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     14ab <main+0x34b>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
xor    %edi,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xb9a(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     14da <main+0x37a>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x8000,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xb70(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     150c <main+0x3ac>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x7bff,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xb46(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     153e <main+0x3de>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x7bff,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,%edi
movsd  0xb14(%rip),%xmm0
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     1570 <main+0x410>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0x7c00,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,-0x18(%rbp)
mov    $0x0,%al
call   1060 <makeInf32@plt>
mov    -0x18(%rbp),%edi
mov    %eax,%esi
mov    $0x0,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     15a7 <main+0x447>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
mov    $0xfc00,%edi
mov    $0x0,%al
call   1080 <UINT16_C@plt>
mov    %eax,-0x1c(%rbp)
mov    $0x0,%al
call   1060 <makeInf32@plt>
mov    -0x1c(%rbp),%edi
xor    %esi,%esi
sub    %eax,%esi
mov    $0x0,%al
call   1040 <test__extendhfsf2@plt>
cmp    $0x0,%eax
je     15e0 <main+0x480>
movl   $0x1,-0x4(%rbp)
jmp    15e7 <main+0x487>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %rbx
push   %rax
mov    $0x7e00,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
mov    %eax,%ebx
xor    %eax,%eax
call   1030 <makeQNaN32@plt>
mov    %ebx,%edi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <test__extendhfsf2@plt>
mov    $0x1,%ebx
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x7e00,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
mov    %eax,%ebp
mov    $0x8000,%edi
xor    %eax,%eax
call   1070 <UINT32_C@plt>
mov    %eax,%edi
xor    %eax,%eax
call   1050 <makeNaN32@plt>
mov    %ebp,%edi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x7c00,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
mov    %eax,%ebp
xor    %eax,%eax
call   1060 <makeInf32@plt>
mov    %ebp,%edi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0xfc00,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
mov    %eax,%ebp
xor    %eax,%eax
call   1060 <makeInf32@plt>
neg    %eax
mov    %ebp,%edi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
xor    %edi,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
xorps  %xmm0,%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x8000,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xdb7(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x4248,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xd9a(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0xc248,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xd7d(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x7c00,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xd60(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x6e62,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xd43(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x3c00,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xd26(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x400,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xd09(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x10,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xcec(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x1,%ebx
mov    $0x1,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xcca(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x8001,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xcad(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x1,%ebx
mov    $0x1,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xc8b(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
xor    %edi,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xc71(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x8000,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xc54(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x7bff,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xc37(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x7bff,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
movsd  0xc16(%rip),%xmm0
mov    %eax,%edi
mov    $0x1,%al
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0x7c00,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
mov    %eax,%ebp
xor    %eax,%eax
call   1060 <makeInf32@plt>
mov    %ebp,%edi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <test__extendhfsf2@plt>
test   %eax,%eax
jne    14ac <main+0x34c>
mov    $0xfc00,%edi
xor    %eax,%eax
call   1080 <UINT16_C@plt>
mov    %eax,%ebx
xor    %eax,%eax
call   1060 <makeInf32@plt>
neg    %eax
mov    %ebx,%edi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <test__extendhfsf2@plt>
xor    %ebx,%ebx
test   %eax,%eax
setne  %bl
mov    %ebx,%eax
add    $0x8,%rsp
pop    %rbx
pop    %rbp
ret

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
store i32 0, i32* %1
%2 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 32256)
%3 = call i32 (...) @makeQNaN32()
%4 = call i32 (i32, i32, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, i32, ...)*)(i32 %2, i32 %3)
%5 = icmp ne i32 %4, 0
br i1 %5, label %6, label %7
6: ; preds = %0
store i32 1, i32* %1
br label %121
7: ; preds = %0
%8 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 32256)
%9 = call i32 (i32, ...) bitcast (i32 (...)* @UINT32_C to i32 (i32, ...)*)(i32 32768)
%10 = call i32 (i32, ...) bitcast (i32 (...)* @makeNaN32 to i32 (i32, ...)*)(i32 %9)
%11 = call i32 (i32, i32, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, i32, ...)*)(i32 %8, i32 %10)
%12 = icmp ne i32 %11, 0
br i1 %12, label %13, label %14
13: ; preds = %7
store i32 1, i32* %1
br label %121
14: ; preds = %7
%15 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 31744)
%16 = call i32 (...) @makeInf32()
%17 = call i32 (i32, i32, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, i32, ...)*)(i32 %15, i32 %16)
%18 = icmp ne i32 %17, 0
br i1 %18, label %19, label %20
19: ; preds = %14
store i32 1, i32* %1
br label %121
20: ; preds = %14
%21 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 64512)
%22 = call i32 (...) @makeInf32()
%23 = sub nsw i32 0, %22
%24 = call i32 (i32, i32, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, i32, ...)*)(i32 %21, i32 %23)
%25 = icmp ne i32 %24, 0
br i1 %25, label %26, label %27
26: ; preds = %20
store i32 1, i32* %1
br label %121
27: ; preds = %20
%28 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 0)
%29 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %28, double 0.000000e+00)
%30 = icmp ne i32 %29, 0
br i1 %30, label %31, label %32
31: ; preds = %27
store i32 1, i32* %1
br label %121
32: ; preds = %27
%33 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 32768)
%34 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %33, double -0.000000e+00)
%35 = icmp ne i32 %34, 0
br i1 %35, label %36, label %37
36: ; preds = %32
store i32 1, i32* %1
br label %121
37: ; preds = %32
%38 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 16968)
%39 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %38, double 0x400921FB60000000)
%40 = icmp ne i32 %39, 0
br i1 %40, label %41, label %42
41: ; preds = %37
store i32 1, i32* %1
br label %121
42: ; preds = %37
%43 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 49736)
%44 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %43, double 0xC00921FB60000000)
%45 = icmp ne i32 %44, 0
br i1 %45, label %46, label %47
46: ; preds = %42
store i32 1, i32* %1
br label %121
47: ; preds = %42
%48 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 31744)
%49 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %48, double 0x4639871240000000)
%50 = icmp ne i32 %49, 0
br i1 %50, label %51, label %52
51: ; preds = %47
store i32 1, i32* %1
br label %121
52: ; preds = %47
%53 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 28258)
%54 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %53, double 6.536000e+03)
%55 = icmp ne i32 %54, 0
br i1 %55, label %56, label %57
56: ; preds = %52
store i32 1, i32* %1
br label %121
57: ; preds = %52
%58 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 15360)
%59 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %58, double 1.000000e+00)
%60 = icmp ne i32 %59, 0
br i1 %60, label %61, label %62
61: ; preds = %57
store i32 1, i32* %1
br label %121
62: ; preds = %57
%63 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 1024)
%64 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %63, double 0x3F10000000000000)
%65 = icmp ne i32 %64, 0
br i1 %65, label %66, label %67
66: ; preds = %62
store i32 1, i32* %1
br label %121
67: ; preds = %62
%68 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 16)
%69 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %68, double 0x3EB0000000000000)
%70 = icmp ne i32 %69, 0
br i1 %70, label %71, label %72
71: ; preds = %67
store i32 1, i32* %1
br label %121
72: ; preds = %67
%73 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 1)
%74 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %73, double 0x3E70000000000000)
%75 = icmp ne i32 %74, 0
br i1 %75, label %76, label %77
76: ; preds = %72
store i32 1, i32* %1
br label %121
77: ; preds = %72
%78 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 32769)
%79 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %78, double 0xBE70000000000000)
%80 = icmp ne i32 %79, 0
br i1 %80, label %81, label %82
81: ; preds = %77
store i32 1, i32* %1
br label %121
82: ; preds = %77
%83 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 1)
%84 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %83, double 0x3E65000000000000)
%85 = icmp ne i32 %84, 0
br i1 %85, label %86, label %87
86: ; preds = %82
store i32 1, i32* %1
br label %121
87: ; preds = %82
%88 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 0)
%89 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %88, double 0x3E60000000000000)
%90 = icmp ne i32 %89, 0
br i1 %90, label %91, label %92
91: ; preds = %87
store i32 1, i32* %1
br label %121
92: ; preds = %87
%93 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 32768)
%94 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %93, double 0xBE60000000000000)
%95 = icmp ne i32 %94, 0
br i1 %95, label %96, label %97
96: ; preds = %92
store i32 1, i32* %1
br label %121
97: ; preds = %92
%98 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 31743)
%99 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %98, double 6.550400e+04)
%100 = icmp ne i32 %99, 0
br i1 %100, label %101, label %102
101: ; preds = %97
store i32 1, i32* %1
br label %121
102: ; preds = %97
%103 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 31743)
%104 = call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %103, double 6.550400e+04)
%105 = icmp ne i32 %104, 0
br i1 %105, label %106, label %107
106: ; preds = %102
store i32 1, i32* %1
br label %121
107: ; preds = %102
%108 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 31744)
%109 = call i32 (...) @makeInf32()
%110 = call i32 (i32, i32, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, i32, ...)*)(i32 %108, i32 %109)
%111 = icmp ne i32 %110, 0
br i1 %111, label %112, label %113
112: ; preds = %107
store i32 1, i32* %1
br label %121
113: ; preds = %107
%114 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 64512)
%115 = call i32 (...) @makeInf32()
%116 = sub nsw i32 0, %115
%117 = call i32 (i32, i32, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, i32, ...)*)(i32 %114, i32 %116)
%118 = icmp ne i32 %117, 0
br i1 %118, label %119, label %120
119: ; preds = %113
store i32 1, i32* %1
br label %121
120: ; preds = %113
store i32 0, i32* %1
br label %121
121: ; preds = %120, %119, %112, %106, %101, %96, %91, %86, %81, %76, %71, %66, %61, %56, %51, %46, %41, %36, %31, %26, %19, %13, %6
%122 = load i32, i32* %1
ret i32 %122
}

LLVM IR (-O2):
define i32 @main() {
%1 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 32256)
%2 = tail call i32 (...) @makeQNaN32()
%3 = tail call i32 (i32, i32, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, i32, ...)*)(i32 %1, i32 %2)
%4 = icmp eq i32 %3, 0
br i1 %4, label %5, label %98
5: ; preds = %0
%6 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 32256)
%7 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT32_C to i32 (i32, ...)*)(i32 32768)
%8 = tail call i32 (i32, ...) bitcast (i32 (...)* @makeNaN32 to i32 (i32, ...)*)(i32 %7)
%9 = tail call i32 (i32, i32, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, i32, ...)*)(i32 %6, i32 %8)
%10 = icmp eq i32 %9, 0
br i1 %10, label %11, label %98
11: ; preds = %5
%12 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 31744)
%13 = tail call i32 (...) @makeInf32()
%14 = tail call i32 (i32, i32, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, i32, ...)*)(i32 %12, i32 %13)
%15 = icmp eq i32 %14, 0
br i1 %15, label %16, label %98
16: ; preds = %11
%17 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 64512)
%18 = tail call i32 (...) @makeInf32()
%19 = sub nsw i32 0, %18
%20 = tail call i32 (i32, i32, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, i32, ...)*)(i32 %17, i32 %19)
%21 = icmp eq i32 %20, 0
br i1 %21, label %22, label %98
22: ; preds = %16
%23 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 0)
%24 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %23, double 0.000000e+00)
%25 = icmp eq i32 %24, 0
br i1 %25, label %26, label %98
26: ; preds = %22
%27 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 32768)
%28 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %27, double -0.000000e+00)
%29 = icmp eq i32 %28, 0
br i1 %29, label %30, label %98
30: ; preds = %26
%31 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 16968)
%32 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %31, double 0x400921FB60000000)
%33 = icmp eq i32 %32, 0
br i1 %33, label %34, label %98
34: ; preds = %30
%35 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 49736)
%36 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %35, double 0xC00921FB60000000)
%37 = icmp eq i32 %36, 0
br i1 %37, label %38, label %98
38: ; preds = %34
%39 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 31744)
%40 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %39, double 0x4639871240000000)
%41 = icmp eq i32 %40, 0
br i1 %41, label %42, label %98
42: ; preds = %38
%43 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 28258)
%44 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %43, double 6.536000e+03)
%45 = icmp eq i32 %44, 0
br i1 %45, label %46, label %98
46: ; preds = %42
%47 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 15360)
%48 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %47, double 1.000000e+00)
%49 = icmp eq i32 %48, 0
br i1 %49, label %50, label %98
50: ; preds = %46
%51 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 1024)
%52 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %51, double 0x3F10000000000000)
%53 = icmp eq i32 %52, 0
br i1 %53, label %54, label %98
54: ; preds = %50
%55 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 16)
%56 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %55, double 0x3EB0000000000000)
%57 = icmp eq i32 %56, 0
br i1 %57, label %58, label %98
58: ; preds = %54
%59 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 1)
%60 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %59, double 0x3E70000000000000)
%61 = icmp eq i32 %60, 0
br i1 %61, label %62, label %98
62: ; preds = %58
%63 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 32769)
%64 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %63, double 0xBE70000000000000)
%65 = icmp eq i32 %64, 0
br i1 %65, label %66, label %98
66: ; preds = %62
%67 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 1)
%68 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %67, double 0x3E65000000000000)
%69 = icmp eq i32 %68, 0
br i1 %69, label %70, label %98
70: ; preds = %66
%71 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 0)
%72 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %71, double 0x3E60000000000000)
%73 = icmp eq i32 %72, 0
br i1 %73, label %74, label %98
74: ; preds = %70
%75 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 32768)
%76 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %75, double 0xBE60000000000000)
%77 = icmp eq i32 %76, 0
br i1 %77, label %78, label %98
78: ; preds = %74
%79 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 31743)
%80 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %79, double 6.550400e+04)
%81 = icmp eq i32 %80, 0
br i1 %81, label %82, label %98
82: ; preds = %78
%83 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 31743)
%84 = tail call i32 (i32, double, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, double, ...)*)(i32 %83, double 6.550400e+04)
%85 = icmp eq i32 %84, 0
br i1 %85, label %86, label %98
86: ; preds = %82
%87 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 31744)
%88 = tail call i32 (...) @makeInf32()
%89 = tail call i32 (i32, i32, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, i32, ...)*)(i32 %87, i32 %88)
%90 = icmp eq i32 %89, 0
br i1 %90, label %91, label %98
91: ; preds = %86
%92 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 64512)
%93 = tail call i32 (...) @makeInf32()
%94 = sub nsw i32 0, %93
%95 = tail call i32 (i32, i32, ...) bitcast (i32 (...)* @test__extendhfsf2 to i32 (i32, i32, ...)*)(i32 %92, i32 %94)
%96 = icmp ne i32 %95, 0
%97 = zext i1 %96 to i32
br label %98
98: ; preds = %91, %86, %82, %78, %74, %70, %66, %62, %58, %54, %50, %46, %42, %38, %34, %30, %26, %22, %16, %11, %5, %0
%99 = phi i32 [ 1, %0 ], [ 1, %5 ], [ 1, %11 ], [ 1, %16 ], [ 1, %22 ], [ 1, %26 ], [ 1, %30 ], [ 1, %34 ], [ 1, %38 ], [ 1, %42 ], [ 1, %46 ], [ 1, %50 ], [ 1, %54 ], [ 1, %58 ], [ 1, %62 ], [ 1, %66 ], [ 1, %70 ], [ 1, %74 ], [ 1, %78 ], [ 1, %82 ], [ 1, %86 ], [ %97, %91 ]
ret i32 %99
}