Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Conrad <lessen42@gmail.com>2009-04-01 13:11:32 +0400
committerDavid Conrad <lessen42@gmail.com>2009-04-01 13:11:32 +0400
commit710441c2f628be7d7bc18b8fd682520fd74e1526 (patch)
tree974a6a5162d2182543a6bf74edd2c41abec7e579 /libavcodec
parent41913a35b0fe2f9966cf8dfa2718180fb2febe53 (diff)
Add SSE4 detection support
Originally committed as revision 18302 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/avcodec.h2
-rw-r--r--libavcodec/x86/cpuid.c10
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