double process2(double in) {
  static float buf1[3];
  static float buf2[3];
  static float buf3[3];
  static float buf4[3];
  float val = in;
  buf1[2] = buf1[1];
  buf1[1] = buf1[0];
  buf1[0] = val + 1.91152821076575 * buf1[1] - 0.915307632868809 * buf1[2];
  val = 0.000944855525763628 * buf1[0] + 0.00188971105152726 * buf1[1] +
        0.000944855525763628 * buf1[2];
  buf2[2] = buf2[1];
  buf2[1] = buf2[0];
  buf2[0] = val + 1.91152821076575 * buf2[1] - 0.915307632868809 * buf2[2];
  val = 0.000944855525763628 * buf2[0] + 0.00188971105152726 * buf2[1] +
        0.000944855525763628 * buf2[2];
  buf3[2] = buf3[1];
  buf3[1] = buf3[0];
  buf3[0] = val + 1.91152821076575 * buf3[1] - 0.915307632868809 * buf3[2];
  val = 0.000944855525763628 * buf3[0] + 0.00188971105152726 * buf3[1] +
        0.000944855525763628 * buf3[2];
  buf4[2] = buf4[1];
  buf4[1] = buf4[0];
  buf4[0] = val + 1.91152821076575 * buf4[1] - 0.915307632868809 * buf4[2];
  val = 0.000944855525763628 * buf4[0] + 0.00188971105152726 * buf4[1] +
        0.000944855525763628 * buf4[2];
  return val;
}


x86 assembly (clang, -O0):
<process2>:
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  0x2f09(%rip),%xmm0
movss  %xmm0,0x2f05(%rip)
movss  0x2ef5(%rip),%xmm0
movss  %xmm0,0x2ef1(%rip)
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  0x2ee0(%rip),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xec4(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movss  0x2ec8(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xea0(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x2ea0(%rip)
movss  0x2e98(%rip),%xmm0
cvtss2sd %xmm0,%xmm1
movss  0x2e90(%rip),%xmm0
cvtss2sd %xmm0,%xmm2
movsd  0xe64(%rip),%xmm0
mulsd  %xmm2,%xmm0
movsd  0xe50(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movss  0x2e6c(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe34(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  0x2e4f(%rip),%xmm0
movss  %xmm0,0x2e4b(%rip)
movss  0x2e3b(%rip),%xmm0
movss  %xmm0,0x2e37(%rip)
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  0x2e26(%rip),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xdfe(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movss  0x2e0e(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xdda(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x2de6(%rip)
movss  0x2dde(%rip),%xmm0
cvtss2sd %xmm0,%xmm1
movss  0x2dd6(%rip),%xmm0
cvtss2sd %xmm0,%xmm2
movsd  0xd9e(%rip),%xmm0
mulsd  %xmm2,%xmm0
movsd  0xd8a(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movss  0x2db2(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd6e(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  0x2d95(%rip),%xmm0
movss  %xmm0,0x2d91(%rip)
movss  0x2d81(%rip),%xmm0
movss  %xmm0,0x2d7d(%rip)
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  0x2d6c(%rip),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xd38(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movss  0x2d54(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd14(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x2d2c(%rip)
movss  0x2d24(%rip),%xmm0
cvtss2sd %xmm0,%xmm1
movss  0x2d1c(%rip),%xmm0
cvtss2sd %xmm0,%xmm2
movsd  0xcd8(%rip),%xmm0
mulsd  %xmm2,%xmm0
movsd  0xcc4(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movss  0x2cf8(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xca8(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  0x2cdb(%rip),%xmm0
movss  %xmm0,0x2cd7(%rip)
movss  0x2cc7(%rip),%xmm0
movss  %xmm0,0x2cc3(%rip)
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  0x2cb2(%rip),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xc72(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movss  0x2c9a(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xc4e(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x2c72(%rip)
movss  0x2c6a(%rip),%xmm0
cvtss2sd %xmm0,%xmm1
movss  0x2c62(%rip),%xmm0
cvtss2sd %xmm0,%xmm2
movsd  0xc12(%rip),%xmm0
mulsd  %xmm2,%xmm0
movsd  0xbfe(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movss  0x2c3e(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xbe2(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<process2>:
cvtsd2ss %xmm0,%xmm0
movss  0x2f1c(%rip),%xmm1
movss  0x2f10(%rip),%xmm2
cvtss2sd %xmm0,%xmm3
cvtss2sd %xmm2,%xmm4
movsd  0xedc(%rip),%xmm0
movaps %xmm4,%xmm5
mulsd  %xmm0,%xmm5
addsd  %xmm3,%xmm5
cvtss2sd %xmm1,%xmm6
movsd  0xecd(%rip),%xmm1
movaps %xmm6,%xmm3
mulsd  %xmm1,%xmm3
addsd  %xmm5,%xmm3
cvtsd2ss %xmm3,%xmm3
movss  %xmm2,0x2ed6(%rip)
movss  %xmm3,0x2eca(%rip)
xorps  %xmm5,%xmm5
cvtss2sd %xmm3,%xmm5
movsd  0xea6(%rip),%xmm8
mulsd  %xmm8,%xmm4
movsd  0xea1(%rip),%xmm2
mulsd  %xmm2,%xmm5
addsd  %xmm4,%xmm5
mulsd  %xmm2,%xmm6
addsd  %xmm5,%xmm6
xorps  %xmm4,%xmm4
cvtsd2ss %xmm6,%xmm4
movss  0x2e9a(%rip),%xmm5
movss  0x2e8e(%rip),%xmm6
movss  %xmm6,0x2e8a(%rip)
cvtss2sd %xmm4,%xmm4
cvtss2sd %xmm6,%xmm6
movaps %xmm6,%xmm7
mulsd  %xmm0,%xmm7
addsd  %xmm4,%xmm7
xorps  %xmm4,%xmm4
cvtss2sd %xmm5,%xmm4
movaps %xmm4,%xmm5
mulsd  %xmm1,%xmm5
addsd  %xmm7,%xmm5
cvtsd2ss %xmm5,%xmm5
xorps  %xmm7,%xmm7
cvtss2sd %xmm5,%xmm7
mulsd  %xmm8,%xmm6
mulsd  %xmm2,%xmm7
addsd  %xmm6,%xmm7
mulsd  %xmm2,%xmm4
addsd  %xmm7,%xmm4
cvtsd2ss %xmm4,%xmm4
movss  %xmm5,0x2e35(%rip)
movss  0x2e39(%rip),%xmm5
movss  0x2e2d(%rip),%xmm6
cvtss2sd %xmm4,%xmm4
xorps  %xmm3,%xmm3
cvtss2sd %xmm6,%xmm3
movaps %xmm3,%xmm7
mulsd  %xmm0,%xmm7
addsd  %xmm4,%xmm7
xorps  %xmm4,%xmm4
cvtss2sd %xmm5,%xmm4
movaps %xmm4,%xmm5
mulsd  %xmm1,%xmm5
addsd  %xmm7,%xmm5
cvtsd2ss %xmm5,%xmm5
movss  %xmm6,0x2dfd(%rip)
movss  %xmm5,0x2df1(%rip)
cvtss2sd %xmm5,%xmm5
mulsd  %xmm8,%xmm3
mulsd  %xmm2,%xmm5
addsd  %xmm3,%xmm5
mulsd  %xmm2,%xmm4
addsd  %xmm5,%xmm4
xorps  %xmm3,%xmm3
cvtsd2ss %xmm4,%xmm3
movss  0x2dd5(%rip),%xmm4
movss  0x2dc9(%rip),%xmm5
movss  %xmm5,0x2dc5(%rip)
cvtss2sd %xmm3,%xmm3
cvtss2sd %xmm5,%xmm5
mulsd  %xmm5,%xmm0
addsd  %xmm3,%xmm0
xorps  %xmm3,%xmm3
cvtss2sd %xmm4,%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  %xmm0,0x2d93(%rip)
cvtss2sd %xmm0,%xmm0
mulsd  %xmm8,%xmm5
mulsd  %xmm2,%xmm0
addsd  %xmm5,%xmm0
mulsd  %xmm2,%xmm3
addsd  %xmm0,%xmm3
xorps  %xmm0,%xmm0
cvtsd2ss %xmm3,%xmm0
cvtss2sd %xmm0,%xmm0
ret

LLVM IR (-O0):
@process2.buf1 = internal global [3 x float] zeroinitializer
@process2.buf2 = internal global [3 x float] zeroinitializer
@process2.buf3 = internal global [3 x float] zeroinitializer
@process2.buf4 = internal global [3 x float] zeroinitializer
define double @process2(double %0) {
%2 = alloca double
%3 = alloca float
store double %0, double* %2
%4 = load double, double* %2
%5 = fptrunc double %4 to float
store float %5, float* %3
%6 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf1, i64 0, i64 1)
store float %6, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf1, i64 0, i64 2)
%7 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf1, i64 0, i64 0)
store float %7, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf1, i64 0, i64 1)
%8 = load float, float* %3
%9 = fpext float %8 to double
%10 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf1, i64 0, i64 1)
%11 = fpext float %10 to double
%12 = call double @llvm.fmuladd.f64(double 0x3FFE959E9AE9ECB7, double %11, double %9)
%13 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf1, i64 0, i64 2)
%14 = fpext float %13 to double
%15 = call double @llvm.fmuladd.f64(double 0xBFED4A333B9E6C36, double %14, double %12)
%16 = fptrunc double %15 to float
store float %16, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf1, i64 0, i64 0)
%17 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf1, i64 0, i64 0)
%18 = fpext float %17 to double
%19 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf1, i64 0, i64 1)
%20 = fpext float %19 to double
%21 = fmul double 0x3F5EF605CA92A04E, %20
%22 = call double @llvm.fmuladd.f64(double 0x3F4EF605CA92A03C, double %18, double %21)
%23 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf1, i64 0, i64 2)
%24 = fpext float %23 to double
%25 = call double @llvm.fmuladd.f64(double 0x3F4EF605CA92A03C, double %24, double %22)
%26 = fptrunc double %25 to float
store float %26, float* %3
%27 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf2, i64 0, i64 1)
store float %27, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf2, i64 0, i64 2)
%28 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf2, i64 0, i64 0)
store float %28, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf2, i64 0, i64 1)
%29 = load float, float* %3
%30 = fpext float %29 to double
%31 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf2, i64 0, i64 1)
%32 = fpext float %31 to double
%33 = call double @llvm.fmuladd.f64(double 0x3FFE959E9AE9ECB7, double %32, double %30)
%34 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf2, i64 0, i64 2)
%35 = fpext float %34 to double
%36 = call double @llvm.fmuladd.f64(double 0xBFED4A333B9E6C36, double %35, double %33)
%37 = fptrunc double %36 to float
store float %37, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf2, i64 0, i64 0)
%38 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf2, i64 0, i64 0)
%39 = fpext float %38 to double
%40 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf2, i64 0, i64 1)
%41 = fpext float %40 to double
%42 = fmul double 0x3F5EF605CA92A04E, %41
%43 = call double @llvm.fmuladd.f64(double 0x3F4EF605CA92A03C, double %39, double %42)
%44 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf2, i64 0, i64 2)
%45 = fpext float %44 to double
%46 = call double @llvm.fmuladd.f64(double 0x3F4EF605CA92A03C, double %45, double %43)
%47 = fptrunc double %46 to float
store float %47, float* %3
%48 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf3, i64 0, i64 1)
store float %48, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf3, i64 0, i64 2)
%49 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf3, i64 0, i64 0)
store float %49, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf3, i64 0, i64 1)
%50 = load float, float* %3
%51 = fpext float %50 to double
%52 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf3, i64 0, i64 1)
%53 = fpext float %52 to double
%54 = call double @llvm.fmuladd.f64(double 0x3FFE959E9AE9ECB7, double %53, double %51)
%55 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf3, i64 0, i64 2)
%56 = fpext float %55 to double
%57 = call double @llvm.fmuladd.f64(double 0xBFED4A333B9E6C36, double %56, double %54)
%58 = fptrunc double %57 to float
store float %58, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf3, i64 0, i64 0)
%59 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf3, i64 0, i64 0)
%60 = fpext float %59 to double
%61 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf3, i64 0, i64 1)
%62 = fpext float %61 to double
%63 = fmul double 0x3F5EF605CA92A04E, %62
%64 = call double @llvm.fmuladd.f64(double 0x3F4EF605CA92A03C, double %60, double %63)
%65 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf3, i64 0, i64 2)
%66 = fpext float %65 to double
%67 = call double @llvm.fmuladd.f64(double 0x3F4EF605CA92A03C, double %66, double %64)
%68 = fptrunc double %67 to float
store float %68, float* %3
%69 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf4, i64 0, i64 1)
store float %69, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf4, i64 0, i64 2)
%70 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf4, i64 0, i64 0)
store float %70, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf4, i64 0, i64 1)
%71 = load float, float* %3
%72 = fpext float %71 to double
%73 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf4, i64 0, i64 1)
%74 = fpext float %73 to double
%75 = call double @llvm.fmuladd.f64(double 0x3FFE959E9AE9ECB7, double %74, double %72)
%76 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf4, i64 0, i64 2)
%77 = fpext float %76 to double
%78 = call double @llvm.fmuladd.f64(double 0xBFED4A333B9E6C36, double %77, double %75)
%79 = fptrunc double %78 to float
store float %79, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf4, i64 0, i64 0)
%80 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf4, i64 0, i64 0)
%81 = fpext float %80 to double
%82 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf4, i64 0, i64 1)
%83 = fpext float %82 to double
%84 = fmul double 0x3F5EF605CA92A04E, %83
%85 = call double @llvm.fmuladd.f64(double 0x3F4EF605CA92A03C, double %81, double %84)
%86 = load float, float* getelementptr inbounds ([3 x float], [3 x float]* @process2.buf4, i64 0, i64 2)
%87 = fpext float %86 to double
%88 = call double @llvm.fmuladd.f64(double 0x3F4EF605CA92A03C, double %87, double %85)
%89 = fptrunc double %88 to float
store float %89, float* %3
%90 = load float, float* %3
%91 = fpext float %90 to double
ret double %91
}

LLVM IR (-O2):
@process2.buf1.0 = internal unnamed_addr global float 0.000000e+00
@process2.buf1.1 = internal unnamed_addr global float 0.000000e+00
@process2.buf2.0 = internal unnamed_addr global float 0.000000e+00
@process2.buf2.1 = internal unnamed_addr global float 0.000000e+00
@process2.buf3.0 = internal unnamed_addr global float 0.000000e+00
@process2.buf3.1 = internal unnamed_addr global float 0.000000e+00
@process2.buf4.0 = internal unnamed_addr global float 0.000000e+00
@process2.buf4.1 = internal unnamed_addr global float 0.000000e+00
define double @process2(double %0) {
%2 = fptrunc double %0 to float
%3 = load float, float* @process2.buf1.1
%4 = load float, float* @process2.buf1.0
store float %4, float* @process2.buf1.1
%5 = fpext float %2 to double
%6 = fpext float %4 to double
%7 = tail call double @llvm.fmuladd.f64(double %6, double 0x3FFE959E9AE9ECB7, double %5)
%8 = fpext float %3 to double
%9 = tail call double @llvm.fmuladd.f64(double %8, double 0xBFED4A333B9E6C36, double %7)
%10 = fptrunc double %9 to float
store float %10, float* @process2.buf1.0
%11 = fpext float %10 to double
%12 = fmul double %6, 0x3F5EF605CA92A04E
%13 = tail call double @llvm.fmuladd.f64(double %11, double 0x3F4EF605CA92A03C, double %12)
%14 = tail call double @llvm.fmuladd.f64(double %8, double 0x3F4EF605CA92A03C, double %13)
%15 = fptrunc double %14 to float
%16 = load float, float* @process2.buf2.1
%17 = load float, float* @process2.buf2.0
store float %17, float* @process2.buf2.1
%18 = fpext float %15 to double
%19 = fpext float %17 to double
%20 = tail call double @llvm.fmuladd.f64(double %19, double 0x3FFE959E9AE9ECB7, double %18)
%21 = fpext float %16 to double
%22 = tail call double @llvm.fmuladd.f64(double %21, double 0xBFED4A333B9E6C36, double %20)
%23 = fptrunc double %22 to float
store float %23, float* @process2.buf2.0
%24 = fpext float %23 to double
%25 = fmul double %19, 0x3F5EF605CA92A04E
%26 = tail call double @llvm.fmuladd.f64(double %24, double 0x3F4EF605CA92A03C, double %25)
%27 = tail call double @llvm.fmuladd.f64(double %21, double 0x3F4EF605CA92A03C, double %26)
%28 = fptrunc double %27 to float
%29 = load float, float* @process2.buf3.1
%30 = load float, float* @process2.buf3.0
store float %30, float* @process2.buf3.1
%31 = fpext float %28 to double
%32 = fpext float %30 to double
%33 = tail call double @llvm.fmuladd.f64(double %32, double 0x3FFE959E9AE9ECB7, double %31)
%34 = fpext float %29 to double
%35 = tail call double @llvm.fmuladd.f64(double %34, double 0xBFED4A333B9E6C36, double %33)
%36 = fptrunc double %35 to float
store float %36, float* @process2.buf3.0
%37 = fpext float %36 to double
%38 = fmul double %32, 0x3F5EF605CA92A04E
%39 = tail call double @llvm.fmuladd.f64(double %37, double 0x3F4EF605CA92A03C, double %38)
%40 = tail call double @llvm.fmuladd.f64(double %34, double 0x3F4EF605CA92A03C, double %39)
%41 = fptrunc double %40 to float
%42 = load float, float* @process2.buf4.1
%43 = load float, float* @process2.buf4.0
store float %43, float* @process2.buf4.1
%44 = fpext float %41 to double
%45 = fpext float %43 to double
%46 = tail call double @llvm.fmuladd.f64(double %45, double 0x3FFE959E9AE9ECB7, double %44)
%47 = fpext float %42 to double
%48 = tail call double @llvm.fmuladd.f64(double %47, double 0xBFED4A333B9E6C36, double %46)
%49 = fptrunc double %48 to float
store float %49, float* @process2.buf4.0
%50 = fpext float %49 to double
%51 = fmul double %45, 0x3F5EF605CA92A04E
%52 = tail call double @llvm.fmuladd.f64(double %50, double 0x3F4EF605CA92A03C, double %51)
%53 = tail call double @llvm.fmuladd.f64(double %47, double 0x3F4EF605CA92A03C, double %52)
%54 = fptrunc double %53 to float
%55 = fpext float %54 to double
ret double %55
}