[Paul Davis]
On Fri, 2008-02-01 at 08:14 +0100, Yann Orlarey wrote:
The minimal combination to activate FTZ mode
seems to be :
"-O3 -march=native -mfpmath=sse -ffast-math"
when you are on a sse capable cpu. Here it works, you don't have
denormals any more :-).
Ardour takes manual control of FTZ and DAZ flags, and also offers DC
offsets (adding a very very tiny value to every sample) as ways to
control denormals. Our experience (or our users' experience) has been
that FTZ is better than DAZ, but that neither reduces denormal effects
as much as a DC offset. It is still possible to see denormal-induced
performance slowdowns even when FTZ is in effect, although the magnitude
is reduced.
On this Core2 (6600) chip, this:
#ifdef __SSE3__
_MM_SET_DENORMALS_ZERO_MODE (_MM_DENORMALS_ZERO_ON);
#endif
#ifdef __SSE__
_MM_SET_FLUSH_ZERO_MODE (_MM_FLUSH_ZERO_ON);
#endif
along with -mfpmath=sse -msse -msse3 reliably eliminates denormals
completely. DSP code runs at full speed with no more need for DC,
noise, Nyquist or other signal injection.
Flush-to-zero alone did not bring a palpable improvement when I
evaluated the different options. On this chip that is, of course.
Cheers, Tim