From b0bb1dc62d40dc385283f309012f64d0987883eb Mon Sep 17 00:00:00 2001 From: Matt Oliver Date: Fri, 16 Oct 2015 17:00:13 +1100 Subject: lavu/intmath.h: Move x86 only msvc/icl functions to x86 specific header. Signed-off-by: Matt Oliver --- libavutil/intmath.h | 34 ++-------------------------------- libavutil/x86/intmath.h | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 32 deletions(-) (limited to 'libavutil') diff --git a/libavutil/intmath.h b/libavutil/intmath.h index 5a55123737..5a10d025db 100644 --- a/libavutil/intmath.h +++ b/libavutil/intmath.h @@ -34,14 +34,7 @@ #endif #if HAVE_FAST_CLZ -#if defined( __INTEL_COMPILER ) -#ifndef ff_log2 -# define ff_log2(x) (_bit_scan_reverse((x)|1)) -# ifndef ff_log2_16bit -# define ff_log2_16bit av_log2 -# endif -#endif /* ff_log2 */ -#elif AV_GCC_VERSION_AT_LEAST(3,4) +#if AV_GCC_VERSION_AT_LEAST(3,4) #ifndef ff_log2 # define ff_log2(x) (31 - __builtin_clz((x)|1)) # ifndef ff_log2_16bit @@ -55,7 +48,6 @@ extern const uint8_t ff_log2_tab[256]; #ifndef ff_log2 #define ff_log2 ff_log2_c -#if !defined( _MSC_VER ) static av_always_inline av_const int ff_log2_c(unsigned int v) { int n = 0; @@ -71,15 +63,6 @@ static av_always_inline av_const int ff_log2_c(unsigned int v) return n; } -#else -static av_always_inline av_const int ff_log2_c(unsigned int v) -{ - unsigned long n; - _BitScanReverse(&n, v|1); - return n; -} -#define ff_log2_16bit av_log2 -#endif #endif #ifndef ff_log2_16bit @@ -106,11 +89,7 @@ static av_always_inline av_const int ff_log2_16bit_c(unsigned int v) */ #if HAVE_FAST_CLZ -#if defined( __INTEL_COMPILER ) -#ifndef ff_ctz -#define ff_ctz(v) _bit_scan_forward(v) -#endif -#elif AV_GCC_VERSION_AT_LEAST(3,4) +#if AV_GCC_VERSION_AT_LEAST(3,4) #ifndef ff_ctz #define ff_ctz(v) __builtin_ctz(v) #endif @@ -128,7 +107,6 @@ static av_always_inline av_const int ff_log2_16bit_c(unsigned int v) * @param v input value. If v is 0, the result is undefined. * @return the number of trailing 0-bits */ -#if !defined( _MSC_VER ) /* We use the De-Bruijn method outlined in: * http://supertech.csail.mit.edu/papers/debruijn.pdf. */ static av_always_inline av_const int ff_ctz_c(int v) @@ -139,14 +117,6 @@ static av_always_inline av_const int ff_ctz_c(int v) }; return debruijn_ctz32[(uint32_t)((v & -v) * 0x077CB531U) >> 27]; } -#else -static av_always_inline av_const int ff_ctz_c( int v ) -{ - unsigned long c; - _BitScanForward(&c, v); - return c; -} -#endif #endif #ifndef ff_ctzll diff --git a/libavutil/x86/intmath.h b/libavutil/x86/intmath.h index 3ba5ed072c..7881e3c7b6 100644 --- a/libavutil/x86/intmath.h +++ b/libavutil/x86/intmath.h @@ -26,6 +26,11 @@ #if HAVE_FAST_CLZ #if defined(__INTEL_COMPILER) +# define ff_log2(x) (_bit_scan_reverse((x)|1)) +# define ff_log2_16bit av_log2 + +# define ff_ctz(v) _bit_scan_forward(v) + # define ff_ctzll ff_ctzll_x86 static av_always_inline av_const int ff_ctzll_x86(long long v) { @@ -38,6 +43,21 @@ static av_always_inline av_const int ff_ctzll_x86(long long v) # endif } #elif defined(_MSC_VER) +# define ff_log2 ff_log2_x86 +static av_always_inline av_const int ff_log2_x86(unsigned int v) { + unsigned long n; + _BitScanReverse(&n, v | 1); + return n; +} +# define ff_log2_16bit av_log2 + +# define ff_ctz ff_ctz_x86 +static av_always_inline av_const int ff_ctz_x86(int v) { + unsigned long c; + _BitScanForward(&c, v); + return c; +} + # define ff_ctzll ff_ctzll_x86 static av_always_inline av_const int ff_ctzll_x86(long long v) { -- cgit v1.2.3