Mercurial > libavcodec.hg
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 |