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
This commit is contained in:
parent
9c445fbe7a
commit
392f6da897
@ -432,6 +432,7 @@ int mm_support(void);
|
||||
#define MM_SSE 0x0008 /* SSE functions */
|
||||
#define MM_SSE2 0x0010 /* PIV SSE2 functions */
|
||||
#define MM_3DNOWEXT 0x0020 /* AMD 3DNowExt */
|
||||
#define MM_SSE3 0x0040 /* Prescott SSE3 functions */
|
||||
|
||||
extern int mm_flags;
|
||||
|
||||
|
@ -64,6 +64,8 @@ int mm_support(void)
|
||||
rval |= MM_MMXEXT | MM_SSE;
|
||||
if (std_caps & (1<<26))
|
||||
rval |= MM_SSE2;
|
||||
if (ecx & 1)
|
||||
rval |= MM_SSE3;
|
||||
}
|
||||
|
||||
cpuid(0x80000000, max_ext_level, ebx, ecx, edx);
|
||||
@ -76,38 +78,10 @@ int mm_support(void)
|
||||
rval |= MM_3DNOWEXT;
|
||||
if (ext_caps & (1<<23))
|
||||
rval |= MM_MMX;
|
||||
if (ext_caps & (1<<22))
|
||||
rval |= MM_MMXEXT;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
#if 0
|
||||
av_log(NULL, AV_LOG_DEBUG, "%s%s%s%s%s%s\n",
|
||||
(rval&MM_MMX) ? "MMX ":"",
|
||||
|
Loading…
x
Reference in New Issue
Block a user