On Friday 09 January 2009 18:50:54 ext Siarhei Siamashka wrote: > On Tuesday 06 January 2009 04:49:06 ext Marcel Holtmann wrote: > > > The attached patch contains what I would consider to be a final > > > variant. MMX support is now complete. It works for both x86 and amd64, > > > has runtime autodetection of MMX availability, supports 4 and 8 > > > subbands cases. I also ensured that only original MMX instructions are > > > used (and no SSE or other later additions), so the code should work > > > fine even on the old Pentium1 MMX. New MMX optimized functions produce > > > bit identical results when compared with bluez-4.25 release. > > > > > > With this patch applied, new filtering functions are noticeably faster > > > than than the old ones on x86 (so now they are both faster and have > > > better quality). Assembly optimizations for the other platforms can be > > > easily added too. > > > > can you re-base your patch against the latest tree and re-send the > > patch. > > Yes, I will submit an updated SIMD optimizations patchset in a few days. Updated patches are attached. Performance improvement when testing with big buck bunny soundtrack varies somewhere between 1.4x (4 subbands, MMX analysis filter, Intel Core2 CPU) and 2x factor (8 subbands, NEON analysis filter, ARM Cortex-A8 CPU). But these numbers are for default bitpool settings (32) and no joint stereo, this configuration is quite sensitive to analysis filter performance. SIMD optimized code provides exactly the same output as C version. But even with this optimization done, there are still a lot more things to improve. I'm going to improve input data permutation/endian conversion/channels deinterleaving next. Also scalefactors processing can be vectorized. Audio quality can be still improved by tweaking constant tables. Best regards, Siarhei Siamashka