void kernel_dtrmv_u_t_8_lib4(int kmax, double *A, int sda, double *x, double *y,
                             int alg) {
  const int lda = 4;
  const int bs = 4;
  int k;
  double x_0, x_1, x_2, x_3, y_0 = 0, y_1 = 0, y_2 = 0, y_3 = 0, y_4 = 0,
                             y_5 = 0, y_6 = 0, y_7 = 0;
  k = 0;
  for (; k < kmax - 7; k += 8) {
    x_0 = x[0];
    x_1 = x[1];
    x_2 = x[2];
    x_3 = x[3];
    y_0 += A[0 + lda * 0] * x_0;
    y_1 += A[0 + lda * 1] * x_0;
    y_2 += A[0 + lda * 2] * x_0;
    y_3 += A[0 + lda * 3] * x_0;
    y_4 += A[0 + lda * 4] * x_0;
    y_5 += A[0 + lda * 5] * x_0;
    y_6 += A[0 + lda * 6] * x_0;
    y_7 += A[0 + lda * 7] * x_0;
    y_0 += A[1 + lda * 0] * x_1;
    y_1 += A[1 + lda * 1] * x_1;
    y_2 += A[1 + lda * 2] * x_1;
    y_3 += A[1 + lda * 3] * x_1;
    y_4 += A[1 + lda * 4] * x_1;
    y_5 += A[1 + lda * 5] * x_1;
    y_6 += A[1 + lda * 6] * x_1;
    y_7 += A[1 + lda * 7] * x_1;
    y_0 += A[2 + lda * 0] * x_2;
    y_1 += A[2 + lda * 1] * x_2;
    y_2 += A[2 + lda * 2] * x_2;
    y_3 += A[2 + lda * 3] * x_2;
    y_4 += A[2 + lda * 4] * x_2;
    y_5 += A[2 + lda * 5] * x_2;
    y_6 += A[2 + lda * 6] * x_2;
    y_7 += A[2 + lda * 7] * x_2;
    y_0 += A[3 + lda * 0] * x_3;
    y_1 += A[3 + lda * 1] * x_3;
    y_2 += A[3 + lda * 2] * x_3;
    y_3 += A[3 + lda * 3] * x_3;
    y_4 += A[3 + lda * 4] * x_3;
    y_5 += A[3 + lda * 5] * x_3;
    y_6 += A[3 + lda * 6] * x_3;
    y_7 += A[3 + lda * 7] * x_3;
    A += sda * bs;
    x += 4;
    x_0 = x[0];
    x_1 = x[1];
    x_2 = x[2];
    x_3 = x[3];
    y_0 += A[0 + lda * 0] * x_0;
    y_1 += A[0 + lda * 1] * x_0;
    y_2 += A[0 + lda * 2] * x_0;
    y_3 += A[0 + lda * 3] * x_0;
    y_4 += A[0 + lda * 4] * x_0;
    y_5 += A[0 + lda * 5] * x_0;
    y_6 += A[0 + lda * 6] * x_0;
    y_7 += A[0 + lda * 7] * x_0;
    y_0 += A[1 + lda * 0] * x_1;
    y_1 += A[1 + lda * 1] * x_1;
    y_2 += A[1 + lda * 2] * x_1;
    y_3 += A[1 + lda * 3] * x_1;
    y_4 += A[1 + lda * 4] * x_1;
    y_5 += A[1 + lda * 5] * x_1;
    y_6 += A[1 + lda * 6] * x_1;
    y_7 += A[1 + lda * 7] * x_1;
    y_0 += A[2 + lda * 0] * x_2;
    y_1 += A[2 + lda * 1] * x_2;
    y_2 += A[2 + lda * 2] * x_2;
    y_3 += A[2 + lda * 3] * x_2;
    y_4 += A[2 + lda * 4] * x_2;
    y_5 += A[2 + lda * 5] * x_2;
    y_6 += A[2 + lda * 6] * x_2;
    y_7 += A[2 + lda * 7] * x_2;
    y_0 += A[3 + lda * 0] * x_3;
    y_1 += A[3 + lda * 1] * x_3;
    y_2 += A[3 + lda * 2] * x_3;
    y_3 += A[3 + lda * 3] * x_3;
    y_4 += A[3 + lda * 4] * x_3;
    y_5 += A[3 + lda * 5] * x_3;
    y_6 += A[3 + lda * 6] * x_3;
    y_7 += A[3 + lda * 7] * x_3;
    A += sda * bs;
    x += 4;
  }
  x_0 = x[0];
  x_1 = x[1];
  x_2 = x[2];
  x_3 = x[3];
  y_0 += A[0 + lda * 0] * x_0;
  y_1 += A[0 + lda * 1] * x_0;
  y_2 += A[0 + lda * 2] * x_0;
  y_3 += A[0 + lda * 3] * x_0;
  y_4 += A[0 + lda * 4] * x_0;
  y_5 += A[0 + lda * 5] * x_0;
  y_6 += A[0 + lda * 6] * x_0;
  y_7 += A[0 + lda * 7] * x_0;
  y_1 += A[1 + lda * 1] * x_1;
  y_2 += A[1 + lda * 2] * x_1;
  y_3 += A[1 + lda * 3] * x_1;
  y_4 += A[1 + lda * 4] * x_1;
  y_5 += A[1 + lda * 5] * x_1;
  y_6 += A[1 + lda * 6] * x_1;
  y_7 += A[1 + lda * 7] * x_1;
  y_2 += A[2 + lda * 2] * x_2;
  y_3 += A[2 + lda * 3] * x_2;
  y_4 += A[2 + lda * 4] * x_2;
  y_5 += A[2 + lda * 5] * x_2;
  y_6 += A[2 + lda * 6] * x_2;
  y_7 += A[2 + lda * 7] * x_2;
  y_3 += A[3 + lda * 3] * x_3;
  y_4 += A[3 + lda * 4] * x_3;
  y_5 += A[3 + lda * 5] * x_3;
  y_6 += A[3 + lda * 6] * x_3;
  y_7 += A[3 + lda * 7] * x_3;
  A += sda * bs;
  x += 4;
  x_0 = x[0];
  x_1 = x[1];
  x_2 = x[2];
  x_3 = x[3];
  y_4 += A[0 + lda * 4] * x_0;
  y_5 += A[0 + lda * 5] * x_0;
  y_6 += A[0 + lda * 6] * x_0;
  y_7 += A[0 + lda * 7] * x_0;
  y_5 += A[1 + lda * 5] * x_1;
  y_6 += A[1 + lda * 6] * x_1;
  y_7 += A[1 + lda * 7] * x_1;
  y_6 += A[2 + lda * 6] * x_2;
  y_7 += A[2 + lda * 7] * x_2;
  y_7 += A[3 + lda * 7] * x_3;
  if (alg == 0) {
    y[0] = y_0;
    y[1] = y_1;
    y[2] = y_2;
    y[3] = y_3;
    y[4] = y_4;
    y[5] = y_5;
    y[6] = y_6;
    y[7] = y_7;
  } else if (alg == 1) {
    y[0] += y_0;
    y[1] += y_1;
    y[2] += y_2;
    y[3] += y_3;
    y[4] += y_4;
    y[5] += y_5;
    y[6] += y_6;
    y[7] += y_7;
  } else {
    y[0] -= y_0;
    y[1] -= y_1;
    y[2] -= y_2;
    y[3] -= y_3;
    y[4] -= y_4;
    y[5] -= y_5;
    y[6] -= y_6;
    y[7] -= y_7;
  }
}


x86 assembly (clang, -O0):
<kernel_dtrmv_u_t_8_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x18,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9d,-0x2c(%rbp)
movl   $0x4,-0x30(%rbp)
movl   $0x4,-0x34(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x7,%ecx
cmp    %ecx,%eax
jge    1b3f <kernel_dtrmv_u_t_8_lib4+0xa3f>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xa0(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xc0(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xe0(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xa8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xc8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xe8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xb0(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xd0(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xf0(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xb8(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xd8(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xf8(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xa0(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xc0(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xe0(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xa8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xc8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xe8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xb0(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xd0(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xf0(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xb8(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xd8(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xf8(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x20(%rbp)
mov    -0x38(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x38(%rbp)
jmp    117c <kernel_dtrmv_u_t_8_lib4+0x7c>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xa0(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xc0(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xe0(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xa8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xc8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xe8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xb0(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xd0(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xf0(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xb8(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xd8(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xf8(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x14(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0xa0(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xc0(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xe0(%rax),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xa8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xc8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xe8(%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xd0(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xf0(%rax),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xf8(%rax),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
cmpl   $0x0,-0x2c(%rbp)
jne    21a3 <kernel_dtrmv_u_t_8_lib4+0x10a3>
movsd  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x78(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x80(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x38(%rax)
jmp    2315 <kernel_dtrmv_u_t_8_lib4+0x1215>
cmpl   $0x1,-0x2c(%rbp)
jne    2251 <kernel_dtrmv_u_t_8_lib4+0x1151>
movsd  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
movsd  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
addsd  0x8(%rax),%xmm0
movsd  %xmm0,0x8(%rax)
movsd  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
addsd  0x10(%rax),%xmm0
movsd  %xmm0,0x10(%rax)
movsd  -0x78(%rbp),%xmm0
mov    -0x28(%rbp),%rax
addsd  0x18(%rax),%xmm0
movsd  %xmm0,0x18(%rax)
movsd  -0x80(%rbp),%xmm0
mov    -0x28(%rbp),%rax
addsd  0x20(%rax),%xmm0
movsd  %xmm0,0x20(%rax)
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
addsd  0x28(%rax),%xmm0
movsd  %xmm0,0x28(%rax)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
addsd  0x30(%rax),%xmm0
movsd  %xmm0,0x30(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
addsd  0x38(%rax),%xmm0
movsd  %xmm0,0x38(%rax)
jmp    2310 <kernel_dtrmv_u_t_8_lib4+0x1210>
movsd  -0x60(%rbp),%xmm1
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x68(%rbp),%xmm1
mov    -0x28(%rbp),%rax
movsd  0x8(%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rax)
movsd  -0x70(%rbp),%xmm1
mov    -0x28(%rbp),%rax
movsd  0x10(%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rax)
movsd  -0x78(%rbp),%xmm1
mov    -0x28(%rbp),%rax
movsd  0x18(%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x18(%rax)
movsd  -0x80(%rbp),%xmm1
mov    -0x28(%rbp),%rax
movsd  0x20(%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%rax)
movsd  -0x88(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
movsd  0x28(%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x28(%rax)
movsd  -0x90(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
movsd  0x30(%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x30(%rax)
movsd  -0x98(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
movsd  0x38(%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x38(%rax)
jmp    2315 <kernel_dtrmv_u_t_8_lib4+0x1215>
add    $0x18,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dtrmv_u_t_8_lib4>:
push   %rbx
shl    $0x2,%edx
movslq %edx,%r11
cmp    $0x8,%edi
jl     14c2 <kernel_dtrmv_u_t_8_lib4+0x3c2>
add    $0xfffffff9,%edi
mov    %r11,%r10
shl    $0x4,%r10
lea    0x0(,%r11,8),%rdx
xorpd  %xmm4,%xmm4
xor    %eax,%eax
xorpd  %xmm6,%xmm6
xorpd  %xmm5,%xmm5
xorpd  %xmm9,%xmm9
cs nopw 0x0(%rax,%rax,1)
nop
mov    %rsi,%rbx
movsd  0xc0(%rsi),%xmm14
movhpd 0xe0(%rsi),%xmm14
movsd  0x80(%rsi),%xmm1
movhpd 0xa0(%rsi),%xmm1
movsd  0x40(%rsi),%xmm0
movhpd 0x60(%rsi),%xmm0
movsd  (%rsi),%xmm13
movsd  0x8(%rsi),%xmm10
movsd  0x10(%rsi),%xmm11
movsd  0x18(%rsi),%xmm8
movhpd 0x20(%rsi),%xmm13
movsd  (%rcx),%xmm7
movsd  0x8(%rcx),%xmm2
movsd  0x10(%rcx),%xmm3
movsd  0x18(%rcx),%xmm12
unpcklpd %xmm7,%xmm7
mulpd  %xmm7,%xmm13
addpd  %xmm4,%xmm13
mulpd  %xmm7,%xmm0
addpd  %xmm6,%xmm0
mulpd  %xmm7,%xmm1
addpd  %xmm5,%xmm1
mulpd  %xmm14,%xmm7
movhpd 0x28(%rsi),%xmm10
addpd  %xmm9,%xmm7
movsd  0x48(%rsi),%xmm6
movhpd 0x68(%rsi),%xmm6
movsd  0x88(%rsi),%xmm5
movhpd 0xa8(%rsi),%xmm5
movsd  0xc8(%rsi),%xmm4
movhpd 0xe8(%rsi),%xmm4
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm4
addpd  %xmm7,%xmm4
mulpd  %xmm2,%xmm5
addpd  %xmm1,%xmm5
mulpd  %xmm2,%xmm6
addpd  %xmm0,%xmm6
movsd  0xd0(%rsi),%xmm1
movhpd 0xf0(%rsi),%xmm1
mulpd  %xmm10,%xmm2
movsd  0x90(%rsi),%xmm7
movhpd 0xb0(%rsi),%xmm7
addpd  %xmm13,%xmm2
movsd  0x50(%rsi),%xmm0
movhpd 0x70(%rsi),%xmm0
movhpd 0x30(%rsi),%xmm11
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm11
addpd  %xmm2,%xmm11
mulpd  %xmm3,%xmm0
addpd  %xmm6,%xmm0
mulpd  %xmm3,%xmm7
addpd  %xmm5,%xmm7
mulpd  %xmm1,%xmm3
movhpd 0x38(%rsi),%xmm8
addpd  %xmm4,%xmm3
movsd  0x58(%rsi),%xmm1
movhpd 0x78(%rsi),%xmm1
movsd  0x98(%rsi),%xmm6
movhpd 0xb8(%rsi),%xmm6
movsd  0xd8(%rsi),%xmm2
movhpd 0xf8(%rsi),%xmm2
unpcklpd %xmm12,%xmm12
mulpd  %xmm12,%xmm2
addpd  %xmm3,%xmm2
mulpd  %xmm12,%xmm6
addpd  %xmm7,%xmm6
mulpd  %xmm12,%xmm1
addpd  %xmm0,%xmm1
movsd  0xc0(%rsi,%rdx,1),%xmm13
movhpd 0xe0(%rsi,%rdx,1),%xmm13
mulpd  %xmm8,%xmm12
movsd  0x80(%rsi,%rdx,1),%xmm4
movhpd 0xa0(%rsi,%rdx,1),%xmm4
addpd  %xmm11,%xmm12
movsd  0x40(%rsi,%rdx,1),%xmm3
movhpd 0x60(%rsi,%rdx,1),%xmm3
lea    (%rsi,%rdx,1),%rsi
movsd  (%rbx,%rdx,1),%xmm10
movsd  0x8(%rbx,%rdx,1),%xmm9
movsd  0x10(%rbx,%rdx,1),%xmm0
movsd  0x18(%rbx,%rdx,1),%xmm8
movhpd 0x20(%rbx,%rdx,1),%xmm10
movsd  0x20(%rcx),%xmm7
unpcklpd %xmm7,%xmm7
mulpd  %xmm7,%xmm10
addpd  %xmm12,%xmm10
mulpd  %xmm7,%xmm3
addpd  %xmm1,%xmm3
mulpd  %xmm7,%xmm4
movhpd 0x28(%rbx,%rdx,1),%xmm9
addpd  %xmm6,%xmm4
movsd  0x48(%rbx,%rdx,1),%xmm5
movhpd 0x68(%rbx,%rdx,1),%xmm5
mulpd  %xmm13,%xmm7
movsd  0x88(%rbx,%rdx,1),%xmm6
movhpd 0xa8(%rbx,%rdx,1),%xmm6
addpd  %xmm2,%xmm7
movsd  0xc8(%rbx,%rdx,1),%xmm11
movhpd 0xe8(%rbx,%rdx,1),%xmm11
movsd  0x28(%rcx),%xmm1
unpcklpd %xmm1,%xmm1
mulpd  %xmm1,%xmm11
addpd  %xmm7,%xmm11
mulpd  %xmm1,%xmm6
addpd  %xmm4,%xmm6
mulpd  %xmm1,%xmm5
addpd  %xmm3,%xmm5
mulpd  %xmm9,%xmm1
movsd  0xd0(%rbx,%rdx,1),%xmm4
movhpd 0xf0(%rbx,%rdx,1),%xmm4
movsd  0x90(%rbx,%rdx,1),%xmm3
movhpd 0xb0(%rbx,%rdx,1),%xmm3
movsd  0x50(%rbx,%rdx,1),%xmm7
movhpd 0x70(%rbx,%rdx,1),%xmm7
movhpd 0x30(%rbx,%rdx,1),%xmm0
addpd  %xmm10,%xmm1
movsd  0x30(%rcx),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm0
addpd  %xmm1,%xmm0
mulpd  %xmm2,%xmm7
addpd  %xmm5,%xmm7
mulpd  %xmm2,%xmm3
addpd  %xmm6,%xmm3
mulpd  %xmm4,%xmm2
movhpd 0x38(%rbx,%rdx,1),%xmm8
addpd  %xmm11,%xmm2
movsd  0x58(%rbx,%rdx,1),%xmm12
movhpd 0x78(%rbx,%rdx,1),%xmm12
movsd  0x98(%rbx,%rdx,1),%xmm11
movhpd 0xb8(%rbx,%rdx,1),%xmm11
movsd  0xd8(%rbx,%rdx,1),%xmm10
movhpd 0xf8(%rbx,%rdx,1),%xmm10
movsd  0x38(%rcx),%xmm1
unpcklpd %xmm1,%xmm1
mulpd  %xmm1,%xmm10
movapd %xmm10,%xmm9
addpd  %xmm2,%xmm9
mulpd  %xmm1,%xmm11
movapd %xmm11,%xmm5
addpd  %xmm3,%xmm5
mulpd  %xmm1,%xmm12
movapd %xmm12,%xmm6
addpd  %xmm7,%xmm6
mulpd  %xmm8,%xmm1
movapd %xmm1,%xmm4
addpd  %xmm0,%xmm4
add    $0x40,%rcx
add    $0x8,%eax
add    %rdx,%rsi
cmp    %edi,%eax
jl     1140 <kernel_dtrmv_u_t_8_lib4+0x40>
add    %r10,%rbx
addpd  %xmm0,%xmm1
addpd  %xmm7,%xmm12
addpd  %xmm3,%xmm11
addpd  %xmm2,%xmm10
mov    %rbx,%rsi
jmp    14d5 <kernel_dtrmv_u_t_8_lib4+0x3d5>
xorpd  %xmm1,%xmm1
xorpd  %xmm12,%xmm12
xorpd  %xmm11,%xmm11
xorpd  %xmm10,%xmm10
movupd (%rcx),%xmm2
movupd 0x10(%rcx),%xmm14
movupd 0x20(%rcx),%xmm15
movupd 0x30(%rcx),%xmm8
movapd %xmm1,%xmm3
unpckhpd %xmm1,%xmm3
movsd  0x20(%rsi),%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm3,%xmm0
movapd %xmm12,%xmm3
unpckhpd %xmm12,%xmm3
movsd  0x60(%rsi),%xmm7
mulsd  %xmm2,%xmm7
addsd  %xmm3,%xmm7
movapd %xmm11,%xmm4
unpckhpd %xmm11,%xmm4
movsd  0xa0(%rsi),%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm4,%xmm3
movapd %xmm10,%xmm4
unpckhpd %xmm10,%xmm4
movsd  0xe0(%rsi),%xmm6
mulsd  %xmm2,%xmm6
addsd  %xmm4,%xmm6
movsd  (%rsi),%xmm13
movsd  0x40(%rsi),%xmm4
movsd  0x48(%rsi),%xmm5
movsd  0x50(%rsi),%xmm9
movhpd 0x28(%rsi),%xmm13
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm13
addpd  %xmm1,%xmm13
movhpd 0x68(%rsi),%xmm4
unpcklpd %xmm7,%xmm12
mulpd  %xmm2,%xmm4
movsd  0x80(%rsi),%xmm0
movhpd 0xa8(%rsi),%xmm0
addpd  %xmm12,%xmm4
unpcklpd %xmm3,%xmm11
mulpd  %xmm2,%xmm0
addpd  %xmm11,%xmm0
movsd  0xc0(%rsi),%xmm1
movhpd 0xe8(%rsi),%xmm1
unpcklpd %xmm6,%xmm10
mulpd  %xmm2,%xmm1
addpd  %xmm10,%xmm1
movhpd 0x70(%rsi),%xmm5
shufpd $0x1,%xmm14,%xmm2
mulpd  %xmm2,%xmm5
addpd  %xmm4,%xmm5
movsd  0x88(%rsi),%xmm3
movhpd 0xb0(%rsi),%xmm3
mulpd  %xmm2,%xmm3
addpd  %xmm0,%xmm3
movsd  0xc8(%rsi),%xmm0
movhpd 0xf0(%rsi),%xmm0
mulpd  %xmm2,%xmm0
addpd  %xmm1,%xmm0
movhpd 0x78(%rsi),%xmm9
mulpd  %xmm14,%xmm9
addpd  %xmm5,%xmm9
movsd  0x90(%rsi),%xmm1
movhpd 0xb8(%rsi),%xmm1
mulpd  %xmm14,%xmm1
movsd  0xd0(%rsi),%xmm2
movhpd 0xf8(%rsi),%xmm2
addpd  %xmm3,%xmm1
mulpd  %xmm14,%xmm2
addpd  %xmm0,%xmm2
movsd  0x98(%rsi),%xmm0
movhpd 0xa0(%rsi,%r11,8),%xmm0
shufpd $0x1,%xmm15,%xmm14
mulpd  %xmm14,%xmm0
addpd  %xmm1,%xmm0
movsd  0xd8(%rsi),%xmm3
movhpd 0xe0(%rsi,%r11,8),%xmm3
mulpd  %xmm14,%xmm3
addpd  %xmm2,%xmm3
movsd  0x80(%rsi,%r11,8),%xmm2
movsd  0xc0(%rsi,%r11,8),%xmm4
movsd  0xc8(%rsi,%r11,8),%xmm5
movsd  0xd0(%rsi,%r11,8),%xmm1
movhpd 0xa8(%rsi,%r11,8),%xmm2
mulpd  %xmm15,%xmm2
addpd  %xmm0,%xmm2
movhpd 0xe8(%rsi,%r11,8),%xmm4
mulpd  %xmm15,%xmm4
addpd  %xmm3,%xmm4
movhpd 0xf0(%rsi,%r11,8),%xmm5
shufpd $0x1,%xmm8,%xmm15
mulpd  %xmm5,%xmm15
movhpd 0xf8(%rsi,%r11,8),%xmm1
addpd  %xmm4,%xmm15
mulpd  %xmm8,%xmm1
addpd  %xmm15,%xmm1
cmp    $0x1,%r9d
je     171e <kernel_dtrmv_u_t_8_lib4+0x61e>
test   %r9d,%r9d
jne    1760 <kernel_dtrmv_u_t_8_lib4+0x660>
movupd %xmm13,(%r8)
movupd %xmm9,0x10(%r8)
movupd %xmm2,0x20(%r8)
jmp    1758 <kernel_dtrmv_u_t_8_lib4+0x658>
movupd (%r8),%xmm0
movupd 0x10(%r8),%xmm3
movupd 0x20(%r8),%xmm4
movupd 0x30(%r8),%xmm5
addpd  %xmm0,%xmm13
movupd %xmm13,(%r8)
addpd  %xmm3,%xmm9
movupd %xmm9,0x10(%r8)
addpd  %xmm4,%xmm2
movupd %xmm2,0x20(%r8)
addpd  %xmm5,%xmm1
movupd %xmm1,0x30(%r8)
pop    %rbx
ret
movupd (%r8),%xmm0
movupd 0x10(%r8),%xmm3
movupd 0x20(%r8),%xmm4
movupd 0x30(%r8),%xmm5
subpd  %xmm13,%xmm0
movupd %xmm0,(%r8)
subpd  %xmm9,%xmm3
movupd %xmm3,0x10(%r8)
subpd  %xmm2,%xmm4
movupd %xmm4,0x20(%r8)
subpd  %xmm1,%xmm5
movupd %xmm5,0x30(%r8)
pop    %rbx
ret

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

LLVM IR (-O2):
define void @kernel_dtrmv_u_t_8_lib4(i32 %0, double* %1, i32 %2, double* nocapture %3, double* %4, i32 %5) {
%7 = add nsw i32 %0, -7
%8 = icmp sgt i32 %0, 7
%9 = shl nsw i32 %2, 2
%10 = sext i32 %9 to i64
br i1 %8, label %11, label %259
11: ; preds = %6, %11
%12 = phi i32 [ %248, %11 ], [ 0, %6 ]
%13 = phi double* [ %246, %11 ], [ %1, %6 ]
%14 = phi double* [ %247, %11 ], [ %3, %6 ]
%15 = phi <8 x double> [ %245, %11 ], [ zeroinitializer, %6 ]
%16 = load double, double* %14
%17 = getelementptr inbounds double, double* %14, i64 1
%18 = load double, double* %17
%19 = getelementptr inbounds double, double* %14, i64 2
%20 = load double, double* %19
%21 = getelementptr inbounds double, double* %14, i64 3
%22 = load double, double* %21
%23 = load double, double* %13
%24 = getelementptr inbounds double, double* %13, i64 4
%25 = load double, double* %24
%26 = getelementptr inbounds double, double* %13, i64 8
%27 = load double, double* %26
%28 = getelementptr inbounds double, double* %13, i64 12
%29 = load double, double* %28
%30 = getelementptr inbounds double, double* %13, i64 16
%31 = load double, double* %30
%32 = getelementptr inbounds double, double* %13, i64 20
%33 = load double, double* %32
%34 = getelementptr inbounds double, double* %13, i64 24
%35 = load double, double* %34
%36 = getelementptr inbounds double, double* %13, i64 28
%37 = load double, double* %36
%38 = insertelement <8 x double> poison, double %23, i64 0
%39 = insertelement <8 x double> %38, double %25, i64 1
%40 = insertelement <8 x double> %39, double %27, i64 2
%41 = insertelement <8 x double> %40, double %29, i64 3
%42 = insertelement <8 x double> %41, double %31, i64 4
%43 = insertelement <8 x double> %42, double %33, i64 5
%44 = insertelement <8 x double> %43, double %35, i64 6
%45 = insertelement <8 x double> %44, double %37, i64 7
%46 = insertelement <8 x double> poison, double %16, i64 0
%47 = shufflevector <8 x double> %46, <8 x double> poison, <8 x i32> zeroinitializer
%48 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %45, <8 x double> %47, <8 x double> %15)
%49 = getelementptr inbounds double, double* %13, i64 1
%50 = load double, double* %49
%51 = getelementptr inbounds double, double* %13, i64 5
%52 = load double, double* %51
%53 = getelementptr inbounds double, double* %13, i64 9
%54 = load double, double* %53
%55 = getelementptr inbounds double, double* %13, i64 13
%56 = load double, double* %55
%57 = getelementptr inbounds double, double* %13, i64 17
%58 = load double, double* %57
%59 = getelementptr inbounds double, double* %13, i64 21
%60 = load double, double* %59
%61 = getelementptr inbounds double, double* %13, i64 25
%62 = load double, double* %61
%63 = getelementptr inbounds double, double* %13, i64 29
%64 = load double, double* %63
%65 = insertelement <8 x double> poison, double %50, i64 0
%66 = insertelement <8 x double> %65, double %52, i64 1
%67 = insertelement <8 x double> %66, double %54, i64 2
%68 = insertelement <8 x double> %67, double %56, i64 3
%69 = insertelement <8 x double> %68, double %58, i64 4
%70 = insertelement <8 x double> %69, double %60, i64 5
%71 = insertelement <8 x double> %70, double %62, i64 6
%72 = insertelement <8 x double> %71, double %64, i64 7
%73 = insertelement <8 x double> poison, double %18, i64 0
%74 = shufflevector <8 x double> %73, <8 x double> poison, <8 x i32> zeroinitializer
%75 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %72, <8 x double> %74, <8 x double> %48)
%76 = getelementptr inbounds double, double* %13, i64 2
%77 = load double, double* %76
%78 = getelementptr inbounds double, double* %13, i64 6
%79 = load double, double* %78
%80 = getelementptr inbounds double, double* %13, i64 10
%81 = load double, double* %80
%82 = getelementptr inbounds double, double* %13, i64 14
%83 = load double, double* %82
%84 = getelementptr inbounds double, double* %13, i64 18
%85 = load double, double* %84
%86 = getelementptr inbounds double, double* %13, i64 22
%87 = load double, double* %86
%88 = getelementptr inbounds double, double* %13, i64 26
%89 = load double, double* %88
%90 = getelementptr inbounds double, double* %13, i64 30
%91 = load double, double* %90
%92 = insertelement <8 x double> poison, double %77, i64 0
%93 = insertelement <8 x double> %92, double %79, i64 1
%94 = insertelement <8 x double> %93, double %81, i64 2
%95 = insertelement <8 x double> %94, double %83, i64 3
%96 = insertelement <8 x double> %95, double %85, i64 4
%97 = insertelement <8 x double> %96, double %87, i64 5
%98 = insertelement <8 x double> %97, double %89, i64 6
%99 = insertelement <8 x double> %98, double %91, i64 7
%100 = insertelement <8 x double> poison, double %20, i64 0
%101 = shufflevector <8 x double> %100, <8 x double> poison, <8 x i32> zeroinitializer
%102 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %99, <8 x double> %101, <8 x double> %75)
%103 = getelementptr inbounds double, double* %13, i64 3
%104 = load double, double* %103
%105 = getelementptr inbounds double, double* %13, i64 7
%106 = load double, double* %105
%107 = getelementptr inbounds double, double* %13, i64 11
%108 = load double, double* %107
%109 = getelementptr inbounds double, double* %13, i64 15
%110 = load double, double* %109
%111 = getelementptr inbounds double, double* %13, i64 19
%112 = load double, double* %111
%113 = getelementptr inbounds double, double* %13, i64 23
%114 = load double, double* %113
%115 = getelementptr inbounds double, double* %13, i64 27
%116 = load double, double* %115
%117 = getelementptr inbounds double, double* %13, i64 31
%118 = load double, double* %117
%119 = insertelement <8 x double> poison, double %104, i64 0
%120 = insertelement <8 x double> %119, double %106, i64 1
%121 = insertelement <8 x double> %120, double %108, i64 2
%122 = insertelement <8 x double> %121, double %110, i64 3
%123 = insertelement <8 x double> %122, double %112, i64 4
%124 = insertelement <8 x double> %123, double %114, i64 5
%125 = insertelement <8 x double> %124, double %116, i64 6
%126 = insertelement <8 x double> %125, double %118, i64 7
%127 = insertelement <8 x double> poison, double %22, i64 0
%128 = shufflevector <8 x double> %127, <8 x double> poison, <8 x i32> zeroinitializer
%129 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %126, <8 x double> %128, <8 x double> %102)
%130 = getelementptr inbounds double, double* %13, i64 %10
%131 = getelementptr inbounds double, double* %14, i64 4
%132 = load double, double* %131
%133 = getelementptr inbounds double, double* %14, i64 5
%134 = load double, double* %133
%135 = getelementptr inbounds double, double* %14, i64 6
%136 = load double, double* %135
%137 = getelementptr inbounds double, double* %14, i64 7
%138 = load double, double* %137
%139 = load double, double* %130
%140 = getelementptr inbounds double, double* %130, i64 4
%141 = load double, double* %140
%142 = getelementptr inbounds double, double* %130, i64 8
%143 = load double, double* %142
%144 = getelementptr inbounds double, double* %130, i64 12
%145 = load double, double* %144
%146 = getelementptr inbounds double, double* %130, i64 16
%147 = load double, double* %146
%148 = getelementptr inbounds double, double* %130, i64 20
%149 = load double, double* %148
%150 = getelementptr inbounds double, double* %130, i64 24
%151 = load double, double* %150
%152 = getelementptr inbounds double, double* %130, i64 28
%153 = load double, double* %152
%154 = insertelement <8 x double> poison, double %139, i64 0
%155 = insertelement <8 x double> %154, double %141, i64 1
%156 = insertelement <8 x double> %155, double %143, i64 2
%157 = insertelement <8 x double> %156, double %145, i64 3
%158 = insertelement <8 x double> %157, double %147, i64 4
%159 = insertelement <8 x double> %158, double %149, i64 5
%160 = insertelement <8 x double> %159, double %151, i64 6
%161 = insertelement <8 x double> %160, double %153, i64 7
%162 = insertelement <8 x double> poison, double %132, i64 0
%163 = shufflevector <8 x double> %162, <8 x double> poison, <8 x i32> zeroinitializer
%164 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %161, <8 x double> %163, <8 x double> %129)
%165 = getelementptr inbounds double, double* %130, i64 1
%166 = load double, double* %165
%167 = getelementptr inbounds double, double* %130, i64 5
%168 = load double, double* %167
%169 = getelementptr inbounds double, double* %130, i64 9
%170 = load double, double* %169
%171 = getelementptr inbounds double, double* %130, i64 13
%172 = load double, double* %171
%173 = getelementptr inbounds double, double* %130, i64 17
%174 = load double, double* %173
%175 = getelementptr inbounds double, double* %130, i64 21
%176 = load double, double* %175
%177 = getelementptr inbounds double, double* %130, i64 25
%178 = load double, double* %177
%179 = getelementptr inbounds double, double* %130, i64 29
%180 = load double, double* %179
%181 = insertelement <8 x double> poison, double %166, i64 0
%182 = insertelement <8 x double> %181, double %168, i64 1
%183 = insertelement <8 x double> %182, double %170, i64 2
%184 = insertelement <8 x double> %183, double %172, i64 3
%185 = insertelement <8 x double> %184, double %174, i64 4
%186 = insertelement <8 x double> %185, double %176, i64 5
%187 = insertelement <8 x double> %186, double %178, i64 6
%188 = insertelement <8 x double> %187, double %180, i64 7
%189 = insertelement <8 x double> poison, double %134, i64 0
%190 = shufflevector <8 x double> %189, <8 x double> poison, <8 x i32> zeroinitializer
%191 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %188, <8 x double> %190, <8 x double> %164)
%192 = getelementptr inbounds double, double* %130, i64 2
%193 = load double, double* %192
%194 = getelementptr inbounds double, double* %130, i64 6
%195 = load double, double* %194
%196 = getelementptr inbounds double, double* %130, i64 10
%197 = load double, double* %196
%198 = getelementptr inbounds double, double* %130, i64 14
%199 = load double, double* %198
%200 = getelementptr inbounds double, double* %130, i64 18
%201 = load double, double* %200
%202 = getelementptr inbounds double, double* %130, i64 22
%203 = load double, double* %202
%204 = getelementptr inbounds double, double* %130, i64 26
%205 = load double, double* %204
%206 = getelementptr inbounds double, double* %130, i64 30
%207 = load double, double* %206
%208 = insertelement <8 x double> poison, double %193, i64 0
%209 = insertelement <8 x double> %208, double %195, i64 1
%210 = insertelement <8 x double> %209, double %197, i64 2
%211 = insertelement <8 x double> %210, double %199, i64 3
%212 = insertelement <8 x double> %211, double %201, i64 4
%213 = insertelement <8 x double> %212, double %203, i64 5
%214 = insertelement <8 x double> %213, double %205, i64 6
%215 = insertelement <8 x double> %214, double %207, i64 7
%216 = insertelement <8 x double> poison, double %136, i64 0
%217 = shufflevector <8 x double> %216, <8 x double> poison, <8 x i32> zeroinitializer
%218 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %215, <8 x double> %217, <8 x double> %191)
%219 = getelementptr inbounds double, double* %130, i64 3
%220 = load double, double* %219
%221 = getelementptr inbounds double, double* %130, i64 7
%222 = load double, double* %221
%223 = getelementptr inbounds double, double* %130, i64 11
%224 = load double, double* %223
%225 = getelementptr inbounds double, double* %130, i64 15
%226 = load double, double* %225
%227 = getelementptr inbounds double, double* %130, i64 19
%228 = load double, double* %227
%229 = getelementptr inbounds double, double* %130, i64 23
%230 = load double, double* %229
%231 = getelementptr inbounds double, double* %130, i64 27
%232 = load double, double* %231
%233 = getelementptr inbounds double, double* %130, i64 31
%234 = load double, double* %233
%235 = insertelement <8 x double> poison, double %220, i64 0
%236 = insertelement <8 x double> %235, double %222, i64 1
%237 = insertelement <8 x double> %236, double %224, i64 2
%238 = insertelement <8 x double> %237, double %226, i64 3
%239 = insertelement <8 x double> %238, double %228, i64 4
%240 = insertelement <8 x double> %239, double %230, i64 5
%241 = insertelement <8 x double> %240, double %232, i64 6
%242 = insertelement <8 x double> %241, double %234, i64 7
%243 = insertelement <8 x double> poison, double %138, i64 0
%244 = shufflevector <8 x double> %243, <8 x double> poison, <8 x i32> zeroinitializer
%245 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %242, <8 x double> %244, <8 x double> %218)
%246 = getelementptr inbounds double, double* %130, i64 %10
%247 = getelementptr inbounds double, double* %14, i64 8
%248 = add nuw nsw i32 %12, 8
%249 = icmp slt i32 %248, %7
br i1 %249, label %11, label %250
250: ; preds = %11
%251 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %45, <8 x double> %47, <8 x double> %15)
%252 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %72, <8 x double> %74, <8 x double> %251)
%253 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %99, <8 x double> %101, <8 x double> %252)
%254 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %126, <8 x double> %128, <8 x double> %253)
%255 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %161, <8 x double> %163, <8 x double> %254)
%256 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %188, <8 x double> %190, <8 x double> %255)
%257 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %215, <8 x double> %217, <8 x double> %256)
%258 = call <8 x double> @llvm.fmuladd.v8f64(<8 x double> %242, <8 x double> %244, <8 x double> %257)
br label %259
259: ; preds = %250, %6
%260 = phi double* [ %3, %6 ], [ %247, %250 ]
%261 = phi double* [ %1, %6 ], [ %246, %250 ]
%262 = phi <8 x double> [ zeroinitializer, %6 ], [ %258, %250 ]
%263 = bitcast double* %260 to <2 x double>*
%264 = load <2 x double>, <2 x double>* %263
%265 = getelementptr inbounds double, double* %260, i64 2
%266 = bitcast double* %265 to <2 x double>*
%267 = load <2 x double>, <2 x double>* %266
%268 = load double, double* %261
%269 = getelementptr inbounds double, double* %261, i64 4
%270 = load double, double* %269
%271 = extractelement <2 x double> %264, i64 0
%272 = extractelement <8 x double> %262, i64 1
%273 = tail call double @llvm.fmuladd.f64(double %270, double %271, double %272)
%274 = getelementptr inbounds double, double* %261, i64 8
%275 = load double, double* %274
%276 = getelementptr inbounds double, double* %261, i64 12
%277 = load double, double* %276
%278 = extractelement <8 x double> %262, i64 3
%279 = tail call double @llvm.fmuladd.f64(double %277, double %271, double %278)
%280 = getelementptr inbounds double, double* %261, i64 16
%281 = load double, double* %280
%282 = getelementptr inbounds double, double* %261, i64 20
%283 = load double, double* %282
%284 = extractelement <8 x double> %262, i64 5
%285 = tail call double @llvm.fmuladd.f64(double %283, double %271, double %284)
%286 = getelementptr inbounds double, double* %261, i64 24
%287 = load double, double* %286
%288 = getelementptr inbounds double, double* %261, i64 28
%289 = load double, double* %288
%290 = extractelement <8 x double> %262, i64 7
%291 = tail call double @llvm.fmuladd.f64(double %289, double %271, double %290)
%292 = getelementptr inbounds double, double* %261, i64 5
%293 = load double, double* %292
%294 = insertelement <2 x double> poison, double %268, i64 0
%295 = insertelement <2 x double> %294, double %293, i64 1
%296 = extractelement <8 x double> %262, i64 0
%297 = insertelement <2 x double> poison, double %296, i64 0
%298 = insertelement <2 x double> %297, double %273, i64 1
%299 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %295, <2 x double> %264, <2 x double> %298)
%300 = getelementptr inbounds double, double* %261, i64 9
%301 = load double, double* %300
%302 = getelementptr inbounds double, double* %261, i64 13
%303 = load double, double* %302
%304 = insertelement <2 x double> poison, double %275, i64 0
%305 = insertelement <2 x double> %304, double %303, i64 1
%306 = extractelement <8 x double> %262, i64 2
%307 = insertelement <2 x double> poison, double %306, i64 0
%308 = insertelement <2 x double> %307, double %279, i64 1
%309 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %305, <2 x double> %264, <2 x double> %308)
%310 = getelementptr inbounds double, double* %261, i64 17
%311 = load double, double* %310
%312 = getelementptr inbounds double, double* %261, i64 21
%313 = load double, double* %312
%314 = insertelement <2 x double> poison, double %281, i64 0
%315 = insertelement <2 x double> %314, double %313, i64 1
%316 = extractelement <8 x double> %262, i64 4
%317 = insertelement <2 x double> poison, double %316, i64 0
%318 = insertelement <2 x double> %317, double %285, i64 1
%319 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %315, <2 x double> %264, <2 x double> %318)
%320 = getelementptr inbounds double, double* %261, i64 25
%321 = load double, double* %320
%322 = getelementptr inbounds double, double* %261, i64 29
%323 = load double, double* %322
%324 = insertelement <2 x double> poison, double %287, i64 0
%325 = insertelement <2 x double> %324, double %323, i64 1
%326 = extractelement <8 x double> %262, i64 6
%327 = insertelement <2 x double> poison, double %326, i64 0
%328 = insertelement <2 x double> %327, double %291, i64 1
%329 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %325, <2 x double> %264, <2 x double> %328)
%330 = getelementptr inbounds double, double* %261, i64 10
%331 = load double, double* %330
%332 = getelementptr inbounds double, double* %261, i64 14
%333 = load double, double* %332
%334 = insertelement <2 x double> poison, double %301, i64 0
%335 = insertelement <2 x double> %334, double %333, i64 1
%336 = shufflevector <2 x double> %264, <2 x double> %267, <2 x i32> <i32 1, i32 2>
%337 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %335, <2 x double> %336, <2 x double> %309)
%338 = getelementptr inbounds double, double* %261, i64 18
%339 = load double, double* %338
%340 = getelementptr inbounds double, double* %261, i64 22
%341 = load double, double* %340
%342 = insertelement <2 x double> poison, double %311, i64 0
%343 = insertelement <2 x double> %342, double %341, i64 1
%344 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %343, <2 x double> %336, <2 x double> %319)
%345 = getelementptr inbounds double, double* %261, i64 26
%346 = load double, double* %345
%347 = getelementptr inbounds double, double* %261, i64 30
%348 = load double, double* %347
%349 = insertelement <2 x double> poison, double %321, i64 0
%350 = insertelement <2 x double> %349, double %348, i64 1
%351 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %350, <2 x double> %336, <2 x double> %329)
%352 = getelementptr inbounds double, double* %261, i64 15
%353 = load double, double* %352
%354 = insertelement <2 x double> poison, double %331, i64 0
%355 = insertelement <2 x double> %354, double %353, i64 1
%356 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %355, <2 x double> %267, <2 x double> %337)
%357 = getelementptr inbounds double, double* %261, i64 19
%358 = load double, double* %357
%359 = getelementptr inbounds double, double* %261, i64 23
%360 = load double, double* %359
%361 = insertelement <2 x double> poison, double %339, i64 0
%362 = insertelement <2 x double> %361, double %360, i64 1
%363 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %362, <2 x double> %267, <2 x double> %344)
%364 = getelementptr inbounds double, double* %261, i64 27
%365 = load double, double* %364
%366 = getelementptr inbounds double, double* %261, i64 31
%367 = load double, double* %366
%368 = insertelement <2 x double> poison, double %346, i64 0
%369 = insertelement <2 x double> %368, double %367, i64 1
%370 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %369, <2 x double> %267, <2 x double> %351)
%371 = getelementptr inbounds double, double* %261, i64 %10
%372 = getelementptr inbounds double, double* %260, i64 4
%373 = bitcast double* %372 to <2 x double>*
%374 = load <2 x double>, <2 x double>* %373
%375 = getelementptr inbounds double, double* %260, i64 6
%376 = bitcast double* %375 to <2 x double>*
%377 = load <2 x double>, <2 x double>* %376
%378 = getelementptr inbounds double, double* %371, i64 16
%379 = load double, double* %378
%380 = getelementptr inbounds double, double* %371, i64 20
%381 = load double, double* %380
%382 = insertelement <2 x double> poison, double %358, i64 0
%383 = insertelement <2 x double> %382, double %381, i64 1
%384 = shufflevector <2 x double> %267, <2 x double> %374, <2 x i32> <i32 1, i32 2>
%385 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %383, <2 x double> %384, <2 x double> %363)
%386 = getelementptr inbounds double, double* %371, i64 24
%387 = load double, double* %386
%388 = getelementptr inbounds double, double* %371, i64 28
%389 = load double, double* %388
%390 = insertelement <2 x double> poison, double %365, i64 0
%391 = insertelement <2 x double> %390, double %389, i64 1
%392 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %391, <2 x double> %384, <2 x double> %370)
%393 = getelementptr inbounds double, double* %371, i64 21
%394 = load double, double* %393
%395 = insertelement <2 x double> poison, double %379, i64 0
%396 = insertelement <2 x double> %395, double %394, i64 1
%397 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %396, <2 x double> %374, <2 x double> %385)
%398 = getelementptr inbounds double, double* %371, i64 25
%399 = load double, double* %398
%400 = getelementptr inbounds double, double* %371, i64 29
%401 = load double, double* %400
%402 = insertelement <2 x double> poison, double %387, i64 0
%403 = insertelement <2 x double> %402, double %401, i64 1
%404 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %403, <2 x double> %374, <2 x double> %392)
%405 = getelementptr inbounds double, double* %371, i64 26
%406 = load double, double* %405
%407 = getelementptr inbounds double, double* %371, i64 30
%408 = load double, double* %407
%409 = insertelement <2 x double> poison, double %399, i64 0
%410 = insertelement <2 x double> %409, double %408, i64 1
%411 = shufflevector <2 x double> %374, <2 x double> %377, <2 x i32> <i32 1, i32 2>
%412 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %410, <2 x double> %411, <2 x double> %404)
%413 = getelementptr inbounds double, double* %371, i64 31
%414 = load double, double* %413
%415 = insertelement <2 x double> poison, double %406, i64 0
%416 = insertelement <2 x double> %415, double %414, i64 1
%417 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %416, <2 x double> %377, <2 x double> %412)
switch i32 %5, label %446 [
i32 0, label %418
i32 1, label %426
]
418: ; preds = %259
%419 = bitcast double* %4 to <2 x double>*
store <2 x double> %299, <2 x double>* %419
%420 = getelementptr inbounds double, double* %4, i64 2
%421 = bitcast double* %420 to <2 x double>*
store <2 x double> %356, <2 x double>* %421
%422 = getelementptr inbounds double, double* %4, i64 4
%423 = bitcast double* %422 to <2 x double>*
store <2 x double> %397, <2 x double>* %423
%424 = getelementptr inbounds double, double* %4, i64 6
%425 = bitcast double* %424 to <2 x double>*
store <2 x double> %417, <2 x double>* %425
br label %466
426: ; preds = %259
%427 = bitcast double* %4 to <2 x double>*
%428 = load <2 x double>, <2 x double>* %427
%429 = fadd <2 x double> %299, %428
%430 = bitcast double* %4 to <2 x double>*
store <2 x double> %429, <2 x double>* %430
%431 = getelementptr inbounds double, double* %4, i64 2
%432 = bitcast double* %431 to <2 x double>*
%433 = load <2 x double>, <2 x double>* %432
%434 = fadd <2 x double> %356, %433
%435 = bitcast double* %431 to <2 x double>*
store <2 x double> %434, <2 x double>* %435
%436 = getelementptr inbounds double, double* %4, i64 4
%437 = bitcast double* %436 to <2 x double>*
%438 = load <2 x double>, <2 x double>* %437
%439 = fadd <2 x double> %397, %438
%440 = bitcast double* %436 to <2 x double>*
store <2 x double> %439, <2 x double>* %440
%441 = getelementptr inbounds double, double* %4, i64 6
%442 = bitcast double* %441 to <2 x double>*
%443 = load <2 x double>, <2 x double>* %442
%444 = fadd <2 x double> %417, %443
%445 = bitcast double* %441 to <2 x double>*
store <2 x double> %444, <2 x double>* %445
br label %466
446: ; preds = %259
%447 = bitcast double* %4 to <2 x double>*
%448 = load <2 x double>, <2 x double>* %447
%449 = fsub <2 x double> %448, %299
%450 = bitcast double* %4 to <2 x double>*
store <2 x double> %449, <2 x double>* %450
%451 = getelementptr inbounds double, double* %4, i64 2
%452 = bitcast double* %451 to <2 x double>*
%453 = load <2 x double>, <2 x double>* %452
%454 = fsub <2 x double> %453, %356
%455 = bitcast double* %451 to <2 x double>*
store <2 x double> %454, <2 x double>* %455
%456 = getelementptr inbounds double, double* %4, i64 4
%457 = bitcast double* %456 to <2 x double>*
%458 = load <2 x double>, <2 x double>* %457
%459 = fsub <2 x double> %458, %397
%460 = bitcast double* %456 to <2 x double>*
store <2 x double> %459, <2 x double>* %460
%461 = getelementptr inbounds double, double* %4, i64 6
%462 = bitcast double* %461 to <2 x double>*
%463 = load <2 x double>, <2 x double>* %462
%464 = fsub <2 x double> %463, %417
%465 = bitcast double* %461 to <2 x double>*
store <2 x double> %464, <2 x double>* %465
br label %466
466: ; preds = %426, %446, %418
ret void
}