[FFmpeg-cvslog] lavu/intmath.h: Move x86 only msvc/icl functions to x86 specific header.

Matt Oliver git at videolan.org
Mon Oct 19 04:43:03 CEST 2015


ffmpeg | branch: master | Matt Oliver <protogonoi at gmail.com> | Fri Oct 16 17:00:13 2015 +1100| [b0bb1dc62d40dc385283f309012f64d0987883eb] | committer: Matt Oliver

lavu/intmath.h: Move x86 only msvc/icl functions to x86 specific header.

Signed-off-by: Matt Oliver <protogonoi at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b0bb1dc62d40dc385283f309012f64d0987883eb
---

 libavutil/intmath.h     |   34 ++--------------------------------
 libavutil/x86/intmath.h |   20 ++++++++++++++++++++
 2 files changed, 22 insertions(+), 32 deletions(-)

diff --git a/libavutil/intmath.h b/libavutil/intmath.h
index 5a55123..5a10d02 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 3ba5ed0..7881e3c 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)
 {



More information about the ffmpeg-cvslog mailing list