#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();
int main(int argc, char **argv) {
  const int N = 32;
  float a[N], b[N];
  int i;
  for (i = 0; i < N; i++) {
    a[i] = 1.0;
    b[i] = 0.0;
  }
#pragma acc parallel loop copy(a [0:N]) copy(b [0:N])
  for (i = 0; i < N; i++) {
    b[i] = 2.0;
    a[i] = a[i] + b[i];
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 3.0)
      abort();
    if (b[i] != 2.0)
      abort();
  }
#pragma acc kernels loop copy(a [0:N]) copy(b [0:N])
  for (i = 0; i < N; i++) {
    b[i] = 3.0;
    a[i] = a[i] + b[i];
  }
  for (i = 0; i < N; i++) {
    if (a[i] != 6.0)
      abort();
    if (b[i] != 3.0)
      abort();
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x130,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x20,-0x14(%rbp)
mov    %rsp,%rax
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
cmpl   $0x20,-0x24(%rbp)
jge    117b <main+0x6b>
movslq -0x24(%rbp),%rax
movss  0xecc(%rip),%xmm0
movss  %xmm0,-0xb0(%rbp,%rax,4)
ff ff
movslq -0x24(%rbp),%rax
xorps  %xmm0,%xmm0
movss  %xmm0,-0x130(%rbp,%rax,4)
ff ff
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    113e <main+0x2e>
movl   $0x0,-0x24(%rbp)
cmpl   $0x20,-0x24(%rbp)
jge    11d6 <main+0xc6>
movslq -0x24(%rbp),%rax
movss  0xe84(%rip),%xmm0
movss  %xmm0,-0x130(%rbp,%rax,4)
ff ff
movslq -0x24(%rbp),%rax
movss  -0xb0(%rbp,%rax,4),%xmm0
ff ff
movslq -0x24(%rbp),%rax
addss  -0x130(%rbp,%rax,4),%xmm0
ff ff
movslq -0x24(%rbp),%rax
movss  %xmm0,-0xb0(%rbp,%rax,4)
ff ff
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1182 <main+0x72>
movl   $0x0,-0x24(%rbp)
cmpl   $0x20,-0x24(%rbp)
jge    1264 <main+0x154>
movslq -0x24(%rbp),%rax
movss  -0xb0(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
movsd  0xe08(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1215 <main+0x105>
jp     1215 <main+0x105>
jmp    121c <main+0x10c>
mov    $0x0,%al
call   1030 <abort@plt>
movslq -0x24(%rbp),%rax
movss  -0x130(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
movsd  0xddb(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    124a <main+0x13a>
jp     124a <main+0x13a>
jmp    1251 <main+0x141>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1256 <main+0x146>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11dd <main+0xcd>
movl   $0x0,-0x24(%rbp)
cmpl   $0x20,-0x24(%rbp)
jge    12bf <main+0x1af>
movslq -0x24(%rbp),%rax
movss  0xd97(%rip),%xmm0
movss  %xmm0,-0x130(%rbp,%rax,4)
ff ff
movslq -0x24(%rbp),%rax
movss  -0xb0(%rbp,%rax,4),%xmm0
ff ff
movslq -0x24(%rbp),%rax
addss  -0x130(%rbp,%rax,4),%xmm0
ff ff
movslq -0x24(%rbp),%rax
movss  %xmm0,-0xb0(%rbp,%rax,4)
ff ff
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    126b <main+0x15b>
movl   $0x0,-0x24(%rbp)
cmpl   $0x20,-0x24(%rbp)
jge    134d <main+0x23d>
movslq -0x24(%rbp),%rax
movss  -0xb0(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
movsd  0xd17(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12fe <main+0x1ee>
jp     12fe <main+0x1ee>
jmp    1305 <main+0x1f5>
mov    $0x0,%al
call   1030 <abort@plt>
movslq -0x24(%rbp),%rax
movss  -0x130(%rbp,%rax,4),%xmm0
ff ff
cvtss2sd %xmm0,%xmm0
movsd  0xcea(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1333 <main+0x223>
jp     1333 <main+0x223>
jmp    133a <main+0x22a>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    133f <main+0x22f>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    12c6 <main+0x1b6>
movl   $0x0,-0x4(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rsp
mov    -0x4(%rbp),%eax
add    $0x130,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x108,%rsp
xorps  %xmm0,%xmm0
movaps %xmm0,0x80(%rsp)
movaps %xmm0,0x90(%rsp)
movaps %xmm0,0xf0(%rsp)
movaps %xmm0,0xe0(%rsp)
movaps %xmm0,0xd0(%rsp)
movaps %xmm0,0xc0(%rsp)
movaps %xmm0,0xb0(%rsp)
movaps %xmm0,0xa0(%rsp)
movaps 0xe9f(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x50(%rsp)
movaps %xmm0,0x60(%rsp)
movaps %xmm0,0x70(%rsp)
movl   $0x40000000,0x80(%rsp)
movaps 0xe7a(%rip),%xmm0
movaps %xmm0,(%rsp)
movups 0x4(%rsp),%xmm1
movaps 0xe7a(%rip),%xmm0
movups %xmm0,0x84(%rsp)
addps  %xmm0,%xmm1
movups %xmm1,0x4(%rsp)
movups 0x14(%rsp),%xmm1
movups %xmm0,0x94(%rsp)
addps  %xmm0,%xmm1
movups %xmm1,0x14(%rsp)
movups 0x24(%rsp),%xmm1
movups %xmm0,0xa4(%rsp)
addps  %xmm0,%xmm1
movups %xmm1,0x24(%rsp)
movups 0x34(%rsp),%xmm1
movups %xmm0,0xb4(%rsp)
addps  %xmm0,%xmm1
movups %xmm1,0x34(%rsp)
movups 0x44(%rsp),%xmm1
movups %xmm0,0xc4(%rsp)
addps  %xmm0,%xmm1
movups %xmm1,0x44(%rsp)
movups 0x54(%rsp),%xmm1
movups %xmm0,0xd4(%rsp)
addps  %xmm0,%xmm1
movups %xmm1,0x54(%rsp)
movups 0x64(%rsp),%xmm1
movups %xmm0,0xe4(%rsp)
addps  %xmm0,%xmm1
movups %xmm1,0x64(%rsp)
movss  0xe04(%rip),%xmm1
movss  0x74(%rsp),%xmm0
addss  %xmm1,%xmm0
movl   $0x40000000,0xf4(%rsp)
movss  %xmm0,0x74(%rsp)
movss  0x78(%rsp),%xmm0
addss  %xmm1,%xmm0
movl   $0x40000000,0xf8(%rsp)
movss  %xmm0,0x78(%rsp)
movss  0x7c(%rsp),%xmm0
addss  %xmm1,%xmm0
movl   $0x40000000,0xfc(%rsp)
movss  %xmm0,0x7c(%rsp)
xor    %eax,%eax
movss  0xdad(%rip),%xmm0
nopw   0x0(%rax,%rax,1)
movss  (%rsp,%rax,4),%xmm2
ucomiss %xmm0,%xmm2
jne    140d <main+0x2fd>
jp     140d <main+0x2fd>
movss  0x80(%rsp,%rax,4),%xmm2
ucomiss %xmm1,%xmm2
jne    140d <main+0x2fd>
jp     140d <main+0x2fd>
movss  0x4(%rsp,%rax,4),%xmm2
ucomiss %xmm0,%xmm2
jne    140d <main+0x2fd>
jp     140d <main+0x2fd>
movss  0x84(%rsp,%rax,4),%xmm2
ucomiss %xmm1,%xmm2
jne    140d <main+0x2fd>
jp     140d <main+0x2fd>
add    $0x2,%rax
cmp    $0x20,%rax
jne    12a0 <main+0x190>
movaps 0xd26(%rip),%xmm1
movaps %xmm1,0x80(%rsp)
movaps (%rsp),%xmm2
addps  %xmm1,%xmm2
movaps %xmm2,(%rsp)
movaps %xmm1,0x90(%rsp)
movaps 0x10(%rsp),%xmm2
addps  %xmm1,%xmm2
movaps %xmm2,0x10(%rsp)
movaps %xmm1,0xa0(%rsp)
movaps 0x20(%rsp),%xmm2
addps  %xmm1,%xmm2
movaps %xmm2,0x20(%rsp)
movaps %xmm1,0xb0(%rsp)
movaps 0x30(%rsp),%xmm2
addps  %xmm1,%xmm2
movaps %xmm2,0x30(%rsp)
movaps %xmm1,0xc0(%rsp)
movaps 0x40(%rsp),%xmm2
addps  %xmm1,%xmm2
movaps %xmm2,0x40(%rsp)
movaps %xmm1,0xd0(%rsp)
movaps 0x50(%rsp),%xmm2
addps  %xmm1,%xmm2
movaps %xmm2,0x50(%rsp)
movaps %xmm1,0xe0(%rsp)
movaps 0x60(%rsp),%xmm2
addps  %xmm1,%xmm2
movaps %xmm2,0x60(%rsp)
movaps %xmm1,0xf0(%rsp)
addps  0x70(%rsp),%xmm1
movaps %xmm1,0x70(%rsp)
xor    %eax,%eax
movss  0xc91(%rip),%xmm1
nopw   0x0(%rax,%rax,1)
movss  (%rsp,%rax,4),%xmm2
ucomiss %xmm1,%xmm2
jne    140d <main+0x2fd>
jp     140d <main+0x2fd>
movss  0x80(%rsp,%rax,4),%xmm2
ucomiss %xmm0,%xmm2
jne    140d <main+0x2fd>
jp     140d <main+0x2fd>
movss  0x4(%rsp,%rax,4),%xmm2
ucomiss %xmm1,%xmm2
jne    140d <main+0x2fd>
jp     140d <main+0x2fd>
movss  0x84(%rsp,%rax,4),%xmm2
ucomiss %xmm0,%xmm2
jne    140d <main+0x2fd>
jp     140d <main+0x2fd>
add    $0x2,%rax
cmp    $0x20,%rax
jne    13c0 <main+0x2b0>
xor    %eax,%eax
add    $0x108,%rsp
ret
xor    %eax,%eax
call   1030 <abort@plt>

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

LLVM IR (-O2):
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = alloca [32 x float]
%4 = alloca [32 x float]
%5 = bitcast [32 x float]* %4 to i8*
%6 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 0
store float 1.000000e+00, float* %6
%7 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 4
%8 = bitcast float* %7 to <4 x float>*
store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, <4 x float>* %8
%9 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 8
%10 = bitcast float* %9 to <4 x float>*
store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, <4 x float>* %10
%11 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 12
%12 = bitcast float* %11 to <4 x float>*
store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, <4 x float>* %12
%13 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 16
%14 = bitcast float* %13 to <4 x float>*
store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, <4 x float>* %14
%15 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 20
%16 = bitcast float* %15 to <4 x float>*
store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, <4 x float>* %16
%17 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 24
%18 = bitcast float* %17 to <4 x float>*
store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, <4 x float>* %18
%19 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 28
%20 = bitcast float* %19 to <4 x float>*
store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, <4 x float>* %20
%21 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 0
store float 2.000000e+00, float* %21
%22 = bitcast [32 x float]* %3 to <4 x float>*
store <4 x float> <float 3.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, <4 x float>* %22
%23 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 1
%24 = bitcast float* %23 to <4 x float>*
%25 = load <4 x float>, <4 x float>* %24
%26 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 1
%27 = bitcast float* %26 to <4 x float>*
store <4 x float> <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>, <4 x float>* %27
%28 = fadd <4 x float> %25, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
%29 = bitcast float* %23 to <4 x float>*
store <4 x float> %28, <4 x float>* %29
%30 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 5
%31 = bitcast float* %30 to <4 x float>*
%32 = load <4 x float>, <4 x float>* %31
%33 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 5
%34 = bitcast float* %33 to <4 x float>*
store <4 x float> <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>, <4 x float>* %34
%35 = fadd <4 x float> %32, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
%36 = bitcast float* %30 to <4 x float>*
store <4 x float> %35, <4 x float>* %36
%37 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 9
%38 = bitcast float* %37 to <4 x float>*
%39 = load <4 x float>, <4 x float>* %38
%40 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 9
%41 = bitcast float* %40 to <4 x float>*
store <4 x float> <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>, <4 x float>* %41
%42 = fadd <4 x float> %39, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
%43 = bitcast float* %37 to <4 x float>*
store <4 x float> %42, <4 x float>* %43
%44 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 13
%45 = bitcast float* %44 to <4 x float>*
%46 = load <4 x float>, <4 x float>* %45
%47 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 13
%48 = bitcast float* %47 to <4 x float>*
store <4 x float> <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>, <4 x float>* %48
%49 = fadd <4 x float> %46, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
%50 = bitcast float* %44 to <4 x float>*
store <4 x float> %49, <4 x float>* %50
%51 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 17
%52 = bitcast float* %51 to <4 x float>*
%53 = load <4 x float>, <4 x float>* %52
%54 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 17
%55 = bitcast float* %54 to <4 x float>*
store <4 x float> <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>, <4 x float>* %55
%56 = fadd <4 x float> %53, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
%57 = bitcast float* %51 to <4 x float>*
store <4 x float> %56, <4 x float>* %57
%58 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 21
%59 = bitcast float* %58 to <4 x float>*
%60 = load <4 x float>, <4 x float>* %59
%61 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 21
%62 = bitcast float* %61 to <4 x float>*
store <4 x float> <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>, <4 x float>* %62
%63 = fadd <4 x float> %60, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
%64 = bitcast float* %58 to <4 x float>*
store <4 x float> %63, <4 x float>* %64
%65 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 25
%66 = bitcast float* %65 to <4 x float>*
%67 = load <4 x float>, <4 x float>* %66
%68 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 25
%69 = bitcast float* %68 to <4 x float>*
store <4 x float> <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>, <4 x float>* %69
%70 = fadd <4 x float> %67, <float 2.000000e+00, float 2.000000e+00, float 2.000000e+00, float 2.000000e+00>
%71 = bitcast float* %65 to <4 x float>*
store <4 x float> %70, <4 x float>* %71
%72 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 29
%73 = load float, float* %72
%74 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 29
store float 2.000000e+00, float* %74
%75 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 29
%76 = fadd float %73, 2.000000e+00
store float %76, float* %75
%77 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 30
%78 = load float, float* %77
%79 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 30
store float 2.000000e+00, float* %79
%80 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 30
%81 = fadd float %78, 2.000000e+00
store float %81, float* %80
%82 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 31
%83 = load float, float* %82
%84 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 31
store float 2.000000e+00, float* %84
%85 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 31
%86 = fadd float %83, 2.000000e+00
store float %86, float* %85
br label %154
87: ; preds = %161
%88 = or i64 %155, 1
%89 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 %88
%90 = load float, float* %89
%91 = fcmp une float %90, 3.000000e+00
br i1 %91, label %159, label %92
92: ; preds = %87
%93 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 %88
%94 = load float, float* %93
%95 = fcmp une float %94, 2.000000e+00
br i1 %95, label %165, label %96
96: ; preds = %92
%97 = add nuw nsw i64 %155, 2
%98 = icmp eq i64 %97, 32
br i1 %98, label %99, label %154
99: ; preds = %96
%100 = bitcast [32 x float]* %4 to <4 x float>*
store <4 x float> <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>, <4 x float>* %100
%101 = bitcast [32 x float]* %3 to <4 x float>*
%102 = load <4 x float>, <4 x float>* %101
%103 = fadd <4 x float> %102, <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>
%104 = bitcast [32 x float]* %3 to <4 x float>*
store <4 x float> %103, <4 x float>* %104
%105 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 4
%106 = bitcast float* %105 to <4 x float>*
store <4 x float> <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>, <4 x float>* %106
%107 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 4
%108 = bitcast float* %107 to <4 x float>*
%109 = load <4 x float>, <4 x float>* %108
%110 = fadd <4 x float> %109, <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>
%111 = bitcast float* %107 to <4 x float>*
store <4 x float> %110, <4 x float>* %111
%112 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 8
%113 = bitcast float* %112 to <4 x float>*
store <4 x float> <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>, <4 x float>* %113
%114 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 8
%115 = bitcast float* %114 to <4 x float>*
%116 = load <4 x float>, <4 x float>* %115
%117 = fadd <4 x float> %116, <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>
%118 = bitcast float* %114 to <4 x float>*
store <4 x float> %117, <4 x float>* %118
%119 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 12
%120 = bitcast float* %119 to <4 x float>*
store <4 x float> <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>, <4 x float>* %120
%121 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 12
%122 = bitcast float* %121 to <4 x float>*
%123 = load <4 x float>, <4 x float>* %122
%124 = fadd <4 x float> %123, <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>
%125 = bitcast float* %121 to <4 x float>*
store <4 x float> %124, <4 x float>* %125
%126 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 16
%127 = bitcast float* %126 to <4 x float>*
store <4 x float> <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>, <4 x float>* %127
%128 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 16
%129 = bitcast float* %128 to <4 x float>*
%130 = load <4 x float>, <4 x float>* %129
%131 = fadd <4 x float> %130, <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>
%132 = bitcast float* %128 to <4 x float>*
store <4 x float> %131, <4 x float>* %132
%133 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 20
%134 = bitcast float* %133 to <4 x float>*
store <4 x float> <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>, <4 x float>* %134
%135 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 20
%136 = bitcast float* %135 to <4 x float>*
%137 = load <4 x float>, <4 x float>* %136
%138 = fadd <4 x float> %137, <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>
%139 = bitcast float* %135 to <4 x float>*
store <4 x float> %138, <4 x float>* %139
%140 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 24
%141 = bitcast float* %140 to <4 x float>*
store <4 x float> <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>, <4 x float>* %141
%142 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 24
%143 = bitcast float* %142 to <4 x float>*
%144 = load <4 x float>, <4 x float>* %143
%145 = fadd <4 x float> %144, <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>
%146 = bitcast float* %142 to <4 x float>*
store <4 x float> %145, <4 x float>* %146
%147 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 28
%148 = bitcast float* %147 to <4 x float>*
store <4 x float> <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>, <4 x float>* %148
%149 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 28
%150 = bitcast float* %149 to <4 x float>*
%151 = load <4 x float>, <4 x float>* %150
%152 = fadd <4 x float> %151, <float 3.000000e+00, float 3.000000e+00, float 3.000000e+00, float 3.000000e+00>
%153 = bitcast float* %149 to <4 x float>*
store <4 x float> %152, <4 x float>* %153
br label %179
154: ; preds = %96, %2
%155 = phi i64 [ 0, %2 ], [ %97, %96 ]
%156 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 %155
%157 = load float, float* %156
%158 = fcmp une float %157, 3.000000e+00
br i1 %158, label %159, label %161
159: ; preds = %87, %154
%160 = tail call i32 (...) @abort()
unreachable
161: ; preds = %154
%162 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 %155
%163 = load float, float* %162
%164 = fcmp une float %163, 2.000000e+00
br i1 %164, label %165, label %87
165: ; preds = %92, %161
%166 = tail call i32 (...) @abort()
unreachable
167: ; preds = %186
%168 = or i64 %180, 1
%169 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 %168
%170 = load float, float* %169
%171 = fcmp une float %170, 6.000000e+00
br i1 %171, label %184, label %172
172: ; preds = %167
%173 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 %168
%174 = load float, float* %173
%175 = fcmp une float %174, 3.000000e+00
br i1 %175, label %190, label %176
176: ; preds = %172
%177 = add nuw nsw i64 %180, 2
%178 = icmp eq i64 %177, 32
br i1 %178, label %192, label %179
179: ; preds = %176, %99
%180 = phi i64 [ 0, %99 ], [ %177, %176 ]
%181 = getelementptr inbounds [32 x float], [32 x float]* %3, i64 0, i64 %180
%182 = load float, float* %181
%183 = fcmp une float %182, 6.000000e+00
br i1 %183, label %184, label %186
184: ; preds = %167, %179
%185 = tail call i32 (...) @abort()
unreachable
186: ; preds = %179
%187 = getelementptr inbounds [32 x float], [32 x float]* %4, i64 0, i64 %180
%188 = load float, float* %187
%189 = fcmp une float %188, 3.000000e+00
br i1 %189, label %190, label %167
190: ; preds = %172, %186
%191 = tail call i32 (...) @abort()
unreachable
192: ; preds = %176
ret i32 0
}