void interpolate_order3_square(double epsilon, double eta,
                               double *out_5520632088669242493) {
  out_5520632088669242493[0] =
      0.390625 * (epsilon - 1.0) * (epsilon - 0.447213595499958) *
      (epsilon + 0.447213595499958) * (eta - 1.0) * (eta - 0.447213595499958) *
      (eta + 0.447213595499958);
  out_5520632088669242493[1] = -0.873464053710856 * (epsilon - 1.0) *
                               (epsilon - 0.447213595499958) * (epsilon + 1.0) *
                               (eta - 1.0) * (eta - 0.447213595499958) *
                               (eta + 0.447213595499958);
  out_5520632088669242493[2] = 0.873464053710855 * (epsilon - 1.0) *
                               (epsilon + 0.447213595499958) * (epsilon + 1.0) *
                               (eta - 1.0) * (eta - 0.447213595499958) *
                               (eta + 0.447213595499958);
  out_5520632088669242493[3] = -0.390625 * (epsilon - 0.447213595499958) *
                               (epsilon + 0.447213595499958) * (epsilon + 1.0) *
                               (eta - 1.0) * (eta - 0.447213595499958) *
                               (eta + 0.447213595499958);
  out_5520632088669242493[4] = -0.873464053710855 * (epsilon - 1.0) *
                               (epsilon - 0.447213595499958) *
                               (epsilon + 0.447213595499958) * (eta - 1.0) *
                               (eta - 0.447213595499958) * (eta + 1.0);
  out_5520632088669242493[5] =
      1.953125 * (epsilon - 1.0) * (epsilon - 0.447213595499958) *
      (epsilon + 1.0) * (eta - 1.0) * (eta - 0.447213595499958) * (eta + 1.0);
  out_5520632088669242493[6] =
      -1.953125 * (epsilon - 1.0) * (epsilon + 0.447213595499958) *
      (epsilon + 1.0) * (eta - 1.0) * (eta - 0.447213595499958) * (eta + 1.0);
  out_5520632088669242493[7] =
      0.873464053710855 * (epsilon - 0.447213595499958) *
      (epsilon + 0.447213595499958) * (epsilon + 1.0) * (eta - 1.0) *
      (eta - 0.447213595499958) * (eta + 1.0);
  out_5520632088669242493[8] = 0.873464053710855 * (epsilon - 1.0) *
                               (epsilon - 0.447213595499958) *
                               (epsilon + 0.447213595499958) * (eta - 1.0) *
                               (eta + 0.447213595499958) * (eta + 1.0);
  out_5520632088669242493[9] =
      -1.953125 * (epsilon - 1.0) * (epsilon - 0.447213595499958) *
      (epsilon + 1.0) * (eta - 1.0) * (eta + 0.447213595499958) * (eta + 1.0);
  out_5520632088669242493[10] =
      1.953125 * (epsilon - 1.0) * (epsilon + 0.447213595499958) *
      (epsilon + 1.0) * (eta - 1.0) * (eta + 0.447213595499958) * (eta + 1.0);
  out_5520632088669242493[11] =
      -0.873464053710855 * (epsilon - 0.447213595499958) *
      (epsilon + 0.447213595499958) * (epsilon + 1.0) * (eta - 1.0) *
      (eta + 0.447213595499958) * (eta + 1.0);
  out_5520632088669242493[12] =
      -0.390625 * (epsilon - 1.0) * (epsilon - 0.447213595499958) *
      (epsilon + 0.447213595499958) * (eta - 0.447213595499958) *
      (eta + 0.447213595499958) * (eta + 1.0);
  out_5520632088669242493[13] = 0.873464053710856 * (epsilon - 1.0) *
                                (epsilon - 0.447213595499958) *
                                (epsilon + 1.0) * (eta - 0.447213595499958) *
                                (eta + 0.447213595499958) * (eta + 1.0);
  out_5520632088669242493[14] = -0.873464053710855 * (epsilon - 1.0) *
                                (epsilon + 0.447213595499958) *
                                (epsilon + 1.0) * (eta - 0.447213595499958) *
                                (eta + 0.447213595499958) * (eta + 1.0);
  out_5520632088669242493[15] = 0.390625 * (epsilon - 0.447213595499958) *
                                (epsilon + 0.447213595499958) *
                                (epsilon + 1.0) * (eta - 0.447213595499958) *
                                (eta + 0.447213595499958) * (eta + 1.0);
}


x86 assembly (clang, -O0):
<interpolate_order3_square>:
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
mov    %rdi,-0x18(%rbp)
movsd  -0x8(%rbp),%xmm1
movsd  0xee1(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xee5(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  0xecc(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xebc(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xe9e(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xe91(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe81(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0xe5b(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xe97(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  0xe46(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe2e(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xe18(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xe0b(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdfb(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0xdd4(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xe08(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xdc4(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdab(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xd95(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xd88(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd78(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0xd59(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xd6d(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xd41(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd28(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xd12(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xd05(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcf5(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0xcce(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xcda(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  0xcb9(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xca9(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xc8b(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xc7e(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc66(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0xc47(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xc6b(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  0xc32(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc1a(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xc04(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xbf7(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbdf(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0xbc0(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xbec(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xbb0(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb97(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xb81(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xb74(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb5c(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0xb45(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xb71(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0xb2d(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb14(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xafe(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xaf1(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xad9(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0xaba(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xaee(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  0xaa5(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa95(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xa77(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa6f(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa56(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0xa37(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xa63(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  0xa22(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa0a(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0x9f4(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x9ec(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x9d3(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0x9b4(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x9d8(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0x9a4(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x98b(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0x975(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x96d(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x954(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0x93d(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x941(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0x925(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x90c(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0x8f6(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x8ee(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x8d5(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0x8b6(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x8d2(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  0x8a1(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x891(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0x87b(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x86b(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x852(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0x833(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x847(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  0x81e(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x806(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0x7f8(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x7e8(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x7cf(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0x7b0(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x7bc(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0x7a0(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x787(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0x779(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x769(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x750(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x8(%rbp),%xmm1
movsd  0x739(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x735(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0x721(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x708(%rip),%xmm1
addsd  -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0x6fa(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x6ea(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x6d1(%rip),%xmm1
addsd  -0x10(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x78(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<interpolate_order3_square>:
unpcklpd %xmm0,%xmm0
movapd 0xef3(%rip),%xmm8
addpd  %xmm0,%xmm8
movsd  0xf55(%rip),%xmm12
addsd  %xmm1,%xmm12
movsd  0xf4f(%rip),%xmm10
addsd  %xmm1,%xmm10
movsd  0xf49(%rip),%xmm11
addsd  %xmm1,%xmm11
movapd %xmm8,%xmm6
unpcklpd %xmm8,%xmm6
movapd 0xec2(%rip),%xmm2
mulpd  %xmm6,%xmm2
movapd %xmm8,%xmm4
unpckhpd %xmm8,%xmm4
mulpd  %xmm4,%xmm2
addpd  0xeb8(%rip),%xmm0
mulpd  %xmm0,%xmm2
unpcklpd %xmm12,%xmm12
mulpd  %xmm12,%xmm2
unpcklpd %xmm10,%xmm10
mulpd  %xmm10,%xmm2
unpcklpd %xmm11,%xmm11
mulpd  %xmm11,%xmm2
movupd %xmm2,(%rdi)
movapd 0xe9a(%rip),%xmm5
mulpd  %xmm8,%xmm5
movapd %xmm0,%xmm9
unpcklpd %xmm0,%xmm9
movapd %xmm9,%xmm3
mulpd  %xmm5,%xmm3
movapd 0xe8a(%rip),%xmm2
mulpd  %xmm6,%xmm2
movapd %xmm4,%xmm7
mulpd  %xmm2,%xmm7
mulpd  %xmm0,%xmm7
mulpd  0xe81(%rip),%xmm8
unpcklpd %xmm8,%xmm5
mulpd  %xmm4,%xmm5
mulpd  0xe80(%rip),%xmm6
mulpd  %xmm0,%xmm5
mulpd  %xmm4,%xmm6
mulpd  %xmm0,%xmm6
unpckhpd %xmm0,%xmm0
mulpd  %xmm0,%xmm3
mulpd  %xmm12,%xmm3
mulpd  %xmm10,%xmm3
mulpd  %xmm11,%xmm3
movupd %xmm3,0x10(%rdi)
addsd  0xe78(%rip),%xmm1
mulpd  %xmm12,%xmm7
mulpd  %xmm10,%xmm7
unpcklpd %xmm1,%xmm1
mulpd  %xmm1,%xmm7
movupd %xmm7,0x20(%rdi)
movsd  0xe61(%rip),%xmm3
mulsd  %xmm4,%xmm3
movapd %xmm2,%xmm7
shufpd $0x1,%xmm3,%xmm7
mulpd  %xmm9,%xmm7
mulsd  0xe4f(%rip),%xmm4
unpcklpd %xmm4,%xmm2
mulpd  %xmm9,%xmm2
mulpd  %xmm8,%xmm9
mulpd  %xmm0,%xmm9
mulpd  %xmm12,%xmm9
mulpd  %xmm10,%xmm9
mulpd  %xmm1,%xmm9
movupd %xmm9,0x30(%rdi)
mulpd  %xmm12,%xmm5
mulpd  %xmm11,%xmm5
mulpd  %xmm1,%xmm5
movupd %xmm5,0x40(%rdi)
mulpd  %xmm0,%xmm7
mulpd  %xmm12,%xmm7
mulpd  %xmm11,%xmm7
mulpd  %xmm1,%xmm7
movupd %xmm7,0x50(%rdi)
mulpd  %xmm10,%xmm6
mulpd  %xmm11,%xmm6
mulpd  %xmm1,%xmm6
movupd %xmm6,0x60(%rdi)
mulpd  %xmm0,%xmm2
mulpd  %xmm10,%xmm2
mulpd  %xmm11,%xmm2
mulpd  %xmm1,%xmm2
movupd %xmm2,0x70(%rdi)
ret

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

LLVM IR (-O2):
define void @interpolate_order3_square(double %0, double %1, double* nocapture writeonly %2) {
%4 = insertelement <2 x double> poison, double %0, i64 0
%5 = shufflevector <2 x double> %4, <2 x double> poison, <2 x i32> zeroinitializer
%6 = fadd <2 x double> %5, <double -1.000000e+00, double 0xBFDC9F25C5BFEDDA>
%7 = fadd double %1, -1.000000e+00
%8 = fadd double %1, 0xBFDC9F25C5BFEDDA
%9 = fadd double %1, 0x3FDC9F25C5BFEDDA
%10 = shufflevector <2 x double> %6, <2 x double> undef, <2 x i32> zeroinitializer
%11 = fmul <2 x double> %10, <double 3.906250e-01, double 0xBFEBF36AE31D6E4C>
%12 = extractelement <2 x double> %6, i64 1
%13 = shufflevector <2 x double> %6, <2 x double> undef, <2 x i32> <i32 1, i32 1>
%14 = fmul <2 x double> %13, %11
%15 = fadd <2 x double> %5, <double 0x3FDC9F25C5BFEDDA, double 1.000000e+00>
%16 = fmul <2 x double> %15, %14
%17 = insertelement <2 x double> poison, double %7, i64 0
%18 = shufflevector <2 x double> %17, <2 x double> poison, <2 x i32> zeroinitializer
%19 = fmul <2 x double> %18, %16
%20 = insertelement <2 x double> poison, double %8, i64 0
%21 = shufflevector <2 x double> %20, <2 x double> poison, <2 x i32> zeroinitializer
%22 = fmul <2 x double> %21, %19
%23 = insertelement <2 x double> poison, double %9, i64 0
%24 = shufflevector <2 x double> %23, <2 x double> poison, <2 x i32> zeroinitializer
%25 = fmul <2 x double> %24, %22
%26 = bitcast double* %2 to <2 x double>*
store <2 x double> %25, <2 x double>* %26
%27 = getelementptr inbounds double, double* %2, i64 2
%28 = fmul <2 x double> %6, <double 0x3FEBF36AE31D6E43, double -3.906250e-01>
%29 = shufflevector <2 x double> %15, <2 x double> undef, <2 x i32> zeroinitializer
%30 = fmul <2 x double> %29, %28
%31 = shufflevector <2 x double> %15, <2 x double> undef, <2 x i32> <i32 1, i32 1>
%32 = fmul <2 x double> %31, %30
%33 = fmul <2 x double> %18, %32
%34 = fmul <2 x double> %21, %33
%35 = fmul <2 x double> %24, %34
%36 = bitcast double* %27 to <2 x double>*
store <2 x double> %35, <2 x double>* %36
%37 = fadd double %1, 1.000000e+00
%38 = getelementptr inbounds double, double* %2, i64 4
%39 = fmul <2 x double> %10, <double 0xBFEBF36AE31D6E43, double 0x3FFF400000000000>
%40 = fmul <2 x double> %13, %39
%41 = fmul <2 x double> %15, %40
%42 = fmul <2 x double> %18, %41
%43 = fmul <2 x double> %21, %42
%44 = insertelement <2 x double> poison, double %37, i64 0
%45 = shufflevector <2 x double> %44, <2 x double> poison, <2 x i32> zeroinitializer
%46 = fmul <2 x double> %45, %43
%47 = bitcast double* %38 to <2 x double>*
store <2 x double> %46, <2 x double>* %47
%48 = getelementptr inbounds double, double* %2, i64 6
%49 = fmul <2 x double> %6, <double 0xBFFF400000000000, double 0x3FEBF36AE31D6E43>
%50 = fmul <2 x double> %29, %49
%51 = fmul <2 x double> %31, %50
%52 = fmul <2 x double> %18, %51
%53 = fmul <2 x double> %21, %52
%54 = fmul <2 x double> %45, %53
%55 = bitcast double* %48 to <2 x double>*
store <2 x double> %54, <2 x double>* %55
%56 = getelementptr inbounds double, double* %2, i64 8
%57 = shufflevector <2 x double> %28, <2 x double> %49, <2 x i32> <i32 0, i32 2>
%58 = fmul <2 x double> %13, %57
%59 = fmul <2 x double> %15, %58
%60 = fmul <2 x double> %18, %59
%61 = fmul <2 x double> %24, %60
%62 = fmul <2 x double> %45, %61
%63 = bitcast double* %56 to <2 x double>*
store <2 x double> %62, <2 x double>* %63
%64 = extractelement <2 x double> %39, i64 1
%65 = getelementptr inbounds double, double* %2, i64 10
%66 = fmul double %12, 0xBFEBF36AE31D6E43
%67 = insertelement <2 x double> poison, double %64, i64 0
%68 = insertelement <2 x double> %67, double %66, i64 1
%69 = fmul <2 x double> %29, %68
%70 = fmul <2 x double> %31, %69
%71 = fmul <2 x double> %18, %70
%72 = fmul <2 x double> %24, %71
%73 = fmul <2 x double> %45, %72
%74 = bitcast double* %65 to <2 x double>*
store <2 x double> %73, <2 x double>* %74
%75 = getelementptr inbounds double, double* %2, i64 12
%76 = fmul <2 x double> %10, <double -3.906250e-01, double 0x3FEBF36AE31D6E4C>
%77 = fmul <2 x double> %13, %76
%78 = fmul <2 x double> %15, %77
%79 = fmul <2 x double> %21, %78
%80 = fmul <2 x double> %24, %79
%81 = fmul <2 x double> %45, %80
%82 = bitcast double* %75 to <2 x double>*
store <2 x double> %81, <2 x double>* %82
%83 = getelementptr inbounds double, double* %2, i64 14
%84 = fmul double %12, 3.906250e-01
%85 = insertelement <2 x double> %39, double %84, i64 1
%86 = fmul <2 x double> %29, %85
%87 = fmul <2 x double> %31, %86
%88 = fmul <2 x double> %21, %87
%89 = fmul <2 x double> %24, %88
%90 = fmul <2 x double> %45, %89
%91 = bitcast double* %83 to <2 x double>*
store <2 x double> %90, <2 x double>* %91
ret void
}