void dsyrk_codegen_1(double *A, double *C) {
  const int n = 4 + 0 * 40 + 1 * 4;
  const int lda = 4 + 0 * 40 + 1 * 4;
  double temp;
  int ii, jj, kk;
  for (jj = 0; jj < n; jj++) {
    for (kk = 0; kk < n; kk++) {
      temp = A[jj + lda * kk];
      for (ii = jj; ii < n; ii++) {
        C[ii + lda * jj] += temp * A[ii + lda * kk];
      }
    }
  }
}


x86 assembly (clang, -O0):
<dsyrk_codegen_1>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x8,-0x14(%rbp)
movl   $0x8,-0x18(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x8,-0x28(%rbp)
jge    11dc <dsyrk_codegen_1+0xdc>
movl   $0x0,-0x2c(%rbp)
cmpl   $0x8,-0x2c(%rbp)
jge    11c9 <dsyrk_codegen_1+0xc9>
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%ecx
mov    -0x2c(%rbp),%edx
shl    $0x3,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x28(%rbp),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x8,-0x24(%rbp)
jge    11b6 <dsyrk_codegen_1+0xb6>
movsd  -0x20(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
mov    -0x2c(%rbp),%edx
shl    $0x3,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
mov    -0x28(%rbp),%edx
shl    $0x3,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    115e <dsyrk_codegen_1+0x5e>
jmp    11bb <dsyrk_codegen_1+0xbb>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1132 <dsyrk_codegen_1+0x32>
jmp    11ce <dsyrk_codegen_1+0xce>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1121 <dsyrk_codegen_1+0x21>
pop    %rbp
ret

x86 assembly (clang, -O2):
<dsyrk_codegen_1>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
lea    0x40(%rdi),%r8
lea    0x38(%rsi),%rcx
lea    0x38(%rdi),%r10
mov    $0x3,%r9d
xor    %r14d,%r14d
mov    %rsi,%rax
jmp    114a <dsyrk_codegen_1+0x4a>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x48,%rcx
add    $0x8,%r10
add    $0xffffffffffffffff,%r9
add    $0x40,%rax
cmp    $0x8,%r14
je     1b63 <dsyrk_codegen_1+0xa63>
mov    %r14,%rdx
lea    (%r14,%r14,8),%r15
lea    0x0(,%r14,8),%r11
lea    0x1(%r14),%r12
movsd  (%rdi,%r14,8),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%r15,8),%xmm1
movsd  %xmm1,(%rsi,%r15,8)
cmp    $0x8,%r12
je     1323 <dsyrk_codegen_1+0x223>
mov    $0x7,%r14d
sub    %rdx,%r14
cmp    $0x4,%r14
jb     12c0 <dsyrk_codegen_1+0x1c0>
lea    (%rsi,%r15,8),%rbx
add    $0x8,%rbx
cmp    %r8,%rbx
jae    11c0 <dsyrk_codegen_1+0xc0>
mov    %rdx,%rbx
shl    $0x6,%rbx
add    %rsi,%rbx
add    $0x40,%rbx
lea    (%rdi,%rdx,8),%rbp
add    $0x8,%rbp
cmp    %rbx,%rbp
jb     12c0 <dsyrk_codegen_1+0x1c0>
mov    $0x3,%ebx
sub    %rdx,%rbx
mov    %rbx,%r13
shr    $0x2,%r13
add    $0x1,%r13
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
cmp    $0x4,%rbx
jae    11e8 <dsyrk_codegen_1+0xe8>
xor    %ebx,%ebx
jmp    1273 <dsyrk_codegen_1+0x173>
mov    %r9,%rbp
shr    $0x2,%rbp
add    $0x1,%rbp
and    $0xfffffffffffffffe,%rbp
xor    %ebx,%ebx
nopl   0x0(%rax)
movupd -0x30(%r10,%rbx,8),%xmm2
movupd -0x20(%r10,%rbx,8),%xmm3
mulpd  %xmm1,%xmm2
movupd -0x30(%rcx,%rbx,8),%xmm4
addpd  %xmm2,%xmm4
movupd -0x20(%rcx,%rbx,8),%xmm2
movupd -0x10(%rcx,%rbx,8),%xmm5
movupd (%rcx,%rbx,8),%xmm6
mulpd  %xmm1,%xmm3
addpd  %xmm2,%xmm3
movupd %xmm4,-0x30(%rcx,%rbx,8)
movupd %xmm3,-0x20(%rcx,%rbx,8)
movupd -0x10(%r10,%rbx,8),%xmm2
movupd (%r10,%rbx,8),%xmm3
mulpd  %xmm1,%xmm2
addpd  %xmm5,%xmm2
mulpd  %xmm1,%xmm3
addpd  %xmm6,%xmm3
movupd %xmm2,-0x10(%rcx,%rbx,8)
movupd %xmm3,(%rcx,%rbx,8)
add    $0x8,%rbx
add    $0xfffffffffffffffe,%rbp
jne    1200 <dsyrk_codegen_1+0x100>
mov    %r14,%rbp
and    $0xfffffffffffffffc,%rbp
test   $0x1,%r13b
je     12b7 <dsyrk_codegen_1+0x1b7>
add    %r12,%rbx
movupd (%rdi,%rbx,8),%xmm2
movupd 0x10(%rdi,%rbx,8),%xmm3
add    %r11,%rbx
movupd (%rsi,%rbx,8),%xmm4
movupd 0x10(%rsi,%rbx,8),%xmm5
mulpd  %xmm1,%xmm2
addpd  %xmm4,%xmm2
mulpd  %xmm1,%xmm3
addpd  %xmm5,%xmm3
movupd %xmm2,(%rsi,%rbx,8)
movupd %xmm3,0x10(%rsi,%rbx,8)
cmp    %rbp,%r14
je     1323 <dsyrk_codegen_1+0x223>
add    %rbp,%r12
nop
mov    %r12,%rbx
test   $0x1,%r12b
je     12e6 <dsyrk_codegen_1+0x1e6>
lea    (%r12,%r11,1),%rbx
movsd  (%rdi,%r12,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x1(%r12),%rbx
cmp    $0x7,%r12
je     1323 <dsyrk_codegen_1+0x223>
add    $0x1,%rbx
movsd  -0x8(%rdi,%rbx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  -0x8(%rax,%rbx,8),%xmm1
movsd  %xmm1,-0x8(%rax,%rbx,8)
movsd  (%rdi,%rbx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rax,%rbx,8),%xmm1
movsd  %xmm1,(%rax,%rbx,8)
add    $0x2,%rbx
cmp    $0x9,%rbx
jne    12f0 <dsyrk_codegen_1+0x1f0>
movsd  0x40(%rdi,%rdx,8),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%r15,8),%xmm1
movsd  %xmm1,(%rsi,%r15,8)
lea    0x1(%rdx),%r14
cmp    $0x8,%r14
je     1440 <dsyrk_codegen_1+0x340>
lea    (%r14,%r11,1),%rbx
movsd  0x48(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x2(%rdx),%rbx
cmp    $0x8,%rbx
je     1440 <dsyrk_codegen_1+0x340>
add    %r11,%rbx
movsd  0x50(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x3(%rdx),%rbx
cmp    $0x8,%rbx
je     1440 <dsyrk_codegen_1+0x340>
add    %r11,%rbx
movsd  0x58(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x4(%rdx),%rbx
cmp    $0x8,%rbx
je     1440 <dsyrk_codegen_1+0x340>
add    %r11,%rbx
movsd  0x60(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x5(%rdx),%rbx
cmp    $0x8,%rbx
je     1440 <dsyrk_codegen_1+0x340>
add    %r11,%rbx
movsd  0x68(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x6(%rdx),%rbx
cmp    $0x8,%rbx
je     1440 <dsyrk_codegen_1+0x340>
add    %r11,%rbx
movsd  0x70(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x7(%rdx),%rbx
cmp    $0x8,%rbx
je     1440 <dsyrk_codegen_1+0x340>
mulsd  0x78(%rdi,%rdx,8),%xmm0
add    %r11,%rbx
addsd  (%rsi,%rbx,8),%xmm0
movsd  %xmm0,(%rsi,%rbx,8)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  0x80(%rdi,%rdx,8),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%r15,8),%xmm1
movsd  %xmm1,(%rsi,%r15,8)
cmp    $0x8,%r14
je     1570 <dsyrk_codegen_1+0x470>
lea    (%r14,%r11,1),%rbx
movsd  0x88(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x2(%rdx),%rbx
cmp    $0x8,%rbx
je     1570 <dsyrk_codegen_1+0x470>
add    %r11,%rbx
movsd  0x90(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x3(%rdx),%rbx
cmp    $0x8,%rbx
je     1570 <dsyrk_codegen_1+0x470>
add    %r11,%rbx
movsd  0x98(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x4(%rdx),%rbx
cmp    $0x8,%rbx
je     1570 <dsyrk_codegen_1+0x470>
add    %r11,%rbx
movsd  0xa0(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x5(%rdx),%rbx
cmp    $0x8,%rbx
je     1570 <dsyrk_codegen_1+0x470>
add    %r11,%rbx
movsd  0xa8(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x6(%rdx),%rbx
cmp    $0x8,%rbx
je     1570 <dsyrk_codegen_1+0x470>
add    %r11,%rbx
movsd  0xb0(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x7(%rdx),%rbx
cmp    $0x8,%rbx
je     1570 <dsyrk_codegen_1+0x470>
mulsd  0xb8(%rdi,%rdx,8),%xmm0
add    %r11,%rbx
addsd  (%rsi,%rbx,8),%xmm0
movsd  %xmm0,(%rsi,%rbx,8)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  0xc0(%rdi,%rdx,8),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%r15,8),%xmm1
movsd  %xmm1,(%rsi,%r15,8)
cmp    $0x8,%r14
je     16a0 <dsyrk_codegen_1+0x5a0>
lea    (%r14,%r11,1),%rbx
movsd  0xc8(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x2(%rdx),%rbx
cmp    $0x8,%rbx
je     16a0 <dsyrk_codegen_1+0x5a0>
add    %r11,%rbx
movsd  0xd0(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x3(%rdx),%rbx
cmp    $0x8,%rbx
je     16a0 <dsyrk_codegen_1+0x5a0>
add    %r11,%rbx
movsd  0xd8(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x4(%rdx),%rbx
cmp    $0x8,%rbx
je     16a0 <dsyrk_codegen_1+0x5a0>
add    %r11,%rbx
movsd  0xe0(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x5(%rdx),%rbx
cmp    $0x8,%rbx
je     16a0 <dsyrk_codegen_1+0x5a0>
add    %r11,%rbx
movsd  0xe8(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x6(%rdx),%rbx
cmp    $0x8,%rbx
je     16a0 <dsyrk_codegen_1+0x5a0>
add    %r11,%rbx
movsd  0xf0(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x7(%rdx),%rbx
cmp    $0x8,%rbx
je     16a0 <dsyrk_codegen_1+0x5a0>
mulsd  0xf8(%rdi,%rdx,8),%xmm0
add    %r11,%rbx
addsd  (%rsi,%rbx,8),%xmm0
movsd  %xmm0,(%rsi,%rbx,8)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  0x100(%rdi,%rdx,8),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%r15,8),%xmm1
movsd  %xmm1,(%rsi,%r15,8)
cmp    $0x8,%r14
je     17d0 <dsyrk_codegen_1+0x6d0>
lea    (%r14,%r11,1),%rbx
movsd  0x108(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x2(%rdx),%rbx
cmp    $0x8,%rbx
je     17d0 <dsyrk_codegen_1+0x6d0>
add    %r11,%rbx
movsd  0x110(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x3(%rdx),%rbx
cmp    $0x8,%rbx
je     17d0 <dsyrk_codegen_1+0x6d0>
add    %r11,%rbx
movsd  0x118(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x4(%rdx),%rbx
cmp    $0x8,%rbx
je     17d0 <dsyrk_codegen_1+0x6d0>
add    %r11,%rbx
movsd  0x120(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x5(%rdx),%rbx
cmp    $0x8,%rbx
je     17d0 <dsyrk_codegen_1+0x6d0>
add    %r11,%rbx
movsd  0x128(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x6(%rdx),%rbx
cmp    $0x8,%rbx
je     17d0 <dsyrk_codegen_1+0x6d0>
add    %r11,%rbx
movsd  0x130(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x7(%rdx),%rbx
cmp    $0x8,%rbx
je     17d0 <dsyrk_codegen_1+0x6d0>
mulsd  0x138(%rdi,%rdx,8),%xmm0
add    %r11,%rbx
addsd  (%rsi,%rbx,8),%xmm0
movsd  %xmm0,(%rsi,%rbx,8)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  0x140(%rdi,%rdx,8),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%r15,8),%xmm1
movsd  %xmm1,(%rsi,%r15,8)
cmp    $0x8,%r14
je     1900 <dsyrk_codegen_1+0x800>
lea    (%r14,%r11,1),%rbx
movsd  0x148(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x2(%rdx),%rbx
cmp    $0x8,%rbx
je     1900 <dsyrk_codegen_1+0x800>
add    %r11,%rbx
movsd  0x150(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x3(%rdx),%rbx
cmp    $0x8,%rbx
je     1900 <dsyrk_codegen_1+0x800>
add    %r11,%rbx
movsd  0x158(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x4(%rdx),%rbx
cmp    $0x8,%rbx
je     1900 <dsyrk_codegen_1+0x800>
add    %r11,%rbx
movsd  0x160(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x5(%rdx),%rbx
cmp    $0x8,%rbx
je     1900 <dsyrk_codegen_1+0x800>
add    %r11,%rbx
movsd  0x168(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x6(%rdx),%rbx
cmp    $0x8,%rbx
je     1900 <dsyrk_codegen_1+0x800>
add    %r11,%rbx
movsd  0x170(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x7(%rdx),%rbx
cmp    $0x8,%rbx
je     1900 <dsyrk_codegen_1+0x800>
mulsd  0x178(%rdi,%rdx,8),%xmm0
add    %r11,%rbx
addsd  (%rsi,%rbx,8),%xmm0
movsd  %xmm0,(%rsi,%rbx,8)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  0x180(%rdi,%rdx,8),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%r15,8),%xmm1
movsd  %xmm1,(%rsi,%r15,8)
cmp    $0x8,%r14
je     1a30 <dsyrk_codegen_1+0x930>
lea    (%r14,%r11,1),%rbx
movsd  0x188(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x2(%rdx),%rbx
cmp    $0x8,%rbx
je     1a30 <dsyrk_codegen_1+0x930>
add    %r11,%rbx
movsd  0x190(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x3(%rdx),%rbx
cmp    $0x8,%rbx
je     1a30 <dsyrk_codegen_1+0x930>
add    %r11,%rbx
movsd  0x198(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x4(%rdx),%rbx
cmp    $0x8,%rbx
je     1a30 <dsyrk_codegen_1+0x930>
add    %r11,%rbx
movsd  0x1a0(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x5(%rdx),%rbx
cmp    $0x8,%rbx
je     1a30 <dsyrk_codegen_1+0x930>
add    %r11,%rbx
movsd  0x1a8(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x6(%rdx),%rbx
cmp    $0x8,%rbx
je     1a30 <dsyrk_codegen_1+0x930>
add    %r11,%rbx
movsd  0x1b0(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x7(%rdx),%rbx
cmp    $0x8,%rbx
je     1a30 <dsyrk_codegen_1+0x930>
mulsd  0x1b8(%rdi,%rdx,8),%xmm0
add    %r11,%rbx
addsd  (%rsi,%rbx,8),%xmm0
movsd  %xmm0,(%rsi,%rbx,8)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  0x1c0(%rdi,%rdx,8),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%r15,8),%xmm1
movsd  %xmm1,(%rsi,%r15,8)
cmp    $0x8,%r14
je     1130 <dsyrk_codegen_1+0x30>
lea    (%r14,%r11,1),%rbx
movsd  0x1c8(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x2(%rdx),%rbx
cmp    $0x8,%rbx
je     1130 <dsyrk_codegen_1+0x30>
add    %r11,%rbx
movsd  0x1d0(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x3(%rdx),%rbx
cmp    $0x8,%rbx
je     1130 <dsyrk_codegen_1+0x30>
add    %r11,%rbx
movsd  0x1d8(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x4(%rdx),%rbx
cmp    $0x8,%rbx
je     1130 <dsyrk_codegen_1+0x30>
add    %r11,%rbx
movsd  0x1e0(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x5(%rdx),%rbx
cmp    $0x8,%rbx
je     1130 <dsyrk_codegen_1+0x30>
add    %r11,%rbx
movsd  0x1e8(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x6(%rdx),%rbx
cmp    $0x8,%rbx
je     1130 <dsyrk_codegen_1+0x30>
add    %r11,%rbx
movsd  0x1f0(%rdi,%rdx,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rsi,%rbx,8),%xmm1
movsd  %xmm1,(%rsi,%rbx,8)
lea    0x7(%rdx),%rbx
cmp    $0x8,%rbx
je     1130 <dsyrk_codegen_1+0x30>
mulsd  0x1f8(%rdi,%rdx,8),%xmm0
add    %r11,%rbx
addsd  (%rsi,%rbx,8),%xmm0
movsd  %xmm0,(%rsi,%rbx,8)
jmp    1130 <dsyrk_codegen_1+0x30>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @dsyrk_codegen_1(double* %0, double* %1) {
%3 = alloca double*
%4 = alloca double*
%5 = alloca i32
%6 = alloca i32
%7 = alloca double
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
store double* %0, double** %3
store double* %1, double** %4
store i32 8, i32* %5
store i32 8, i32* %6
store i32 0, i32* %9
br label %11
11: ; preds = %58, %2
%12 = load i32, i32* %9
%13 = icmp slt i32 %12, 8
br i1 %13, label %14, label %61
14: ; preds = %11
store i32 0, i32* %10
br label %15
15: ; preds = %54, %14
%16 = load i32, i32* %10
%17 = icmp slt i32 %16, 8
br i1 %17, label %18, label %57
18: ; preds = %15
%19 = load double*, double** %3
%20 = load i32, i32* %9
%21 = load i32, i32* %10
%22 = mul nsw i32 8, %21
%23 = add nsw i32 %20, %22
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds double, double* %19, i64 %24
%26 = load double, double* %25
store double %26, double* %7
%27 = load i32, i32* %9
store i32 %27, i32* %8
br label %28
28: ; preds = %50, %18
%29 = load i32, i32* %8
%30 = icmp slt i32 %29, 8
br i1 %30, label %31, label %53
31: ; preds = %28
%32 = load double, double* %7
%33 = load double*, double** %3
%34 = load i32, i32* %8
%35 = load i32, i32* %10
%36 = mul nsw i32 8, %35
%37 = add nsw i32 %34, %36
%38 = sext i32 %37 to i64
%39 = getelementptr inbounds double, double* %33, i64 %38
%40 = load double, double* %39
%41 = load double*, double** %4
%42 = load i32, i32* %8
%43 = load i32, i32* %9
%44 = mul nsw i32 8, %43
%45 = add nsw i32 %42, %44
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds double, double* %41, i64 %46
%48 = load double, double* %47
%49 = call double @llvm.fmuladd.f64(double %32, double %40, double %48)
store double %49, double* %47
br label %50
50: ; preds = %31
%51 = load i32, i32* %8
%52 = add nsw i32 %51, 1
store i32 %52, i32* %8
br label %28
53: ; preds = %28
br label %54
54: ; preds = %53
%55 = load i32, i32* %10
%56 = add nsw i32 %55, 1
store i32 %56, i32* %10
br label %15
57: ; preds = %15
br label %58
58: ; preds = %57
%59 = load i32, i32* %9
%60 = add nsw i32 %59, 1
store i32 %60, i32* %9
br label %11
61: ; preds = %11
ret void
}

LLVM IR (-O2):
define void @dsyrk_codegen_1(double* nocapture %0, double* nocapture %1) {
%3 = getelementptr double, double* %0, i64 8
br label %4
4: ; preds = %710, %2
%5 = phi i64 [ 0, %2 ], [ %711, %710 ]
%6 = sub nsw i64 3, %5
%7 = lshr i64 %6, 2
%8 = add nuw nsw i64 %7, 1
%9 = sub nsw i64 7, %5
%10 = mul nuw nsw i64 %5, 9
%11 = add nuw i64 %10, 1
%12 = getelementptr double, double* %1, i64 %11
%13 = shl nuw nsw i64 %5, 3
%14 = add nuw i64 %13, 8
%15 = getelementptr double, double* %1, i64 %14
%16 = add nuw i64 %5, 1
%17 = getelementptr double, double* %0, i64 %16
%18 = shl nsw i64 %5, 3
%19 = getelementptr inbounds double, double* %0, i64 %5
%20 = load double, double* %19
%21 = mul nsw i64 %5, 9
%22 = getelementptr inbounds double, double* %1, i64 %21
%23 = load double, double* %22
%24 = tail call double @llvm.fmuladd.f64(double %20, double %20, double %23)
store double %24, double* %22
%25 = add nuw nsw i64 %5, 1
%26 = icmp eq i64 %25, 8
br i1 %26, label %143, label %27
27: ; preds = %4
%28 = icmp ult i64 %9, 4
br i1 %28, label %111, label %29
29: ; preds = %27
%30 = icmp ult double* %12, %3
%31 = icmp ult double* %17, %15
%32 = and i1 %30, %31
br i1 %32, label %111, label %33
33: ; preds = %29
%34 = and i64 %9, -4
%35 = add i64 %25, %34
%36 = insertelement <2 x double> poison, double %20, i64 0
%37 = shufflevector <2 x double> %36, <2 x double> poison, <2 x i32> zeroinitializer
%38 = insertelement <2 x double> poison, double %20, i64 0
%39 = shufflevector <2 x double> %38, <2 x double> poison, <2 x i32> zeroinitializer
%40 = and i64 %8, 1
%41 = icmp ult i64 %6, 4
br i1 %41, label %87, label %42
42: ; preds = %33
%43 = and i64 %8, 9223372036854775806
br label %44
44: ; preds = %44, %42
%45 = phi i64 [ 0, %42 ], [ %84, %44 ]
%46 = phi i64 [ 0, %42 ], [ %85, %44 ]
%47 = add i64 %25, %45
%48 = getelementptr inbounds double, double* %0, i64 %47
%49 = bitcast double* %48 to <2 x double>*
%50 = load <2 x double>, <2 x double>* %49
%51 = getelementptr inbounds double, double* %48, i64 2
%52 = bitcast double* %51 to <2 x double>*
%53 = load <2 x double>, <2 x double>* %52
%54 = add nuw nsw i64 %47, %18
%55 = getelementptr inbounds double, double* %1, i64 %54
%56 = bitcast double* %55 to <2 x double>*
%57 = load <2 x double>, <2 x double>* %56
%58 = getelementptr inbounds double, double* %55, i64 2
%59 = bitcast double* %58 to <2 x double>*
%60 = load <2 x double>, <2 x double>* %59
%61 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %37, <2 x double> %50, <2 x double> %57)
%62 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %39, <2 x double> %53, <2 x double> %60)
%63 = bitcast double* %55 to <2 x double>*
store <2 x double> %61, <2 x double>* %63
%64 = bitcast double* %58 to <2 x double>*
store <2 x double> %62, <2 x double>* %64
%65 = or i64 %45, 4
%66 = add i64 %25, %65
%67 = getelementptr inbounds double, double* %0, i64 %66
%68 = bitcast double* %67 to <2 x double>*
%69 = load <2 x double>, <2 x double>* %68
%70 = getelementptr inbounds double, double* %67, i64 2
%71 = bitcast double* %70 to <2 x double>*
%72 = load <2 x double>, <2 x double>* %71
%73 = add nuw nsw i64 %66, %18
%74 = getelementptr inbounds double, double* %1, i64 %73
%75 = bitcast double* %74 to <2 x double>*
%76 = load <2 x double>, <2 x double>* %75
%77 = getelementptr inbounds double, double* %74, i64 2
%78 = bitcast double* %77 to <2 x double>*
%79 = load <2 x double>, <2 x double>* %78
%80 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %37, <2 x double> %69, <2 x double> %76)
%81 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %39, <2 x double> %72, <2 x double> %79)
%82 = bitcast double* %74 to <2 x double>*
store <2 x double> %80, <2 x double>* %82
%83 = bitcast double* %77 to <2 x double>*
store <2 x double> %81, <2 x double>* %83
%84 = add nuw i64 %45, 8
%85 = add i64 %46, 2
%86 = icmp eq i64 %85, %43
br i1 %86, label %87, label %44
87: ; preds = %44, %33
%88 = phi i64 [ 0, %33 ], [ %84, %44 ]
%89 = icmp eq i64 %40, 0
br i1 %89, label %109, label %90
90: ; preds = %87
%91 = add i64 %25, %88
%92 = getelementptr inbounds double, double* %0, i64 %91
%93 = bitcast double* %92 to <2 x double>*
%94 = load <2 x double>, <2 x double>* %93
%95 = getelementptr inbounds double, double* %92, i64 2
%96 = bitcast double* %95 to <2 x double>*
%97 = load <2 x double>, <2 x double>* %96
%98 = add nuw nsw i64 %91, %18
%99 = getelementptr inbounds double, double* %1, i64 %98
%100 = bitcast double* %99 to <2 x double>*
%101 = load <2 x double>, <2 x double>* %100
%102 = getelementptr inbounds double, double* %99, i64 2
%103 = bitcast double* %102 to <2 x double>*
%104 = load <2 x double>, <2 x double>* %103
%105 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %37, <2 x double> %94, <2 x double> %101)
%106 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %39, <2 x double> %97, <2 x double> %104)
%107 = bitcast double* %99 to <2 x double>*
store <2 x double> %105, <2 x double>* %107
%108 = bitcast double* %102 to <2 x double>*
store <2 x double> %106, <2 x double>* %108
br label %109
109: ; preds = %87, %90
%110 = icmp eq i64 %9, %34
br i1 %110, label %143, label %111
111: ; preds = %29, %27, %109
%112 = phi i64 [ %25, %29 ], [ %25, %27 ], [ %35, %109 ]
%113 = and i64 %112, 1
%114 = icmp eq i64 %113, 0
br i1 %114, label %123, label %115
115: ; preds = %111
%116 = getelementptr inbounds double, double* %0, i64 %112
%117 = load double, double* %116
%118 = add nuw nsw i64 %112, %18
%119 = getelementptr inbounds double, double* %1, i64 %118
%120 = load double, double* %119
%121 = tail call double @llvm.fmuladd.f64(double %20, double %117, double %120)
store double %121, double* %119
%122 = add nuw nsw i64 %112, 1
br label %123
123: ; preds = %115, %111
%124 = phi i64 [ %112, %111 ], [ %122, %115 ]
%125 = icmp eq i64 %112, 7
br i1 %125, label %143, label %126
126: ; preds = %123, %126
%127 = phi i64 [ %141, %126 ], [ %124, %123 ]
%128 = getelementptr inbounds double, double* %0, i64 %127
%129 = load double, double* %128
%130 = add nuw nsw i64 %127, %18
%131 = getelementptr inbounds double, double* %1, i64 %130
%132 = load double, double* %131
%133 = tail call double @llvm.fmuladd.f64(double %20, double %129, double %132)
store double %133, double* %131
%134 = add nuw nsw i64 %127, 1
%135 = getelementptr inbounds double, double* %0, i64 %134
%136 = load double, double* %135
%137 = add nuw nsw i64 %134, %18
%138 = getelementptr inbounds double, double* %1, i64 %137
%139 = load double, double* %138
%140 = tail call double @llvm.fmuladd.f64(double %20, double %136, double %139)
store double %140, double* %138
%141 = add nuw nsw i64 %127, 2
%142 = icmp eq i64 %141, 8
br i1 %142, label %143, label %126
143: ; preds = %123, %126, %109, %4
%144 = add nuw nsw i64 %5, 8
%145 = getelementptr inbounds double, double* %0, i64 %144
%146 = load double, double* %145
%147 = add nuw nsw i64 %5, 8
%148 = getelementptr inbounds double, double* %0, i64 %147
%149 = load double, double* %148
%150 = mul nsw i64 %5, 9
%151 = getelementptr inbounds double, double* %1, i64 %150
%152 = load double, double* %151
%153 = tail call double @llvm.fmuladd.f64(double %146, double %149, double %152)
store double %153, double* %151
%154 = add nuw nsw i64 %5, 1
%155 = icmp eq i64 %154, 8
br i1 %155, label %224, label %156
156: ; preds = %143
%157 = add nuw nsw i64 %5, 9
%158 = getelementptr inbounds double, double* %0, i64 %157
%159 = load double, double* %158
%160 = add nuw nsw i64 %154, %18
%161 = getelementptr inbounds double, double* %1, i64 %160
%162 = load double, double* %161
%163 = tail call double @llvm.fmuladd.f64(double %146, double %159, double %162)
store double %163, double* %161
%164 = add nuw nsw i64 %5, 2
%165 = icmp eq i64 %164, 8
br i1 %165, label %224, label %166
166: ; preds = %156
%167 = add nuw nsw i64 %5, 10
%168 = getelementptr inbounds double, double* %0, i64 %167
%169 = load double, double* %168
%170 = add nuw nsw i64 %164, %18
%171 = getelementptr inbounds double, double* %1, i64 %170
%172 = load double, double* %171
%173 = tail call double @llvm.fmuladd.f64(double %146, double %169, double %172)
store double %173, double* %171
%174 = add nuw nsw i64 %5, 3
%175 = icmp eq i64 %174, 8
br i1 %175, label %224, label %176
176: ; preds = %166
%177 = add nuw nsw i64 %5, 11
%178 = getelementptr inbounds double, double* %0, i64 %177
%179 = load double, double* %178
%180 = add nuw nsw i64 %174, %18
%181 = getelementptr inbounds double, double* %1, i64 %180
%182 = load double, double* %181
%183 = tail call double @llvm.fmuladd.f64(double %146, double %179, double %182)
store double %183, double* %181
%184 = add nuw nsw i64 %5, 4
%185 = icmp eq i64 %184, 8
br i1 %185, label %224, label %186
186: ; preds = %176
%187 = add nuw nsw i64 %5, 12
%188 = getelementptr inbounds double, double* %0, i64 %187
%189 = load double, double* %188
%190 = add nuw nsw i64 %184, %18
%191 = getelementptr inbounds double, double* %1, i64 %190
%192 = load double, double* %191
%193 = tail call double @llvm.fmuladd.f64(double %146, double %189, double %192)
store double %193, double* %191
%194 = add nuw nsw i64 %5, 5
%195 = icmp eq i64 %194, 8
br i1 %195, label %224, label %196
196: ; preds = %186
%197 = add nuw nsw i64 %5, 13
%198 = getelementptr inbounds double, double* %0, i64 %197
%199 = load double, double* %198
%200 = add nuw nsw i64 %194, %18
%201 = getelementptr inbounds double, double* %1, i64 %200
%202 = load double, double* %201
%203 = tail call double @llvm.fmuladd.f64(double %146, double %199, double %202)
store double %203, double* %201
%204 = add nuw nsw i64 %5, 6
%205 = icmp eq i64 %204, 8
br i1 %205, label %224, label %206
206: ; preds = %196
%207 = add nuw nsw i64 %5, 14
%208 = getelementptr inbounds double, double* %0, i64 %207
%209 = load double, double* %208
%210 = add nuw nsw i64 %204, %18
%211 = getelementptr inbounds double, double* %1, i64 %210
%212 = load double, double* %211
%213 = tail call double @llvm.fmuladd.f64(double %146, double %209, double %212)
store double %213, double* %211
%214 = add nuw nsw i64 %5, 7
%215 = icmp eq i64 %214, 8
br i1 %215, label %224, label %216
216: ; preds = %206
%217 = add nuw nsw i64 %5, 15
%218 = getelementptr inbounds double, double* %0, i64 %217
%219 = load double, double* %218
%220 = add nuw nsw i64 %214, %18
%221 = getelementptr inbounds double, double* %1, i64 %220
%222 = load double, double* %221
%223 = tail call double @llvm.fmuladd.f64(double %146, double %219, double %222)
store double %223, double* %221
br label %224
224: ; preds = %216, %206, %196, %186, %176, %166, %156, %143
%225 = add nuw nsw i64 %5, 16
%226 = getelementptr inbounds double, double* %0, i64 %225
%227 = load double, double* %226
%228 = add nuw nsw i64 %5, 16
%229 = getelementptr inbounds double, double* %0, i64 %228
%230 = load double, double* %229
%231 = mul nsw i64 %5, 9
%232 = getelementptr inbounds double, double* %1, i64 %231
%233 = load double, double* %232
%234 = tail call double @llvm.fmuladd.f64(double %227, double %230, double %233)
store double %234, double* %232
%235 = add nuw nsw i64 %5, 1
%236 = icmp eq i64 %235, 8
br i1 %236, label %305, label %237
237: ; preds = %224
%238 = add nuw nsw i64 %5, 17
%239 = getelementptr inbounds double, double* %0, i64 %238
%240 = load double, double* %239
%241 = add nuw nsw i64 %235, %18
%242 = getelementptr inbounds double, double* %1, i64 %241
%243 = load double, double* %242
%244 = tail call double @llvm.fmuladd.f64(double %227, double %240, double %243)
store double %244, double* %242
%245 = add nuw nsw i64 %5, 2
%246 = icmp eq i64 %245, 8
br i1 %246, label %305, label %247
247: ; preds = %237
%248 = add nuw nsw i64 %5, 18
%249 = getelementptr inbounds double, double* %0, i64 %248
%250 = load double, double* %249
%251 = add nuw nsw i64 %245, %18
%252 = getelementptr inbounds double, double* %1, i64 %251
%253 = load double, double* %252
%254 = tail call double @llvm.fmuladd.f64(double %227, double %250, double %253)
store double %254, double* %252
%255 = add nuw nsw i64 %5, 3
%256 = icmp eq i64 %255, 8
br i1 %256, label %305, label %257
257: ; preds = %247
%258 = add nuw nsw i64 %5, 19
%259 = getelementptr inbounds double, double* %0, i64 %258
%260 = load double, double* %259
%261 = add nuw nsw i64 %255, %18
%262 = getelementptr inbounds double, double* %1, i64 %261
%263 = load double, double* %262
%264 = tail call double @llvm.fmuladd.f64(double %227, double %260, double %263)
store double %264, double* %262
%265 = add nuw nsw i64 %5, 4
%266 = icmp eq i64 %265, 8
br i1 %266, label %305, label %267
267: ; preds = %257
%268 = add nuw nsw i64 %5, 20
%269 = getelementptr inbounds double, double* %0, i64 %268
%270 = load double, double* %269
%271 = add nuw nsw i64 %265, %18
%272 = getelementptr inbounds double, double* %1, i64 %271
%273 = load double, double* %272
%274 = tail call double @llvm.fmuladd.f64(double %227, double %270, double %273)
store double %274, double* %272
%275 = add nuw nsw i64 %5, 5
%276 = icmp eq i64 %275, 8
br i1 %276, label %305, label %277
277: ; preds = %267
%278 = add nuw nsw i64 %5, 21
%279 = getelementptr inbounds double, double* %0, i64 %278
%280 = load double, double* %279
%281 = add nuw nsw i64 %275, %18
%282 = getelementptr inbounds double, double* %1, i64 %281
%283 = load double, double* %282
%284 = tail call double @llvm.fmuladd.f64(double %227, double %280, double %283)
store double %284, double* %282
%285 = add nuw nsw i64 %5, 6
%286 = icmp eq i64 %285, 8
br i1 %286, label %305, label %287
287: ; preds = %277
%288 = add nuw nsw i64 %5, 22
%289 = getelementptr inbounds double, double* %0, i64 %288
%290 = load double, double* %289
%291 = add nuw nsw i64 %285, %18
%292 = getelementptr inbounds double, double* %1, i64 %291
%293 = load double, double* %292
%294 = tail call double @llvm.fmuladd.f64(double %227, double %290, double %293)
store double %294, double* %292
%295 = add nuw nsw i64 %5, 7
%296 = icmp eq i64 %295, 8
br i1 %296, label %305, label %297
297: ; preds = %287
%298 = add nuw nsw i64 %5, 23
%299 = getelementptr inbounds double, double* %0, i64 %298
%300 = load double, double* %299
%301 = add nuw nsw i64 %295, %18
%302 = getelementptr inbounds double, double* %1, i64 %301
%303 = load double, double* %302
%304 = tail call double @llvm.fmuladd.f64(double %227, double %300, double %303)
store double %304, double* %302
br label %305
305: ; preds = %297, %287, %277, %267, %257, %247, %237, %224
%306 = add nuw nsw i64 %5, 24
%307 = getelementptr inbounds double, double* %0, i64 %306
%308 = load double, double* %307
%309 = add nuw nsw i64 %5, 24
%310 = getelementptr inbounds double, double* %0, i64 %309
%311 = load double, double* %310
%312 = mul nsw i64 %5, 9
%313 = getelementptr inbounds double, double* %1, i64 %312
%314 = load double, double* %313
%315 = tail call double @llvm.fmuladd.f64(double %308, double %311, double %314)
store double %315, double* %313
%316 = add nuw nsw i64 %5, 1
%317 = icmp eq i64 %316, 8
br i1 %317, label %386, label %318
318: ; preds = %305
%319 = add nuw nsw i64 %5, 25
%320 = getelementptr inbounds double, double* %0, i64 %319
%321 = load double, double* %320
%322 = add nuw nsw i64 %316, %18
%323 = getelementptr inbounds double, double* %1, i64 %322
%324 = load double, double* %323
%325 = tail call double @llvm.fmuladd.f64(double %308, double %321, double %324)
store double %325, double* %323
%326 = add nuw nsw i64 %5, 2
%327 = icmp eq i64 %326, 8
br i1 %327, label %386, label %328
328: ; preds = %318
%329 = add nuw nsw i64 %5, 26
%330 = getelementptr inbounds double, double* %0, i64 %329
%331 = load double, double* %330
%332 = add nuw nsw i64 %326, %18
%333 = getelementptr inbounds double, double* %1, i64 %332
%334 = load double, double* %333
%335 = tail call double @llvm.fmuladd.f64(double %308, double %331, double %334)
store double %335, double* %333
%336 = add nuw nsw i64 %5, 3
%337 = icmp eq i64 %336, 8
br i1 %337, label %386, label %338
338: ; preds = %328
%339 = add nuw nsw i64 %5, 27
%340 = getelementptr inbounds double, double* %0, i64 %339
%341 = load double, double* %340
%342 = add nuw nsw i64 %336, %18
%343 = getelementptr inbounds double, double* %1, i64 %342
%344 = load double, double* %343
%345 = tail call double @llvm.fmuladd.f64(double %308, double %341, double %344)
store double %345, double* %343
%346 = add nuw nsw i64 %5, 4
%347 = icmp eq i64 %346, 8
br i1 %347, label %386, label %348
348: ; preds = %338
%349 = add nuw nsw i64 %5, 28
%350 = getelementptr inbounds double, double* %0, i64 %349
%351 = load double, double* %350
%352 = add nuw nsw i64 %346, %18
%353 = getelementptr inbounds double, double* %1, i64 %352
%354 = load double, double* %353
%355 = tail call double @llvm.fmuladd.f64(double %308, double %351, double %354)
store double %355, double* %353
%356 = add nuw nsw i64 %5, 5
%357 = icmp eq i64 %356, 8
br i1 %357, label %386, label %358
358: ; preds = %348
%359 = add nuw nsw i64 %5, 29
%360 = getelementptr inbounds double, double* %0, i64 %359
%361 = load double, double* %360
%362 = add nuw nsw i64 %356, %18
%363 = getelementptr inbounds double, double* %1, i64 %362
%364 = load double, double* %363
%365 = tail call double @llvm.fmuladd.f64(double %308, double %361, double %364)
store double %365, double* %363
%366 = add nuw nsw i64 %5, 6
%367 = icmp eq i64 %366, 8
br i1 %367, label %386, label %368
368: ; preds = %358
%369 = add nuw nsw i64 %5, 30
%370 = getelementptr inbounds double, double* %0, i64 %369
%371 = load double, double* %370
%372 = add nuw nsw i64 %366, %18
%373 = getelementptr inbounds double, double* %1, i64 %372
%374 = load double, double* %373
%375 = tail call double @llvm.fmuladd.f64(double %308, double %371, double %374)
store double %375, double* %373
%376 = add nuw nsw i64 %5, 7
%377 = icmp eq i64 %376, 8
br i1 %377, label %386, label %378
378: ; preds = %368
%379 = add nuw nsw i64 %5, 31
%380 = getelementptr inbounds double, double* %0, i64 %379
%381 = load double, double* %380
%382 = add nuw nsw i64 %376, %18
%383 = getelementptr inbounds double, double* %1, i64 %382
%384 = load double, double* %383
%385 = tail call double @llvm.fmuladd.f64(double %308, double %381, double %384)
store double %385, double* %383
br label %386
386: ; preds = %378, %368, %358, %348, %338, %328, %318, %305
%387 = add nuw nsw i64 %5, 32
%388 = getelementptr inbounds double, double* %0, i64 %387
%389 = load double, double* %388
%390 = add nuw nsw i64 %5, 32
%391 = getelementptr inbounds double, double* %0, i64 %390
%392 = load double, double* %391
%393 = mul nsw i64 %5, 9
%394 = getelementptr inbounds double, double* %1, i64 %393
%395 = load double, double* %394
%396 = tail call double @llvm.fmuladd.f64(double %389, double %392, double %395)
store double %396, double* %394
%397 = add nuw nsw i64 %5, 1
%398 = icmp eq i64 %397, 8
br i1 %398, label %467, label %399
399: ; preds = %386
%400 = add nuw nsw i64 %5, 33
%401 = getelementptr inbounds double, double* %0, i64 %400
%402 = load double, double* %401
%403 = add nuw nsw i64 %397, %18
%404 = getelementptr inbounds double, double* %1, i64 %403
%405 = load double, double* %404
%406 = tail call double @llvm.fmuladd.f64(double %389, double %402, double %405)
store double %406, double* %404
%407 = add nuw nsw i64 %5, 2
%408 = icmp eq i64 %407, 8
br i1 %408, label %467, label %409
409: ; preds = %399
%410 = add nuw nsw i64 %5, 34
%411 = getelementptr inbounds double, double* %0, i64 %410
%412 = load double, double* %411
%413 = add nuw nsw i64 %407, %18
%414 = getelementptr inbounds double, double* %1, i64 %413
%415 = load double, double* %414
%416 = tail call double @llvm.fmuladd.f64(double %389, double %412, double %415)
store double %416, double* %414
%417 = add nuw nsw i64 %5, 3
%418 = icmp eq i64 %417, 8
br i1 %418, label %467, label %419
419: ; preds = %409
%420 = add nuw nsw i64 %5, 35
%421 = getelementptr inbounds double, double* %0, i64 %420
%422 = load double, double* %421
%423 = add nuw nsw i64 %417, %18
%424 = getelementptr inbounds double, double* %1, i64 %423
%425 = load double, double* %424
%426 = tail call double @llvm.fmuladd.f64(double %389, double %422, double %425)
store double %426, double* %424
%427 = add nuw nsw i64 %5, 4
%428 = icmp eq i64 %427, 8
br i1 %428, label %467, label %429
429: ; preds = %419
%430 = add nuw nsw i64 %5, 36
%431 = getelementptr inbounds double, double* %0, i64 %430
%432 = load double, double* %431
%433 = add nuw nsw i64 %427, %18
%434 = getelementptr inbounds double, double* %1, i64 %433
%435 = load double, double* %434
%436 = tail call double @llvm.fmuladd.f64(double %389, double %432, double %435)
store double %436, double* %434
%437 = add nuw nsw i64 %5, 5
%438 = icmp eq i64 %437, 8
br i1 %438, label %467, label %439
439: ; preds = %429
%440 = add nuw nsw i64 %5, 37
%441 = getelementptr inbounds double, double* %0, i64 %440
%442 = load double, double* %441
%443 = add nuw nsw i64 %437, %18
%444 = getelementptr inbounds double, double* %1, i64 %443
%445 = load double, double* %444
%446 = tail call double @llvm.fmuladd.f64(double %389, double %442, double %445)
store double %446, double* %444
%447 = add nuw nsw i64 %5, 6
%448 = icmp eq i64 %447, 8
br i1 %448, label %467, label %449
449: ; preds = %439
%450 = add nuw nsw i64 %5, 38
%451 = getelementptr inbounds double, double* %0, i64 %450
%452 = load double, double* %451
%453 = add nuw nsw i64 %447, %18
%454 = getelementptr inbounds double, double* %1, i64 %453
%455 = load double, double* %454
%456 = tail call double @llvm.fmuladd.f64(double %389, double %452, double %455)
store double %456, double* %454
%457 = add nuw nsw i64 %5, 7
%458 = icmp eq i64 %457, 8
br i1 %458, label %467, label %459
459: ; preds = %449
%460 = add nuw nsw i64 %5, 39
%461 = getelementptr inbounds double, double* %0, i64 %460
%462 = load double, double* %461
%463 = add nuw nsw i64 %457, %18
%464 = getelementptr inbounds double, double* %1, i64 %463
%465 = load double, double* %464
%466 = tail call double @llvm.fmuladd.f64(double %389, double %462, double %465)
store double %466, double* %464
br label %467
467: ; preds = %459, %449, %439, %429, %419, %409, %399, %386
%468 = add nuw nsw i64 %5, 40
%469 = getelementptr inbounds double, double* %0, i64 %468
%470 = load double, double* %469
%471 = add nuw nsw i64 %5, 40
%472 = getelementptr inbounds double, double* %0, i64 %471
%473 = load double, double* %472
%474 = mul nsw i64 %5, 9
%475 = getelementptr inbounds double, double* %1, i64 %474
%476 = load double, double* %475
%477 = tail call double @llvm.fmuladd.f64(double %470, double %473, double %476)
store double %477, double* %475
%478 = add nuw nsw i64 %5, 1
%479 = icmp eq i64 %478, 8
br i1 %479, label %548, label %480
480: ; preds = %467
%481 = add nuw nsw i64 %5, 41
%482 = getelementptr inbounds double, double* %0, i64 %481
%483 = load double, double* %482
%484 = add nuw nsw i64 %478, %18
%485 = getelementptr inbounds double, double* %1, i64 %484
%486 = load double, double* %485
%487 = tail call double @llvm.fmuladd.f64(double %470, double %483, double %486)
store double %487, double* %485
%488 = add nuw nsw i64 %5, 2
%489 = icmp eq i64 %488, 8
br i1 %489, label %548, label %490
490: ; preds = %480
%491 = add nuw nsw i64 %5, 42
%492 = getelementptr inbounds double, double* %0, i64 %491
%493 = load double, double* %492
%494 = add nuw nsw i64 %488, %18
%495 = getelementptr inbounds double, double* %1, i64 %494
%496 = load double, double* %495
%497 = tail call double @llvm.fmuladd.f64(double %470, double %493, double %496)
store double %497, double* %495
%498 = add nuw nsw i64 %5, 3
%499 = icmp eq i64 %498, 8
br i1 %499, label %548, label %500
500: ; preds = %490
%501 = add nuw nsw i64 %5, 43
%502 = getelementptr inbounds double, double* %0, i64 %501
%503 = load double, double* %502
%504 = add nuw nsw i64 %498, %18
%505 = getelementptr inbounds double, double* %1, i64 %504
%506 = load double, double* %505
%507 = tail call double @llvm.fmuladd.f64(double %470, double %503, double %506)
store double %507, double* %505
%508 = add nuw nsw i64 %5, 4
%509 = icmp eq i64 %508, 8
br i1 %509, label %548, label %510
510: ; preds = %500
%511 = add nuw nsw i64 %5, 44
%512 = getelementptr inbounds double, double* %0, i64 %511
%513 = load double, double* %512
%514 = add nuw nsw i64 %508, %18
%515 = getelementptr inbounds double, double* %1, i64 %514
%516 = load double, double* %515
%517 = tail call double @llvm.fmuladd.f64(double %470, double %513, double %516)
store double %517, double* %515
%518 = add nuw nsw i64 %5, 5
%519 = icmp eq i64 %518, 8
br i1 %519, label %548, label %520
520: ; preds = %510
%521 = add nuw nsw i64 %5, 45
%522 = getelementptr inbounds double, double* %0, i64 %521
%523 = load double, double* %522
%524 = add nuw nsw i64 %518, %18
%525 = getelementptr inbounds double, double* %1, i64 %524
%526 = load double, double* %525
%527 = tail call double @llvm.fmuladd.f64(double %470, double %523, double %526)
store double %527, double* %525
%528 = add nuw nsw i64 %5, 6
%529 = icmp eq i64 %528, 8
br i1 %529, label %548, label %530
530: ; preds = %520
%531 = add nuw nsw i64 %5, 46
%532 = getelementptr inbounds double, double* %0, i64 %531
%533 = load double, double* %532
%534 = add nuw nsw i64 %528, %18
%535 = getelementptr inbounds double, double* %1, i64 %534
%536 = load double, double* %535
%537 = tail call double @llvm.fmuladd.f64(double %470, double %533, double %536)
store double %537, double* %535
%538 = add nuw nsw i64 %5, 7
%539 = icmp eq i64 %538, 8
br i1 %539, label %548, label %540
540: ; preds = %530
%541 = add nuw nsw i64 %5, 47
%542 = getelementptr inbounds double, double* %0, i64 %541
%543 = load double, double* %542
%544 = add nuw nsw i64 %538, %18
%545 = getelementptr inbounds double, double* %1, i64 %544
%546 = load double, double* %545
%547 = tail call double @llvm.fmuladd.f64(double %470, double %543, double %546)
store double %547, double* %545
br label %548
548: ; preds = %540, %530, %520, %510, %500, %490, %480, %467
%549 = add nuw nsw i64 %5, 48
%550 = getelementptr inbounds double, double* %0, i64 %549
%551 = load double, double* %550
%552 = add nuw nsw i64 %5, 48
%553 = getelementptr inbounds double, double* %0, i64 %552
%554 = load double, double* %553
%555 = mul nsw i64 %5, 9
%556 = getelementptr inbounds double, double* %1, i64 %555
%557 = load double, double* %556
%558 = tail call double @llvm.fmuladd.f64(double %551, double %554, double %557)
store double %558, double* %556
%559 = add nuw nsw i64 %5, 1
%560 = icmp eq i64 %559, 8
br i1 %560, label %629, label %561
561: ; preds = %548
%562 = add nuw nsw i64 %5, 49
%563 = getelementptr inbounds double, double* %0, i64 %562
%564 = load double, double* %563
%565 = add nuw nsw i64 %559, %18
%566 = getelementptr inbounds double, double* %1, i64 %565
%567 = load double, double* %566
%568 = tail call double @llvm.fmuladd.f64(double %551, double %564, double %567)
store double %568, double* %566
%569 = add nuw nsw i64 %5, 2
%570 = icmp eq i64 %569, 8
br i1 %570, label %629, label %571
571: ; preds = %561
%572 = add nuw nsw i64 %5, 50
%573 = getelementptr inbounds double, double* %0, i64 %572
%574 = load double, double* %573
%575 = add nuw nsw i64 %569, %18
%576 = getelementptr inbounds double, double* %1, i64 %575
%577 = load double, double* %576
%578 = tail call double @llvm.fmuladd.f64(double %551, double %574, double %577)
store double %578, double* %576
%579 = add nuw nsw i64 %5, 3
%580 = icmp eq i64 %579, 8
br i1 %580, label %629, label %581
581: ; preds = %571
%582 = add nuw nsw i64 %5, 51
%583 = getelementptr inbounds double, double* %0, i64 %582
%584 = load double, double* %583
%585 = add nuw nsw i64 %579, %18
%586 = getelementptr inbounds double, double* %1, i64 %585
%587 = load double, double* %586
%588 = tail call double @llvm.fmuladd.f64(double %551, double %584, double %587)
store double %588, double* %586
%589 = add nuw nsw i64 %5, 4
%590 = icmp eq i64 %589, 8
br i1 %590, label %629, label %591
591: ; preds = %581
%592 = add nuw nsw i64 %5, 52
%593 = getelementptr inbounds double, double* %0, i64 %592
%594 = load double, double* %593
%595 = add nuw nsw i64 %589, %18
%596 = getelementptr inbounds double, double* %1, i64 %595
%597 = load double, double* %596
%598 = tail call double @llvm.fmuladd.f64(double %551, double %594, double %597)
store double %598, double* %596
%599 = add nuw nsw i64 %5, 5
%600 = icmp eq i64 %599, 8
br i1 %600, label %629, label %601
601: ; preds = %591
%602 = add nuw nsw i64 %5, 53
%603 = getelementptr inbounds double, double* %0, i64 %602
%604 = load double, double* %603
%605 = add nuw nsw i64 %599, %18
%606 = getelementptr inbounds double, double* %1, i64 %605
%607 = load double, double* %606
%608 = tail call double @llvm.fmuladd.f64(double %551, double %604, double %607)
store double %608, double* %606
%609 = add nuw nsw i64 %5, 6
%610 = icmp eq i64 %609, 8
br i1 %610, label %629, label %611
611: ; preds = %601
%612 = add nuw nsw i64 %5, 54
%613 = getelementptr inbounds double, double* %0, i64 %612
%614 = load double, double* %613
%615 = add nuw nsw i64 %609, %18
%616 = getelementptr inbounds double, double* %1, i64 %615
%617 = load double, double* %616
%618 = tail call double @llvm.fmuladd.f64(double %551, double %614, double %617)
store double %618, double* %616
%619 = add nuw nsw i64 %5, 7
%620 = icmp eq i64 %619, 8
br i1 %620, label %629, label %621
621: ; preds = %611
%622 = add nuw nsw i64 %5, 55
%623 = getelementptr inbounds double, double* %0, i64 %622
%624 = load double, double* %623
%625 = add nuw nsw i64 %619, %18
%626 = getelementptr inbounds double, double* %1, i64 %625
%627 = load double, double* %626
%628 = tail call double @llvm.fmuladd.f64(double %551, double %624, double %627)
store double %628, double* %626
br label %629
629: ; preds = %621, %611, %601, %591, %581, %571, %561, %548
%630 = add nuw nsw i64 %5, 56
%631 = getelementptr inbounds double, double* %0, i64 %630
%632 = load double, double* %631
%633 = add nuw nsw i64 %5, 56
%634 = getelementptr inbounds double, double* %0, i64 %633
%635 = load double, double* %634
%636 = mul nsw i64 %5, 9
%637 = getelementptr inbounds double, double* %1, i64 %636
%638 = load double, double* %637
%639 = tail call double @llvm.fmuladd.f64(double %632, double %635, double %638)
store double %639, double* %637
%640 = add nuw nsw i64 %5, 1
%641 = icmp eq i64 %640, 8
br i1 %641, label %710, label %642
642: ; preds = %629
%643 = add nuw nsw i64 %5, 57
%644 = getelementptr inbounds double, double* %0, i64 %643
%645 = load double, double* %644
%646 = add nuw nsw i64 %640, %18
%647 = getelementptr inbounds double, double* %1, i64 %646
%648 = load double, double* %647
%649 = tail call double @llvm.fmuladd.f64(double %632, double %645, double %648)
store double %649, double* %647
%650 = add nuw nsw i64 %5, 2
%651 = icmp eq i64 %650, 8
br i1 %651, label %710, label %652
652: ; preds = %642
%653 = add nuw nsw i64 %5, 58
%654 = getelementptr inbounds double, double* %0, i64 %653
%655 = load double, double* %654
%656 = add nuw nsw i64 %650, %18
%657 = getelementptr inbounds double, double* %1, i64 %656
%658 = load double, double* %657
%659 = tail call double @llvm.fmuladd.f64(double %632, double %655, double %658)
store double %659, double* %657
%660 = add nuw nsw i64 %5, 3
%661 = icmp eq i64 %660, 8
br i1 %661, label %710, label %662
662: ; preds = %652
%663 = add nuw nsw i64 %5, 59
%664 = getelementptr inbounds double, double* %0, i64 %663
%665 = load double, double* %664
%666 = add nuw nsw i64 %660, %18
%667 = getelementptr inbounds double, double* %1, i64 %666
%668 = load double, double* %667
%669 = tail call double @llvm.fmuladd.f64(double %632, double %665, double %668)
store double %669, double* %667
%670 = add nuw nsw i64 %5, 4
%671 = icmp eq i64 %670, 8
br i1 %671, label %710, label %672
672: ; preds = %662
%673 = add nuw nsw i64 %5, 60
%674 = getelementptr inbounds double, double* %0, i64 %673
%675 = load double, double* %674
%676 = add nuw nsw i64 %670, %18
%677 = getelementptr inbounds double, double* %1, i64 %676
%678 = load double, double* %677
%679 = tail call double @llvm.fmuladd.f64(double %632, double %675, double %678)
store double %679, double* %677
%680 = add nuw nsw i64 %5, 5
%681 = icmp eq i64 %680, 8
br i1 %681, label %710, label %682
682: ; preds = %672
%683 = add nuw nsw i64 %5, 61
%684 = getelementptr inbounds double, double* %0, i64 %683
%685 = load double, double* %684
%686 = add nuw nsw i64 %680, %18
%687 = getelementptr inbounds double, double* %1, i64 %686
%688 = load double, double* %687
%689 = tail call double @llvm.fmuladd.f64(double %632, double %685, double %688)
store double %689, double* %687
%690 = add nuw nsw i64 %5, 6
%691 = icmp eq i64 %690, 8
br i1 %691, label %710, label %692
692: ; preds = %682
%693 = add nuw nsw i64 %5, 62
%694 = getelementptr inbounds double, double* %0, i64 %693
%695 = load double, double* %694
%696 = add nuw nsw i64 %690, %18
%697 = getelementptr inbounds double, double* %1, i64 %696
%698 = load double, double* %697
%699 = tail call double @llvm.fmuladd.f64(double %632, double %695, double %698)
store double %699, double* %697
%700 = add nuw nsw i64 %5, 7
%701 = icmp eq i64 %700, 8
br i1 %701, label %710, label %702
702: ; preds = %692
%703 = add nuw nsw i64 %5, 63
%704 = getelementptr inbounds double, double* %0, i64 %703
%705 = load double, double* %704
%706 = add nuw nsw i64 %700, %18
%707 = getelementptr inbounds double, double* %1, i64 %706
%708 = load double, double* %707
%709 = tail call double @llvm.fmuladd.f64(double %632, double %705, double %708)
store double %709, double* %707
br label %710
710: ; preds = %702, %692, %682, %672, %662, %652, %642, %629
%711 = add nuw nsw i64 %5, 1
%712 = icmp eq i64 %711, 8
br i1 %712, label %713, label %4
713: ; preds = %710
ret void
}