diff options
Diffstat (limited to 'lib/rbcodec/codecs/libmad/fixed.h')
-rw-r--r-- | lib/rbcodec/codecs/libmad/fixed.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/rbcodec/codecs/libmad/fixed.h b/lib/rbcodec/codecs/libmad/fixed.h index 6015684644..1b4d29dad6 100644 --- a/lib/rbcodec/codecs/libmad/fixed.h +++ b/lib/rbcodec/codecs/libmad/fixed.h | |||
@@ -292,6 +292,15 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y) | |||
292 | 292 | ||
293 | # elif defined(FPM_MIPS) | 293 | # elif defined(FPM_MIPS) |
294 | 294 | ||
295 | #if GCCNUM >= 404 | ||
296 | typedef unsigned int u64_di_t __attribute__ ((mode (DI))); | ||
297 | # define MAD_F_MLX(hi, lo, x, y) \ | ||
298 | do { \ | ||
299 | u64_di_t __ll = (u64_di_t) (x) * (y); \ | ||
300 | hi = __ll >> 32; \ | ||
301 | lo = __ll; \ | ||
302 | }while(0) | ||
303 | #else | ||
295 | /* | 304 | /* |
296 | * This MIPS version is fast and accurate; the disposition of the least | 305 | * This MIPS version is fast and accurate; the disposition of the least |
297 | * significant bit depends on OPT_ACCURACY via mad_f_scale64(). | 306 | * significant bit depends on OPT_ACCURACY via mad_f_scale64(). |
@@ -322,6 +331,8 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y) | |||
322 | # define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) | 331 | # define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) |
323 | # endif | 332 | # endif |
324 | 333 | ||
334 | #endif /* GCCNUM */ | ||
335 | |||
325 | # if defined(OPT_SPEED) | 336 | # if defined(OPT_SPEED) |
326 | # define mad_f_scale64(hi, lo) \ | 337 | # define mad_f_scale64(hi, lo) \ |
327 | ((mad_fixed_t) ((hi) << (32 - MAD_F_SCALEBITS))) | 338 | ((mad_fixed_t) ((hi) << (32 - MAD_F_SCALEBITS))) |