comparison x86/cpuid.c @ 12456:a5ddb39627fd libavcodec

Rename FF_MM_ symbols related to CPU features flags as AV_CPU_FLAG_ symbols, and move them from libavcodec/avcodec.h to libavutil/cpu.h.
author stefano
date Sat, 04 Sep 2010 09:59:08 +0000
parents fbf4d5b1b664
children
comparison
equal deleted inserted replaced
12455:14f85520cd02 12456:a5ddb39627fd
77 if(max_std_level >= 1){ 77 if(max_std_level >= 1){
78 cpuid(1, eax, ebx, ecx, std_caps); 78 cpuid(1, eax, ebx, ecx, std_caps);
79 family = ((eax>>8)&0xf) + ((eax>>20)&0xff); 79 family = ((eax>>8)&0xf) + ((eax>>20)&0xff);
80 model = ((eax>>4)&0xf) + ((eax>>12)&0xf0); 80 model = ((eax>>4)&0xf) + ((eax>>12)&0xf0);
81 if (std_caps & (1<<23)) 81 if (std_caps & (1<<23))
82 rval |= FF_MM_MMX; 82 rval |= AV_CPU_FLAG_MMX;
83 if (std_caps & (1<<25)) 83 if (std_caps & (1<<25))
84 rval |= FF_MM_MMX2 84 rval |= AV_CPU_FLAG_MMX2
85 #if HAVE_SSE 85 #if HAVE_SSE
86 | FF_MM_SSE; 86 | AV_CPU_FLAG_SSE;
87 if (std_caps & (1<<26)) 87 if (std_caps & (1<<26))
88 rval |= FF_MM_SSE2; 88 rval |= AV_CPU_FLAG_SSE2;
89 if (ecx & 1) 89 if (ecx & 1)
90 rval |= FF_MM_SSE3; 90 rval |= AV_CPU_FLAG_SSE3;
91 if (ecx & 0x00000200 ) 91 if (ecx & 0x00000200 )
92 rval |= FF_MM_SSSE3; 92 rval |= AV_CPU_FLAG_SSSE3;
93 if (ecx & 0x00080000 ) 93 if (ecx & 0x00080000 )
94 rval |= FF_MM_SSE4; 94 rval |= AV_CPU_FLAG_SSE4;
95 if (ecx & 0x00100000 ) 95 if (ecx & 0x00100000 )
96 rval |= FF_MM_SSE42; 96 rval |= AV_CPU_FLAG_SSE42;
97 #endif 97 #endif
98 ; 98 ;
99 } 99 }
100 100
101 cpuid(0x80000000, max_ext_level, ebx, ecx, edx); 101 cpuid(0x80000000, max_ext_level, ebx, ecx, edx);
102 102
103 if(max_ext_level >= 0x80000001){ 103 if(max_ext_level >= 0x80000001){
104 cpuid(0x80000001, eax, ebx, ecx, ext_caps); 104 cpuid(0x80000001, eax, ebx, ecx, ext_caps);
105 if (ext_caps & (1<<31)) 105 if (ext_caps & (1<<31))
106 rval |= FF_MM_3DNOW; 106 rval |= AV_CPU_FLAG_3DNOW;
107 if (ext_caps & (1<<30)) 107 if (ext_caps & (1<<30))
108 rval |= FF_MM_3DNOWEXT; 108 rval |= AV_CPU_FLAG_3DNOWEXT;
109 if (ext_caps & (1<<23)) 109 if (ext_caps & (1<<23))
110 rval |= FF_MM_MMX; 110 rval |= AV_CPU_FLAG_MMX;
111 if (ext_caps & (1<<22)) 111 if (ext_caps & (1<<22))
112 rval |= FF_MM_MMX2; 112 rval |= AV_CPU_FLAG_MMX2;
113 } 113 }
114 114
115 if (!strncmp(vendor.c, "GenuineIntel", 12) && 115 if (!strncmp(vendor.c, "GenuineIntel", 12) &&
116 family == 6 && (model == 9 || model == 13 || model == 14)) { 116 family == 6 && (model == 9 || model == 13 || model == 14)) {
117 /* 6/9 (pentium-m "banias"), 6/13 (pentium-m "dothan"), and 6/14 (core1 "yonah") 117 /* 6/9 (pentium-m "banias"), 6/13 (pentium-m "dothan"), and 6/14 (core1 "yonah")
118 * theoretically support sse2, but it's usually slower than mmx, 118 * theoretically support sse2, but it's usually slower than mmx,
119 * so let's just pretend they don't. */ 119 * so let's just pretend they don't. */
120 if (rval & FF_MM_SSE2) rval ^= FF_MM_SSE2SLOW|FF_MM_SSE2; 120 if (rval & AV_CPU_FLAG_SSE2) rval ^= AV_CPU_FLAG_SSE2SLOW|AV_CPU_FLAG_SSE2;
121 if (rval & FF_MM_SSE3) rval ^= FF_MM_SSE3SLOW|FF_MM_SSE3; 121 if (rval & AV_CPU_FLAG_SSE3) rval ^= AV_CPU_FLAG_SSE3SLOW|AV_CPU_FLAG_SSE3;
122 } 122 }
123 123
124 #if 0 124 #if 0
125 av_log(NULL, AV_LOG_DEBUG, "%s%s%s%s%s%s%s%s%s%s%s%s\n", 125 av_log(NULL, AV_LOG_DEBUG, "%s%s%s%s%s%s%s%s%s%s%s%s\n",
126 (rval&FF_MM_MMX) ? "MMX ":"", 126 (rval&AV_CPU_FLAG_MMX) ? "MMX ":"",
127 (rval&FF_MM_MMX2) ? "MMX2 ":"", 127 (rval&AV_CPU_FLAG_MMX2) ? "MMX2 ":"",
128 (rval&FF_MM_SSE) ? "SSE ":"", 128 (rval&AV_CPU_FLAG_SSE) ? "SSE ":"",
129 (rval&FF_MM_SSE2) ? "SSE2 ":"", 129 (rval&AV_CPU_FLAG_SSE2) ? "SSE2 ":"",
130 (rval&FF_MM_SSE2SLOW) ? "SSE2(slow) ":"", 130 (rval&AV_CPU_FLAG_SSE2SLOW) ? "SSE2(slow) ":"",
131 (rval&FF_MM_SSE3) ? "SSE3 ":"", 131 (rval&AV_CPU_FLAG_SSE3) ? "SSE3 ":"",
132 (rval&FF_MM_SSE3SLOW) ? "SSE3(slow) ":"", 132 (rval&AV_CPU_FLAG_SSE3SLOW) ? "SSE3(slow) ":"",
133 (rval&FF_MM_SSSE3) ? "SSSE3 ":"", 133 (rval&AV_CPU_FLAG_SSSE3) ? "SSSE3 ":"",
134 (rval&FF_MM_SSE4) ? "SSE4.1 ":"", 134 (rval&AV_CPU_FLAG_SSE4) ? "SSE4.1 ":"",
135 (rval&FF_MM_SSE42) ? "SSE4.2 ":"", 135 (rval&AV_CPU_FLAG_SSE42) ? "SSE4.2 ":"",
136 (rval&FF_MM_3DNOW) ? "3DNow ":"", 136 (rval&AV_CPU_FLAG_3DNOW) ? "3DNow ":"",
137 (rval&FF_MM_3DNOWEXT) ? "3DNowExt ":""); 137 (rval&AV_CPU_FLAG_3DNOWEXT) ? "3DNowExt ":"");
138 #endif 138 #endif
139 return rval; 139 return rval;
140 } 140 }
141 141
142 #ifdef TEST 142 #ifdef TEST