#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*/ populate_vector(int *, int, int);
int /*<<< orphan*/ printf(char *, int);
void reduction_example_2() {
  int a[100], b[100], result, i, chunk;
  chunk = 10;
  result = 0.0;
  populate_vector(a, 1, 100);
  populate_vector(b, 3, 100);
#pragma omp parallel for default(shared) private(i) schedule(static,chunk) reduction(+:result)
  for (i = 0; i < 100; i++)
    result = result + (a[i] * b[i]);
  printf("The reducion in example 2 is %d\n", result);
}


x86 assembly (clang, -O0):
<reduction_example_2>:
push   %rbp
mov    %rsp,%rbp
sub    $0x330,%rsp
movl   $0xa,-0x32c(%rbp)
movl   $0x0,-0x324(%rbp)
lea    -0x190(%rbp),%rdi
mov    $0x1,%esi
mov    $0x64,%edx
call   1040 <populate_vector@plt>
lea    -0x320(%rbp),%rdi
mov    $0x3,%esi
mov    $0x64,%edx
call   1040 <populate_vector@plt>
movl   $0x0,-0x328(%rbp)
cmpl   $0x64,-0x328(%rbp)
jge    11c1 <reduction_example_2+0xa1>
mov    -0x324(%rbp),%eax
movslq -0x328(%rbp),%rcx
mov    -0x190(%rbp,%rcx,4),%ecx
movslq -0x328(%rbp),%rdx
imul   -0x320(%rbp,%rdx,4),%ecx
ff
add    %ecx,%eax
mov    %eax,-0x324(%rbp)
mov    -0x328(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x328(%rbp)
jmp    1175 <reduction_example_2+0x55>
mov    -0x324(%rbp),%esi
lea    0xe32(%rip),%rdi
call   1030 <printf@plt>
add    $0x330,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<reduction_example_2>:
sub    $0x328,%rsp
lea    0x190(%rsp),%rdi
mov    $0x1,%esi
mov    $0x64,%edx
call   1040 <populate_vector@plt>
mov    %rsp,%rdi
mov    $0x3,%esi
mov    $0x64,%edx
call   1040 <populate_vector@plt>
movdqa 0x190(%rsp),%xmm2
movdqa 0x1a0(%rsp),%xmm3
movdqa 0x1b0(%rsp),%xmm4
movdqa 0x1c0(%rsp),%xmm8
movdqa (%rsp),%xmm5
movdqa 0x10(%rsp),%xmm6
movdqa 0x20(%rsp),%xmm7
movdqa 0x30(%rsp),%xmm1
pshufd $0xf5,%xmm5,%xmm0
pmuludq %xmm2,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm5
pshufd $0xf5,%xmm6,%xmm0
pmuludq %xmm3,%xmm6
pshufd $0xe8,%xmm6,%xmm2
pshufd $0xf5,%xmm3,%xmm3
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm5,%xmm2
pshufd $0xf5,%xmm7,%xmm0
pmuludq %xmm4,%xmm7
pshufd $0xe8,%xmm7,%xmm3
pshufd $0xf5,%xmm4,%xmm4
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm0
punpckldq %xmm0,%xmm3
pshufd $0xf5,%xmm1,%xmm0
pmuludq %xmm8,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm8,%xmm4
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm0
punpckldq %xmm0,%xmm1
paddd  %xmm3,%xmm1
paddd  %xmm2,%xmm1
movdqa 0x1d0(%rsp),%xmm0
movdqa 0x40(%rsp),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
movdqa 0x1e0(%rsp),%xmm0
movdqa 0x50(%rsp),%xmm3
pshufd $0xf5,%xmm3,%xmm4
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm0
punpckldq %xmm0,%xmm3
paddd  %xmm2,%xmm3
movdqa 0x1f0(%rsp),%xmm2
movdqa 0x60(%rsp),%xmm0
pshufd $0xf5,%xmm0,%xmm4
pmuludq %xmm2,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm2,%xmm4
pshufd $0xe8,%xmm4,%xmm2
punpckldq %xmm2,%xmm0
paddd  %xmm3,%xmm0
paddd  %xmm1,%xmm0
movdqa 0x200(%rsp),%xmm1
movdqa 0x70(%rsp),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm1,%xmm1
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm1
punpckldq %xmm1,%xmm2
movdqa 0x210(%rsp),%xmm1
movdqa 0x80(%rsp),%xmm3
pshufd $0xf5,%xmm3,%xmm4
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pshufd $0xf5,%xmm1,%xmm1
pmuludq %xmm1,%xmm4
pshufd $0xe8,%xmm4,%xmm1
punpckldq %xmm1,%xmm3
paddd  %xmm2,%xmm3
movdqa 0x220(%rsp),%xmm1
movdqa 0x90(%rsp),%xmm2
pshufd $0xf5,%xmm2,%xmm4
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm1,%xmm1
pmuludq %xmm1,%xmm4
pshufd $0xe8,%xmm4,%xmm1
punpckldq %xmm1,%xmm2
paddd  %xmm3,%xmm2
movdqa 0x230(%rsp),%xmm3
movdqa 0xa0(%rsp),%xmm1
pshufd $0xf5,%xmm1,%xmm4
pmuludq %xmm3,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm3,%xmm3
pmuludq %xmm3,%xmm4
pshufd $0xe8,%xmm4,%xmm3
punpckldq %xmm3,%xmm1
paddd  %xmm2,%xmm1
paddd  %xmm0,%xmm1
movdqa 0x240(%rsp),%xmm0
movdqa 0xb0(%rsp),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
movdqa 0x250(%rsp),%xmm0
movdqa 0xc0(%rsp),%xmm3
pshufd $0xf5,%xmm3,%xmm4
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm0
punpckldq %xmm0,%xmm3
paddd  %xmm2,%xmm3
movdqa 0x260(%rsp),%xmm0
movdqa 0xd0(%rsp),%xmm2
pshufd $0xf5,%xmm2,%xmm4
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm3,%xmm2
movdqa 0x270(%rsp),%xmm0
movdqa 0xe0(%rsp),%xmm3
pshufd $0xf5,%xmm3,%xmm4
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm0
punpckldq %xmm0,%xmm3
paddd  %xmm2,%xmm3
movdqa 0x280(%rsp),%xmm2
movdqa 0xf0(%rsp),%xmm0
pshufd $0xf5,%xmm0,%xmm4
pmuludq %xmm2,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm2,%xmm4
pshufd $0xe8,%xmm4,%xmm2
punpckldq %xmm2,%xmm0
paddd  %xmm3,%xmm0
paddd  %xmm1,%xmm0
movdqa 0x290(%rsp),%xmm1
movdqa 0x100(%rsp),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm1,%xmm1
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm1
punpckldq %xmm1,%xmm2
movdqa 0x2a0(%rsp),%xmm1
movdqa 0x110(%rsp),%xmm3
pshufd $0xf5,%xmm3,%xmm4
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pshufd $0xf5,%xmm1,%xmm1
pmuludq %xmm1,%xmm4
pshufd $0xe8,%xmm4,%xmm1
punpckldq %xmm1,%xmm3
paddd  %xmm2,%xmm3
movdqa 0x2b0(%rsp),%xmm1
movdqa 0x120(%rsp),%xmm2
pshufd $0xf5,%xmm2,%xmm4
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm1,%xmm1
pmuludq %xmm1,%xmm4
pshufd $0xe8,%xmm4,%xmm1
punpckldq %xmm1,%xmm2
paddd  %xmm3,%xmm2
movdqa 0x2c0(%rsp),%xmm1
movdqa 0x130(%rsp),%xmm3
pshufd $0xf5,%xmm3,%xmm4
pmuludq %xmm1,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pshufd $0xf5,%xmm1,%xmm1
pmuludq %xmm1,%xmm4
pshufd $0xe8,%xmm4,%xmm1
punpckldq %xmm1,%xmm3
paddd  %xmm2,%xmm3
movdqa 0x2d0(%rsp),%xmm1
movdqa 0x140(%rsp),%xmm2
pshufd $0xf5,%xmm2,%xmm4
pmuludq %xmm1,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm1,%xmm1
pmuludq %xmm1,%xmm4
pshufd $0xe8,%xmm4,%xmm1
punpckldq %xmm1,%xmm2
paddd  %xmm3,%xmm2
movdqa 0x2e0(%rsp),%xmm3
movdqa 0x150(%rsp),%xmm1
pshufd $0xf5,%xmm1,%xmm4
pmuludq %xmm3,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm3,%xmm3
pmuludq %xmm3,%xmm4
pshufd $0xe8,%xmm4,%xmm3
punpckldq %xmm3,%xmm1
paddd  %xmm2,%xmm1
paddd  %xmm0,%xmm1
movdqa 0x2f0(%rsp),%xmm0
movdqa 0x160(%rsp),%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm2
movdqa 0x300(%rsp),%xmm0
movdqa 0x170(%rsp),%xmm3
pshufd $0xf5,%xmm3,%xmm4
pmuludq %xmm0,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm0
punpckldq %xmm0,%xmm3
paddd  %xmm2,%xmm3
movdqa 0x310(%rsp),%xmm0
movdqa 0x180(%rsp),%xmm2
pshufd $0xf5,%xmm2,%xmm4
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm3,%xmm2
paddd  %xmm1,%xmm2
pshufd $0xee,%xmm2,%xmm0
paddd  %xmm2,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%esi
lea    0x967(%rip),%rdi
call   1030 <printf@plt>
add    $0x328,%rsp
ret

LLVM IR (-O0):
@.str = [33 x i8] c"The reducion in example 2 is %d\0A\00"
define void @reduction_example_2() {
%1 = alloca [100 x i32]
%2 = alloca [100 x i32]
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
store i32 10, i32* %5
store i32 0, i32* %3
%6 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 0
%7 = call i32 @populate_vector(i32* %6, i32 1, i32 100)
%8 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 0
%9 = call i32 @populate_vector(i32* %8, i32 3, i32 100)
store i32 0, i32* %4
br label %10
10: ; preds = %25, %0
%11 = load i32, i32* %4
%12 = icmp slt i32 %11, 100
br i1 %12, label %13, label %28
13: ; preds = %10
%14 = load i32, i32* %3
%15 = load i32, i32* %4
%16 = sext i32 %15 to i64
%17 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 %16
%18 = load i32, i32* %17
%19 = load i32, i32* %4
%20 = sext i32 %19 to i64
%21 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %20
%22 = load i32, i32* %21
%23 = mul nsw i32 %18, %22
%24 = add nsw i32 %14, %23
store i32 %24, i32* %3
br label %25
25: ; preds = %13
%26 = load i32, i32* %4
%27 = add nsw i32 %26, 1
store i32 %27, i32* %4
br label %10
28: ; preds = %10
%29 = load i32, i32* %3
%30 = call i32 @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %29)
ret void
}

LLVM IR (-O2):
@.str = [33 x i8] c"The reducion in example 2 is %d\0A\00"
define void @reduction_example_2() {
%1 = alloca [100 x i32]
%2 = alloca [100 x i32]
%3 = bitcast [100 x i32]* %1 to i8*
%4 = bitcast [100 x i32]* %2 to i8*
%5 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 0
%6 = call i32 @populate_vector(i32* %5, i32 1, i32 100)
%7 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 0
%8 = call i32 @populate_vector(i32* %7, i32 3, i32 100)
%9 = bitcast [100 x i32]* %1 to <4 x i32>*
%10 = load <4 x i32>, <4 x i32>* %9
%11 = bitcast [100 x i32]* %2 to <4 x i32>*
%12 = load <4 x i32>, <4 x i32>* %11
%13 = mul nsw <4 x i32> %12, %10
%14 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 4
%15 = bitcast i32* %14 to <4 x i32>*
%16 = load <4 x i32>, <4 x i32>* %15
%17 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 4
%18 = bitcast i32* %17 to <4 x i32>*
%19 = load <4 x i32>, <4 x i32>* %18
%20 = mul nsw <4 x i32> %19, %16
%21 = add <4 x i32> %20, %13
%22 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 8
%23 = bitcast i32* %22 to <4 x i32>*
%24 = load <4 x i32>, <4 x i32>* %23
%25 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 8
%26 = bitcast i32* %25 to <4 x i32>*
%27 = load <4 x i32>, <4 x i32>* %26
%28 = mul nsw <4 x i32> %27, %24
%29 = add <4 x i32> %28, %21
%30 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 12
%31 = bitcast i32* %30 to <4 x i32>*
%32 = load <4 x i32>, <4 x i32>* %31
%33 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 12
%34 = bitcast i32* %33 to <4 x i32>*
%35 = load <4 x i32>, <4 x i32>* %34
%36 = mul nsw <4 x i32> %35, %32
%37 = add <4 x i32> %36, %29
%38 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 16
%39 = bitcast i32* %38 to <4 x i32>*
%40 = load <4 x i32>, <4 x i32>* %39
%41 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 16
%42 = bitcast i32* %41 to <4 x i32>*
%43 = load <4 x i32>, <4 x i32>* %42
%44 = mul nsw <4 x i32> %43, %40
%45 = add <4 x i32> %44, %37
%46 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 20
%47 = bitcast i32* %46 to <4 x i32>*
%48 = load <4 x i32>, <4 x i32>* %47
%49 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 20
%50 = bitcast i32* %49 to <4 x i32>*
%51 = load <4 x i32>, <4 x i32>* %50
%52 = mul nsw <4 x i32> %51, %48
%53 = add <4 x i32> %52, %45
%54 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 24
%55 = bitcast i32* %54 to <4 x i32>*
%56 = load <4 x i32>, <4 x i32>* %55
%57 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 24
%58 = bitcast i32* %57 to <4 x i32>*
%59 = load <4 x i32>, <4 x i32>* %58
%60 = mul nsw <4 x i32> %59, %56
%61 = add <4 x i32> %60, %53
%62 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 28
%63 = bitcast i32* %62 to <4 x i32>*
%64 = load <4 x i32>, <4 x i32>* %63
%65 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 28
%66 = bitcast i32* %65 to <4 x i32>*
%67 = load <4 x i32>, <4 x i32>* %66
%68 = mul nsw <4 x i32> %67, %64
%69 = add <4 x i32> %68, %61
%70 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 32
%71 = bitcast i32* %70 to <4 x i32>*
%72 = load <4 x i32>, <4 x i32>* %71
%73 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 32
%74 = bitcast i32* %73 to <4 x i32>*
%75 = load <4 x i32>, <4 x i32>* %74
%76 = mul nsw <4 x i32> %75, %72
%77 = add <4 x i32> %76, %69
%78 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 36
%79 = bitcast i32* %78 to <4 x i32>*
%80 = load <4 x i32>, <4 x i32>* %79
%81 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 36
%82 = bitcast i32* %81 to <4 x i32>*
%83 = load <4 x i32>, <4 x i32>* %82
%84 = mul nsw <4 x i32> %83, %80
%85 = add <4 x i32> %84, %77
%86 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 40
%87 = bitcast i32* %86 to <4 x i32>*
%88 = load <4 x i32>, <4 x i32>* %87
%89 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 40
%90 = bitcast i32* %89 to <4 x i32>*
%91 = load <4 x i32>, <4 x i32>* %90
%92 = mul nsw <4 x i32> %91, %88
%93 = add <4 x i32> %92, %85
%94 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 44
%95 = bitcast i32* %94 to <4 x i32>*
%96 = load <4 x i32>, <4 x i32>* %95
%97 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 44
%98 = bitcast i32* %97 to <4 x i32>*
%99 = load <4 x i32>, <4 x i32>* %98
%100 = mul nsw <4 x i32> %99, %96
%101 = add <4 x i32> %100, %93
%102 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 48
%103 = bitcast i32* %102 to <4 x i32>*
%104 = load <4 x i32>, <4 x i32>* %103
%105 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 48
%106 = bitcast i32* %105 to <4 x i32>*
%107 = load <4 x i32>, <4 x i32>* %106
%108 = mul nsw <4 x i32> %107, %104
%109 = add <4 x i32> %108, %101
%110 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 52
%111 = bitcast i32* %110 to <4 x i32>*
%112 = load <4 x i32>, <4 x i32>* %111
%113 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 52
%114 = bitcast i32* %113 to <4 x i32>*
%115 = load <4 x i32>, <4 x i32>* %114
%116 = mul nsw <4 x i32> %115, %112
%117 = add <4 x i32> %116, %109
%118 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 56
%119 = bitcast i32* %118 to <4 x i32>*
%120 = load <4 x i32>, <4 x i32>* %119
%121 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 56
%122 = bitcast i32* %121 to <4 x i32>*
%123 = load <4 x i32>, <4 x i32>* %122
%124 = mul nsw <4 x i32> %123, %120
%125 = add <4 x i32> %124, %117
%126 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 60
%127 = bitcast i32* %126 to <4 x i32>*
%128 = load <4 x i32>, <4 x i32>* %127
%129 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 60
%130 = bitcast i32* %129 to <4 x i32>*
%131 = load <4 x i32>, <4 x i32>* %130
%132 = mul nsw <4 x i32> %131, %128
%133 = add <4 x i32> %132, %125
%134 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 64
%135 = bitcast i32* %134 to <4 x i32>*
%136 = load <4 x i32>, <4 x i32>* %135
%137 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 64
%138 = bitcast i32* %137 to <4 x i32>*
%139 = load <4 x i32>, <4 x i32>* %138
%140 = mul nsw <4 x i32> %139, %136
%141 = add <4 x i32> %140, %133
%142 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 68
%143 = bitcast i32* %142 to <4 x i32>*
%144 = load <4 x i32>, <4 x i32>* %143
%145 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 68
%146 = bitcast i32* %145 to <4 x i32>*
%147 = load <4 x i32>, <4 x i32>* %146
%148 = mul nsw <4 x i32> %147, %144
%149 = add <4 x i32> %148, %141
%150 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 72
%151 = bitcast i32* %150 to <4 x i32>*
%152 = load <4 x i32>, <4 x i32>* %151
%153 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 72
%154 = bitcast i32* %153 to <4 x i32>*
%155 = load <4 x i32>, <4 x i32>* %154
%156 = mul nsw <4 x i32> %155, %152
%157 = add <4 x i32> %156, %149
%158 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 76
%159 = bitcast i32* %158 to <4 x i32>*
%160 = load <4 x i32>, <4 x i32>* %159
%161 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 76
%162 = bitcast i32* %161 to <4 x i32>*
%163 = load <4 x i32>, <4 x i32>* %162
%164 = mul nsw <4 x i32> %163, %160
%165 = add <4 x i32> %164, %157
%166 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 80
%167 = bitcast i32* %166 to <4 x i32>*
%168 = load <4 x i32>, <4 x i32>* %167
%169 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 80
%170 = bitcast i32* %169 to <4 x i32>*
%171 = load <4 x i32>, <4 x i32>* %170
%172 = mul nsw <4 x i32> %171, %168
%173 = add <4 x i32> %172, %165
%174 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 84
%175 = bitcast i32* %174 to <4 x i32>*
%176 = load <4 x i32>, <4 x i32>* %175
%177 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 84
%178 = bitcast i32* %177 to <4 x i32>*
%179 = load <4 x i32>, <4 x i32>* %178
%180 = mul nsw <4 x i32> %179, %176
%181 = add <4 x i32> %180, %173
%182 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 88
%183 = bitcast i32* %182 to <4 x i32>*
%184 = load <4 x i32>, <4 x i32>* %183
%185 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 88
%186 = bitcast i32* %185 to <4 x i32>*
%187 = load <4 x i32>, <4 x i32>* %186
%188 = mul nsw <4 x i32> %187, %184
%189 = add <4 x i32> %188, %181
%190 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 92
%191 = bitcast i32* %190 to <4 x i32>*
%192 = load <4 x i32>, <4 x i32>* %191
%193 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 92
%194 = bitcast i32* %193 to <4 x i32>*
%195 = load <4 x i32>, <4 x i32>* %194
%196 = mul nsw <4 x i32> %195, %192
%197 = add <4 x i32> %196, %189
%198 = getelementptr inbounds [100 x i32], [100 x i32]* %1, i64 0, i64 96
%199 = bitcast i32* %198 to <4 x i32>*
%200 = load <4 x i32>, <4 x i32>* %199
%201 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 96
%202 = bitcast i32* %201 to <4 x i32>*
%203 = load <4 x i32>, <4 x i32>* %202
%204 = mul nsw <4 x i32> %203, %200
%205 = add <4 x i32> %204, %197
%206 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %205)
%207 = call i32 @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %206)
ret void
}