void jpeg_fdct(float *data) {
  float tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
  float tmp10, tmp11, tmp12, tmp13;
  float z1, z2, z3, z4, z5, z11, z13;
  float *dataptr;
  int ctr;
  dataptr = data;
  for (ctr = 0; ctr < 8; ctr++) {
    tmp0 = dataptr[0] + dataptr[7];
    tmp7 = dataptr[0] - dataptr[7];
    tmp1 = dataptr[1] + dataptr[6];
    tmp6 = dataptr[1] - dataptr[6];
    tmp2 = dataptr[2] + dataptr[5];
    tmp5 = dataptr[2] - dataptr[5];
    tmp3 = dataptr[3] + dataptr[4];
    tmp4 = dataptr[3] - dataptr[4];
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    dataptr[0] = tmp10 + tmp11;
    dataptr[4] = tmp10 - tmp11;
    z1 = (tmp12 + tmp13) * ((float)0.707106781);
    dataptr[2] = tmp13 + z1;
    dataptr[6] = tmp13 - z1;
    tmp10 = tmp4 + tmp5;
    tmp11 = tmp5 + tmp6;
    tmp12 = tmp6 + tmp7;
    z5 = (tmp10 - tmp12) * ((float)0.382683433);
    z2 = ((float)0.541196100) * tmp10 + z5;
    z4 = ((float)1.306562965) * tmp12 + z5;
    z3 = tmp11 * ((float)0.707106781);
    z11 = tmp7 + z3;
    z13 = tmp7 - z3;
    dataptr[5] = z13 + z2;
    dataptr[3] = z13 - z2;
    dataptr[1] = z11 + z4;
    dataptr[7] = z11 - z4;
    dataptr += 8;
  }
  dataptr = data;
  for (ctr = 8 - 1; ctr >= 0; ctr--) {
    tmp0 = dataptr[8 * 0] + dataptr[8 * 7];
    tmp7 = dataptr[8 * 0] - dataptr[8 * 7];
    tmp1 = dataptr[8 * 1] + dataptr[8 * 6];
    tmp6 = dataptr[8 * 1] - dataptr[8 * 6];
    tmp2 = dataptr[8 * 2] + dataptr[8 * 5];
    tmp5 = dataptr[8 * 2] - dataptr[8 * 5];
    tmp3 = dataptr[8 * 3] + dataptr[8 * 4];
    tmp4 = dataptr[8 * 3] - dataptr[8 * 4];
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    dataptr[8 * 0] = tmp10 + tmp11;
    dataptr[8 * 4] = tmp10 - tmp11;
    z1 = (tmp12 + tmp13) * ((float)0.707106781);
    dataptr[8 * 2] = tmp13 + z1;
    dataptr[8 * 6] = tmp13 - z1;
    tmp10 = tmp4 + tmp5;
    tmp11 = tmp5 + tmp6;
    tmp12 = tmp6 + tmp7;
    z5 = (tmp10 - tmp12) * ((float)0.382683433);
    z2 = ((float)0.541196100) * tmp10 + z5;
    z4 = ((float)1.306562965) * tmp12 + z5;
    z3 = tmp11 * ((float)0.707106781);
    z11 = tmp7 + z3;
    z13 = tmp7 - z3;
    dataptr[8 * 5] = z13 + z2;
    dataptr[8 * 3] = z13 - z2;
    dataptr[8 * 1] = z11 + z4;
    dataptr[8 * 7] = z11 - z4;
    dataptr++;
  }
}


x86 assembly (clang, -O0):
<jpeg_fdct>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x60(%rbp)
movl   $0x0,-0x64(%rbp)
cmpl   $0x8,-0x64(%rbp)
jge    1395 <jpeg_fdct+0x295>
mov    -0x60(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x60(%rbp),%rax
addss  0x1c(%rax),%xmm0
movss  %xmm0,-0xc(%rbp)
mov    -0x60(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x60(%rbp),%rax
subss  0x1c(%rax),%xmm0
movss  %xmm0,-0x28(%rbp)
mov    -0x60(%rbp),%rax
movss  0x4(%rax),%xmm0
mov    -0x60(%rbp),%rax
addss  0x18(%rax),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x60(%rbp),%rax
movss  0x4(%rax),%xmm0
mov    -0x60(%rbp),%rax
subss  0x18(%rax),%xmm0
movss  %xmm0,-0x24(%rbp)
mov    -0x60(%rbp),%rax
movss  0x8(%rax),%xmm0
mov    -0x60(%rbp),%rax
addss  0x14(%rax),%xmm0
movss  %xmm0,-0x14(%rbp)
mov    -0x60(%rbp),%rax
movss  0x8(%rax),%xmm0
mov    -0x60(%rbp),%rax
subss  0x14(%rax),%xmm0
movss  %xmm0,-0x20(%rbp)
mov    -0x60(%rbp),%rax
movss  0xc(%rax),%xmm0
mov    -0x60(%rbp),%rax
addss  0x10(%rax),%xmm0
movss  %xmm0,-0x18(%rbp)
mov    -0x60(%rbp),%rax
movss  0xc(%rax),%xmm0
mov    -0x60(%rbp),%rax
subss  0x10(%rax),%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  -0xc(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0xc(%rbp),%xmm0
subss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x10(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x10(%rbp),%xmm0
subss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x2c(%rbp),%xmm0
addss  -0x30(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x2c(%rbp),%xmm0
subss  -0x30(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0x10(%rax)
movss  -0x34(%rbp),%xmm0
addss  -0x38(%rbp),%xmm0
movss  0xdb6(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x38(%rbp),%xmm0
addss  -0x3c(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0x8(%rax)
movss  -0x38(%rbp),%xmm0
subss  -0x3c(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0x18(%rax)
movss  -0x1c(%rbp),%xmm0
addss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x20(%rbp),%xmm0
addss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x24(%rbp),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x2c(%rbp),%xmm0
subss  -0x34(%rbp),%xmm0
movss  0xd54(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x2c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm1
movss  0xd35(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x34(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm1
movss  0xd12(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  0xcf9(%rip),%xmm0
mulss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x28(%rbp),%xmm0
addss  -0x44(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x28(%rbp),%xmm0
subss  -0x44(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x54(%rbp),%xmm0
addss  -0x40(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0x14(%rax)
movss  -0x54(%rbp),%xmm0
subss  -0x40(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0xc(%rax)
movss  -0x50(%rbp),%xmm0
addss  -0x48(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x50(%rbp),%xmm0
subss  -0x48(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0x1c(%rax)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1117 <jpeg_fdct+0x17>
mov    -0x8(%rbp),%rax
mov    %rax,-0x60(%rbp)
movl   $0x7,-0x64(%rbp)
cmpl   $0x0,-0x64(%rbp)
jl     1646 <jpeg_fdct+0x546>
mov    -0x60(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x60(%rbp),%rax
addss  0xe0(%rax),%xmm0
movss  %xmm0,-0xc(%rbp)
mov    -0x60(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x60(%rbp),%rax
subss  0xe0(%rax),%xmm0
movss  %xmm0,-0x28(%rbp)
mov    -0x60(%rbp),%rax
movss  0x20(%rax),%xmm0
mov    -0x60(%rbp),%rax
addss  0xc0(%rax),%xmm0
movss  %xmm0,-0x10(%rbp)
mov    -0x60(%rbp),%rax
movss  0x20(%rax),%xmm0
mov    -0x60(%rbp),%rax
subss  0xc0(%rax),%xmm0
movss  %xmm0,-0x24(%rbp)
mov    -0x60(%rbp),%rax
movss  0x40(%rax),%xmm0
mov    -0x60(%rbp),%rax
addss  0xa0(%rax),%xmm0
movss  %xmm0,-0x14(%rbp)
mov    -0x60(%rbp),%rax
movss  0x40(%rax),%xmm0
mov    -0x60(%rbp),%rax
subss  0xa0(%rax),%xmm0
movss  %xmm0,-0x20(%rbp)
mov    -0x60(%rbp),%rax
movss  0x60(%rax),%xmm0
mov    -0x60(%rbp),%rax
addss  0x80(%rax),%xmm0
movss  %xmm0,-0x18(%rbp)
mov    -0x60(%rbp),%rax
movss  0x60(%rax),%xmm0
mov    -0x60(%rbp),%rax
subss  0x80(%rax),%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  -0xc(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0xc(%rbp),%xmm0
subss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x10(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x10(%rbp),%xmm0
subss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x2c(%rbp),%xmm0
addss  -0x30(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x2c(%rbp),%xmm0
subss  -0x30(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0x80(%rax)
movss  -0x34(%rbp),%xmm0
addss  -0x38(%rbp),%xmm0
movss  0xb0e(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x38(%rbp),%xmm0
addss  -0x3c(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0x40(%rax)
movss  -0x38(%rbp),%xmm0
subss  -0x3c(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0xc0(%rax)
movss  -0x1c(%rbp),%xmm0
addss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x20(%rbp),%xmm0
addss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x24(%rbp),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x2c(%rbp),%xmm0
subss  -0x34(%rbp),%xmm0
movss  0xaa9(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x2c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm1
movss  0xa8a(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x34(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm1
movss  0xa67(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  0xa4e(%rip),%xmm0
mulss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x28(%rbp),%xmm0
addss  -0x44(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x28(%rbp),%xmm0
subss  -0x44(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x54(%rbp),%xmm0
addss  -0x40(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0xa0(%rax)
movss  -0x54(%rbp),%xmm0
subss  -0x40(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0x60(%rax)
movss  -0x50(%rbp),%xmm0
addss  -0x48(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0x20(%rax)
movss  -0x50(%rbp),%xmm0
subss  -0x48(%rbp),%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,0xe0(%rax)
mov    -0x60(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x60(%rbp)
mov    -0x64(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x64(%rbp)
jmp    13a4 <jpeg_fdct+0x2a4>
pop    %rbp
ret

x86 assembly (clang, -O2):
<jpeg_fdct>:
movups 0x50(%rdi),%xmm10
movups 0x70(%rdi),%xmm9
movups (%rdi),%xmm11
movups 0x10(%rdi),%xmm8
movups 0x20(%rdi),%xmm0
movups 0x30(%rdi),%xmm7
movups 0x40(%rdi),%xmm5
movups 0x60(%rdi),%xmm6
movaps %xmm6,%xmm3
movlhps %xmm5,%xmm3
movaps %xmm11,%xmm1
unpcklps %xmm0,%xmm1
shufps $0x24,%xmm3,%xmm1
movaps %xmm5,%xmm4
unpcklps %xmm6,%xmm4
movaps %xmm0,%xmm3
shufps $0x11,%xmm11,%xmm3
shufps $0xe2,%xmm4,%xmm3
movaps %xmm6,%xmm2
unpckhpd %xmm5,%xmm2
movaps %xmm11,%xmm12
unpckhps %xmm0,%xmm12
shufps $0x24,%xmm2,%xmm12
unpckhps %xmm6,%xmm5
shufps $0x33,%xmm11,%xmm0
shufps $0xe2,%xmm5,%xmm0
movaps %xmm9,%xmm2
movlhps %xmm10,%xmm2
movaps %xmm8,%xmm11
unpcklps %xmm7,%xmm11
shufps $0x24,%xmm2,%xmm11
movaps %xmm10,%xmm2
unpcklps %xmm9,%xmm2
movaps %xmm7,%xmm6
shufps $0x11,%xmm8,%xmm6
shufps $0xe2,%xmm2,%xmm6
movaps %xmm9,%xmm2
unpckhpd %xmm10,%xmm2
movaps %xmm8,%xmm5
unpckhps %xmm7,%xmm5
shufps $0x24,%xmm2,%xmm5
unpckhps %xmm9,%xmm10
shufps $0x33,%xmm8,%xmm7
shufps $0xe2,%xmm10,%xmm7
movaps %xmm1,%xmm2
addps  %xmm7,%xmm2
subps  %xmm7,%xmm1
movaps %xmm3,%xmm7
addps  %xmm5,%xmm7
subps  %xmm5,%xmm3
movaps %xmm12,%xmm4
addps  %xmm6,%xmm4
subps  %xmm6,%xmm12
movaps %xmm0,%xmm6
addps  %xmm11,%xmm6
subps  %xmm11,%xmm0
movaps %xmm2,%xmm5
addps  %xmm6,%xmm5
subps  %xmm6,%xmm2
movaps %xmm7,%xmm6
addps  %xmm4,%xmm6
subps  %xmm4,%xmm7
movaps %xmm6,%xmm14
addps  %xmm5,%xmm14
subps  %xmm6,%xmm5
addps  %xmm2,%xmm7
movaps 0xe00(%rip),%xmm4
mulps  %xmm4,%xmm7
movaps %xmm4,%xmm8
movaps %xmm2,%xmm6
addps  %xmm7,%xmm6
subps  %xmm7,%xmm2
addps  %xmm12,%xmm0
addps  %xmm3,%xmm12
addps  %xmm1,%xmm3
movaps %xmm0,%xmm4
subps  %xmm3,%xmm4
mulps  0xde8(%rip),%xmm4
mulps  0xdf1(%rip),%xmm0
addps  %xmm4,%xmm0
mulps  0xdf7(%rip),%xmm3
addps  %xmm4,%xmm3
mulps  %xmm8,%xmm12
movaps %xmm1,%xmm7
addps  %xmm12,%xmm7
subps  %xmm12,%xmm1
movaps %xmm1,%xmm15
addps  %xmm0,%xmm15
subps  %xmm0,%xmm1
movaps %xmm7,%xmm0
addps  %xmm3,%xmm0
subps  %xmm3,%xmm7
movaps %xmm6,%xmm3
unpckhps %xmm1,%xmm3
movaps %xmm0,%xmm13
shufps $0x33,%xmm14,%xmm13
shufps $0xe2,%xmm3,%xmm13
movaps %xmm1,%xmm3
unpckhpd %xmm6,%xmm3
movaps %xmm14,%xmm4
unpckhps %xmm0,%xmm4
shufps $0x24,%xmm3,%xmm4
movaps %xmm4,-0x48(%rsp)
movaps %xmm6,%xmm3
unpcklps %xmm1,%xmm3
movaps %xmm0,%xmm12
shufps $0x11,%xmm14,%xmm12
shufps $0xe2,%xmm3,%xmm12
movlhps %xmm6,%xmm1
unpcklps %xmm0,%xmm14
shufps $0x24,%xmm1,%xmm14
movaps %xmm7,%xmm0
movlhps %xmm2,%xmm0
movaps %xmm5,%xmm1
unpcklps %xmm15,%xmm1
shufps $0x24,%xmm0,%xmm1
movaps %xmm1,%xmm3
movaps %xmm1,-0x38(%rsp)
movaps %xmm2,%xmm0
unpcklps %xmm7,%xmm0
movaps %xmm15,%xmm1
shufps $0x11,%xmm5,%xmm1
shufps $0xe2,%xmm0,%xmm1
movaps %xmm1,%xmm4
movaps %xmm1,-0x28(%rsp)
movaps %xmm7,%xmm0
unpckhpd %xmm2,%xmm0
movaps %xmm5,%xmm1
unpckhps %xmm15,%xmm1
shufps $0x24,%xmm0,%xmm1
movaps %xmm1,-0x18(%rsp)
unpckhps %xmm7,%xmm2
shufps $0x33,%xmm5,%xmm15
shufps $0xe2,%xmm2,%xmm15
movups %xmm15,0x70(%rdi)
movups %xmm1,0x50(%rdi)
movups %xmm4,0x30(%rdi)
movups %xmm3,0x10(%rdi)
movups 0xa0(%rdi),%xmm0
movups 0xc0(%rdi),%xmm2
movups 0xe0(%rdi),%xmm3
movaps %xmm3,%xmm1
movlhps %xmm2,%xmm1
movups 0x80(%rdi),%xmm4
movaps %xmm4,%xmm7
unpcklps %xmm0,%xmm7
shufps $0x24,%xmm1,%xmm7
movaps %xmm2,%xmm5
unpcklps %xmm3,%xmm5
movaps %xmm0,%xmm1
shufps $0x11,%xmm4,%xmm1
shufps $0xe2,%xmm5,%xmm1
movaps %xmm3,%xmm6
unpckhpd %xmm2,%xmm6
movaps %xmm4,%xmm5
unpckhps %xmm0,%xmm5
shufps $0x24,%xmm6,%xmm5
unpckhps %xmm3,%xmm2
shufps $0x33,%xmm4,%xmm0
shufps $0xe2,%xmm2,%xmm0
movups 0xd0(%rdi),%xmm2
movups 0xf0(%rdi),%xmm8
movaps %xmm8,%xmm6
movlhps %xmm2,%xmm6
movups 0xb0(%rdi),%xmm4
movups 0x90(%rdi),%xmm10
movaps %xmm10,%xmm11
unpcklps %xmm4,%xmm11
shufps $0x24,%xmm6,%xmm11
movaps %xmm2,%xmm6
unpcklps %xmm8,%xmm6
movaps %xmm4,%xmm3
shufps $0x11,%xmm10,%xmm3
shufps $0xe2,%xmm6,%xmm3
movaps %xmm8,%xmm6
unpckhpd %xmm2,%xmm6
movaps %xmm10,%xmm9
unpckhps %xmm4,%xmm9
shufps $0x24,%xmm6,%xmm9
unpckhps %xmm8,%xmm2
shufps $0x33,%xmm10,%xmm4
shufps $0xe2,%xmm2,%xmm4
movaps %xmm7,%xmm2
addps  %xmm4,%xmm2
subps  %xmm4,%xmm7
movaps %xmm1,%xmm6
addps  %xmm9,%xmm6
subps  %xmm9,%xmm1
movaps %xmm5,%xmm4
addps  %xmm3,%xmm4
subps  %xmm3,%xmm5
movaps %xmm0,%xmm3
addps  %xmm11,%xmm3
subps  %xmm11,%xmm0
movaps %xmm2,%xmm10
addps  %xmm3,%xmm10
subps  %xmm3,%xmm2
movaps %xmm6,%xmm3
addps  %xmm4,%xmm3
subps  %xmm4,%xmm6
movaps %xmm3,%xmm11
addps  %xmm10,%xmm11
subps  %xmm3,%xmm10
addps  %xmm2,%xmm6
movaps 0xbdb(%rip),%xmm8
mulps  %xmm8,%xmm6
movaps %xmm2,%xmm3
addps  %xmm6,%xmm3
subps  %xmm6,%xmm2
addps  %xmm5,%xmm0
addps  %xmm1,%xmm5
addps  %xmm7,%xmm1
movaps %xmm0,%xmm4
subps  %xmm1,%xmm4
mulps  0xbc8(%rip),%xmm4
mulps  0xbd1(%rip),%xmm0
addps  %xmm4,%xmm0
mulps  0xbd7(%rip),%xmm1
addps  %xmm4,%xmm1
mulps  %xmm8,%xmm5
movaps %xmm7,%xmm6
addps  %xmm5,%xmm6
subps  %xmm5,%xmm7
movaps %xmm7,%xmm5
addps  %xmm0,%xmm5
subps  %xmm0,%xmm7
movaps %xmm6,%xmm0
addps  %xmm1,%xmm0
subps  %xmm1,%xmm6
movaps %xmm7,%xmm1
movlhps %xmm3,%xmm1
movaps %xmm11,%xmm8
unpcklps %xmm0,%xmm8
shufps $0x24,%xmm1,%xmm8
movaps %xmm3,%xmm4
unpcklps %xmm7,%xmm4
movaps %xmm0,%xmm1
shufps $0x11,%xmm11,%xmm1
shufps $0xe2,%xmm4,%xmm1
movaps %xmm7,%xmm4
unpckhpd %xmm3,%xmm4
movaps %xmm11,%xmm9
unpckhps %xmm0,%xmm9
shufps $0x24,%xmm4,%xmm9
unpckhps %xmm7,%xmm3
shufps $0x33,%xmm11,%xmm0
shufps $0xe2,%xmm3,%xmm0
movaps %xmm6,%xmm3
movlhps %xmm2,%xmm3
movaps %xmm10,%xmm11
unpcklps %xmm5,%xmm11
shufps $0x24,%xmm3,%xmm11
movaps %xmm2,%xmm3
unpcklps %xmm6,%xmm3
movaps %xmm5,%xmm7
shufps $0x11,%xmm10,%xmm7
shufps $0xe2,%xmm3,%xmm7
movaps %xmm6,%xmm4
unpckhpd %xmm2,%xmm4
movaps %xmm10,%xmm3
unpckhps %xmm5,%xmm3
shufps $0x24,%xmm4,%xmm3
unpckhps %xmm6,%xmm2
shufps $0x33,%xmm10,%xmm5
shufps $0xe2,%xmm2,%xmm5
movaps %xmm14,%xmm2
addps  %xmm0,%xmm2
subps  %xmm0,%xmm14
movaps %xmm12,%xmm0
addps  %xmm9,%xmm0
subps  %xmm9,%xmm12
movaps -0x48(%rsp),%xmm6
movaps %xmm6,%xmm4
addps  %xmm1,%xmm4
subps  %xmm1,%xmm6
movaps %xmm6,%xmm9
movaps %xmm13,%xmm1
addps  %xmm8,%xmm1
subps  %xmm8,%xmm13
movaps %xmm2,%xmm6
addps  %xmm1,%xmm6
subps  %xmm1,%xmm2
movaps %xmm0,%xmm1
addps  %xmm4,%xmm1
subps  %xmm4,%xmm0
movups %xmm5,0xf0(%rdi)
movups %xmm3,0xd0(%rdi)
movups %xmm7,0xb0(%rdi)
movups %xmm11,0x90(%rdi)
movaps %xmm1,%xmm4
addps  %xmm6,%xmm4
movups %xmm4,(%rdi)
subps  %xmm1,%xmm6
movups %xmm6,0x80(%rdi)
addps  %xmm2,%xmm0
movaps 0xa7c(%rip),%xmm4
mulps  %xmm4,%xmm0
movaps %xmm2,%xmm1
addps  %xmm0,%xmm1
movups %xmm1,0x40(%rdi)
subps  %xmm0,%xmm2
movups %xmm2,0xc0(%rdi)
movaps %xmm9,%xmm0
addps  %xmm9,%xmm13
addps  %xmm12,%xmm0
movaps %xmm0,%xmm1
addps  %xmm14,%xmm12
movaps %xmm13,%xmm0
subps  %xmm12,%xmm0
movaps 0xa52(%rip),%xmm10
mulps  %xmm10,%xmm0
movaps 0xa56(%rip),%xmm8
mulps  %xmm8,%xmm13
addps  %xmm0,%xmm13
movaps 0xa56(%rip),%xmm9
mulps  %xmm9,%xmm12
addps  %xmm0,%xmm12
mulps  %xmm4,%xmm1
movaps %xmm4,%xmm8
movaps %xmm14,%xmm0
addps  %xmm1,%xmm0
subps  %xmm1,%xmm14
movaps %xmm14,%xmm1
addps  %xmm13,%xmm1
movups %xmm1,0xa0(%rdi)
subps  %xmm13,%xmm14
movups %xmm14,0x60(%rdi)
movaps %xmm0,%xmm1
addps  %xmm12,%xmm1
movups %xmm1,0x20(%rdi)
subps  %xmm12,%xmm0
movups %xmm0,0xe0(%rdi)
movaps -0x38(%rsp),%xmm1
movaps %xmm1,%xmm0
addps  %xmm5,%xmm0
subps  %xmm5,%xmm1
movaps %xmm1,%xmm5
movaps -0x28(%rsp),%xmm6
movaps %xmm6,%xmm1
addps  %xmm3,%xmm1
subps  %xmm3,%xmm6
movaps -0x18(%rsp),%xmm3
movaps %xmm3,%xmm2
addps  %xmm7,%xmm2
subps  %xmm7,%xmm3
movaps %xmm3,%xmm7
movaps %xmm15,%xmm3
addps  %xmm11,%xmm3
subps  %xmm11,%xmm15
movaps %xmm0,%xmm4
addps  %xmm3,%xmm4
subps  %xmm3,%xmm0
movaps %xmm1,%xmm3
addps  %xmm2,%xmm3
subps  %xmm2,%xmm1
movaps %xmm3,%xmm2
addps  %xmm4,%xmm2
movups %xmm2,0x10(%rdi)
subps  %xmm3,%xmm4
movups %xmm4,0x90(%rdi)
addps  %xmm0,%xmm1
mulps  %xmm8,%xmm1
movaps %xmm0,%xmm2
addps  %xmm1,%xmm2
movups %xmm2,0x50(%rdi)
subps  %xmm1,%xmm0
movups %xmm0,0xd0(%rdi)
movaps %xmm7,%xmm0
addps  %xmm7,%xmm15
movaps %xmm6,%xmm1
addps  %xmm6,%xmm0
movaps %xmm0,%xmm4
movaps %xmm5,%xmm3
addps  %xmm5,%xmm1
movaps %xmm15,%xmm0
subps  %xmm1,%xmm0
mulps  %xmm10,%xmm0
mulps  0x958(%rip),%xmm15
mulps  %xmm9,%xmm1
addps  %xmm0,%xmm15
addps  %xmm0,%xmm1
movaps %xmm1,%xmm2
mulps  %xmm8,%xmm4
movaps %xmm5,%xmm0
addps  %xmm4,%xmm0
subps  %xmm4,%xmm3
movaps %xmm3,%xmm1
addps  %xmm15,%xmm1
movups %xmm1,0xb0(%rdi)
subps  %xmm15,%xmm3
movups %xmm3,0x70(%rdi)
movaps %xmm0,%xmm1
addps  %xmm2,%xmm1
movups %xmm1,0x30(%rdi)
subps  %xmm2,%xmm0
movups %xmm0,0xf0(%rdi)
ret

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

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