Skip to content
Snippets Groups Projects
Commit 392f6da8 authored by Zuxy Meng's avatar Zuxy Meng Committed by Guillaume Poirier
Browse files

Remove unused and unsupported Cyrix's "Extended MMX",

Add SSE3 support.
Patch by Zuxy Meng < zuxy POIS meng AH gmail POIS com >
Original thread:
04/26/06 13:13:
[Ffmpeg-devel] [PATCH] Bug fix,	SSE3 support in i386/cputest.c and dsputil.h

Originally committed as revision 5326 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 9c445fbe
No related branches found
No related tags found
No related merge requests found
...@@ -432,6 +432,7 @@ int mm_support(void); ...@@ -432,6 +432,7 @@ int mm_support(void);
#define MM_SSE 0x0008 /* SSE functions */ #define MM_SSE 0x0008 /* SSE functions */
#define MM_SSE2 0x0010 /* PIV SSE2 functions */ #define MM_SSE2 0x0010 /* PIV SSE2 functions */
#define MM_3DNOWEXT 0x0020 /* AMD 3DNowExt */ #define MM_3DNOWEXT 0x0020 /* AMD 3DNowExt */
#define MM_SSE3 0x0040 /* Prescott SSE3 functions */
extern int mm_flags; extern int mm_flags;
......
...@@ -64,6 +64,8 @@ int mm_support(void) ...@@ -64,6 +64,8 @@ int mm_support(void)
rval |= MM_MMXEXT | MM_SSE; rval |= MM_MMXEXT | MM_SSE;
if (std_caps & (1<<26)) if (std_caps & (1<<26))
rval |= MM_SSE2; rval |= MM_SSE2;
if (ecx & 1)
rval |= MM_SSE3;
} }
cpuid(0x80000000, max_ext_level, ebx, ecx, edx); cpuid(0x80000000, max_ext_level, ebx, ecx, edx);
...@@ -76,38 +78,10 @@ int mm_support(void) ...@@ -76,38 +78,10 @@ int mm_support(void)
rval |= MM_3DNOWEXT; rval |= MM_3DNOWEXT;
if (ext_caps & (1<<23)) if (ext_caps & (1<<23))
rval |= MM_MMX; rval |= MM_MMX;
} if (ext_caps & (1<<22))
cpuid(0, eax, ebx, ecx, edx);
if ( ebx == 0x68747541 &&
edx == 0x69746e65 &&
ecx == 0x444d4163) {
/* AMD */
if(ext_caps & (1<<22))
rval |= MM_MMXEXT;
} else if (ebx == 0x746e6543 &&
edx == 0x48727561 &&
ecx == 0x736c7561) { /* "CentaurHauls" */
/* VIA C3 */
if(ext_caps & (1<<24))
rval |= MM_MMXEXT;
} else if (ebx == 0x69727943 &&
edx == 0x736e4978 &&
ecx == 0x64616574) {
/* Cyrix Section */
/* See if extended CPUID level 80000001 is supported */
/* The value of CPUID/80000001 for the 6x86MX is undefined
according to the Cyrix CPU Detection Guide (Preliminary
Rev. 1.01 table 1), so we'll check the value of eax for
CPUID/0 to see if standard CPUID level 2 is supported.
According to the table, the only CPU which supports level
2 is also the only one which supports extended CPUID levels.
*/
if (eax < 2)
return rval;
if (ext_caps & (1<<24))
rval |= MM_MMXEXT; rval |= MM_MMXEXT;
} }
#if 0 #if 0
av_log(NULL, AV_LOG_DEBUG, "%s%s%s%s%s%s\n", av_log(NULL, AV_LOG_DEBUG, "%s%s%s%s%s%s\n",
(rval&MM_MMX) ? "MMX ":"", (rval&MM_MMX) ? "MMX ":"",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment