[linux-audio-dev] Re: Fixing Freeverb and Denormals

Neil Klepeis nklepeis at sbcglobal.net
Sat Jan 22 11:22:41 UTC 2005


Hi,

I compiled the CMT plugins with the g++ options -msse2 and -march=i686 
and the freeverb denormals problem (seen with ardour on a dual Xeon 
machine) seems to be _almost_ entirely fixed.  Also, I don't see any 
weird problems with the ardour host (yet :).   But, I still see the DSP 
load increasing from around 5% to about 15%, although now it is _much_ 
farther along in the tails of the reverb than before and I get _zero_ 
xruns.  [before, the DSP shot up to 60-90% with tons of xruns and 
usually the zombification of ardour].

Much cooler.

--Neil

PS:  I also am using the new undenormalize inline function described in 
an earlier message.


On Sat, Jan 22, 2005 at 03:17:28PM +0100, Christian Schoenebeck wrote:
 >> I think for such an important piece like freeverb it might be worth 
to add
 >> architecture dependant assembly optimizations. E.g. with SSE(1) you 
simply
 >> have to change the SSE control register to get rid of the denormal 
problem.
 >> With that no denormal fixes for individual sample points are necessary
 >> anymore which definitely pays off in performance.

Agreed, but I'm not sure how doing that will affect the host - ie does
-mfpumath=SSE (or whatever the option is) always leave the FPU stack in a
sane state when control goes back to the host? I dont think it would
normally return the FPU to 387 mode, which might do bad things to the
host occasionally.

OTOH it might be fine, I dont understand the interaction with the 387 and
SSE.

- Steve




More information about the Linux-audio-dev mailing list