void cftf081(double *a) {
  double wn4r, x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, y0r, y0i, y1r, y1i, y2r,
      y2i, y3r, y3i, y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i;
  wn4r = ((double)0.707106781186547524400844362104849039284835);
  x0r = a[0] + a[8];
  x0i = a[1] + a[9];
  x1r = a[0] - a[8];
  x1i = a[1] - a[9];
  x2r = a[4] + a[12];
  x2i = a[5] + a[13];
  x3r = a[4] - a[12];
  x3i = a[5] - a[13];
  y0r = x0r + x2r;
  y0i = x0i + x2i;
  y2r = x0r - x2r;
  y2i = x0i - x2i;
  y1r = x1r - x3i;
  y1i = x1i + x3r;
  y3r = x1r + x3i;
  y3i = x1i - x3r;
  x0r = a[2] + a[10];
  x0i = a[3] + a[11];
  x1r = a[2] - a[10];
  x1i = a[3] - a[11];
  x2r = a[6] + a[14];
  x2i = a[7] + a[15];
  x3r = a[6] - a[14];
  x3i = a[7] - a[15];
  y4r = x0r + x2r;
  y4i = x0i + x2i;
  y6r = x0r - x2r;
  y6i = x0i - x2i;
  x0r = x1r - x3i;
  x0i = x1i + x3r;
  x2r = x1r + x3i;
  x2i = x1i - x3r;
  y5r = wn4r * (x0r - x0i);
  y5i = wn4r * (x0r + x0i);
  y7r = wn4r * (x2r - x2i);
  y7i = wn4r * (x2r + x2i);
  a[8] = y1r + y5r;
  a[9] = y1i + y5i;
  a[10] = y1r - y5r;
  a[11] = y1i - y5i;
  a[12] = y3r - y7i;
  a[13] = y3i + y7r;
  a[14] = y3r + y7i;
  a[15] = y3i - y7r;
  a[0] = y0r + y4r;
  a[1] = y0i + y4i;
  a[2] = y0r - y4r;
  a[3] = y0i - y4i;
  a[4] = y2r - y6i;
  a[5] = y2i + y6r;
  a[6] = y2r + y6i;
  a[7] = y2i - y6r;
}


x86 assembly (clang, -O0):
<cftf081>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x8(%rbp)
movsd  0xeec(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x18(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x20(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x18(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x20(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x28(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x30(%rbp),%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x28(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
subsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x18(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x30(%rbp),%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x28(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x30(%rbp),%xmm0
subsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
subsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
addsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x40(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
addsd  -0xa8(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x70(%rbp),%xmm0
addsd  -0xb0(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x68(%rbp),%xmm0
subsd  -0xa8(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x70(%rbp),%xmm0
subsd  -0xb0(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x90(%rbp),%xmm0
ff
addsd  -0xc8(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x88(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x90(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x78(%rax)
movsd  -0x58(%rbp),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0xa0(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x58(%rbp),%xmm0
subsd  -0x98(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0xa0(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x78(%rbp),%xmm0
subsd  -0xc0(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x80(%rbp),%xmm0
addsd  -0xb8(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x78(%rbp),%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x80(%rbp),%xmm0
subsd  -0xb8(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x38(%rax)
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cftf081>:
movupd 0x40(%rdi),%xmm1
movupd (%rdi),%xmm2
movupd 0x10(%rdi),%xmm5
movupd 0x20(%rdi),%xmm7
movupd 0x30(%rdi),%xmm9
movapd %xmm2,%xmm8
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm2
movupd 0x60(%rdi),%xmm1
movapd %xmm7,%xmm3
addpd  %xmm1,%xmm3
subpd  %xmm1,%xmm7
shufpd $0x1,%xmm7,%xmm7
movapd %xmm8,%xmm10
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm8
movapd %xmm2,%xmm3
subpd  %xmm7,%xmm3
addpd  %xmm2,%xmm7
movapd %xmm7,%xmm1
movsd  %xmm3,%xmm1
shufpd $0x1,%xmm7,%xmm3
movupd 0x50(%rdi),%xmm7
movapd %xmm5,%xmm2
addpd  %xmm7,%xmm2
subpd  %xmm7,%xmm5
movupd 0x70(%rdi),%xmm6
movapd %xmm9,%xmm4
subpd  %xmm6,%xmm9
movapd %xmm9,%xmm0
unpckhpd %xmm9,%xmm0
movapd %xmm5,%xmm7
subsd  %xmm0,%xmm7
addsd  %xmm5,%xmm0
unpckhpd %xmm5,%xmm5
addpd  %xmm6,%xmm4
movapd %xmm2,%xmm11
addpd  %xmm4,%xmm11
subpd  %xmm4,%xmm2
shufpd $0x1,%xmm2,%xmm2
movapd %xmm5,%xmm4
addsd  %xmm9,%xmm4
subsd  %xmm9,%xmm5
movapd %xmm7,%xmm6
subsd  %xmm4,%xmm6
addsd  %xmm7,%xmm4
unpcklpd %xmm4,%xmm6
movapd 0xe24(%rip),%xmm4
mulpd  %xmm4,%xmm6
movapd %xmm0,%xmm7
subsd  %xmm5,%xmm7
addsd  %xmm0,%xmm5
unpcklpd %xmm5,%xmm7
mulpd  %xmm4,%xmm7
movapd %xmm1,%xmm0
addpd  %xmm6,%xmm0
movupd %xmm0,0x40(%rdi)
subpd  %xmm6,%xmm1
movupd %xmm1,0x50(%rdi)
movapd %xmm3,%xmm0
subpd  %xmm7,%xmm0
movhpd %xmm0,0x60(%rdi)
addpd  %xmm3,%xmm7
movupd %xmm7,0x68(%rdi)
movlpd %xmm0,0x78(%rdi)
movapd %xmm10,%xmm0
addpd  %xmm11,%xmm0
movupd %xmm0,(%rdi)
subpd  %xmm11,%xmm10
movupd %xmm10,0x10(%rdi)
movapd %xmm8,%xmm0
subpd  %xmm2,%xmm0
addpd  %xmm8,%xmm2
movapd %xmm2,%xmm1
movsd  %xmm0,%xmm1
movupd %xmm1,0x20(%rdi)
shufpd $0x2,%xmm0,%xmm2
movupd %xmm2,0x30(%rdi)
ret

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

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