void kern_r8_u1_f(double *restrict o0, double *restrict o1, double *restrict o2,
                  double *restrict o3, double *restrict o4, double *restrict o5,
                  double *restrict o6, double *restrict o7, double *i0,
                  double *i1, double *i2, double *i3, double *i4, double *i5,
                  double *i6, double *i7, double *w, long bsize, long blocks) {
  long j;
  for (j = 0; j < blocks; j++) {
    double wr1, wi1;
    double wr2, wi2;
    double wr3, wi3;
    double wr4, wi4;
    double wr5, wi5;
    double wr6, wi6;
    double wr7, wi7;
    double pr2, pi2;
    double pr4, pi4;
    double pr5, pi5;
    double pr6, pi6;
    double pr7, pi7;
    double sr1, si1;
    double sr3, si3;
    double sr5, si5;
    double sr7, si7;
    double qr0, qi0;
    double qr1, qi1;
    double qr2, qi2;
    double qr3, qi3;
    double qr4, qi4;
    double qr5, qi5;
    double qr6, qi6;
    double qr7, qi7;
    double tr0, ti0;
    double tr1, ti1;
    double tr2, ti2;
    double tr3, ti3;
    double tr4, ti4;
    double tr5, ti5;
    double tr6, ti6;
    double tr7, ti7;
    wr4 = w[8 * j];
    wi4 = w[8 * j + 1];
    wr2 = w[4 * j];
    wi2 = w[4 * j + 1];
    wr6 = w[12 * j];
    wi6 = w[12 * j + 1];
    wr1 = w[2 * j];
    wi1 = w[2 * j + 1];
    wr3 = w[6 * j];
    wi3 = w[6 * j + 1];
    wr5 = w[2 * j + 2 * blocks];
    wi5 = w[2 * j + 2 * blocks + 1];
    wr7 = w[6 * j + 6 * blocks];
    wi7 = w[6 * j + 6 * blocks + 1];
    pr5 = i5[16 * j] * wr4 + i5[16 * j + 1] * wi4;
    pi5 = i5[16 * j + 1] * wr4 - i5[16 * j] * wi4;
    pr7 = i7[16 * j] * wr4 + i7[16 * j + 1] * wi4;
    pi7 = i7[16 * j + 1] * wr4 - i7[16 * j] * wi4;
    pr2 = i2[16 * j] * wr2 + i2[16 * j + 1] * wi2;
    pi2 = i2[16 * j + 1] * wr2 - i2[16 * j] * wi2;
    pr4 = i4[16 * j] * wr4 + i4[16 * j + 1] * wi4;
    pi4 = i4[16 * j + 1] * wr4 - i4[16 * j] * wi4;
    pr6 = i6[16 * j] * wr6 + i6[16 * j + 1] * wi6;
    pi6 = i6[16 * j + 1] * wr6 - i6[16 * j] * wi6;
    sr1 = i1[16 * j] + pr5;
    sr5 = i1[16 * j] - pr5;
    si1 = i1[16 * j + 1] + pi5;
    si5 = i1[16 * j + 1] - pi5;
    sr3 = i3[16 * j] + pr7;
    sr7 = i3[16 * j] - pr7;
    si3 = i3[16 * j + 1] + pi7;
    si7 = i3[16 * j + 1] - pi7;
    qr0 = i0[16 * j] + pr4;
    qr4 = i0[16 * j] - pr4;
    qi0 = i0[16 * j + 1] + pi4;
    qi4 = i0[16 * j + 1] - pi4;
    qr2 = pr2 + pr6;
    qr6 = pr2 - pr6;
    qi2 = pi2 + pi6;
    qi6 = pi2 - pi6;
    qr1 = sr1 * wr1 + si1 * wi1;
    qi1 = si1 * wr1 - sr1 * wi1;
    qr3 = sr3 * wr3 + si3 * wi3;
    qi3 = si3 * wr3 - sr3 * wi3;
    qr5 = sr5 * wr5 + si5 * wi5;
    qi5 = si5 * wr5 - sr5 * wi5;
    qr7 = sr7 * wr7 + si7 * wi7;
    qi7 = si7 * wr7 - sr7 * wi7;
    tr0 = qr0 + qr2;
    ti0 = qi0 + qi2;
    tr2 = qr0 - qr2;
    ti2 = qi0 - qi2;
    tr4 = qr4 + qi6;
    ti4 = qi4 - qr6;
    tr6 = qr4 - qi6;
    ti6 = qi4 + qr6;
    tr1 = qr1 + qr3;
    ti1 = qi1 + qi3;
    tr3 = qr1 - qr3;
    ti3 = qi1 - qi3;
    tr5 = qr5 + qr7;
    ti5 = qi5 + qi7;
    tr7 = qr5 - qr7;
    ti7 = qi5 - qi7;
    o0[2 * j] = tr0 + tr1;
    o0[2 * j + 1] = ti0 + ti1;
    o4[2 * j] = tr0 - tr1;
    o4[2 * j + 1] = ti0 - ti1;
    o1[2 * j] = tr4 + tr5;
    o1[2 * j + 1] = ti4 + ti5;
    o5[2 * j] = tr4 - tr5;
    o5[2 * j + 1] = ti4 - ti5;
    o2[2 * j] = tr2 + ti3;
    o2[2 * j + 1] = ti2 - tr3;
    o6[2 * j] = tr2 - ti3;
    o6[2 * j + 1] = ti2 + tr3;
    o3[2 * j] = tr6 + ti7;
    o3[2 * j + 1] = ti6 - tr7;
    o7[2 * j] = tr6 - ti7;
    o7[2 * j + 1] = ti6 + tr7;
  }
}


x86 assembly (clang, -O0):
<kern_r8_u1_f>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1b8,%rsp
mov    0x70(%rbp),%rax
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%rax
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movq   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    0x70(%rbp),%rax
jge    1d05 <kern_r8_u1_f+0xc05>
mov    0x60(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x3,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x60(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x3,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x60(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x2,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x60(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x2,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x60(%rbp),%rax
imul   $0xc,-0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x60(%rbp),%rax
imul   $0xc,-0x38(%rbp),%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x60(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x60(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x60(%rbp),%rax
imul   $0x6,-0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    0x60(%rbp),%rax
imul   $0x6,-0x38(%rbp),%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    0x60(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
mov    0x70(%rbp),%rdx
shl    $0x1,%rdx
add    %rdx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x60(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
mov    0x70(%rbp),%rdx
shl    $0x1,%rdx
add    %rdx,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x60(%rbp),%rax
imul   $0x6,-0x38(%rbp),%rcx
imul   $0x6,0x70(%rbp),%rdx
add    %rdx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x60(%rbp),%rax
imul   $0x6,-0x38(%rbp),%rcx
imul   $0x6,0x70(%rbp),%rdx
add    %rdx,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x70(%rbp),%xmm2
mov    0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm1
mulsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
movsd  -0x70(%rbp),%xmm2
mov    0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x78(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    0x58(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x70(%rbp),%xmm2
mov    0x58(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm1
mulsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    0x58(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
movsd  -0x70(%rbp),%xmm2
mov    0x58(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x78(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    0x30(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x50(%rbp),%xmm2
mov    0x30(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm1
mulsd  -0x58(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x30(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
movsd  -0x50(%rbp),%xmm2
mov    0x30(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x40(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x70(%rbp),%xmm2
mov    0x40(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm1
mulsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    0x40(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
movsd  -0x70(%rbp),%xmm2
mov    0x40(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x78(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    0x50(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x90(%rbp),%xmm2
ff
mov    0x50(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm1
mulsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    0x50(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
movsd  -0x90(%rbp),%xmm2
ff
mov    0x50(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x98(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    0x28(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x28(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x28(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
mov    0x28(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x38(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
mov    0x38(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
mov    0x38(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
mov    0x38(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
subsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
mov    0x20(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
mov    0x20(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x180(%rbp)
ff
mov    0x20(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x20(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x4,%rcx
movsd  0x8(%rax,%rcx,8),%xmm0
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
movsd  -0x40(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0x40(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
mulsd  -0x48(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
movsd  -0x60(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
mulsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
movsd  -0x60(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
mulsd  -0x68(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
mulsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
mulsd  -0x88(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x138(%rbp),%xmm1
ff
mulsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x130(%rbp),%xmm1
ff
mulsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
subsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
addsd  -0x1a8(%rbp),%xmm0
ff
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
subsd  -0x1a0(%rbp),%xmm0
ff
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
subsd  -0x1a8(%rbp),%xmm0
ff
movsd  %xmm0,-0x220(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
addsd  -0x1a0(%rbp),%xmm0
ff
movsd  %xmm0,-0x228(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
addsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
subsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
subsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x190(%rbp),%xmm0
ff
addsd  -0x1b0(%rbp),%xmm0
ff
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x198(%rbp),%xmm0
ff
addsd  -0x1b8(%rbp),%xmm0
ff
movsd  %xmm0,-0x218(%rbp)
ff
movsd  -0x190(%rbp),%xmm0
ff
subsd  -0x1b0(%rbp),%xmm0
ff
movsd  %xmm0,-0x230(%rbp)
ff
movsd  -0x198(%rbp),%xmm0
ff
subsd  -0x1b8(%rbp),%xmm0
ff
movsd  %xmm0,-0x238(%rbp)
ff
movsd  -0x1c0(%rbp),%xmm0
ff
addsd  -0x1d0(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x1c8(%rbp),%xmm0
ff
addsd  -0x1d8(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,0x8(%rax,%rcx,8)
movsd  -0x1c0(%rbp),%xmm0
ff
subsd  -0x1d0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x1c8(%rbp),%xmm0
ff
subsd  -0x1d8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,0x8(%rax,%rcx,8)
movsd  -0x200(%rbp),%xmm0
ff
addsd  -0x210(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x208(%rbp),%xmm0
ff
addsd  -0x218(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,0x8(%rax,%rcx,8)
movsd  -0x200(%rbp),%xmm0
ff
subsd  -0x210(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x208(%rbp),%xmm0
ff
subsd  -0x218(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,0x8(%rax,%rcx,8)
movsd  -0x1e0(%rbp),%xmm0
ff
addsd  -0x1f8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x1e8(%rbp),%xmm0
ff
subsd  -0x1f0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,0x8(%rax,%rcx,8)
movsd  -0x1e0(%rbp),%xmm0
ff
subsd  -0x1f8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x1e8(%rbp),%xmm0
ff
addsd  -0x1f0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,0x8(%rax,%rcx,8)
movsd  -0x220(%rbp),%xmm0
ff
addsd  -0x238(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x228(%rbp),%xmm0
ff
subsd  -0x230(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,0x8(%rax,%rcx,8)
movsd  -0x220(%rbp),%xmm0
ff
subsd  -0x238(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x228(%rbp),%xmm0
ff
addsd  -0x230(%rbp),%xmm0
ff
mov    0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
shl    $0x1,%rcx
movsd  %xmm0,0x8(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    115f <kern_r8_u1_f+0x5f>
add    $0x1b8,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kern_r8_u1_f>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    0x98(%rsp),%r10
test   %r10,%r10
jle    14d4 <kern_r8_u1_f+0x3d4>
mov    0x88(%rsp),%r12
mov    %r10,%rax
shl    $0x4,%rax
lea    (%rax,%rax,2),%r13
lea    (%rax,%r12,1),%rbp
add    $0x8,%rbp
add    $0x8,%r12
xor    %r11d,%r11d
movapd 0xeba(%rip),%xmm8
mov    %r12,%rax
mov    %r12,%r14
nopl   0x0(%rax)
mov    0x70(%rsp),%rbx
movupd (%rbx,%r11,8),%xmm10
movapd %xmm10,%xmm1
xorpd  %xmm8,%xmm1
movsd  -0x8(%r12,%r11,4),%xmm5
movsd  (%r12,%r11,4),%xmm4
movsd  (%rax),%xmm11
movapd %xmm4,%xmm9
unpcklpd %xmm11,%xmm9
unpcklpd %xmm4,%xmm11
unpcklpd %xmm4,%xmm4
movapd %xmm10,%xmm7
shufpd $0x1,%xmm1,%xmm7
mulpd  %xmm4,%xmm7
movsd  -0x8(%rax),%xmm3
movapd %xmm5,%xmm14
unpcklpd %xmm3,%xmm14
unpcklpd %xmm5,%xmm3
unpcklpd %xmm5,%xmm5
mulpd  %xmm5,%xmm10
addpd  %xmm7,%xmm10
mov    0x80(%rsp),%r15
movupd (%r15,%r11,8),%xmm6
movapd %xmm6,%xmm7
mulpd  %xmm6,%xmm5
xorpd  %xmm8,%xmm6
shufpd $0x1,%xmm6,%xmm7
mulpd  %xmm4,%xmm7
addpd  %xmm7,%xmm5
mov    0x58(%rsp),%rbx
movupd (%rbx,%r11,8),%xmm6
movsd  -0x8(%r12,%r11,2),%xmm4
movapd %xmm6,%xmm7
unpcklpd %xmm4,%xmm4
mulpd  %xmm6,%xmm4
xorpd  %xmm8,%xmm6
movsd  (%r12,%r11,2),%xmm2
unpcklpd %xmm2,%xmm2
shufpd $0x1,%xmm6,%xmm7
mulpd  %xmm2,%xmm7
addpd  %xmm7,%xmm4
mov    0x78(%rsp),%rbx
movsd  (%rbx,%r11,8),%xmm2
movsd  0x8(%rbx,%r11,8),%xmm6
mov    0x68(%rsp),%rbx
movsd  (%rbx,%r11,8),%xmm13
movsd  0x8(%rbx,%r11,8),%xmm12
movapd %xmm12,%xmm0
unpcklpd %xmm6,%xmm0
mulpd  %xmm9,%xmm0
movapd %xmm13,%xmm7
unpcklpd %xmm2,%xmm7
mulpd  %xmm7,%xmm14
addpd  %xmm0,%xmm14
unpcklpd %xmm13,%xmm2
mulpd  %xmm2,%xmm11
unpcklpd %xmm12,%xmm6
mulpd  %xmm6,%xmm3
subpd  %xmm11,%xmm3
mov    0x50(%rsp),%rbx
movupd (%rbx,%r11,8),%xmm9
movapd %xmm10,%xmm0
addpd  %xmm9,%xmm0
movapd %xmm0,%xmm7
xorpd  %xmm8,%xmm7
shufpd $0x2,%xmm0,%xmm7
shufpd $0x1,%xmm0,%xmm0
subpd  %xmm10,%xmm9
mov    0x60(%rsp),%rbx
movupd (%rbx,%r11,8),%xmm11
movapd %xmm5,%xmm6
addpd  %xmm11,%xmm6
movapd %xmm6,%xmm2
xorpd  %xmm8,%xmm2
shufpd $0x2,%xmm6,%xmm2
movapd %xmm6,%xmm12
shufpd $0x1,%xmm6,%xmm12
subpd  %xmm5,%xmm11
mov    0x48(%rsp),%rbx
movupd (%rbx,%r11,8),%xmm5
movapd %xmm3,%xmm6
movsd  %xmm14,%xmm6
addpd  %xmm5,%xmm6
movapd %xmm5,%xmm1
unpcklpd %xmm4,%xmm1
subpd  %xmm14,%xmm1
shufpd $0x1,%xmm3,%xmm14
addpd  %xmm4,%xmm14
unpckhpd %xmm5,%xmm4
subpd  %xmm3,%xmm4
movsd  -0x8(%r12,%r11,1),%xmm10
movsd  (%r12,%r11,1),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm7
unpcklpd %xmm10,%xmm10
mulpd  %xmm0,%xmm10
addpd  %xmm7,%xmm10
movsd  -0x8(%r14),%xmm0
movsd  (%r14),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm2
unpcklpd %xmm0,%xmm0
mulpd  %xmm12,%xmm0
addpd  %xmm2,%xmm0
movsd  -0x8(%rbp,%r11,1),%xmm5
movapd %xmm9,%xmm2
unpcklpd %xmm5,%xmm5
mulpd  %xmm9,%xmm5
xorpd  %xmm8,%xmm9
movsd  0x0(%rbp,%r11,1),%xmm3
unpcklpd %xmm3,%xmm3
shufpd $0x1,%xmm9,%xmm2
mulpd  %xmm3,%xmm2
addpd  %xmm2,%xmm5
movsd  -0x8(%r14,%r13,1),%xmm7
movapd %xmm11,%xmm2
unpcklpd %xmm7,%xmm7
mulpd  %xmm11,%xmm7
xorpd  %xmm8,%xmm11
movsd  (%r14,%r13,1),%xmm3
unpcklpd %xmm3,%xmm3
shufpd $0x1,%xmm11,%xmm2
mulpd  %xmm3,%xmm2
addpd  %xmm2,%xmm7
movapd %xmm6,%xmm12
subpd  %xmm14,%xmm12
movapd %xmm4,%xmm11
addpd  %xmm1,%xmm11
movapd %xmm4,%xmm3
subpd  %xmm1,%xmm3
movapd %xmm3,%xmm9
movsd  %xmm11,%xmm9
subpd  %xmm4,%xmm1
shufpd $0x2,%xmm11,%xmm1
movapd %xmm10,%xmm2
unpckhpd %xmm14,%xmm2
movapd %xmm0,%xmm4
unpckhpd %xmm6,%xmm4
addpd  %xmm2,%xmm4
unpcklpd %xmm10,%xmm14
unpcklpd %xmm0,%xmm6
addpd  %xmm14,%xmm6
subpd  %xmm0,%xmm10
movapd %xmm5,%xmm0
addpd  %xmm7,%xmm0
subpd  %xmm7,%xmm5
shufpd $0x1,%xmm5,%xmm5
movapd %xmm6,%xmm2
addpd  %xmm4,%xmm2
movupd %xmm2,(%rdi,%r11,1)
movapd %xmm4,%xmm2
movsd  %xmm6,%xmm2
movsd  %xmm4,%xmm6
subpd  %xmm6,%xmm2
movupd %xmm2,(%r8,%r11,1)
addpd  %xmm0,%xmm11
addpd  %xmm0,%xmm3
movsd  %xmm11,%xmm3
movupd %xmm3,(%rsi,%r11,1)
subpd  %xmm0,%xmm9
movupd %xmm9,(%r9,%r11,1)
movapd %xmm12,%xmm0
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm12
movapd %xmm12,%xmm2
movsd  %xmm0,%xmm2
movupd %xmm2,(%rdx,%r11,1)
shufpd $0x2,%xmm0,%xmm12
mov    0x38(%rsp),%rbx
movupd %xmm12,(%rbx,%r11,1)
movapd %xmm1,%xmm0
addpd  %xmm5,%xmm0
subpd  %xmm5,%xmm1
movapd %xmm1,%xmm2
movsd  %xmm0,%xmm2
movupd %xmm2,(%rcx,%r11,1)
shufpd $0x2,%xmm0,%xmm1
mov    0x40(%rsp),%rbx
movupd %xmm1,(%rbx,%r11,1)
add    $0x30,%r14
add    $0x60,%rax
add    $0x10,%r11
add    $0xffffffffffffffff,%r10
jne    1150 <kern_r8_u1_f+0x50>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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