float double_reduc(float *i, float *j) {
  float k = 0, l = 0;
  for (int a = 0; a < 8; a++)
    for (int b = 0; b < 100; b++) {
      k += i[b];
      l += j[b];
    }
  return l * k;
}


x86 assembly (clang, -O0):
<double_reduc>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x14(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x8,-0x1c(%rbp)
jge    118d <double_reduc+0x8d>
movl   $0x0,-0x20(%rbp)
cmpl   $0x64,-0x20(%rbp)
jge    117a <double_reduc+0x7a>
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x14(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1134 <double_reduc+0x34>
jmp    117f <double_reduc+0x7f>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1123 <double_reduc+0x23>
movss  -0x18(%rbp),%xmm0
mulss  -0x14(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<double_reduc>:
xorps  %xmm1,%xmm1
mov    $0x3,%eax
nopl   0x0(%rax,%rax,1)
movss  -0xc(%rdi,%rax,4),%xmm0
movss  -0x8(%rdi,%rax,4),%xmm2
movss  -0x4(%rdi,%rax,4),%xmm3
movss  (%rdi,%rax,4),%xmm4
movss  -0xc(%rsi,%rax,4),%xmm5
unpcklps %xmm0,%xmm5
addps  %xmm1,%xmm5
movss  -0x8(%rsi,%rax,4),%xmm0
unpcklps %xmm2,%xmm0
addps  %xmm5,%xmm0
movss  -0x4(%rsi,%rax,4),%xmm2
unpcklps %xmm3,%xmm2
addps  %xmm0,%xmm2
movss  (%rsi,%rax,4),%xmm1
unpcklps %xmm4,%xmm1
addps  %xmm2,%xmm1
add    $0x4,%rax
cmp    $0x67,%rax
jne    1110 <double_reduc+0x10>
mov    $0x3,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movss  -0xc(%rdi,%rax,4),%xmm0
movss  -0x8(%rdi,%rax,4),%xmm2
movss  -0x4(%rdi,%rax,4),%xmm3
movss  (%rdi,%rax,4),%xmm4
movss  -0xc(%rsi,%rax,4),%xmm5
unpcklps %xmm0,%xmm5
addps  %xmm1,%xmm5
movss  -0x8(%rsi,%rax,4),%xmm0
unpcklps %xmm2,%xmm0
addps  %xmm5,%xmm0
movss  -0x4(%rsi,%rax,4),%xmm2
unpcklps %xmm3,%xmm2
addps  %xmm0,%xmm2
movss  (%rsi,%rax,4),%xmm1
unpcklps %xmm4,%xmm1
addps  %xmm2,%xmm1
add    $0x4,%rax
cmp    $0x67,%rax
jne    1170 <double_reduc+0x70>
mov    $0x3,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movss  -0xc(%rdi,%rax,4),%xmm0
movss  -0x8(%rdi,%rax,4),%xmm2
movss  -0x4(%rdi,%rax,4),%xmm3
movss  (%rdi,%rax,4),%xmm4
movss  -0xc(%rsi,%rax,4),%xmm5
unpcklps %xmm0,%xmm5
addps  %xmm1,%xmm5
movss  -0x8(%rsi,%rax,4),%xmm0
unpcklps %xmm2,%xmm0
addps  %xmm5,%xmm0
movss  -0x4(%rsi,%rax,4),%xmm2
unpcklps %xmm3,%xmm2
addps  %xmm0,%xmm2
movss  (%rsi,%rax,4),%xmm1
unpcklps %xmm4,%xmm1
addps  %xmm2,%xmm1
add    $0x4,%rax
cmp    $0x67,%rax
jne    11d0 <double_reduc+0xd0>
mov    $0x3,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movss  -0xc(%rdi,%rax,4),%xmm0
movss  -0x8(%rdi,%rax,4),%xmm2
movss  -0x4(%rdi,%rax,4),%xmm3
movss  (%rdi,%rax,4),%xmm4
movss  -0xc(%rsi,%rax,4),%xmm5
unpcklps %xmm0,%xmm5
addps  %xmm1,%xmm5
movss  -0x8(%rsi,%rax,4),%xmm0
unpcklps %xmm2,%xmm0
addps  %xmm5,%xmm0
movss  -0x4(%rsi,%rax,4),%xmm2
unpcklps %xmm3,%xmm2
addps  %xmm0,%xmm2
movss  (%rsi,%rax,4),%xmm1
unpcklps %xmm4,%xmm1
addps  %xmm2,%xmm1
add    $0x4,%rax
cmp    $0x67,%rax
jne    1230 <double_reduc+0x130>
mov    $0x3,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movss  -0xc(%rdi,%rax,4),%xmm0
movss  -0x8(%rdi,%rax,4),%xmm2
movss  -0x4(%rdi,%rax,4),%xmm3
movss  (%rdi,%rax,4),%xmm4
movss  -0xc(%rsi,%rax,4),%xmm5
unpcklps %xmm0,%xmm5
addps  %xmm1,%xmm5
movss  -0x8(%rsi,%rax,4),%xmm0
unpcklps %xmm2,%xmm0
addps  %xmm5,%xmm0
movss  -0x4(%rsi,%rax,4),%xmm2
unpcklps %xmm3,%xmm2
addps  %xmm0,%xmm2
movss  (%rsi,%rax,4),%xmm1
unpcklps %xmm4,%xmm1
addps  %xmm2,%xmm1
add    $0x4,%rax
cmp    $0x67,%rax
jne    1290 <double_reduc+0x190>
mov    $0x3,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movss  -0xc(%rdi,%rax,4),%xmm0
movss  -0x8(%rdi,%rax,4),%xmm2
movss  -0x4(%rdi,%rax,4),%xmm3
movss  (%rdi,%rax,4),%xmm4
movss  -0xc(%rsi,%rax,4),%xmm5
unpcklps %xmm0,%xmm5
addps  %xmm1,%xmm5
movss  -0x8(%rsi,%rax,4),%xmm0
unpcklps %xmm2,%xmm0
addps  %xmm5,%xmm0
movss  -0x4(%rsi,%rax,4),%xmm2
unpcklps %xmm3,%xmm2
addps  %xmm0,%xmm2
movss  (%rsi,%rax,4),%xmm1
unpcklps %xmm4,%xmm1
addps  %xmm2,%xmm1
add    $0x4,%rax
cmp    $0x67,%rax
jne    12f0 <double_reduc+0x1f0>
mov    $0x3,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movss  -0xc(%rdi,%rax,4),%xmm0
movss  -0x8(%rdi,%rax,4),%xmm2
movss  -0x4(%rdi,%rax,4),%xmm3
movss  (%rdi,%rax,4),%xmm4
movss  -0xc(%rsi,%rax,4),%xmm5
unpcklps %xmm0,%xmm5
addps  %xmm1,%xmm5
movss  -0x8(%rsi,%rax,4),%xmm0
unpcklps %xmm2,%xmm0
addps  %xmm5,%xmm0
movss  -0x4(%rsi,%rax,4),%xmm2
unpcklps %xmm3,%xmm2
addps  %xmm0,%xmm2
movss  (%rsi,%rax,4),%xmm1
unpcklps %xmm4,%xmm1
addps  %xmm2,%xmm1
add    $0x4,%rax
cmp    $0x67,%rax
jne    1350 <double_reduc+0x250>
mov    $0x3,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movss  -0xc(%rdi,%rax,4),%xmm0
movss  -0x8(%rdi,%rax,4),%xmm2
movss  -0x4(%rdi,%rax,4),%xmm3
movss  (%rdi,%rax,4),%xmm4
movss  -0xc(%rsi,%rax,4),%xmm5
unpcklps %xmm0,%xmm5
addps  %xmm1,%xmm5
movss  -0x8(%rsi,%rax,4),%xmm0
unpcklps %xmm2,%xmm0
addps  %xmm5,%xmm0
movss  -0x4(%rsi,%rax,4),%xmm2
unpcklps %xmm3,%xmm2
addps  %xmm0,%xmm2
movss  (%rsi,%rax,4),%xmm1
unpcklps %xmm4,%xmm1
addps  %xmm2,%xmm1
add    $0x4,%rax
cmp    $0x67,%rax
jne    13b0 <double_reduc+0x2b0>
movaps %xmm1,%xmm0
shufps $0x55,%xmm1,%xmm0
mulss  %xmm1,%xmm0
ret

LLVM IR (-O0):
define float @double_reduc(float* %0, float* %1) {
%3 = alloca float*
%4 = alloca float*
%5 = alloca float
%6 = alloca float
%7 = alloca i32
%8 = alloca i32
store float* %0, float** %3
store float* %1, float** %4
store float 0.000000e+00, float* %5
store float 0.000000e+00, float* %6
store i32 0, i32* %7
br label %9
9: ; preds = %35, %2
%10 = load i32, i32* %7
%11 = icmp slt i32 %10, 8
br i1 %11, label %12, label %38
12: ; preds = %9
store i32 0, i32* %8
br label %13
13: ; preds = %31, %12
%14 = load i32, i32* %8
%15 = icmp slt i32 %14, 100
br i1 %15, label %16, label %34
16: ; preds = %13
%17 = load float*, float** %3
%18 = load i32, i32* %8
%19 = sext i32 %18 to i64
%20 = getelementptr inbounds float, float* %17, i64 %19
%21 = load float, float* %20
%22 = load float, float* %5
%23 = fadd float %22, %21
store float %23, float* %5
%24 = load float*, float** %4
%25 = load i32, i32* %8
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds float, float* %24, i64 %26
%28 = load float, float* %27
%29 = load float, float* %6
%30 = fadd float %29, %28
store float %30, float* %6
br label %31
31: ; preds = %16
%32 = load i32, i32* %8
%33 = add nsw i32 %32, 1
store i32 %33, i32* %8
br label %13
34: ; preds = %13
br label %35
35: ; preds = %34
%36 = load i32, i32* %7
%37 = add nsw i32 %36, 1
store i32 %37, i32* %7
br label %9
38: ; preds = %9
%39 = load float, float* %6
%40 = load float, float* %5
%41 = fmul float %39, %40
ret float %41
}

LLVM IR (-O2):
define float @double_reduc(float* nocapture %0, float* nocapture %1) {
br label %259
3: ; preds = %259, %3
%4 = phi i64 [ %37, %3 ], [ 0, %259 ]
%5 = phi <2 x float> [ %36, %3 ], [ %292, %259 ]
%6 = getelementptr inbounds float, float* %0, i64 %4
%7 = load float, float* %6
%8 = getelementptr inbounds float, float* %1, i64 %4
%9 = load float, float* %8
%10 = insertelement <2 x float> poison, float %9, i64 0
%11 = insertelement <2 x float> %10, float %7, i64 1
%12 = fadd <2 x float> %5, %11
%13 = or i64 %4, 1
%14 = getelementptr inbounds float, float* %0, i64 %13
%15 = load float, float* %14
%16 = getelementptr inbounds float, float* %1, i64 %13
%17 = load float, float* %16
%18 = insertelement <2 x float> poison, float %17, i64 0
%19 = insertelement <2 x float> %18, float %15, i64 1
%20 = fadd <2 x float> %12, %19
%21 = or i64 %4, 2
%22 = getelementptr inbounds float, float* %0, i64 %21
%23 = load float, float* %22
%24 = getelementptr inbounds float, float* %1, i64 %21
%25 = load float, float* %24
%26 = insertelement <2 x float> poison, float %25, i64 0
%27 = insertelement <2 x float> %26, float %23, i64 1
%28 = fadd <2 x float> %20, %27
%29 = or i64 %4, 3
%30 = getelementptr inbounds float, float* %0, i64 %29
%31 = load float, float* %30
%32 = getelementptr inbounds float, float* %1, i64 %29
%33 = load float, float* %32
%34 = insertelement <2 x float> poison, float %33, i64 0
%35 = insertelement <2 x float> %34, float %31, i64 1
%36 = fadd <2 x float> %28, %35
%37 = add nuw nsw i64 %4, 4
%38 = icmp eq i64 %37, 100
br i1 %38, label %39, label %3
39: ; preds = %3, %39
%40 = phi i64 [ %73, %39 ], [ 0, %3 ]
%41 = phi <2 x float> [ %72, %39 ], [ %36, %3 ]
%42 = getelementptr inbounds float, float* %0, i64 %40
%43 = load float, float* %42
%44 = getelementptr inbounds float, float* %1, i64 %40
%45 = load float, float* %44
%46 = insertelement <2 x float> poison, float %45, i64 0
%47 = insertelement <2 x float> %46, float %43, i64 1
%48 = fadd <2 x float> %41, %47
%49 = or i64 %40, 1
%50 = getelementptr inbounds float, float* %0, i64 %49
%51 = load float, float* %50
%52 = getelementptr inbounds float, float* %1, i64 %49
%53 = load float, float* %52
%54 = insertelement <2 x float> poison, float %53, i64 0
%55 = insertelement <2 x float> %54, float %51, i64 1
%56 = fadd <2 x float> %48, %55
%57 = or i64 %40, 2
%58 = getelementptr inbounds float, float* %0, i64 %57
%59 = load float, float* %58
%60 = getelementptr inbounds float, float* %1, i64 %57
%61 = load float, float* %60
%62 = insertelement <2 x float> poison, float %61, i64 0
%63 = insertelement <2 x float> %62, float %59, i64 1
%64 = fadd <2 x float> %56, %63
%65 = or i64 %40, 3
%66 = getelementptr inbounds float, float* %0, i64 %65
%67 = load float, float* %66
%68 = getelementptr inbounds float, float* %1, i64 %65
%69 = load float, float* %68
%70 = insertelement <2 x float> poison, float %69, i64 0
%71 = insertelement <2 x float> %70, float %67, i64 1
%72 = fadd <2 x float> %64, %71
%73 = add nuw nsw i64 %40, 4
%74 = icmp eq i64 %73, 100
br i1 %74, label %75, label %39
75: ; preds = %39, %75
%76 = phi i64 [ %109, %75 ], [ 0, %39 ]
%77 = phi <2 x float> [ %108, %75 ], [ %72, %39 ]
%78 = getelementptr inbounds float, float* %0, i64 %76
%79 = load float, float* %78
%80 = getelementptr inbounds float, float* %1, i64 %76
%81 = load float, float* %80
%82 = insertelement <2 x float> poison, float %81, i64 0
%83 = insertelement <2 x float> %82, float %79, i64 1
%84 = fadd <2 x float> %77, %83
%85 = or i64 %76, 1
%86 = getelementptr inbounds float, float* %0, i64 %85
%87 = load float, float* %86
%88 = getelementptr inbounds float, float* %1, i64 %85
%89 = load float, float* %88
%90 = insertelement <2 x float> poison, float %89, i64 0
%91 = insertelement <2 x float> %90, float %87, i64 1
%92 = fadd <2 x float> %84, %91
%93 = or i64 %76, 2
%94 = getelementptr inbounds float, float* %0, i64 %93
%95 = load float, float* %94
%96 = getelementptr inbounds float, float* %1, i64 %93
%97 = load float, float* %96
%98 = insertelement <2 x float> poison, float %97, i64 0
%99 = insertelement <2 x float> %98, float %95, i64 1
%100 = fadd <2 x float> %92, %99
%101 = or i64 %76, 3
%102 = getelementptr inbounds float, float* %0, i64 %101
%103 = load float, float* %102
%104 = getelementptr inbounds float, float* %1, i64 %101
%105 = load float, float* %104
%106 = insertelement <2 x float> poison, float %105, i64 0
%107 = insertelement <2 x float> %106, float %103, i64 1
%108 = fadd <2 x float> %100, %107
%109 = add nuw nsw i64 %76, 4
%110 = icmp eq i64 %109, 100
br i1 %110, label %111, label %75
111: ; preds = %75, %111
%112 = phi i64 [ %145, %111 ], [ 0, %75 ]
%113 = phi <2 x float> [ %144, %111 ], [ %108, %75 ]
%114 = getelementptr inbounds float, float* %0, i64 %112
%115 = load float, float* %114
%116 = getelementptr inbounds float, float* %1, i64 %112
%117 = load float, float* %116
%118 = insertelement <2 x float> poison, float %117, i64 0
%119 = insertelement <2 x float> %118, float %115, i64 1
%120 = fadd <2 x float> %113, %119
%121 = or i64 %112, 1
%122 = getelementptr inbounds float, float* %0, i64 %121
%123 = load float, float* %122
%124 = getelementptr inbounds float, float* %1, i64 %121
%125 = load float, float* %124
%126 = insertelement <2 x float> poison, float %125, i64 0
%127 = insertelement <2 x float> %126, float %123, i64 1
%128 = fadd <2 x float> %120, %127
%129 = or i64 %112, 2
%130 = getelementptr inbounds float, float* %0, i64 %129
%131 = load float, float* %130
%132 = getelementptr inbounds float, float* %1, i64 %129
%133 = load float, float* %132
%134 = insertelement <2 x float> poison, float %133, i64 0
%135 = insertelement <2 x float> %134, float %131, i64 1
%136 = fadd <2 x float> %128, %135
%137 = or i64 %112, 3
%138 = getelementptr inbounds float, float* %0, i64 %137
%139 = load float, float* %138
%140 = getelementptr inbounds float, float* %1, i64 %137
%141 = load float, float* %140
%142 = insertelement <2 x float> poison, float %141, i64 0
%143 = insertelement <2 x float> %142, float %139, i64 1
%144 = fadd <2 x float> %136, %143
%145 = add nuw nsw i64 %112, 4
%146 = icmp eq i64 %145, 100
br i1 %146, label %147, label %111
147: ; preds = %111, %147
%148 = phi i64 [ %181, %147 ], [ 0, %111 ]
%149 = phi <2 x float> [ %180, %147 ], [ %144, %111 ]
%150 = getelementptr inbounds float, float* %0, i64 %148
%151 = load float, float* %150
%152 = getelementptr inbounds float, float* %1, i64 %148
%153 = load float, float* %152
%154 = insertelement <2 x float> poison, float %153, i64 0
%155 = insertelement <2 x float> %154, float %151, i64 1
%156 = fadd <2 x float> %149, %155
%157 = or i64 %148, 1
%158 = getelementptr inbounds float, float* %0, i64 %157
%159 = load float, float* %158
%160 = getelementptr inbounds float, float* %1, i64 %157
%161 = load float, float* %160
%162 = insertelement <2 x float> poison, float %161, i64 0
%163 = insertelement <2 x float> %162, float %159, i64 1
%164 = fadd <2 x float> %156, %163
%165 = or i64 %148, 2
%166 = getelementptr inbounds float, float* %0, i64 %165
%167 = load float, float* %166
%168 = getelementptr inbounds float, float* %1, i64 %165
%169 = load float, float* %168
%170 = insertelement <2 x float> poison, float %169, i64 0
%171 = insertelement <2 x float> %170, float %167, i64 1
%172 = fadd <2 x float> %164, %171
%173 = or i64 %148, 3
%174 = getelementptr inbounds float, float* %0, i64 %173
%175 = load float, float* %174
%176 = getelementptr inbounds float, float* %1, i64 %173
%177 = load float, float* %176
%178 = insertelement <2 x float> poison, float %177, i64 0
%179 = insertelement <2 x float> %178, float %175, i64 1
%180 = fadd <2 x float> %172, %179
%181 = add nuw nsw i64 %148, 4
%182 = icmp eq i64 %181, 100
br i1 %182, label %183, label %147
183: ; preds = %147, %183
%184 = phi i64 [ %217, %183 ], [ 0, %147 ]
%185 = phi <2 x float> [ %216, %183 ], [ %180, %147 ]
%186 = getelementptr inbounds float, float* %0, i64 %184
%187 = load float, float* %186
%188 = getelementptr inbounds float, float* %1, i64 %184
%189 = load float, float* %188
%190 = insertelement <2 x float> poison, float %189, i64 0
%191 = insertelement <2 x float> %190, float %187, i64 1
%192 = fadd <2 x float> %185, %191
%193 = or i64 %184, 1
%194 = getelementptr inbounds float, float* %0, i64 %193
%195 = load float, float* %194
%196 = getelementptr inbounds float, float* %1, i64 %193
%197 = load float, float* %196
%198 = insertelement <2 x float> poison, float %197, i64 0
%199 = insertelement <2 x float> %198, float %195, i64 1
%200 = fadd <2 x float> %192, %199
%201 = or i64 %184, 2
%202 = getelementptr inbounds float, float* %0, i64 %201
%203 = load float, float* %202
%204 = getelementptr inbounds float, float* %1, i64 %201
%205 = load float, float* %204
%206 = insertelement <2 x float> poison, float %205, i64 0
%207 = insertelement <2 x float> %206, float %203, i64 1
%208 = fadd <2 x float> %200, %207
%209 = or i64 %184, 3
%210 = getelementptr inbounds float, float* %0, i64 %209
%211 = load float, float* %210
%212 = getelementptr inbounds float, float* %1, i64 %209
%213 = load float, float* %212
%214 = insertelement <2 x float> poison, float %213, i64 0
%215 = insertelement <2 x float> %214, float %211, i64 1
%216 = fadd <2 x float> %208, %215
%217 = add nuw nsw i64 %184, 4
%218 = icmp eq i64 %217, 100
br i1 %218, label %219, label %183
219: ; preds = %183, %219
%220 = phi i64 [ %253, %219 ], [ 0, %183 ]
%221 = phi <2 x float> [ %252, %219 ], [ %216, %183 ]
%222 = getelementptr inbounds float, float* %0, i64 %220
%223 = load float, float* %222
%224 = getelementptr inbounds float, float* %1, i64 %220
%225 = load float, float* %224
%226 = insertelement <2 x float> poison, float %225, i64 0
%227 = insertelement <2 x float> %226, float %223, i64 1
%228 = fadd <2 x float> %221, %227
%229 = or i64 %220, 1
%230 = getelementptr inbounds float, float* %0, i64 %229
%231 = load float, float* %230
%232 = getelementptr inbounds float, float* %1, i64 %229
%233 = load float, float* %232
%234 = insertelement <2 x float> poison, float %233, i64 0
%235 = insertelement <2 x float> %234, float %231, i64 1
%236 = fadd <2 x float> %228, %235
%237 = or i64 %220, 2
%238 = getelementptr inbounds float, float* %0, i64 %237
%239 = load float, float* %238
%240 = getelementptr inbounds float, float* %1, i64 %237
%241 = load float, float* %240
%242 = insertelement <2 x float> poison, float %241, i64 0
%243 = insertelement <2 x float> %242, float %239, i64 1
%244 = fadd <2 x float> %236, %243
%245 = or i64 %220, 3
%246 = getelementptr inbounds float, float* %0, i64 %245
%247 = load float, float* %246
%248 = getelementptr inbounds float, float* %1, i64 %245
%249 = load float, float* %248
%250 = insertelement <2 x float> poison, float %249, i64 0
%251 = insertelement <2 x float> %250, float %247, i64 1
%252 = fadd <2 x float> %244, %251
%253 = add nuw nsw i64 %220, 4
%254 = icmp eq i64 %253, 100
br i1 %254, label %255, label %219
255: ; preds = %219
%256 = shufflevector <2 x float> %252, <2 x float> poison, <2 x i32> <i32 1, i32 undef>
%257 = fmul <2 x float> %256, %252
%258 = extractelement <2 x float> %257, i64 0
ret float %258
259: ; preds = %259, %2
%260 = phi i64 [ 0, %2 ], [ %293, %259 ]
%261 = phi <2 x float> [ zeroinitializer, %2 ], [ %292, %259 ]
%262 = getelementptr inbounds float, float* %0, i64 %260
%263 = load float, float* %262
%264 = getelementptr inbounds float, float* %1, i64 %260
%265 = load float, float* %264
%266 = insertelement <2 x float> poison, float %265, i64 0
%267 = insertelement <2 x float> %266, float %263, i64 1
%268 = fadd <2 x float> %261, %267
%269 = or i64 %260, 1
%270 = getelementptr inbounds float, float* %0, i64 %269
%271 = load float, float* %270
%272 = getelementptr inbounds float, float* %1, i64 %269
%273 = load float, float* %272
%274 = insertelement <2 x float> poison, float %273, i64 0
%275 = insertelement <2 x float> %274, float %271, i64 1
%276 = fadd <2 x float> %268, %275
%277 = or i64 %260, 2
%278 = getelementptr inbounds float, float* %0, i64 %277
%279 = load float, float* %278
%280 = getelementptr inbounds float, float* %1, i64 %277
%281 = load float, float* %280
%282 = insertelement <2 x float> poison, float %281, i64 0
%283 = insertelement <2 x float> %282, float %279, i64 1
%284 = fadd <2 x float> %276, %283
%285 = or i64 %260, 3
%286 = getelementptr inbounds float, float* %0, i64 %285
%287 = load float, float* %286
%288 = getelementptr inbounds float, float* %1, i64 %285
%289 = load float, float* %288
%290 = insertelement <2 x float> poison, float %289, i64 0
%291 = insertelement <2 x float> %290, float %287, i64 1
%292 = fadd <2 x float> %284, %291
%293 = add nuw nsw i64 %260, 4
%294 = icmp eq i64 %293, 100
br i1 %294, label %3, label %259
}