float lowpass(x)
short x;
{
  float c = .00048175311;
  float a1 = -1.89919924;
  float c1 = -1.923248041;
  float d1 = .985720370;
  float a2 = -1.86607670;
  float c2 = -1.90075003;
  float d2 = .948444690;
  float a3 = -1.66423461;
  float c3 = -1.87516686;
  float d3 = .896241023;
  float c4 = -.930449120;
  float temp, y;
  static float w1 = 0., w11 = 0., w12 = 0., w2 = 0., w21 = 0.;
  static float w22 = 0., w3 = 0., w31 = 0., w32 = 0., w4 = 0.;
  static float w41 = 0., w42 = 0.;
  w1 = c * x - c1 * w11 - d1 * w12;
  temp = w1 + a1 * w11 + w12;
  w12 = w11;
  w11 = w1;
  w2 = temp - c2 * w21 - d2 * w22;
  temp = w2 + a2 * w21 + w22;
  w22 = w21;
  w21 = w2;
  w3 = temp - c3 * w31 - d3 * w32;
  temp = w3 + a3 * w31 + w32;
  w32 = w31;
  w31 = w3;
  w4 = temp - c4 * w41;
  y = w4 + w41;
  w42 = w41;
  w41 = w4;
  return (y);
}


x86 assembly (clang, -O0):
<lowpass>:
push   %rbp
mov    %rsp,%rbp
mov    %di,%ax
mov    %ax,-0x2(%rbp)
movss  0xf15(%rip),%xmm0
movss  %xmm0,-0x8(%rbp)
movss  0xf04(%rip),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  0xef3(%rip),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  0xee2(%rip),%xmm0
movss  %xmm0,-0x14(%rbp)
movss  0xed1(%rip),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xec0(%rip),%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  0xeaf(%rip),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  0xe9e(%rip),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  0xe8d(%rip),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  0xe7c(%rip),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  0xe6b(%rip),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x8(%rbp),%xmm1
movswl -0x2(%rbp),%eax
cvtsi2ss %eax,%xmm2
movss  -0x10(%rbp),%xmm0
mulss  0x2e74(%rip),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x14(%rbp),%xmm0
movss  0x2e56(%rip),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,0x2e31(%rip)
movss  0x2e29(%rip),%xmm1
movss  -0xc(%rbp),%xmm0
movss  0x2e20(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
addss  0x2e14(%rip),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  0x2e03(%rip),%xmm0
movss  %xmm0,0x2dff(%rip)
movss  0x2def(%rip),%xmm0
movss  %xmm0,0x2deb(%rip)
movss  -0x34(%rbp),%xmm0
movss  -0x1c(%rbp),%xmm1
movss  0x2de5(%rip),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x20(%rbp),%xmm0
movss  0x2dc7(%rip),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,0x2da2(%rip)
movss  0x2d9a(%rip),%xmm1
movss  -0x18(%rbp),%xmm0
movss  0x2d91(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
addss  0x2d85(%rip),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  0x2d74(%rip),%xmm0
movss  %xmm0,0x2d70(%rip)
movss  0x2d60(%rip),%xmm0
movss  %xmm0,0x2d5c(%rip)
movss  -0x34(%rbp),%xmm0
movss  -0x28(%rbp),%xmm1
movss  0x2d56(%rip),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
movss  -0x2c(%rbp),%xmm0
movss  0x2d38(%rip),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,0x2d13(%rip)
movss  0x2d0b(%rip),%xmm1
movss  -0x24(%rbp),%xmm0
movss  0x2d02(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
addss  0x2cf6(%rip),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  0x2ce5(%rip),%xmm0
movss  %xmm0,0x2ce1(%rip)
movss  0x2cd1(%rip),%xmm0
movss  %xmm0,0x2ccd(%rip)
movss  -0x34(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
movss  0x2cc7(%rip),%xmm2
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,0x2ca6(%rip)
movss  0x2c9e(%rip),%xmm0
addss  0x2c9a(%rip),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  0x2c8d(%rip),%xmm0
movss  %xmm0,0x2c89(%rip)
movss  0x2c79(%rip),%xmm0
movss  %xmm0,0x2c75(%rip)
movss  -0x38(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<lowpass>:
movswl %di,%eax
cvtsi2ss %eax,%xmm0
movss  0x2f15(%rip),%xmm1
movss  0xee9(%rip),%xmm2
mulss  %xmm1,%xmm2
mulss  0xee1(%rip),%xmm0
addss  %xmm2,%xmm0
movss  0x2ef9(%rip),%xmm2
movss  0xed1(%rip),%xmm3
mulss  %xmm2,%xmm3
addss  %xmm0,%xmm3
movss  0xec5(%rip),%xmm0
mulss  %xmm1,%xmm0
addss  %xmm3,%xmm0
addss  %xmm2,%xmm0
movss  %xmm1,0x2ecd(%rip)
movss  %xmm3,0x2ec1(%rip)
movss  0x2ec1(%rip),%xmm1
movss  0xe9d(%rip),%xmm2
mulss  %xmm1,%xmm2
addss  %xmm0,%xmm2
movss  0x2ead(%rip),%xmm0
movss  0xe89(%rip),%xmm3
mulss  %xmm0,%xmm3
addss  %xmm2,%xmm3
movss  0xe7d(%rip),%xmm2
mulss  %xmm1,%xmm2
addss  %xmm3,%xmm2
addss  %xmm0,%xmm2
movss  %xmm1,0x2e81(%rip)
movss  %xmm3,0x2e75(%rip)
movss  0x2e75(%rip),%xmm0
movss  0xe55(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  %xmm2,%xmm1
movss  0x2e61(%rip),%xmm2
movss  0xe41(%rip),%xmm3
mulss  %xmm2,%xmm3
addss  %xmm1,%xmm3
movss  0xe35(%rip),%xmm1
mulss  %xmm0,%xmm1
addss  %xmm3,%xmm1
addss  %xmm2,%xmm1
movss  %xmm0,0x2e35(%rip)
movss  %xmm3,0x2e29(%rip)
movss  0x2e29(%rip),%xmm0
movss  0xe0d(%rip),%xmm2
mulss  %xmm0,%xmm2
addss  %xmm1,%xmm2
addss  %xmm2,%xmm0
movss  %xmm2,0x2e0d(%rip)
ret

LLVM IR (-O0):
@lowpass.w1 = internal global float 0.000000e+00
@lowpass.w11 = internal global float 0.000000e+00
@lowpass.w12 = internal global float 0.000000e+00
@lowpass.w2 = internal global float 0.000000e+00
@lowpass.w21 = internal global float 0.000000e+00
@lowpass.w22 = internal global float 0.000000e+00
@lowpass.w3 = internal global float 0.000000e+00
@lowpass.w31 = internal global float 0.000000e+00
@lowpass.w32 = internal global float 0.000000e+00
@lowpass.w4 = internal global float 0.000000e+00
@lowpass.w41 = internal global float 0.000000e+00
@lowpass.w42 = internal global float 0.000000e+00
define float @lowpass(i32 %0) {
%2 = alloca i16
%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 = trunc i32 %0 to i16
store i16 %16, i16* %2
store float 0x3F3F9279E0000000, float* %3
store float 0xBFFE631EC0000000, float* %4
store float 0xBFFEC59FC0000000, float* %5
store float 0x3FEF8B0580000000, float* %6
store float 0xBFFDDB7340000000, float* %7
store float 0xBFFE6978E0000000, float* %8
store float 0x3FEE59A8A0000000, float* %9
store float 0xBFFAA0B480000000, float* %10
store float 0xBFFE00AF00000000, float* %11
store float 0x3FECAE01A0000000, float* %12
store float 0xBFEDC63D40000000, float* %13
%17 = load float, float* %3
%18 = load i16, i16* %2
%19 = sext i16 %18 to i32
%20 = sitofp i32 %19 to float
%21 = load float, float* %5
%22 = load float, float* @lowpass.w11
%23 = fmul float %21, %22
%24 = fneg float %23
%25 = call float @llvm.fmuladd.f32(float %17, float %20, float %24)
%26 = load float, float* %6
%27 = load float, float* @lowpass.w12
%28 = fneg float %26
%29 = call float @llvm.fmuladd.f32(float %28, float %27, float %25)
store float %29, float* @lowpass.w1
%30 = load float, float* @lowpass.w1
%31 = load float, float* %4
%32 = load float, float* @lowpass.w11
%33 = call float @llvm.fmuladd.f32(float %31, float %32, float %30)
%34 = load float, float* @lowpass.w12
%35 = fadd float %33, %34
store float %35, float* %14
%36 = load float, float* @lowpass.w11
store float %36, float* @lowpass.w12
%37 = load float, float* @lowpass.w1
store float %37, float* @lowpass.w11
%38 = load float, float* %14
%39 = load float, float* %8
%40 = load float, float* @lowpass.w21
%41 = fneg float %39
%42 = call float @llvm.fmuladd.f32(float %41, float %40, float %38)
%43 = load float, float* %9
%44 = load float, float* @lowpass.w22
%45 = fneg float %43
%46 = call float @llvm.fmuladd.f32(float %45, float %44, float %42)
store float %46, float* @lowpass.w2
%47 = load float, float* @lowpass.w2
%48 = load float, float* %7
%49 = load float, float* @lowpass.w21
%50 = call float @llvm.fmuladd.f32(float %48, float %49, float %47)
%51 = load float, float* @lowpass.w22
%52 = fadd float %50, %51
store float %52, float* %14
%53 = load float, float* @lowpass.w21
store float %53, float* @lowpass.w22
%54 = load float, float* @lowpass.w2
store float %54, float* @lowpass.w21
%55 = load float, float* %14
%56 = load float, float* %11
%57 = load float, float* @lowpass.w31
%58 = fneg float %56
%59 = call float @llvm.fmuladd.f32(float %58, float %57, float %55)
%60 = load float, float* %12
%61 = load float, float* @lowpass.w32
%62 = fneg float %60
%63 = call float @llvm.fmuladd.f32(float %62, float %61, float %59)
store float %63, float* @lowpass.w3
%64 = load float, float* @lowpass.w3
%65 = load float, float* %10
%66 = load float, float* @lowpass.w31
%67 = call float @llvm.fmuladd.f32(float %65, float %66, float %64)
%68 = load float, float* @lowpass.w32
%69 = fadd float %67, %68
store float %69, float* %14
%70 = load float, float* @lowpass.w31
store float %70, float* @lowpass.w32
%71 = load float, float* @lowpass.w3
store float %71, float* @lowpass.w31
%72 = load float, float* %14
%73 = load float, float* %13
%74 = load float, float* @lowpass.w41
%75 = fneg float %73
%76 = call float @llvm.fmuladd.f32(float %75, float %74, float %72)
store float %76, float* @lowpass.w4
%77 = load float, float* @lowpass.w4
%78 = load float, float* @lowpass.w41
%79 = fadd float %77, %78
store float %79, float* %15
%80 = load float, float* @lowpass.w41
store float %80, float* @lowpass.w42
%81 = load float, float* @lowpass.w4
store float %81, float* @lowpass.w41
%82 = load float, float* %15
ret float %82
}

LLVM IR (-O2):
@lowpass.w11 = internal unnamed_addr global float 0.000000e+00
@lowpass.w12 = internal unnamed_addr global float 0.000000e+00
@lowpass.w21 = internal unnamed_addr global float 0.000000e+00
@lowpass.w22 = internal unnamed_addr global float 0.000000e+00
@lowpass.w31 = internal unnamed_addr global float 0.000000e+00
@lowpass.w32 = internal unnamed_addr global float 0.000000e+00
@lowpass.w41 = internal unnamed_addr global float 0.000000e+00
define float @lowpass(i32 %0) {
%2 = shl i32 %0, 16
%3 = ashr exact i32 %2, 16
%4 = sitofp i32 %3 to float
%5 = load float, float* @lowpass.w11
%6 = fmul float %5, 0x3FFEC59FC0000000
%7 = tail call float @llvm.fmuladd.f32(float %4, float 0x3F3F9279E0000000, float %6)
%8 = load float, float* @lowpass.w12
%9 = tail call float @llvm.fmuladd.f32(float %8, float 0xBFEF8B0580000000, float %7)
%10 = tail call float @llvm.fmuladd.f32(float %5, float 0xBFFE631EC0000000, float %9)
%11 = fadd float %8, %10
store float %5, float* @lowpass.w12
store float %9, float* @lowpass.w11
%12 = load float, float* @lowpass.w21
%13 = tail call float @llvm.fmuladd.f32(float %12, float 0x3FFE6978E0000000, float %11)
%14 = load float, float* @lowpass.w22
%15 = tail call float @llvm.fmuladd.f32(float %14, float 0xBFEE59A8A0000000, float %13)
%16 = tail call float @llvm.fmuladd.f32(float %12, float 0xBFFDDB7340000000, float %15)
%17 = fadd float %14, %16
store float %12, float* @lowpass.w22
store float %15, float* @lowpass.w21
%18 = load float, float* @lowpass.w31
%19 = tail call float @llvm.fmuladd.f32(float %18, float 0x3FFE00AF00000000, float %17)
%20 = load float, float* @lowpass.w32
%21 = tail call float @llvm.fmuladd.f32(float %20, float 0xBFECAE01A0000000, float %19)
%22 = tail call float @llvm.fmuladd.f32(float %18, float 0xBFFAA0B480000000, float %21)
%23 = fadd float %20, %22
store float %18, float* @lowpass.w32
store float %21, float* @lowpass.w31
%24 = load float, float* @lowpass.w41
%25 = tail call float @llvm.fmuladd.f32(float %24, float 0x3FEDC63D40000000, float %23)
%26 = fadd float %24, %25
store float %25, float* @lowpass.w41
ret float %26
}