s/intra_decision()/loss_distortion()/
[opus.git] / libcelt / ecintrin.h
index e6e0f9b..5012917 100644 (file)
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.
 
-   - Neither the name of the Xiph.org Foundation nor the names of its
-   contributors may be used to endorse or promote products derived from
-   this software without specific prior written permission.
-
    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,6 +26,7 @@
 */
 
 /*Some common macros for potential platform-specific optimization.*/
+#include "celt_types.h"
 #include <math.h>
 #include <limits.h>
 #if !defined(_ecintrin_H)
@@ -85,6 +82,9 @@
   All other code should use EC_ILOG() instead.*/
 #if defined(_MSC_VER)
 # include <intrin.h>
+/*In _DEBUG mode this is not an intrinsic by default.*/
+# pragma intrinsic(_BitScanReverse)
+
 static __inline int ec_bsr(unsigned long _x){
   unsigned long ret;
   _BitScanReverse(&ret,_x);
@@ -95,7 +95,7 @@ static __inline int ec_bsr(unsigned long _x){
 #elif defined(ENABLE_TI_DSPLIB)
 # include "dsplib.h"
 # define EC_CLZ0    (31)
-# define EC_CLZ(_x) (_lnorm(x))
+# define EC_CLZ(_x) (_lnorm(_x))
 #elif defined(__GNUC_PREREQ)
 # if __GNUC_PREREQ(3,4)
 #  if INT_MAX>=2147483647
@@ -115,6 +115,8 @@ static __inline int ec_bsr(unsigned long _x){
   When we need to, it can be special cased.*/
 # define EC_ILOG(_x) (EC_CLZ0-EC_CLZ(_x))
 #else
+int ec_ilog(celt_uint32 _v);
+
 # define EC_ILOG(_x) (ec_ilog(_x))
 #endif