This code takes 1.5 instructions to compute each floating-point bandpass filter;for a SHARC running at 3ns instruction cycle this is 4.5ns / biquad.

Two routines are provided: one to compute the biquads efficiently, and the other to compute filter coefficients.

If you want to learn techniques for optimizing SIMD code on the SHARC, the first routine is a good assembly language example to study. In the core loop it performs four floating point operations and four memory load/store operations in each instruction.

Written by Lippold Haken of Haken Audio, 2010, using ADSP-21364 and VisualDSP++ C.