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
