From 710441c2f628be7d7bc18b8fd682520fd74e1526 Mon Sep 17 00:00:00 2001 From: David Conrad Date: Wed, 1 Apr 2009 09:11:32 +0000 Subject: [PATCH] Add SSE4 detection support Originally committed as revision 18302 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/avcodec.h | 2 ++ libavcodec/x86/cpuid.c | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 2b9adf268d..1c314659e6 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1462,6 +1462,8 @@ typedef struct AVCodecContext { #define FF_MM_3DNOWEXT 0x0020 ///< AMD 3DNowExt #define FF_MM_SSE3 0x0040 ///< Prescott SSE3 functions #define FF_MM_SSSE3 0x0080 ///< Conroe SSSE3 functions +#define FF_MM_SSE4 0x0100 ///< Penryn SSE4.1 functions +#define FF_MM_SSE42 0x0200 ///< Nehalem SSE4.2 functions #define FF_MM_IWMMXT 0x0100 ///< XScale IWMMXT #define FF_MM_ALTIVEC 0x0001 ///< standard AltiVec diff --git a/libavcodec/x86/cpuid.c b/libavcodec/x86/cpuid.c index 63feffcef8..55755af8f9 100644 --- a/libavcodec/x86/cpuid.c +++ b/libavcodec/x86/cpuid.c @@ -85,7 +85,11 @@ int mm_support(void) if (ecx & 1) rval |= FF_MM_SSE3; if (ecx & 0x00000200 ) - rval |= FF_MM_SSSE3 + rval |= FF_MM_SSSE3; + if (ecx & 0x00080000 ) + rval |= FF_MM_SSE4; + if (ecx & 0x00100000 ) + rval |= FF_MM_SSE42; #endif ; } @@ -105,13 +109,15 @@ int mm_support(void) } #if 0 - av_log(NULL, AV_LOG_DEBUG, "%s%s%s%s%s%s%s%s\n", + av_log(NULL, AV_LOG_DEBUG, "%s%s%s%s%s%s%s%s%s%s\n", (rval&FF_MM_MMX) ? "MMX ":"", (rval&FF_MM_MMXEXT) ? "MMX2 ":"", (rval&FF_MM_SSE) ? "SSE ":"", (rval&FF_MM_SSE2) ? "SSE2 ":"", (rval&FF_MM_SSE3) ? "SSE3 ":"", (rval&FF_MM_SSSE3) ? "SSSE3 ":"", + (rval&FF_MM_SSE4) ? "SSE4.1 ":"", + (rval&FF_MM_SSE42) ? "SSE4.2 ":"", (rval&FF_MM_3DNOW) ? "3DNow ":"", (rval&FF_MM_3DNOWEXT) ? "3DNowExt ":""); #endif