__attribute__((no)) void foo(int *__restrict__ a, int *__restrict__ b,
                             int *__restrict__ c) {
  int i;
  for (i = 0; i < 100; i += 4) {
    a[i] = b[i] * c[i];
    a[i + 1] = b[i + 1] * c[i + 1];
    a[i + 2] = b[i + 2] * c[i + 2];
    a[i + 3] = b[i + 3] * c[i + 3];
  }
}


x86 assembly (clang, -O0):
<foo>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x64,-0x1c(%rbp)
jge    11e4 <foo+0xe4>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   (%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   (%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   (%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
imul   (%rax,%rcx,4),%edx
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x1c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x1c(%rbp)
jmp    1117 <foo+0x17>
pop    %rbp
ret

x86 assembly (clang, -O2):
<foo>:
movdqu (%rsi),%xmm0
movdqu (%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,(%rdi)
movdqu 0x10(%rsi),%xmm0
movdqu 0x10(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x10(%rdi)
movdqu 0x20(%rsi),%xmm0
movdqu 0x20(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x20(%rdi)
movdqu 0x30(%rsi),%xmm0
movdqu 0x30(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x30(%rdi)
movdqu 0x40(%rsi),%xmm0
movdqu 0x40(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x40(%rdi)
movdqu 0x50(%rsi),%xmm0
movdqu 0x50(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x50(%rdi)
movdqu 0x60(%rsi),%xmm0
movdqu 0x60(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x60(%rdi)
movdqu 0x70(%rsi),%xmm0
movdqu 0x70(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x70(%rdi)
movdqu 0x80(%rsi),%xmm0
movdqu 0x80(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x80(%rdi)
movdqu 0x90(%rsi),%xmm0
movdqu 0x90(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x90(%rdi)
movdqu 0xa0(%rsi),%xmm0
movdqu 0xa0(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0xa0(%rdi)
movdqu 0xb0(%rsi),%xmm0
movdqu 0xb0(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0xb0(%rdi)
movdqu 0xc0(%rsi),%xmm0
movdqu 0xc0(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0xc0(%rdi)
movdqu 0xd0(%rsi),%xmm0
movdqu 0xd0(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0xd0(%rdi)
movdqu 0xe0(%rsi),%xmm0
movdqu 0xe0(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0xe0(%rdi)
movdqu 0xf0(%rsi),%xmm0
movdqu 0xf0(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0xf0(%rdi)
movdqu 0x100(%rsi),%xmm0
movdqu 0x100(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x100(%rdi)
movdqu 0x110(%rsi),%xmm0
movdqu 0x110(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x110(%rdi)
movdqu 0x120(%rsi),%xmm0
movdqu 0x120(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x120(%rdi)
movdqu 0x130(%rsi),%xmm0
movdqu 0x130(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x130(%rdi)
movdqu 0x140(%rsi),%xmm0
movdqu 0x140(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x140(%rdi)
movdqu 0x150(%rsi),%xmm0
movdqu 0x150(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x150(%rdi)
movdqu 0x160(%rsi),%xmm0
movdqu 0x160(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x160(%rdi)
movdqu 0x170(%rsi),%xmm0
movdqu 0x170(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x170(%rdi)
movdqu 0x180(%rsi),%xmm0
movdqu 0x180(%rdx),%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm0,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x180(%rdi)
ret

LLVM IR (-O0):
define void @foo(i32* noalias %0, i32* noalias %1, i32* noalias %2) {
%4 = alloca i32*
%5 = alloca i32*
%6 = alloca i32*
%7 = alloca i32
store i32* %0, i32** %4
store i32* %1, i32** %5
store i32* %2, i32** %6
store i32 0, i32* %7
br label %8
8: ; preds = %81, %3
%9 = load i32, i32* %7
%10 = icmp slt i32 %9, 100
br i1 %10, label %11, label %84
11: ; preds = %8
%12 = load i32*, i32** %5
%13 = load i32, i32* %7
%14 = sext i32 %13 to i64
%15 = getelementptr inbounds i32, i32* %12, i64 %14
%16 = load i32, i32* %15
%17 = load i32*, i32** %6
%18 = load i32, i32* %7
%19 = sext i32 %18 to i64
%20 = getelementptr inbounds i32, i32* %17, i64 %19
%21 = load i32, i32* %20
%22 = mul nsw i32 %16, %21
%23 = load i32*, i32** %4
%24 = load i32, i32* %7
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds i32, i32* %23, i64 %25
store i32 %22, i32* %26
%27 = load i32*, i32** %5
%28 = load i32, i32* %7
%29 = add nsw i32 %28, 1
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds i32, i32* %27, i64 %30
%32 = load i32, i32* %31
%33 = load i32*, i32** %6
%34 = load i32, i32* %7
%35 = add nsw i32 %34, 1
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds i32, i32* %33, i64 %36
%38 = load i32, i32* %37
%39 = mul nsw i32 %32, %38
%40 = load i32*, i32** %4
%41 = load i32, i32* %7
%42 = add nsw i32 %41, 1
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds i32, i32* %40, i64 %43
store i32 %39, i32* %44
%45 = load i32*, i32** %5
%46 = load i32, i32* %7
%47 = add nsw i32 %46, 2
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds i32, i32* %45, i64 %48
%50 = load i32, i32* %49
%51 = load i32*, i32** %6
%52 = load i32, i32* %7
%53 = add nsw i32 %52, 2
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds i32, i32* %51, i64 %54
%56 = load i32, i32* %55
%57 = mul nsw i32 %50, %56
%58 = load i32*, i32** %4
%59 = load i32, i32* %7
%60 = add nsw i32 %59, 2
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds i32, i32* %58, i64 %61
store i32 %57, i32* %62
%63 = load i32*, i32** %5
%64 = load i32, i32* %7
%65 = add nsw i32 %64, 3
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds i32, i32* %63, i64 %66
%68 = load i32, i32* %67
%69 = load i32*, i32** %6
%70 = load i32, i32* %7
%71 = add nsw i32 %70, 3
%72 = sext i32 %71 to i64
%73 = getelementptr inbounds i32, i32* %69, i64 %72
%74 = load i32, i32* %73
%75 = mul nsw i32 %68, %74
%76 = load i32*, i32** %4
%77 = load i32, i32* %7
%78 = add nsw i32 %77, 3
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds i32, i32* %76, i64 %79
store i32 %75, i32* %80
br label %81
81: ; preds = %11
%82 = load i32, i32* %7
%83 = add nsw i32 %82, 4
store i32 %83, i32* %7
br label %8
84: ; preds = %8
ret void
}

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