You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avutil/intmath: enable builtin intrinsics for icl and msvc.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		
				
					committed by
					
						 Michael Niedermayer
						Michael Niedermayer
					
				
			
			
				
	
			
			
			
						parent
						
							c0002ddb01
						
					
				
				
					commit
					2060f4cbba
				
			| @@ -35,21 +35,29 @@ | ||||
|  * @{ | ||||
|  */ | ||||
|  | ||||
| #if HAVE_FAST_CLZ && AV_GCC_VERSION_AT_LEAST(3,4) | ||||
|  | ||||
| #if HAVE_FAST_CLZ | ||||
| #if AV_GCC_VERSION_AT_LEAST(3,4) | ||||
| #ifndef ff_log2 | ||||
| #   define ff_log2(x) (31 - __builtin_clz((x)|1)) | ||||
| #   ifndef ff_log2_16bit | ||||
| #      define ff_log2_16bit av_log2 | ||||
| #   endif | ||||
| #endif /* ff_log2 */ | ||||
|  | ||||
| #elif 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 */ | ||||
| #endif | ||||
| #endif /* AV_GCC_VERSION_AT_LEAST(3,4) */ | ||||
|  | ||||
| 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; | ||||
| @@ -65,6 +73,15 @@ 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 | ||||
| @@ -94,14 +111,21 @@ static av_always_inline av_const int ff_log2_16bit_c(unsigned int v) | ||||
|  * @{ | ||||
|  */ | ||||
|  | ||||
| #if HAVE_FAST_CLZ && AV_GCC_VERSION_AT_LEAST(3,4) | ||||
| #if HAVE_FAST_CLZ | ||||
| #if AV_GCC_VERSION_AT_LEAST(3,4) | ||||
| #ifndef ff_ctz | ||||
| #define ff_ctz(v) __builtin_ctz(v) | ||||
| #endif | ||||
| #elif defined( __INTEL_COMPILER ) | ||||
| #ifndef ff_ctz | ||||
| #define ff_ctz(v) _bit_scan_forward(v) | ||||
| #endif | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| #ifndef ff_ctz | ||||
| #define ff_ctz ff_ctz_c | ||||
| #if !defined( _MSC_VER ) | ||||
| static av_always_inline av_const int ff_ctz_c(int v) | ||||
| { | ||||
|     int c; | ||||
| @@ -130,6 +154,14 @@ static av_always_inline av_const int ff_ctz_c(int v) | ||||
|  | ||||
|     return c; | ||||
| } | ||||
| #else | ||||
| static av_always_inline av_const int ff_ctz_c( int v ) | ||||
| { | ||||
|     unsigned long c; | ||||
|     _BitScanForward(&c, v); | ||||
|     return c; | ||||
| } | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| /** | ||||
|   | ||||
		Reference in New Issue
	
	Block a user