On Sun, Jun 14, 2009 at 06:17:20PM +0200, Jens M Andreasen wrote: > ... > > This is called for each of the four filters like: > > for (j = 0; j < bands_count; j++) > { > param_sect_proc(filter_ptr->sect + j, k, > sig, sfreq[j], sband[j], sgain[j]); > } > > .. where the parameters are unique for each filter but the input signal > is the result of the previous run, which creates an unfortunate > dependency. > > If sig instead had been splatted out on the 4 elements of an SSE vector, > all 4 filters could have been calculated in parallel, quite possibly > auto-vectorizable. > > param_sect_proc(filter_ptr->sect + j, k, > sig[j], sfreq[j], sband[j], sgain[j]);
Which would not be a correct implementation. Results will be similar only if the frequency bands handled by each section do not overlap. For example two filters with the same F and B and opposite gains would not cancel. Ciao, -- FA Io lo dico sempre: l'Italia è troppo stretta e lunga. _______________________________________________ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev