fixed-point: using TI intrinsic for celt_ilog2() if available.
authorJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Thu, 20 Mar 2008 23:40:43 +0000 (10:40 +1100)
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Thu, 20 Mar 2008 23:40:43 +0000 (10:40 +1100)
libcelt/fixed_c5x.h
libcelt/mathops.h

index 80efd9b..53c16c5 100644 (file)
@@ -59,4 +59,7 @@
 #undef MULT_16_16
 #define MULT_16_16(a,b) _lmpy(a,b)
 
+#define celt_ilog2(x) (30 - _lnorm(x))
+#define OVERRIDE_CELT_ILOG2
+
 #endif /* FIXED_C5X_H */
index adaa3d1..9269fb7 100644 (file)
 #include "entcode.h"
 #include "os_support.h"
 
+#ifndef OVERRIDE_CELT_ILOG2
 /** Integer log in base2. Undefined for zero and negative numbers */
 static inline celt_int16_t celt_ilog2(celt_word32_t x)
 {
    celt_assert2(x>0, "celt_ilog2() only defined for strictly positive numbers");
    return EC_ILOG(x)-1;
 }
+#endif
+
 
 /** Integer log in base2. Defined for zero, but not for negative numbers */
 static inline celt_int16_t celt_zlog2(celt_word32_t x)