double WENO5_Reconstruct1d(const double vmm, const double vm, const double v,
                           const double vp, const double vpp, const double umm,
                           const double um, const double u, const double up,
                           const double upp) {
  double B0n, B1n, B2n, B0p, B1p, B2p;
  double w0n, w1n, w2n, w0p, w1p, w2p;
  double a0n, a1n, a2n, a0p, a1p, a2p;
  double alphasumn, alphasump, hn, hp;
  double dflux;
  B0n = ((double)13) / 12 * (vmm - 2 * vm + v) * (vmm - 2 * vm + v) +
        ((double)1) / 4 * (vmm - 4 * vm + 3 * v) * (vmm - 4 * vm + 3 * v);
  B1n = ((double)13) / 12 * (vm - 2 * v + vp) * (vm - 2 * v + vp) +
        ((double)1) / 4 * (vm - vp) * (vm - vp);
  B2n = ((double)13) / 12 * (v - 2 * vp + vpp) * (v - 2 * vp + vpp) +
        ((double)1) / 4 * (3 * v - 4 * vp + vpp) * (3 * v - 4 * vp + vpp);
  a0n = ((double)1) / 10 / ((1E-6 + B0n) * (1E-6 + B0n));
  a1n = ((double)6) / 10 / ((1E-6 + B1n) * (1E-6 + B1n));
  a2n = ((double)3) / 10 / ((1E-6 + B2n) * (1E-6 + B2n));
  alphasumn = a0n + a1n + a2n;
  w0n = a0n / alphasumn;
  w1n = a1n / alphasumn;
  w2n = a2n / alphasumn;
  hn = (w0n * (2 * vmm - 7 * vm + 11 * v) + w1n * (-vm + 5 * v + 2 * vp) +
        w2n * (2 * v + 5 * vp - vpp)) /
       6;
  B0p = ((double)13) / 12 * (umm - 2 * um + u) * (umm - 2 * um + u) +
        ((double)1) / 4 * (umm - 4 * um + 3 * u) * (umm - 4 * um + 3 * u);
  B1p = ((double)13) / 12 * (um - 2 * u + up) * (um - 2 * u + up) +
        ((double)1) / 4 * (um - up) * (um - up);
  B2p = ((double)13) / 12 * (u - 2 * up + upp) * (u - 2 * up + upp) +
        ((double)1) / 4 * (3 * u - 4 * up + upp) * (3 * u - 4 * up + upp);
  a0p = ((double)3) / 10 / ((1E-6 + B0p) * (1E-6 + B0p));
  a1p = ((double)6) / 10 / ((1E-6 + B1p) * (1E-6 + B1p));
  a2p = ((double)1) / 10 / ((1E-6 + B2p) * (1E-6 + B2p));
  alphasump = a0p + a1p + a2p;
  w0p = a0p / alphasump;
  w1p = a1p / alphasump;
  w2p = a2p / alphasump;
  hp = (w0p * (-umm + 5 * um + 2 * u) + w1p * (2 * um + 5 * u - up) +
        w2p * (11 * u - 7 * up + 2 * upp)) /
       6;
  dflux = (hn + hp);
  return dflux;
}


x86 assembly (clang, -O0):
<WENO5_Reconstruct1d>:
push   %rbp
mov    %rsp,%rbp
sub    $0x78,%rsp
movsd  0x18(%rbp),%xmm8
movsd  0x10(%rbp),%xmm8
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
movsd  %xmm4,-0x28(%rbp)
movsd  %xmm5,-0x30(%rbp)
movsd  %xmm6,-0x38(%rbp)
movsd  %xmm7,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm0
addsd  %xmm0,%xmm0
subsd  %xmm0,%xmm1
addsd  -0x18(%rbp),%xmm1
movsd  0xefd(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x8(%rbp),%xmm2
movsd  -0x10(%rbp),%xmm1
addsd  %xmm1,%xmm1
subsd  %xmm1,%xmm2
addsd  -0x18(%rbp),%xmm2
movsd  -0x8(%rbp),%xmm3
movsd  -0x10(%rbp),%xmm1
movsd  0xed8(%rip),%xmm4
mulsd  %xmm4,%xmm1
addsd  %xmm3,%xmm1
movsd  -0x18(%rbp),%xmm3
movsd  0xea3(%rip),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm1,%xmm3
movsd  0xea3(%rip),%xmm1
mulsd  %xmm3,%xmm1
movsd  -0x8(%rbp),%xmm3
movsd  -0x10(%rbp),%xmm4
movsd  0xe9d(%rip),%xmm5
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
movsd  -0x18(%rbp),%xmm3
movsd  0xe68(%rip),%xmm5
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
addsd  %xmm0,%xmm0
subsd  %xmm0,%xmm1
addsd  -0x20(%rbp),%xmm1
movsd  0xe48(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm1
addsd  %xmm1,%xmm1
subsd  %xmm1,%xmm2
addsd  -0x20(%rbp),%xmm2
movsd  -0x10(%rbp),%xmm3
subsd  -0x20(%rbp),%xmm3
movsd  0xe13(%rip),%xmm1
mulsd  %xmm3,%xmm1
movsd  -0x10(%rbp),%xmm3
subsd  -0x20(%rbp),%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm0
addsd  %xmm0,%xmm0
subsd  %xmm0,%xmm1
addsd  -0x28(%rbp),%xmm1
movsd  0xddd(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm1
addsd  %xmm1,%xmm1
subsd  %xmm1,%xmm2
addsd  -0x28(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
movsd  0xda5(%rip),%xmm1
mulsd  -0x20(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xd79(%rip),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm1,%xmm3
addsd  -0x28(%rbp),%xmm3
movsd  0xd74(%rip),%xmm1
mulsd  %xmm3,%xmm1
movsd  -0x18(%rbp),%xmm3
movsd  0xd5b(%rip),%xmm4
mulsd  -0x20(%rbp),%xmm4
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
movsd  0xd2f(%rip),%xmm5
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
addsd  -0x28(%rbp),%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xcf1(%rip),%xmm1
addsd  -0x48(%rbp),%xmm1
movsd  0xce4(%rip),%xmm0
addsd  -0x48(%rbp),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xccb(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0xcbf(%rip),%xmm1
addsd  -0x50(%rbp),%xmm1
movsd  0xcb2(%rip),%xmm0
addsd  -0x50(%rbp),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xca9(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xc8d(%rip),%xmm1
addsd  -0x58(%rbp),%xmm1
movsd  0xc80(%rip),%xmm0
addsd  -0x58(%rbp),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xc7f(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
divsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
movsd  -0xb0(%rbp),%xmm0
ff
divsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
movsd  -0xb8(%rbp),%xmm0
ff
divsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x78(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  0xbd7(%rip),%xmm2
mulsd  -0x10(%rbp),%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
addsd  %xmm0,%xmm0
addsd  %xmm2,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xb9e(%rip),%xmm3
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
movsd  -0x80(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm3
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
movsd  -0x18(%rbp),%xmm4
movsd  0xb78(%rip),%xmm5
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
movsd  -0x20(%rbp),%xmm3
addsd  %xmm3,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x18(%rbp),%xmm2
movsd  0xb42(%rip),%xmm3
mulsd  -0x20(%rbp),%xmm3
addsd  %xmm2,%xmm2
addsd  %xmm3,%xmm2
subsd  -0x28(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xb08(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
addsd  %xmm0,%xmm0
subsd  %xmm0,%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  0xb35(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm1
addsd  %xmm1,%xmm1
subsd  %xmm1,%xmm2
addsd  -0x40(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm3
movsd  -0x38(%rbp),%xmm1
movsd  0xb10(%rip),%xmm4
mulsd  %xmm4,%xmm1
addsd  %xmm3,%xmm1
movsd  -0x40(%rbp),%xmm3
movsd  0xadb(%rip),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm1,%xmm3
movsd  0xadb(%rip),%xmm1
mulsd  %xmm3,%xmm1
movsd  -0x30(%rbp),%xmm3
movsd  -0x38(%rbp),%xmm4
movsd  0xad5(%rip),%xmm5
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
movsd  -0x40(%rbp),%xmm3
movsd  0xaa0(%rip),%xmm5
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
addsd  %xmm0,%xmm0
subsd  %xmm0,%xmm1
addsd  0x10(%rbp),%xmm1
movsd  0xa80(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
addsd  %xmm1,%xmm1
subsd  %xmm1,%xmm2
addsd  0x10(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm3
subsd  0x10(%rbp),%xmm3
movsd  0xa4b(%rip),%xmm1
mulsd  %xmm3,%xmm1
movsd  -0x38(%rbp),%xmm3
subsd  0x10(%rbp),%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x40(%rbp),%xmm1
movsd  0x10(%rbp),%xmm0
addsd  %xmm0,%xmm0
subsd  %xmm0,%xmm1
addsd  0x18(%rbp),%xmm1
movsd  0xa15(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0x10(%rbp),%xmm1
addsd  %xmm1,%xmm1
subsd  %xmm1,%xmm2
addsd  0x18(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm3
movsd  0x9dd(%rip),%xmm1
mulsd  0x10(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x9b1(%rip),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm1,%xmm3
addsd  0x18(%rbp),%xmm3
movsd  0x9ac(%rip),%xmm1
mulsd  %xmm3,%xmm1
movsd  -0x40(%rbp),%xmm3
movsd  0x993(%rip),%xmm4
mulsd  0x10(%rbp),%xmm4
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
movsd  0x967(%rip),%xmm5
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
addsd  0x18(%rbp),%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0x929(%rip),%xmm1
addsd  -0x60(%rbp),%xmm1
movsd  0x91c(%rip),%xmm0
addsd  -0x60(%rbp),%xmm0
mulsd  %xmm0,%xmm1
movsd  0x91b(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0x8f7(%rip),%xmm1
addsd  -0x68(%rbp),%xmm1
movsd  0x8ea(%rip),%xmm0
addsd  -0x68(%rbp),%xmm0
mulsd  %xmm0,%xmm1
movsd  0x8e1(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0x8c5(%rip),%xmm1
addsd  -0x70(%rbp),%xmm1
movsd  0x8b8(%rip),%xmm0
addsd  -0x70(%rbp),%xmm0
mulsd  %xmm0,%xmm1
movsd  0x89f(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
divsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
divsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
divsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  -0x38(%rbp),%xmm0
movsd  0x7f2(%rip),%xmm3
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
movsd  -0x40(%rbp),%xmm2
addsd  %xmm2,%xmm2
addsd  %xmm0,%xmm2
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0x38(%rbp),%xmm3
movsd  0x7c8(%rip),%xmm4
mulsd  -0x40(%rbp),%xmm4
addsd  %xmm3,%xmm3
addsd  %xmm4,%xmm3
subsd  0x10(%rbp),%xmm3
mulsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0x40(%rbp),%xmm3
movsd  0x78d(%rip),%xmm2
mulsd  0x10(%rbp),%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  0x761(%rip),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
movsd  0x18(%rbp),%xmm2
addsd  %xmm2,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x734(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
add    $0x78,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<WENO5_Reconstruct1d>:
movapd %xmm7,%xmm8
movapd %xmm7,-0x38(%rsp)
movapd %xmm6,%xmm7
movapd %xmm5,%xmm12
movapd %xmm5,-0x28(%rsp)
movapd %xmm4,%xmm10
movapd %xmm2,%xmm5
movapd %xmm1,%xmm11
movapd %xmm1,-0x18(%rsp)
movsd  0xed2(%rip),%xmm1
mulsd  %xmm1,%xmm2
subsd  %xmm11,%xmm2
movapd %xmm3,%xmm9
addsd  %xmm3,%xmm9
addsd  %xmm2,%xmm9
movapd %xmm3,%xmm2
mulsd  %xmm1,%xmm2
movapd %xmm5,%xmm6
addsd  %xmm5,%xmm6
addsd  %xmm2,%xmm6
unpcklpd %xmm7,%xmm11
movapd %xmm0,%xmm2
unpcklpd %xmm12,%xmm2
movapd %xmm11,%xmm12
addpd  %xmm11,%xmm12
movapd %xmm11,%xmm13
mulpd  0xea8(%rip),%xmm13
addpd  %xmm2,%xmm13
subpd  %xmm12,%xmm2
unpcklpd %xmm8,%xmm5
movapd 0xea1(%rip),%xmm4
mulpd  %xmm5,%xmm4
addpd  %xmm4,%xmm13
movapd 0xe9f(%rip),%xmm15
movapd %xmm13,%xmm12
mulpd  %xmm15,%xmm12
mulpd  %xmm13,%xmm12
addpd  %xmm5,%xmm2
movapd 0xe53(%rip),%xmm13
movapd %xmm2,%xmm14
mulpd  %xmm13,%xmm14
mulpd  %xmm2,%xmm14
addpd  %xmm12,%xmm14
movapd %xmm5,%xmm12
addpd  %xmm5,%xmm12
movapd %xmm11,%xmm2
subpd  %xmm12,%xmm2
movsd  0x8(%rsp),%xmm12
unpcklpd %xmm12,%xmm3
subpd  %xmm3,%xmm11
movapd %xmm11,%xmm1
mulpd  %xmm15,%xmm1
mulpd  %xmm11,%xmm1
addpd  %xmm3,%xmm2
movapd %xmm2,%xmm11
mulpd  %xmm13,%xmm11
mulpd  %xmm2,%xmm11
addpd  %xmm1,%xmm11
movapd %xmm3,%xmm1
addpd  %xmm3,%xmm1
movapd %xmm5,%xmm8
subpd  %xmm1,%xmm8
mulpd  0xde9(%rip),%xmm3
addpd  %xmm4,%xmm3
subsd  %xmm10,%xmm6
movsd  0x10(%rsp),%xmm2
unpcklpd %xmm2,%xmm10
addpd  %xmm10,%xmm8
addpd  %xmm10,%xmm3
mulpd  %xmm3,%xmm15
mulpd  %xmm3,%xmm15
mulpd  %xmm8,%xmm13
mulpd  %xmm8,%xmm13
addpd  %xmm15,%xmm13
movapd 0xdda(%rip),%xmm3
addpd  %xmm3,%xmm14
mulpd  %xmm14,%xmm14
movapd 0xdd8(%rip),%xmm1
divpd  %xmm14,%xmm1
addpd  %xmm3,%xmm11
mulpd  %xmm11,%xmm11
movapd 0xdd0(%rip),%xmm14
divpd  %xmm11,%xmm14
addpd  %xmm3,%xmm13
mulpd  %xmm13,%xmm13
movapd 0xdc8(%rip),%xmm8
divpd  %xmm13,%xmm8
movapd %xmm1,%xmm3
addpd  %xmm14,%xmm3
addpd  %xmm8,%xmm3
divpd  %xmm3,%xmm1
divpd  %xmm3,%xmm14
divpd  %xmm3,%xmm8
movsd  0xd0e(%rip),%xmm10
movapd -0x18(%rsp),%xmm4
mulsd  %xmm10,%xmm4
movapd -0x28(%rsp),%xmm3
xorpd  0xd95(%rip),%xmm3
unpcklpd %xmm3,%xmm4
unpcklpd %xmm7,%xmm0
mulpd  0xd95(%rip),%xmm0
addpd  %xmm4,%xmm0
mulpd  0xd99(%rip),%xmm5
addpd  %xmm5,%xmm0
mulpd  %xmm1,%xmm0
movapd -0x38(%rsp),%xmm1
movsd  0xccb(%rip),%xmm3
mulsd  %xmm1,%xmm3
addsd  %xmm7,%xmm7
addsd  %xmm3,%xmm7
subsd  %xmm12,%xmm7
unpcklpd %xmm7,%xmm9
mulpd  %xmm14,%xmm9
addpd  %xmm9,%xmm0
mulsd  %xmm10,%xmm12
mulsd  0xca6(%rip),%xmm1
addsd  %xmm12,%xmm1
addsd  %xmm2,%xmm2
addsd  %xmm1,%xmm2
unpcklpd %xmm2,%xmm6
mulpd  %xmm8,%xmm6
addpd  %xmm6,%xmm0
divpd  0xd44(%rip),%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
addsd  %xmm1,%xmm0
ret

LLVM IR (-O0):
define double @WENO5_Reconstruct1d(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8, double %9) {
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%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
%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 double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
store double %0, double* %11
store double %1, double* %12
store double %2, double* %13
store double %3, double* %14
store double %4, double* %15
store double %5, double* %16
store double %6, double* %17
store double %7, double* %18
store double %8, double* %19
store double %9, double* %20
%44 = load double, double* %11
%45 = load double, double* %12
%46 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %45, double %44)
%47 = load double, double* %13
%48 = fadd double %46, %47
%49 = fmul double 0x3FF1555555555555, %48
%50 = load double, double* %11
%51 = load double, double* %12
%52 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %51, double %50)
%53 = load double, double* %13
%54 = fadd double %52, %53
%55 = load double, double* %11
%56 = load double, double* %12
%57 = call double @llvm.fmuladd.f64(double -4.000000e+00, double %56, double %55)
%58 = load double, double* %13
%59 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %58, double %57)
%60 = fmul double 2.500000e-01, %59
%61 = load double, double* %11
%62 = load double, double* %12
%63 = call double @llvm.fmuladd.f64(double -4.000000e+00, double %62, double %61)
%64 = load double, double* %13
%65 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %64, double %63)
%66 = fmul double %60, %65
%67 = call double @llvm.fmuladd.f64(double %49, double %54, double %66)
store double %67, double* %21
%68 = load double, double* %12
%69 = load double, double* %13
%70 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %69, double %68)
%71 = load double, double* %14
%72 = fadd double %70, %71
%73 = fmul double 0x3FF1555555555555, %72
%74 = load double, double* %12
%75 = load double, double* %13
%76 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %75, double %74)
%77 = load double, double* %14
%78 = fadd double %76, %77
%79 = load double, double* %12
%80 = load double, double* %14
%81 = fsub double %79, %80
%82 = fmul double 2.500000e-01, %81
%83 = load double, double* %12
%84 = load double, double* %14
%85 = fsub double %83, %84
%86 = fmul double %82, %85
%87 = call double @llvm.fmuladd.f64(double %73, double %78, double %86)
store double %87, double* %22
%88 = load double, double* %13
%89 = load double, double* %14
%90 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %89, double %88)
%91 = load double, double* %15
%92 = fadd double %90, %91
%93 = fmul double 0x3FF1555555555555, %92
%94 = load double, double* %13
%95 = load double, double* %14
%96 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %95, double %94)
%97 = load double, double* %15
%98 = fadd double %96, %97
%99 = load double, double* %13
%100 = load double, double* %14
%101 = fmul double 4.000000e+00, %100
%102 = fneg double %101
%103 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %99, double %102)
%104 = load double, double* %15
%105 = fadd double %103, %104
%106 = fmul double 2.500000e-01, %105
%107 = load double, double* %13
%108 = load double, double* %14
%109 = fmul double 4.000000e+00, %108
%110 = fneg double %109
%111 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %107, double %110)
%112 = load double, double* %15
%113 = fadd double %111, %112
%114 = fmul double %106, %113
%115 = call double @llvm.fmuladd.f64(double %93, double %98, double %114)
store double %115, double* %23
%116 = load double, double* %21
%117 = fadd double 0x3EB0C6F7A0B5ED8D, %116
%118 = load double, double* %21
%119 = fadd double 0x3EB0C6F7A0B5ED8D, %118
%120 = fmul double %117, %119
%121 = fdiv double 1.000000e-01, %120
store double %121, double* %33
%122 = load double, double* %22
%123 = fadd double 0x3EB0C6F7A0B5ED8D, %122
%124 = load double, double* %22
%125 = fadd double 0x3EB0C6F7A0B5ED8D, %124
%126 = fmul double %123, %125
%127 = fdiv double 6.000000e-01, %126
store double %127, double* %34
%128 = load double, double* %23
%129 = fadd double 0x3EB0C6F7A0B5ED8D, %128
%130 = load double, double* %23
%131 = fadd double 0x3EB0C6F7A0B5ED8D, %130
%132 = fmul double %129, %131
%133 = fdiv double 3.000000e-01, %132
store double %133, double* %35
%134 = load double, double* %33
%135 = load double, double* %34
%136 = fadd double %134, %135
%137 = load double, double* %35
%138 = fadd double %136, %137
store double %138, double* %39
%139 = load double, double* %33
%140 = load double, double* %39
%141 = fdiv double %139, %140
store double %141, double* %27
%142 = load double, double* %34
%143 = load double, double* %39
%144 = fdiv double %142, %143
store double %144, double* %28
%145 = load double, double* %35
%146 = load double, double* %39
%147 = fdiv double %145, %146
store double %147, double* %29
%148 = load double, double* %27
%149 = load double, double* %11
%150 = load double, double* %12
%151 = fmul double 7.000000e+00, %150
%152 = fneg double %151
%153 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %149, double %152)
%154 = load double, double* %13
%155 = call double @llvm.fmuladd.f64(double 1.100000e+01, double %154, double %153)
%156 = load double, double* %28
%157 = load double, double* %12
%158 = fneg double %157
%159 = load double, double* %13
%160 = call double @llvm.fmuladd.f64(double 5.000000e+00, double %159, double %158)
%161 = load double, double* %14
%162 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %161, double %160)
%163 = fmul double %156, %162
%164 = call double @llvm.fmuladd.f64(double %148, double %155, double %163)
%165 = load double, double* %29
%166 = load double, double* %13
%167 = load double, double* %14
%168 = fmul double 5.000000e+00, %167
%169 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %166, double %168)
%170 = load double, double* %15
%171 = fsub double %169, %170
%172 = call double @llvm.fmuladd.f64(double %165, double %171, double %164)
%173 = fdiv double %172, 6.000000e+00
store double %173, double* %41
%174 = load double, double* %16
%175 = load double, double* %17
%176 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %175, double %174)
%177 = load double, double* %18
%178 = fadd double %176, %177
%179 = fmul double 0x3FF1555555555555, %178
%180 = load double, double* %16
%181 = load double, double* %17
%182 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %181, double %180)
%183 = load double, double* %18
%184 = fadd double %182, %183
%185 = load double, double* %16
%186 = load double, double* %17
%187 = call double @llvm.fmuladd.f64(double -4.000000e+00, double %186, double %185)
%188 = load double, double* %18
%189 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %188, double %187)
%190 = fmul double 2.500000e-01, %189
%191 = load double, double* %16
%192 = load double, double* %17
%193 = call double @llvm.fmuladd.f64(double -4.000000e+00, double %192, double %191)
%194 = load double, double* %18
%195 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %194, double %193)
%196 = fmul double %190, %195
%197 = call double @llvm.fmuladd.f64(double %179, double %184, double %196)
store double %197, double* %24
%198 = load double, double* %17
%199 = load double, double* %18
%200 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %199, double %198)
%201 = load double, double* %19
%202 = fadd double %200, %201
%203 = fmul double 0x3FF1555555555555, %202
%204 = load double, double* %17
%205 = load double, double* %18
%206 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %205, double %204)
%207 = load double, double* %19
%208 = fadd double %206, %207
%209 = load double, double* %17
%210 = load double, double* %19
%211 = fsub double %209, %210
%212 = fmul double 2.500000e-01, %211
%213 = load double, double* %17
%214 = load double, double* %19
%215 = fsub double %213, %214
%216 = fmul double %212, %215
%217 = call double @llvm.fmuladd.f64(double %203, double %208, double %216)
store double %217, double* %25
%218 = load double, double* %18
%219 = load double, double* %19
%220 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %219, double %218)
%221 = load double, double* %20
%222 = fadd double %220, %221
%223 = fmul double 0x3FF1555555555555, %222
%224 = load double, double* %18
%225 = load double, double* %19
%226 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %225, double %224)
%227 = load double, double* %20
%228 = fadd double %226, %227
%229 = load double, double* %18
%230 = load double, double* %19
%231 = fmul double 4.000000e+00, %230
%232 = fneg double %231
%233 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %229, double %232)
%234 = load double, double* %20
%235 = fadd double %233, %234
%236 = fmul double 2.500000e-01, %235
%237 = load double, double* %18
%238 = load double, double* %19
%239 = fmul double 4.000000e+00, %238
%240 = fneg double %239
%241 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %237, double %240)
%242 = load double, double* %20
%243 = fadd double %241, %242
%244 = fmul double %236, %243
%245 = call double @llvm.fmuladd.f64(double %223, double %228, double %244)
store double %245, double* %26
%246 = load double, double* %24
%247 = fadd double 0x3EB0C6F7A0B5ED8D, %246
%248 = load double, double* %24
%249 = fadd double 0x3EB0C6F7A0B5ED8D, %248
%250 = fmul double %247, %249
%251 = fdiv double 3.000000e-01, %250
store double %251, double* %36
%252 = load double, double* %25
%253 = fadd double 0x3EB0C6F7A0B5ED8D, %252
%254 = load double, double* %25
%255 = fadd double 0x3EB0C6F7A0B5ED8D, %254
%256 = fmul double %253, %255
%257 = fdiv double 6.000000e-01, %256
store double %257, double* %37
%258 = load double, double* %26
%259 = fadd double 0x3EB0C6F7A0B5ED8D, %258
%260 = load double, double* %26
%261 = fadd double 0x3EB0C6F7A0B5ED8D, %260
%262 = fmul double %259, %261
%263 = fdiv double 1.000000e-01, %262
store double %263, double* %38
%264 = load double, double* %36
%265 = load double, double* %37
%266 = fadd double %264, %265
%267 = load double, double* %38
%268 = fadd double %266, %267
store double %268, double* %40
%269 = load double, double* %36
%270 = load double, double* %40
%271 = fdiv double %269, %270
store double %271, double* %30
%272 = load double, double* %37
%273 = load double, double* %40
%274 = fdiv double %272, %273
store double %274, double* %31
%275 = load double, double* %38
%276 = load double, double* %40
%277 = fdiv double %275, %276
store double %277, double* %32
%278 = load double, double* %30
%279 = load double, double* %16
%280 = fneg double %279
%281 = load double, double* %17
%282 = call double @llvm.fmuladd.f64(double 5.000000e+00, double %281, double %280)
%283 = load double, double* %18
%284 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %283, double %282)
%285 = load double, double* %31
%286 = load double, double* %17
%287 = load double, double* %18
%288 = fmul double 5.000000e+00, %287
%289 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %286, double %288)
%290 = load double, double* %19
%291 = fsub double %289, %290
%292 = fmul double %285, %291
%293 = call double @llvm.fmuladd.f64(double %278, double %284, double %292)
%294 = load double, double* %32
%295 = load double, double* %18
%296 = load double, double* %19
%297 = fmul double 7.000000e+00, %296
%298 = fneg double %297
%299 = call double @llvm.fmuladd.f64(double 1.100000e+01, double %295, double %298)
%300 = load double, double* %20
%301 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %300, double %299)
%302 = call double @llvm.fmuladd.f64(double %294, double %301, double %293)
%303 = fdiv double %302, 6.000000e+00
store double %303, double* %42
%304 = load double, double* %41
%305 = load double, double* %42
%306 = fadd double %304, %305
store double %306, double* %43
%307 = load double, double* %43
ret double %307
}

LLVM IR (-O2):
define double @WENO5_Reconstruct1d(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8, double %9) {
%11 = fmul double %1, -7.000000e+00
%12 = fneg double %1
%13 = tail call double @llvm.fmuladd.f64(double %2, double 5.000000e+00, double %12)
%14 = tail call double @llvm.fmuladd.f64(double %3, double 2.000000e+00, double %13)
%15 = fmul double %3, 5.000000e+00
%16 = tail call double @llvm.fmuladd.f64(double %2, double 2.000000e+00, double %15)
%17 = fsub double %16, %4
%18 = insertelement <2 x double> poison, double %1, i64 0
%19 = insertelement <2 x double> %18, double %6, i64 1
%20 = insertelement <2 x double> poison, double %0, i64 0
%21 = insertelement <2 x double> %20, double %5, i64 1
%22 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %19, <2 x double> <double -2.000000e+00, double -2.000000e+00>, <2 x double> %21)
%23 = insertelement <2 x double> poison, double %2, i64 0
%24 = insertelement <2 x double> %23, double %7, i64 1
%25 = fadd <2 x double> %22, %24
%26 = fmul <2 x double> %25, <double 0x3FF1555555555555, double 0x3FF1555555555555>
%27 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %19, <2 x double> <double -4.000000e+00, double -4.000000e+00>, <2 x double> %21)
%28 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %24, <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double> %27)
%29 = fmul <2 x double> %28, <double 2.500000e-01, double 2.500000e-01>
%30 = fmul <2 x double> %28, %29
%31 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %26, <2 x double> %25, <2 x double> %30)
%32 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %24, <2 x double> <double -2.000000e+00, double -2.000000e+00>, <2 x double> %19)
%33 = insertelement <2 x double> poison, double %3, i64 0
%34 = insertelement <2 x double> %33, double %8, i64 1
%35 = fadd <2 x double> %32, %34
%36 = fmul <2 x double> %35, <double 0x3FF1555555555555, double 0x3FF1555555555555>
%37 = fsub <2 x double> %19, %34
%38 = fmul <2 x double> %37, <double 2.500000e-01, double 2.500000e-01>
%39 = fmul <2 x double> %37, %38
%40 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %36, <2 x double> %35, <2 x double> %39)
%41 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %34, <2 x double> <double -2.000000e+00, double -2.000000e+00>, <2 x double> %24)
%42 = insertelement <2 x double> poison, double %4, i64 0
%43 = insertelement <2 x double> %42, double %9, i64 1
%44 = fadd <2 x double> %41, %43
%45 = fmul <2 x double> %44, <double 0x3FF1555555555555, double 0x3FF1555555555555>
%46 = fmul <2 x double> %34, <double -4.000000e+00, double -4.000000e+00>
%47 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %24, <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double> %46)
%48 = fadd <2 x double> %47, %43
%49 = fmul <2 x double> %48, <double 2.500000e-01, double 2.500000e-01>
%50 = fmul <2 x double> %48, %49
%51 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %45, <2 x double> %44, <2 x double> %50)
%52 = fadd <2 x double> %31, <double 0x3EB0C6F7A0B5ED8D, double 0x3EB0C6F7A0B5ED8D>
%53 = fmul <2 x double> %52, %52
%54 = fdiv <2 x double> <double 1.000000e-01, double 3.000000e-01>, %53
%55 = fadd <2 x double> %40, <double 0x3EB0C6F7A0B5ED8D, double 0x3EB0C6F7A0B5ED8D>
%56 = fmul <2 x double> %55, %55
%57 = fdiv <2 x double> <double 6.000000e-01, double 6.000000e-01>, %56
%58 = fadd <2 x double> %51, <double 0x3EB0C6F7A0B5ED8D, double 0x3EB0C6F7A0B5ED8D>
%59 = fmul <2 x double> %58, %58
%60 = fdiv <2 x double> <double 3.000000e-01, double 1.000000e-01>, %59
%61 = fadd <2 x double> %54, %57
%62 = fadd <2 x double> %61, %60
%63 = fdiv <2 x double> %54, %62
%64 = fdiv <2 x double> %57, %62
%65 = fdiv <2 x double> %60, %62
%66 = fneg double %5
%67 = insertelement <2 x double> %20, double %6, i64 1
%68 = insertelement <2 x double> poison, double %11, i64 0
%69 = insertelement <2 x double> %68, double %66, i64 1
%70 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %67, <2 x double> <double 2.000000e+00, double 5.000000e+00>, <2 x double> %69)
%71 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %24, <2 x double> <double 1.100000e+01, double 2.000000e+00>, <2 x double> %70)
%72 = fmul double %7, 5.000000e+00
%73 = tail call double @llvm.fmuladd.f64(double %6, double 2.000000e+00, double %72)
%74 = fsub double %73, %8
%75 = insertelement <2 x double> poison, double %14, i64 0
%76 = insertelement <2 x double> %75, double %74, i64 1
%77 = fmul <2 x double> %76, %64
%78 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %63, <2 x double> %71, <2 x double> %77)
%79 = fmul double %8, -7.000000e+00
%80 = tail call double @llvm.fmuladd.f64(double %7, double 1.100000e+01, double %79)
%81 = tail call double @llvm.fmuladd.f64(double %9, double 2.000000e+00, double %80)
%82 = insertelement <2 x double> poison, double %17, i64 0
%83 = insertelement <2 x double> %82, double %81, i64 1
%84 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %65, <2 x double> %83, <2 x double> %78)
%85 = fdiv <2 x double> %84, <double 6.000000e+00, double 6.000000e+00>
%86 = shufflevector <2 x double> %85, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%87 = fadd <2 x double> %85, %86
%88 = extractelement <2 x double> %87, i64 0
ret double %88
}