--- src/arch/i386/x86_floatmul.c +++ src/arch/i386/x86_floatmul.c @@ -27,6 +27,7 @@ /* 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); @@ -34,6 +35,8 @@ 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;