int main() {
  volatile float fNan = __builtin_nanf("");
  if (__builtin_isnormal(fNan)) {
    return 1;
  }
  volatile float fInf = __builtin_inff();
  if (__builtin_isnormal(fInf)) {
    return 1;
  }
  volatile float fZero = 0.f;
  if (__builtin_isnormal(fZero)) {
    return 1;
  }
  volatile float fOne = 1.f;
  if (!__builtin_isnormal(fOne)) {
    return 1;
  }
  volatile double dNan = __builtin_nan("");
  if (__builtin_isnormal(dNan)) {
    return 1;
  }
  volatile double dInf = __builtin_inf();
  if (__builtin_isnormal(dInf)) {
    return 1;
  }
  volatile double dZero = 0.;
  if (__builtin_isnormal(dZero)) {
    return 1;
  }
  volatile double dOne = 1.;
  if (!__builtin_isnormal(dOne)) {
    return 1;
  }
  volatile double lNan = __builtin_nanl("");
  if (__builtin_isnormal(lNan)) {
    return 1;
  }
  volatile double lInf = __builtin_infl();
  if (__builtin_isnormal(lInf)) {
    return 1;
  }
  volatile double lZero = 0.;
  if (__builtin_isnormal(lZero)) {
    return 1;
  }
  volatile double lOne = 1.;
  if (!__builtin_isnormal(lOne)) {
    return 1;
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
movl   $0x0,-0x4(%rbp)
movss  0xef5(%rip),%xmm0
movss  %xmm0,-0x8(%rbp)
movss  -0x8(%rbp),%xmm1
ucomiss %xmm1,%xmm1
setnp  %al
movaps 0xee6(%rip),%xmm0
pand   %xmm0,%xmm1
movss  0xece(%rip),%xmm0
ucomiss %xmm0,%xmm1
setb   %dl
movss  0xebc(%rip),%xmm0
ucomiss %xmm1,%xmm0
setbe  %cl
and    %dl,%al
and    %cl,%al
test   $0x1,%al
jne    115b <main+0x5b>
jmp    1167 <main+0x67>
movl   $0x1,-0x4(%rbp)
jmp    155c <main+0x45c>
movss  0xe95(%rip),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0xc(%rbp),%xmm1
ucomiss %xmm1,%xmm1
setnp  %al
movaps 0xe8a(%rip),%xmm0
pand   %xmm0,%xmm1
movss  0xe72(%rip),%xmm0
ucomiss %xmm0,%xmm1
setb   %dl
movss  0xe60(%rip),%xmm0
ucomiss %xmm1,%xmm0
setbe  %cl
and    %dl,%al
and    %cl,%al
test   $0x1,%al
jne    11b7 <main+0xb7>
jmp    11c3 <main+0xc3>
movl   $0x1,-0x4(%rbp)
jmp    155c <main+0x45c>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x10(%rbp)
movss  -0x10(%rbp),%xmm1
ucomiss %xmm1,%xmm1
setnp  %al
movaps 0xe33(%rip),%xmm0
pand   %xmm0,%xmm1
movss  0xe1b(%rip),%xmm0
ucomiss %xmm0,%xmm1
setb   %dl
movss  0xe09(%rip),%xmm0
ucomiss %xmm1,%xmm0
setbe  %cl
and    %dl,%al
and    %cl,%al
test   $0x1,%al
jne    120e <main+0x10e>
jmp    121a <main+0x11a>
movl   $0x1,-0x4(%rbp)
jmp    155c <main+0x45c>
movss  0xdea(%rip),%xmm0
movss  %xmm0,-0x14(%rbp)
movss  -0x14(%rbp),%xmm1
ucomiss %xmm1,%xmm1
setnp  %al
movaps 0xdd7(%rip),%xmm0
pand   %xmm0,%xmm1
movss  0xdbf(%rip),%xmm0
ucomiss %xmm0,%xmm1
setb   %dl
movss  0xdad(%rip),%xmm0
ucomiss %xmm1,%xmm0
setbe  %cl
and    %dl,%al
and    %cl,%al
test   $0x1,%al
jne    1271 <main+0x171>
movl   $0x1,-0x4(%rbp)
jmp    155c <main+0x45c>
movsd  0xdc7(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm1
ucomisd %xmm1,%xmm1
setnp  %al
movaps 0xd8f(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xd9b(%rip),%xmm0
ucomisd %xmm0,%xmm1
setb   %dl
movsd  0xd84(%rip),%xmm0
ucomisd %xmm1,%xmm0
setbe  %cl
and    %dl,%al
and    %cl,%al
test   $0x1,%al
jne    12c4 <main+0x1c4>
jmp    12d0 <main+0x1d0>
movl   $0x1,-0x4(%rbp)
jmp    155c <main+0x45c>
movsd  0xd60(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm1
ucomisd %xmm1,%xmm1
setnp  %al
movaps 0xd30(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xd3c(%rip),%xmm0
ucomisd %xmm0,%xmm1
setb   %dl
movsd  0xd25(%rip),%xmm0
ucomisd %xmm1,%xmm0
setbe  %cl
and    %dl,%al
and    %cl,%al
test   $0x1,%al
jne    1323 <main+0x223>
jmp    132f <main+0x22f>
movl   $0x1,-0x4(%rbp)
jmp    155c <main+0x45c>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm1
ucomisd %xmm1,%xmm1
setnp  %al
movaps 0xcd6(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xce2(%rip),%xmm0
ucomisd %xmm0,%xmm1
setb   %dl
movsd  0xccb(%rip),%xmm0
ucomisd %xmm1,%xmm0
setbe  %cl
and    %dl,%al
and    %cl,%al
test   $0x1,%al
jne    137d <main+0x27d>
jmp    1389 <main+0x289>
movl   $0x1,-0x4(%rbp)
jmp    155c <main+0x45c>
movsd  0xcb7(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm1
ucomisd %xmm1,%xmm1
setnp  %al
movaps 0xc77(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xc83(%rip),%xmm0
ucomisd %xmm0,%xmm1
setb   %dl
movsd  0xc6c(%rip),%xmm0
ucomisd %xmm1,%xmm0
setbe  %cl
and    %dl,%al
and    %cl,%al
test   $0x1,%al
jne    13e3 <main+0x2e3>
movl   $0x1,-0x4(%rbp)
jmp    155c <main+0x45c>
movsd  0xc55(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm1
ucomisd %xmm1,%xmm1
setnp  %al
movaps 0xc1d(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xc29(%rip),%xmm0
ucomisd %xmm0,%xmm1
setb   %dl
movsd  0xc12(%rip),%xmm0
ucomisd %xmm1,%xmm0
setbe  %cl
and    %dl,%al
and    %cl,%al
test   $0x1,%al
jne    1436 <main+0x336>
jmp    1442 <main+0x342>
movl   $0x1,-0x4(%rbp)
jmp    155c <main+0x45c>
movsd  0xbee(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm1
ucomisd %xmm1,%xmm1
setnp  %al
movaps 0xbbe(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xbca(%rip),%xmm0
ucomisd %xmm0,%xmm1
setb   %dl
movsd  0xbb3(%rip),%xmm0
ucomisd %xmm1,%xmm0
setbe  %cl
and    %dl,%al
and    %cl,%al
test   $0x1,%al
jne    1495 <main+0x395>
jmp    14a1 <main+0x3a1>
movl   $0x1,-0x4(%rbp)
jmp    155c <main+0x45c>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm1
ucomisd %xmm1,%xmm1
setnp  %al
movaps 0xb64(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xb70(%rip),%xmm0
ucomisd %xmm0,%xmm1
setb   %dl
movsd  0xb59(%rip),%xmm0
ucomisd %xmm1,%xmm0
setbe  %cl
and    %dl,%al
and    %cl,%al
test   $0x1,%al
jne    14ef <main+0x3ef>
jmp    14fb <main+0x3fb>
movl   $0x1,-0x4(%rbp)
jmp    155c <main+0x45c>
movsd  0xb45(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm1
ucomisd %xmm1,%xmm1
setnp  %al
movaps 0xb05(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xb11(%rip),%xmm0
ucomisd %xmm0,%xmm1
setb   %dl
movsd  0xafa(%rip),%xmm0
ucomisd %xmm1,%xmm0
setbe  %cl
and    %dl,%al
and    %cl,%al
test   $0x1,%al
jne    1555 <main+0x455>
movl   $0x1,-0x4(%rbp)
jmp    155c <main+0x45c>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
movl   $0x7fc00000,-0x44(%rsp)
7f
movss  -0x44(%rsp),%xmm2
movaps 0xeeb(%rip),%xmm1
andps  %xmm2,%xmm1
movss  0xf00(%rip),%xmm0
ucomiss %xmm1,%xmm0
ja     1139 <main+0x39>
ucomiss %xmm2,%xmm2
jp     1139 <main+0x39>
mov    $0x1,%eax
ucomiss 0xeee(%rip),%xmm1
jae    1139 <main+0x39>
ret
movl   $0x7f800000,-0x48(%rsp)
7f
movss  -0x48(%rsp),%xmm2
movaps 0xeb2(%rip),%xmm1
andps  %xmm2,%xmm1
ucomiss %xmm1,%xmm0
ja     1169 <main+0x69>
ucomiss %xmm2,%xmm2
jp     1169 <main+0x69>
mov    $0x1,%eax
ucomiss 0xebd(%rip),%xmm1
jb     1138 <main+0x38>
movl   $0x0,-0x4c(%rsp)
movss  -0x4c(%rsp),%xmm2
movaps 0xe82(%rip),%xmm1
andps  %xmm2,%xmm1
ucomiss %xmm1,%xmm0
ja     1199 <main+0x99>
ucomiss %xmm2,%xmm2
jp     1199 <main+0x99>
mov    $0x1,%eax
ucomiss 0xe8d(%rip),%xmm1
jb     1138 <main+0x38>
movl   $0x3f800000,-0x50(%rsp)
3f
movss  -0x50(%rsp),%xmm2
movaps 0xe52(%rip),%xmm1
andps  %xmm2,%xmm1
ucomiss %xmm1,%xmm0
mov    $0x1,%eax
ja     1138 <main+0x38>
ucomiss %xmm2,%xmm2
jp     1138 <main+0x38>
ucomiss 0xe55(%rip),%xmm1
jae    1138 <main+0x38>
movabs $0x7ff8000000000000,%rcx
mov    %rcx,-0x8(%rsp)
movsd  -0x8(%rsp),%xmm2
movapd 0xe1e(%rip),%xmm1
andpd  %xmm2,%xmm1
movsd  0xe2a(%rip),%xmm0
ucomisd %xmm1,%xmm0
ja     121d <main+0x11d>
ucomisd %xmm2,%xmm2
jp     121d <main+0x11d>
mov    $0x1,%eax
ucomisd 0xe19(%rip),%xmm1
jb     1138 <main+0x38>
movabs $0x7ff0000000000000,%rdx
mov    %rdx,-0x10(%rsp)
movsd  -0x10(%rsp),%xmm2
movapd 0xdd6(%rip),%xmm1
andpd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     125d <main+0x15d>
ucomisd %xmm2,%xmm2
jp     125d <main+0x15d>
mov    $0x1,%eax
ucomisd 0xdd9(%rip),%xmm1
jb     1138 <main+0x38>
movq   $0x0,-0x18(%rsp)
movsd  -0x18(%rsp),%xmm2
movapd 0xd9c(%rip),%xmm1
andpd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     1297 <main+0x197>
ucomisd %xmm2,%xmm2
jp     1297 <main+0x197>
mov    $0x1,%eax
ucomisd 0xd9f(%rip),%xmm1
jb     1138 <main+0x38>
movabs $0x3ff0000000000000,%rsi
mov    %rsi,-0x20(%rsp)
movsd  -0x20(%rsp),%xmm2
movapd 0xd5c(%rip),%xmm1
andpd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
mov    $0x1,%eax
ja     1138 <main+0x38>
ucomisd %xmm2,%xmm2
jp     1138 <main+0x38>
ucomisd 0xd57(%rip),%xmm1
jae    1138 <main+0x38>
mov    %rcx,-0x28(%rsp)
movsd  -0x28(%rsp),%xmm2
movapd 0xd1e(%rip),%xmm1
andpd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     1315 <main+0x215>
ucomisd %xmm2,%xmm2
jp     1315 <main+0x215>
mov    $0x1,%eax
ucomisd 0xd21(%rip),%xmm1
jb     1138 <main+0x38>
mov    %rdx,-0x30(%rsp)
movsd  -0x30(%rsp),%xmm2
movapd 0xce8(%rip),%xmm1
andpd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     134b <main+0x24b>
ucomisd %xmm2,%xmm2
jp     134b <main+0x24b>
mov    $0x1,%eax
ucomisd 0xceb(%rip),%xmm1
jb     1138 <main+0x38>
movq   $0x0,-0x38(%rsp)
movsd  -0x38(%rsp),%xmm2
movapd 0xcae(%rip),%xmm1
andpd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     1385 <main+0x285>
ucomisd %xmm2,%xmm2
jp     1385 <main+0x285>
mov    $0x1,%eax
ucomisd 0xcb1(%rip),%xmm1
jb     1138 <main+0x38>
mov    %rsi,-0x40(%rsp)
movsd  -0x40(%rsp),%xmm1
ucomisd %xmm1,%xmm1
setp   %al
andpd  0xc71(%rip),%xmm1
ucomisd 0xc89(%rip),%xmm1
setae  %cl
ucomisd %xmm1,%xmm0
seta   %dl
or     %al,%dl
or     %cl,%dl
movzbl %dl,%eax
ret

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
%2 = alloca float
%3 = alloca float
%4 = alloca float
%5 = alloca float
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
store i32 0, i32* %1
store volatile float 0x7FF8000000000000, float* %2
%14 = load volatile float, float* %2
%15 = fcmp oeq float %14, %14
%16 = call float @llvm.fabs.f32(float %14)
%17 = fcmp ult float %16, 0x7FF0000000000000
%18 = fcmp uge float %16, 0x3810000000000000
%19 = and i1 %15, %17
%20 = and i1 %19, %18
br i1 %20, label %21, label %22
21: ; preds = %0
store i32 1, i32* %1
br label %122
22: ; preds = %0
store volatile float 0x7FF0000000000000, float* %3
%23 = load volatile float, float* %3
%24 = fcmp oeq float %23, %23
%25 = call float @llvm.fabs.f32(float %23)
%26 = fcmp ult float %25, 0x7FF0000000000000
%27 = fcmp uge float %25, 0x3810000000000000
%28 = and i1 %24, %26
%29 = and i1 %28, %27
br i1 %29, label %30, label %31
30: ; preds = %22
store i32 1, i32* %1
br label %122
31: ; preds = %22
store volatile float 0.000000e+00, float* %4
%32 = load volatile float, float* %4
%33 = fcmp oeq float %32, %32
%34 = call float @llvm.fabs.f32(float %32)
%35 = fcmp ult float %34, 0x7FF0000000000000
%36 = fcmp uge float %34, 0x3810000000000000
%37 = and i1 %33, %35
%38 = and i1 %37, %36
br i1 %38, label %39, label %40
39: ; preds = %31
store i32 1, i32* %1
br label %122
40: ; preds = %31
store volatile float 1.000000e+00, float* %5
%41 = load volatile float, float* %5
%42 = fcmp oeq float %41, %41
%43 = call float @llvm.fabs.f32(float %41)
%44 = fcmp ult float %43, 0x7FF0000000000000
%45 = fcmp uge float %43, 0x3810000000000000
%46 = and i1 %42, %44
%47 = and i1 %46, %45
br i1 %47, label %49, label %48
48: ; preds = %40
store i32 1, i32* %1
br label %122
49: ; preds = %40
store volatile double 0x7FF8000000000000, double* %6
%50 = load volatile double, double* %6
%51 = fcmp oeq double %50, %50
%52 = call double @llvm.fabs.f64(double %50)
%53 = fcmp ult double %52, 0x7FF0000000000000
%54 = fcmp uge double %52, 0x10000000000000
%55 = and i1 %51, %53
%56 = and i1 %55, %54
br i1 %56, label %57, label %58
57: ; preds = %49
store i32 1, i32* %1
br label %122
58: ; preds = %49
store volatile double 0x7FF0000000000000, double* %7
%59 = load volatile double, double* %7
%60 = fcmp oeq double %59, %59
%61 = call double @llvm.fabs.f64(double %59)
%62 = fcmp ult double %61, 0x7FF0000000000000
%63 = fcmp uge double %61, 0x10000000000000
%64 = and i1 %60, %62
%65 = and i1 %64, %63
br i1 %65, label %66, label %67
66: ; preds = %58
store i32 1, i32* %1
br label %122
67: ; preds = %58
store volatile double 0.000000e+00, double* %8
%68 = load volatile double, double* %8
%69 = fcmp oeq double %68, %68
%70 = call double @llvm.fabs.f64(double %68)
%71 = fcmp ult double %70, 0x7FF0000000000000
%72 = fcmp uge double %70, 0x10000000000000
%73 = and i1 %69, %71
%74 = and i1 %73, %72
br i1 %74, label %75, label %76
75: ; preds = %67
store i32 1, i32* %1
br label %122
76: ; preds = %67
store volatile double 1.000000e+00, double* %9
%77 = load volatile double, double* %9
%78 = fcmp oeq double %77, %77
%79 = call double @llvm.fabs.f64(double %77)
%80 = fcmp ult double %79, 0x7FF0000000000000
%81 = fcmp uge double %79, 0x10000000000000
%82 = and i1 %78, %80
%83 = and i1 %82, %81
br i1 %83, label %85, label %84
84: ; preds = %76
store i32 1, i32* %1
br label %122
85: ; preds = %76
store volatile double 0x7FF8000000000000, double* %10
%86 = load volatile double, double* %10
%87 = fcmp oeq double %86, %86
%88 = call double @llvm.fabs.f64(double %86)
%89 = fcmp ult double %88, 0x7FF0000000000000
%90 = fcmp uge double %88, 0x10000000000000
%91 = and i1 %87, %89
%92 = and i1 %91, %90
br i1 %92, label %93, label %94
93: ; preds = %85
store i32 1, i32* %1
br label %122
94: ; preds = %85
store volatile double 0x7FF0000000000000, double* %11
%95 = load volatile double, double* %11
%96 = fcmp oeq double %95, %95
%97 = call double @llvm.fabs.f64(double %95)
%98 = fcmp ult double %97, 0x7FF0000000000000
%99 = fcmp uge double %97, 0x10000000000000
%100 = and i1 %96, %98
%101 = and i1 %100, %99
br i1 %101, label %102, label %103
102: ; preds = %94
store i32 1, i32* %1
br label %122
103: ; preds = %94
store volatile double 0.000000e+00, double* %12
%104 = load volatile double, double* %12
%105 = fcmp oeq double %104, %104
%106 = call double @llvm.fabs.f64(double %104)
%107 = fcmp ult double %106, 0x7FF0000000000000
%108 = fcmp uge double %106, 0x10000000000000
%109 = and i1 %105, %107
%110 = and i1 %109, %108
br i1 %110, label %111, label %112
111: ; preds = %103
store i32 1, i32* %1
br label %122
112: ; preds = %103
store volatile double 1.000000e+00, double* %13
%113 = load volatile double, double* %13
%114 = fcmp oeq double %113, %113
%115 = call double @llvm.fabs.f64(double %113)
%116 = fcmp ult double %115, 0x7FF0000000000000
%117 = fcmp uge double %115, 0x10000000000000
%118 = and i1 %114, %116
%119 = and i1 %118, %117
br i1 %119, label %121, label %120
120: ; preds = %112
store i32 1, i32* %1
br label %122
121: ; preds = %112
store i32 0, i32* %1
br label %122
122: ; preds = %121, %120, %111, %102, %93, %84, %75, %66, %57, %48, %39, %30, %21
%123 = load i32, i32* %1
ret i32 %123
}

LLVM IR (-O2):
define i32 @main() {
%1 = alloca float
%2 = alloca float
%3 = alloca float
%4 = alloca float
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = bitcast float* %1 to i8*
store volatile float 0x7FF8000000000000, float* %1
%14 = load volatile float, float* %1
%15 = fcmp ord float %14, 0.000000e+00
%16 = tail call float @llvm.fabs.f32(float %14)
%17 = fcmp ult float %16, 0x7FF0000000000000
%18 = fcmp uge float %16, 0x3810000000000000
%19 = and i1 %15, %17
%20 = and i1 %18, %19
br i1 %20, label %142, label %21
21: ; preds = %0
%22 = bitcast float* %2 to i8*
store volatile float 0x7FF0000000000000, float* %2
%23 = load volatile float, float* %2
%24 = fcmp ord float %23, 0.000000e+00
%25 = tail call float @llvm.fabs.f32(float %23)
%26 = fcmp ult float %25, 0x7FF0000000000000
%27 = fcmp uge float %25, 0x3810000000000000
%28 = and i1 %24, %26
%29 = and i1 %27, %28
br i1 %29, label %140, label %30
30: ; preds = %21
%31 = bitcast float* %3 to i8*
store volatile float 0.000000e+00, float* %3
%32 = load volatile float, float* %3
%33 = fcmp ord float %32, 0.000000e+00
%34 = tail call float @llvm.fabs.f32(float %32)
%35 = fcmp ult float %34, 0x7FF0000000000000
%36 = fcmp uge float %34, 0x3810000000000000
%37 = and i1 %33, %35
%38 = and i1 %36, %37
br i1 %38, label %138, label %39
39: ; preds = %30
%40 = bitcast float* %4 to i8*
store volatile float 1.000000e+00, float* %4
%41 = load volatile float, float* %4
%42 = fcmp ord float %41, 0.000000e+00
%43 = tail call float @llvm.fabs.f32(float %41)
%44 = fcmp ult float %43, 0x7FF0000000000000
%45 = fcmp uge float %43, 0x3810000000000000
%46 = and i1 %42, %44
%47 = and i1 %45, %46
br i1 %47, label %48, label %136
48: ; preds = %39
%49 = bitcast double* %5 to i8*
store volatile double 0x7FF8000000000000, double* %5
%50 = load volatile double, double* %5
%51 = fcmp ord double %50, 0.000000e+00
%52 = tail call double @llvm.fabs.f64(double %50)
%53 = fcmp ult double %52, 0x7FF0000000000000
%54 = fcmp uge double %52, 0x10000000000000
%55 = and i1 %51, %53
%56 = and i1 %54, %55
br i1 %56, label %134, label %57
57: ; preds = %48
%58 = bitcast double* %6 to i8*
store volatile double 0x7FF0000000000000, double* %6
%59 = load volatile double, double* %6
%60 = fcmp ord double %59, 0.000000e+00
%61 = tail call double @llvm.fabs.f64(double %59)
%62 = fcmp ult double %61, 0x7FF0000000000000
%63 = fcmp uge double %61, 0x10000000000000
%64 = and i1 %60, %62
%65 = and i1 %63, %64
br i1 %65, label %132, label %66
66: ; preds = %57
%67 = bitcast double* %7 to i8*
store volatile double 0.000000e+00, double* %7
%68 = load volatile double, double* %7
%69 = fcmp ord double %68, 0.000000e+00
%70 = tail call double @llvm.fabs.f64(double %68)
%71 = fcmp ult double %70, 0x7FF0000000000000
%72 = fcmp uge double %70, 0x10000000000000
%73 = and i1 %69, %71
%74 = and i1 %72, %73
br i1 %74, label %130, label %75
75: ; preds = %66
%76 = bitcast double* %8 to i8*
store volatile double 1.000000e+00, double* %8
%77 = load volatile double, double* %8
%78 = fcmp ord double %77, 0.000000e+00
%79 = tail call double @llvm.fabs.f64(double %77)
%80 = fcmp ult double %79, 0x7FF0000000000000
%81 = fcmp uge double %79, 0x10000000000000
%82 = and i1 %78, %80
%83 = and i1 %81, %82
br i1 %83, label %84, label %128
84: ; preds = %75
%85 = bitcast double* %9 to i8*
store volatile double 0x7FF8000000000000, double* %9
%86 = load volatile double, double* %9
%87 = fcmp ord double %86, 0.000000e+00
%88 = tail call double @llvm.fabs.f64(double %86)
%89 = fcmp ult double %88, 0x7FF0000000000000
%90 = fcmp uge double %88, 0x10000000000000
%91 = and i1 %87, %89
%92 = and i1 %90, %91
br i1 %92, label %126, label %93
93: ; preds = %84
%94 = bitcast double* %10 to i8*
store volatile double 0x7FF0000000000000, double* %10
%95 = load volatile double, double* %10
%96 = fcmp ord double %95, 0.000000e+00
%97 = tail call double @llvm.fabs.f64(double %95)
%98 = fcmp ult double %97, 0x7FF0000000000000
%99 = fcmp uge double %97, 0x10000000000000
%100 = and i1 %96, %98
%101 = and i1 %99, %100
br i1 %101, label %124, label %102
102: ; preds = %93
%103 = bitcast double* %11 to i8*
store volatile double 0.000000e+00, double* %11
%104 = load volatile double, double* %11
%105 = fcmp ord double %104, 0.000000e+00
%106 = tail call double @llvm.fabs.f64(double %104)
%107 = fcmp ult double %106, 0x7FF0000000000000
%108 = fcmp uge double %106, 0x10000000000000
%109 = and i1 %105, %107
%110 = and i1 %108, %109
br i1 %110, label %122, label %111
111: ; preds = %102
%112 = bitcast double* %12 to i8*
store volatile double 1.000000e+00, double* %12
%113 = load volatile double, double* %12
%114 = fcmp ord double %113, 0.000000e+00
%115 = tail call double @llvm.fabs.f64(double %113)
%116 = fcmp ult double %115, 0x7FF0000000000000
%117 = fcmp uge double %115, 0x10000000000000
%118 = and i1 %114, %116
%119 = and i1 %117, %118
%120 = xor i1 %119, true
%121 = zext i1 %120 to i32
br label %122
122: ; preds = %102, %111
%123 = phi i32 [ %121, %111 ], [ 1, %102 ]
br label %124
124: ; preds = %93, %122
%125 = phi i32 [ %123, %122 ], [ 1, %93 ]
br label %126
126: ; preds = %84, %124
%127 = phi i32 [ %125, %124 ], [ 1, %84 ]
br label %128
128: ; preds = %75, %126
%129 = phi i32 [ %127, %126 ], [ 1, %75 ]
br label %130
130: ; preds = %66, %128
%131 = phi i32 [ %129, %128 ], [ 1, %66 ]
br label %132
132: ; preds = %57, %130
%133 = phi i32 [ %131, %130 ], [ 1, %57 ]
br label %134
134: ; preds = %48, %132
%135 = phi i32 [ %133, %132 ], [ 1, %48 ]
br label %136
136: ; preds = %39, %134
%137 = phi i32 [ %135, %134 ], [ 1, %39 ]
br label %138
138: ; preds = %30, %136
%139 = phi i32 [ %137, %136 ], [ 1, %30 ]
br label %140
140: ; preds = %21, %138
%141 = phi i32 [ %139, %138 ], [ 1, %21 ]
br label %142
142: ; preds = %0, %140
%143 = phi i32 [ %141, %140 ], [ 1, %0 ]
ret i32 %143
}