I am using a SHARC 21469 EZ-Kit and want to use a large number of biquads. Having written a standard function in C, I can run 320 biquads running at around 66% CPU (according to the statistical profiler). If I use the SHARC library function biquad_vec(), from filter.h, I can only run 640 biquads, using 73% CPU. I notice when looking at the statistical profiler, that the _biquad_vec() function is being called (at least, that's what it says in the profiler). This implies, as far as I understand from looking at the filter.h file, that the non-SIMD biquad_vec() function is being called as it makes this distinction based on the SIMD #if defined(__SIMDSHARC__) using #pragma linkage_name _biquad_vec
for non-SIMD biquad_vec(). Does that observation sound correct? If it is calling the non-SIMD biquad_vec() library function, how can I get the compiler to link the SIMD version?
Second question, related to the SHARC benchmarks here: SHARC Processor Benchmarks | Design Center | Analog Devices
This table states that the ADSP-21469 can execute 1 biquad in 4.43 ns. My current tests are way off this number; how is this execution time achieved? What is the figure (execution time) for the SIMD library function (214xx) per biquad?