diff -Naur openal-0.0.8-lunar/src/arch/i386/x86_floatmul.c openal-0.0.8/src/arch/i386/x86_floatmul.c --- openal-0.0.8-lunar/src/arch/i386/x86_floatmul.c 2005-12-21 20:06:35.000000000 +0100 +++ openal-0.0.8/src/arch/i386/x86_floatmul.c 2007-12-09 12:31:35.000000000 +0100 @@ -27,13 +27,16 @@ /* MMX routine needs 16 */ #define SCALING_POWER 16 #define SCALING_FACTOR (1 << SCALING_POWER) +#define MIN_ENTER_SIMD_LEN 48 void _alFloatMul(ALshort *bpt, ALfloat sa, ALuint len); void _alFloatMul(ALshort *bpt, ALfloat sa, ALuint len) { ALint scaled_sa = sa * SCALING_FACTOR; ALint iter; - + + if (len < MIN_ENTER_SIMD_LEN) + goto skip_simd; #ifdef __MMX__ if (_alHaveMMX()) { union { @@ -93,6 +96,7 @@ __builtin_ia32_emms(); } #endif /* __MMX__ */ +skip_simd: while(len--) { iter = *bpt;