options: Make dynamic dup hack work with new options
[mplayer.git] / cputable.h
blobef3496e1fb75d4274f0cf0ebb960d4fc29f2a8f0
1 /* cputable.h - Maps CPUID to real CPU name.
2 * Copyleft 2001 by Felix Buenemann <atmosfear at users dot sourceforge dot net>
3 * This file comes under the GNU GPL, see www.fsf.org for more info!
4 * Family F codenames owe much thanks to Neil Phillips, author of x86test.
5 */
7 #ifndef MPLAYER_CPUTABLE_H
8 #define MPLAYER_CPUTABLE_H
10 #define MAX_VENDORS 8 /* Number of CPU Vendors */
12 //#define N_UNKNOWN "unknown"
13 //#define N_UNKNOWNEXT "unknown extended model"
14 #define N_UNKNOWN ""
15 #define N_UNKNOWNEXT ""
17 #define F_UNKNOWN { \
18 N_UNKNOWN, \
19 N_UNKNOWN, \
20 N_UNKNOWN, \
21 N_UNKNOWN, \
22 N_UNKNOWN, \
23 N_UNKNOWN, \
24 N_UNKNOWN, \
25 N_UNKNOWN, \
26 N_UNKNOWN, \
27 N_UNKNOWN, \
28 N_UNKNOWN, \
29 N_UNKNOWN, \
30 N_UNKNOWN, \
31 N_UNKNOWN, \
32 N_UNKNOWN, \
33 N_UNKNOWN \
36 static const char *cpuname
37 /* Vendor */ [MAX_VENDORS]
38 /* Family */ [16]
39 /* Model */ [16]
41 /* Intel Corporation, "GenuineIntel" */ {
42 /* 0 */ F_UNKNOWN,
43 /* 1 */ F_UNKNOWN,
44 /* 2 */ F_UNKNOWN,
45 /* 3 i386 */ F_UNKNOWN, /* XXX new 386 chips may support CPUID! */
46 /* 4 i486 */ {
47 /* 0 */ "i486DX-25/33", /* only few of these */
48 /* 1 */ "i486DX-50", /* support CPUID! */
49 /* 2 */ "i486SX",
50 /* 3 */ "i486DX2", /* CPUID only on new chips! */
51 /* 4 */ "i486SL",
52 /* 5 */ "i486SX2",
53 /* 6 */ N_UNKNOWN,
54 /* 7 */ "i486DX2/write-back", /* returns 3 in write-through mode */
55 /* 8 */ "i486DX4",
56 /* 9 */ "i486DX4/write-back",
57 /* A */ N_UNKNOWN,
58 /* B */ N_UNKNOWN,
59 /* C */ N_UNKNOWN,
60 /* D */ N_UNKNOWN,
61 /* E */ N_UNKNOWN,
62 /* F */ N_UNKNOWNEXT
64 /* 5 i586 */ {
65 /* 0 */ "Pentium P5 A-step",
66 /* 1 */ "Pentium P5",
67 /* 2 */ "Pentium P54C",
68 /* 3 */ "Pentium OverDrive P24T",
69 /* 4 */ "Pentium MMX P55C",
70 /* 5 */ N_UNKNOWN, /* XXX DX4 OverDrive? */
71 /* 6 */ N_UNKNOWN, /* XXX P5 OverDrive? */
72 /* 7 */ "Pentium P54C (new)",
73 /* 8 */ "Pentium MMX P55C (new)",
74 /* 9 */ N_UNKNOWN,
75 /* A */ N_UNKNOWN,
76 /* B */ N_UNKNOWN,
77 /* C */ N_UNKNOWN,
78 /* D */ N_UNKNOWN,
79 /* E */ N_UNKNOWN,
80 /* F */ N_UNKNOWNEXT
82 /* 6 i686 */ {
83 /* 0 */ "PentiumPro A-step",
84 /* 1 */ "PentiumPro",
85 /* 2 */ N_UNKNOWN,
86 /* 3 */ "Pentium II Klamath/Pentium II OverDrive",
87 /* 4 */ N_UNKNOWN, /* XXX P55CT - OverDrive for P54? */
88 /* 5 */ "Celeron Covington/Pentium II Deschutes,Tonga/Pentium II Xeon",
89 /* 6 */ "Celeron A Mendocino/Pentium II Dixon",
90 /* 7 */ "Pentium III Katmai/Pentium III Xeon Tanner",
91 /* 8 */ "Celeron 2/Pentium III Coppermine,Geyserville",
92 /* 9 */ "Pentium M Banias", /* XXX check */
93 /* A */ "Pentium III Xeon Cascades",
94 /* B */ "Celeron 2/Pentium III Tualatin",
95 /* C */ N_UNKNOWN,
96 /* D */ "Pentium M Dothan",
97 /* E */ N_UNKNOWN,
98 /* F */ N_UNKNOWNEXT
100 /* 7 Itanium */ { /* XXX check */
101 /* 0 */ "Itanium Merced",
102 /* 1 */ N_UNKNOWN,
103 /* 2 */ N_UNKNOWN,
104 /* 3 */ N_UNKNOWN,
105 /* 4 */ N_UNKNOWN,
106 /* 5 */ N_UNKNOWN,
107 /* 6 */ N_UNKNOWN,
108 /* 7 */ N_UNKNOWN,
109 /* 8 */ N_UNKNOWN,
110 /* 9 */ N_UNKNOWN,
111 /* A */ N_UNKNOWN,
112 /* B */ N_UNKNOWN,
113 /* C */ N_UNKNOWN,
114 /* D */ N_UNKNOWN,
115 /* E */ N_UNKNOWN,
116 /* F */ N_UNKNOWNEXT
118 /* 8 */ F_UNKNOWN,
119 /* 9 */ F_UNKNOWN,
120 /* A */ F_UNKNOWN,
121 /* B */ F_UNKNOWN,
122 /* C */ F_UNKNOWN,
123 /* D */ F_UNKNOWN,
124 /* E */ F_UNKNOWN,
125 /* F extended family (P4/new IA-64)*/ {
126 /* 0 */ "Pentium 4 Willamette; Xeon Foster",
127 /* 1 */ "Pentium 4 Willamette; Xeon Foster",
128 /* 2 */ "Pentium 4/Celeron 4 Northwood; Pentium 4 EE/Xeon Prestonia,Gallatin",
129 /* 3 */ "Pentium 4/Celeron D Prescott; Xeon Nocona",
130 /* 4 */ "Pentium 4/Celeron D Prescott; Pentium D/XE Smithfield; Xeon Nocona,Irwindale",
131 /* 5 */ N_UNKNOWN,
132 /* 6 */ N_UNKNOWN,
133 /* 7 */ N_UNKNOWN,
134 /* 8 */ N_UNKNOWN,
135 /* 9 */ N_UNKNOWN,
136 /* A */ N_UNKNOWN,
137 /* B */ N_UNKNOWN,
138 /* C */ N_UNKNOWN,
139 /* D */ N_UNKNOWN,
140 /* E */ N_UNKNOWN,
141 /* F */ N_UNKNOWNEXT
143 #if 0 /* out of table index boundaries */
144 /* 1F Itanium 2 */ { /* XXX check */
145 /* 0 */ "Itanium 2 McKinley",
146 /* 1 */ "Itanium 2 Madison", /* I coded on that :-) */
147 /* 2 */ N_UNKNOWN,
148 /* 3 */ N_UNKNOWN,
149 /* 4 */ N_UNKNOWN,
150 /* 5 */ N_UNKNOWN,
151 /* 6 */ N_UNKNOWN,
152 /* 7 */ N_UNKNOWN,
153 /* 8 */ N_UNKNOWN,
154 /* 9 */ N_UNKNOWN,
155 /* A */ N_UNKNOWN,
156 /* B */ N_UNKNOWN,
157 /* C */ N_UNKNOWN,
158 /* D */ N_UNKNOWN,
159 /* E */ N_UNKNOWN,
160 /* F */ N_UNKNOWNEXT
162 #endif
164 /* United Microelectronics Corporation, "UMC UMC UMC " */ {
165 /* 0 */ F_UNKNOWN,
166 /* 1 */ F_UNKNOWN,
167 /* 2 */ F_UNKNOWN,
168 /* 3 */ F_UNKNOWN,
169 /* 4 486 (U5) */ {
170 /* 0 */ N_UNKNOWN,
171 /* 1 */ "486DX U5D",
172 /* 2 */ "486SX U5S",
173 /* 3 */ N_UNKNOWN,
174 /* 4 */ N_UNKNOWN,
175 /* 5 */ N_UNKNOWN,
176 /* 6 */ N_UNKNOWN,
177 /* 7 */ N_UNKNOWN,
178 /* 8 */ N_UNKNOWN,
179 /* 9 */ N_UNKNOWN,
180 /* A */ N_UNKNOWN,
181 /* B */ N_UNKNOWN,
182 /* C */ N_UNKNOWN,
183 /* D */ N_UNKNOWN,
184 /* E */ N_UNKNOWN,
185 /* F */ N_UNKNOWN
187 /* 5 */ F_UNKNOWN,
188 /* 6 */ F_UNKNOWN,
189 /* 7 */ F_UNKNOWN,
190 /* 8 */ F_UNKNOWN,
191 /* 9 */ F_UNKNOWN,
192 /* A */ F_UNKNOWN,
193 /* B */ F_UNKNOWN,
194 /* C */ F_UNKNOWN,
195 /* D */ F_UNKNOWN,
196 /* E */ F_UNKNOWN,
197 /* F */ F_UNKNOWN
199 /* Advanced Micro Devices, "AuthenticAMD" (very rare: "AMD ISBETTER") */ {
200 /* 0 */ F_UNKNOWN,
201 /* 1 */ F_UNKNOWN,
202 /* 2 */ F_UNKNOWN,
203 /* 3 */ F_UNKNOWN,
204 /* 4 486/5x86 */ {
205 /* 0 */ N_UNKNOWN,
206 /* 1 */ N_UNKNOWN,
207 /* 2 */ N_UNKNOWN,
208 /* 3 */ "486DX2",
209 /* 4 */ N_UNKNOWN,
210 /* 5 */ N_UNKNOWN,
211 /* 6 */ N_UNKNOWN,
212 /* 7 */ "486DX2/write-back",
213 /* 8 */ "486DX4/5x86",
214 /* 9 */ "486DX4/write-back",
215 /* A */ N_UNKNOWN,
216 /* B */ N_UNKNOWN,
217 /* C */ N_UNKNOWN,
218 /* D */ N_UNKNOWN,
219 /* E */ "5x86",
220 /* F */ "5x86/write-back"
222 /* 5 K5/K6 */ {
223 /* 0 */ "K5 SSA5 (PR75,PR90,PR100)",
224 /* 1 */ "K5 5k86 (PR120,PR133)",
225 /* 2 */ "K5 5k86 (PR166)",
226 /* 3 */ "K5 5k86 (PR200)",
227 /* 4 */ N_UNKNOWN,
228 /* 5 */ N_UNKNOWN,
229 /* 6 */ "K6",
230 /* 7 */ "K6 Little Foot",
231 /* 8 */ "K6-2",
232 /* 9 */ "K6-III Chomper",
233 /* A */ N_UNKNOWN,
234 /* B */ N_UNKNOWN,
235 /* C */ N_UNKNOWN,
236 /* D */ "K6-2+/K6-III+ Sharptooth",
237 /* E */ N_UNKNOWN,
238 /* F */ N_UNKNOWN
240 /* 6 K7 */ {
241 /* 0 */ N_UNKNOWN, /* Argon? */
242 /* 1 */ "Athlon K7",
243 /* 2 */ "Athlon K75 Pluto,Orion",
244 /* 3 */ "Duron Spitfire",
245 /* 4 */ "Athlon Thunderbird",
246 /* 5 */ N_UNKNOWN,
247 /* 6 */ "Duron/Athlon 4/MP/XP Palomino",
248 /* 7 */ "Duron Morgan,Camaro",
249 /* 8 */ "Sempron/Athlon MP/XP Thoroughbred; Duron Applebred",
250 /* 9 */ N_UNKNOWN,
251 /* A */ "Sempron/Athlon MP/XP/XP-M Barton,Thorton",
252 /* B */ N_UNKNOWN,
253 /* E */ N_UNKNOWN,
254 /* C */ N_UNKNOWN,
255 /* D */ N_UNKNOWN,
256 /* F */ N_UNKNOWN
258 /* 7 */ F_UNKNOWN,
259 /* 8 */ F_UNKNOWN,
260 /* 9 */ F_UNKNOWN,
261 /* A */ F_UNKNOWN,
262 /* B */ F_UNKNOWN,
263 /* C */ F_UNKNOWN,
264 /* D */ F_UNKNOWN,
265 /* E */ F_UNKNOWN,
266 /* F K8 */ {
267 /* 0 */ N_UNKNOWN,
268 /* 1 */ "Opteron Egypt,Italy,Denmark",
269 /* 2 */ N_UNKNOWN,
270 /* 3 */ "Athlon 64 X2 Manchester,Toledo",
271 /* 4 */ "Athlon 64 Clawhammer; Athlon 64 X2 Toledo; Turion Newark,Lancaster",
272 /* 5 */ "Athlon 64 FX/Opteron Sledgehammer,Athens,Troy,Venus",
273 /* 6 */ N_UNKNOWN,
274 /* 7 */ "Athlon 64/FX Sledgehammer,San Diego,Venice",
275 /* 8 */ "Mobile Athlon 64 Newcastle; Mobile Sempron Dublin",
276 /* 9 */ N_UNKNOWN,
277 /* A */ N_UNKNOWN,
278 /* B */ "Athlon 64 Newcastle; Athlon 64 X2 Manchester",
279 /* E */ N_UNKNOWN,
280 /* C */ "Athlon 64 Newcastle,Odesssa,Oakville,Venice; Sempron Palermo,Paris,Dublin",
281 /* D */ N_UNKNOWN,
282 /* F */ "Athlon 64 Newcastle,Winchester,San Diego,Venice; Sempron Palermo"
286 /* Cyrix Corp./VIA Inc., "CyrixInstead" */ {
287 /* 0 */ F_UNKNOWN,
288 /* 1 */ F_UNKNOWN,
289 /* 2 */ F_UNKNOWN,
290 /* 3 */ F_UNKNOWN,
291 /* 4 5x86 */ {
292 /* 0 */ N_UNKNOWN,
293 /* 1 */ N_UNKNOWN,
294 /* 2 */ N_UNKNOWN,
295 /* 3 */ N_UNKNOWN,
296 /* 4 */ "MediaGX",
297 /* 5 */ N_UNKNOWN,
298 /* 6 */ N_UNKNOWN,
299 /* 7 */ N_UNKNOWN,
300 /* 8 */ N_UNKNOWN,
301 /* 9 */ "5x86", /* CPUID maybe only on newer chips */
302 /* A */ N_UNKNOWN,
303 /* B */ N_UNKNOWN,
304 /* E */ N_UNKNOWN,
305 /* C */ N_UNKNOWN,
306 /* D */ N_UNKNOWN,
307 /* F */ N_UNKNOWN
309 /* 5 M1 */ {
310 /* 0 */ "M1 test-sample", /*?*/
311 /* 1 */ N_UNKNOWN,
312 /* 2 */ "6x86 M1",
313 /* 3 */ "6x86L M1",
314 /* 4 */ "GXm",
315 /* 5 */ N_UNKNOWN,
316 /* 6 */ N_UNKNOWN,
317 /* 7 */ N_UNKNOWN,
318 /* 8 */ N_UNKNOWN,
319 /* 9 */ N_UNKNOWN,
320 /* A */ N_UNKNOWN,
321 /* B */ N_UNKNOWN,
322 /* E */ N_UNKNOWN,
323 /* C */ N_UNKNOWN,
324 /* D */ N_UNKNOWN,
325 /* F */ N_UNKNOWN
327 /* 6 M2 */ {
328 /* 0 */ "6x86MX M2/M-II",
329 /* 1 */ N_UNKNOWN,
330 /* 2 */ N_UNKNOWN,
331 /* 3 */ N_UNKNOWN,
332 /* 4 */ N_UNKNOWN,
333 /* 5 */ "Cyrix III Joshua (M2 core)",
334 /* 6 */ N_UNKNOWN,
335 /* 7 */ N_UNKNOWN,
336 /* 8 */ N_UNKNOWN,
337 /* 9 */ N_UNKNOWN,
338 /* A */ N_UNKNOWN,
339 /* B */ N_UNKNOWN,
340 /* E */ N_UNKNOWN,
341 /* C */ N_UNKNOWN,
342 /* D */ N_UNKNOWN,
343 /* F */ N_UNKNOWN
345 /* 7 */ F_UNKNOWN,
346 /* 8 */ F_UNKNOWN,
347 /* 9 */ F_UNKNOWN,
348 /* A */ F_UNKNOWN,
349 /* B */ F_UNKNOWN,
350 /* C */ F_UNKNOWN,
351 /* D */ F_UNKNOWN,
352 /* E */ F_UNKNOWN,
353 /* F */ F_UNKNOWN
355 /* NexGen Inc., "NexGenDriven" */ {
356 /* 0 */ F_UNKNOWN,
357 /* 1 */ F_UNKNOWN,
358 /* 2 */ F_UNKNOWN,
359 /* 3 */ F_UNKNOWN,
360 /* 4 */ F_UNKNOWN,
361 /* 5 Nx586 */ {
362 /* 0 */ "Nx586/Nx586FPU", /* only newer ones support CPUID! */
363 /* 1 */ N_UNKNOWN,
364 /* 2 */ N_UNKNOWN,
365 /* 3 */ N_UNKNOWN,
366 /* 4 */ N_UNKNOWN,
367 /* 5 */ N_UNKNOWN,
368 /* 6 */ N_UNKNOWN,
369 /* 7 */ N_UNKNOWN,
370 /* 8 */ N_UNKNOWN,
371 /* 9 */ N_UNKNOWN,
372 /* A */ N_UNKNOWN,
373 /* B */ N_UNKNOWN,
374 /* E */ N_UNKNOWN,
375 /* C */ N_UNKNOWN,
376 /* D */ N_UNKNOWN,
377 /* F */ N_UNKNOWN
379 /* 6 */ F_UNKNOWN,
380 /* 7 */ F_UNKNOWN,
381 /* 8 */ F_UNKNOWN,
382 /* 9 */ F_UNKNOWN,
383 /* A */ F_UNKNOWN,
384 /* B */ F_UNKNOWN,
385 /* C */ F_UNKNOWN,
386 /* D */ F_UNKNOWN,
387 /* E */ F_UNKNOWN,
388 /* F */ F_UNKNOWN
390 /* IDT/Centaur/VIA, "CentaurHauls" */ {
391 /* 0 */ F_UNKNOWN,
392 /* 1 */ F_UNKNOWN,
393 /* 2 */ F_UNKNOWN,
394 /* 3 */ F_UNKNOWN,
395 /* 4 */ F_UNKNOWN,
396 /* 5 IDT C6 WinChip */ {
397 /* 0 */ N_UNKNOWN,
398 /* 1 */ N_UNKNOWN,
399 /* 2 */ N_UNKNOWN,
400 /* 3 */ N_UNKNOWN,
401 /* 4 */ "WinChip C6",
402 /* 5 */ N_UNKNOWN,
403 /* 6 */ "Samuel",
404 /* 7 */ N_UNKNOWN,
405 /* 8 */ "WinChip 2 C6+,W2,W2A,W2B",
406 /* 9 */ "WinChip 3 W3",
407 /* A */ "WinChip 4 W4A", /* XXX check */
408 /* B */ N_UNKNOWN,
409 /* E */ N_UNKNOWN,
410 /* C */ N_UNKNOWN,
411 /* D */ N_UNKNOWN,
412 /* F */ N_UNKNOWN
414 /* 6 VIA C3 */ {
415 /* 0 */ N_UNKNOWN,
416 /* 1 */ N_UNKNOWN,
417 /* 2 */ N_UNKNOWN,
418 /* 3 */ N_UNKNOWN,
419 /* 4 */ N_UNKNOWN,
420 /* 5 */ N_UNKNOWN,
421 /* 6 */ "Cyrix III Samuel (WinChip C5A core)",
422 /* 7 */ "C3 Samuel 2 (WinChip C5B core)/C3 Ezra",
423 /* 8 */ "C3 Ezra-T",
424 /* 9 */ "C3 Nehemiah",
425 /* A */ N_UNKNOWN,
426 /* B */ N_UNKNOWN,
427 /* E */ N_UNKNOWN,
428 /* C */ N_UNKNOWN,
429 /* D */ N_UNKNOWN,
430 /* F */ N_UNKNOWN
432 /* 7 */ F_UNKNOWN,
433 /* 8 */ F_UNKNOWN,
434 /* 9 */ F_UNKNOWN,
435 /* A */ F_UNKNOWN,
436 /* B */ F_UNKNOWN,
437 /* C */ F_UNKNOWN,
438 /* D */ F_UNKNOWN,
439 /* E */ F_UNKNOWN,
440 /* F */ F_UNKNOWN
442 /* Rise, "RiseRiseRise" */ {
443 /* 0 */ F_UNKNOWN,
444 /* 1 */ F_UNKNOWN,
445 /* 2 */ F_UNKNOWN,
446 /* 3 */ F_UNKNOWN,
447 /* 4 */ F_UNKNOWN,
448 /* 5 mP6 */ {
449 /* 0 */ "mP6 iDragon 6401,6441 Kirin",
450 /* 1 */ "mP6 iDragon 6510 Lynx",
451 /* 2 */ N_UNKNOWN,
452 /* 3 */ N_UNKNOWN,
453 /* 4 */ N_UNKNOWN,
454 /* 5 */ N_UNKNOWN,
455 /* 6 */ N_UNKNOWN,
456 /* 7 */ N_UNKNOWN,
457 /* 8 */ "mP6 iDragon II",
458 /* 9 */ "mP6 iDragon II (new)",
459 /* A */ N_UNKNOWN,
460 /* B */ N_UNKNOWN,
461 /* E */ N_UNKNOWN,
462 /* C */ N_UNKNOWN,
463 /* D */ N_UNKNOWN,
464 /* F */ N_UNKNOWN
466 /* 6 */ F_UNKNOWN,
467 /* 7 */ F_UNKNOWN,
468 /* 8 */ F_UNKNOWN,
469 /* 9 */ F_UNKNOWN,
470 /* A */ F_UNKNOWN,
471 /* B */ F_UNKNOWN,
472 /* C */ F_UNKNOWN,
473 /* D */ F_UNKNOWN,
474 /* E */ F_UNKNOWN,
475 /* F */ F_UNKNOWN
477 /* Transmeta, "GenuineTMx86" */ {
478 /* 0 */ F_UNKNOWN,
479 /* 1 */ F_UNKNOWN,
480 /* 2 */ F_UNKNOWN,
481 /* 3 */ F_UNKNOWN,
482 /* 4 */ F_UNKNOWN,
483 /* 5 Crusoe */ {
484 /* 0 */ N_UNKNOWN,
485 /* 1 */ N_UNKNOWN,
486 /* 2 */ N_UNKNOWN,
487 /* 3 */ N_UNKNOWN,
488 /* 4 */ "Crusoe TM3x00,TM5x00",
489 /* 5 */ N_UNKNOWN,
490 /* 6 */ N_UNKNOWN,
491 /* 7 */ N_UNKNOWN,
492 /* 8 */ N_UNKNOWN,
493 /* 9 */ N_UNKNOWN,
494 /* A */ N_UNKNOWN,
495 /* B */ N_UNKNOWN,
496 /* E */ N_UNKNOWN,
497 /* C */ N_UNKNOWN,
498 /* D */ N_UNKNOWN,
499 /* F */ N_UNKNOWN
501 /* 6 */ F_UNKNOWN,
502 /* 7 */ F_UNKNOWN,
503 /* 8 */ F_UNKNOWN,
504 /* 9 */ F_UNKNOWN,
505 /* A */ F_UNKNOWN,
506 /* B */ F_UNKNOWN,
507 /* C */ F_UNKNOWN,
508 /* D */ F_UNKNOWN,
509 /* E */ F_UNKNOWN,
510 /* F */ F_UNKNOWN
514 #undef N_UNKNOWNEXT
515 #undef N_UNKNOWN
516 #undef F_UNKNOWN
518 static const struct {
519 char string[13];
520 char name[48];
521 } cpuvendors[MAX_VENDORS] ={
522 {"GenuineIntel","Intel"},
523 {"UMC UMC UMC ","United Microelectronics Corporation"},
524 {"AuthenticAMD","Advanced Micro Devices"},
525 {"CyrixInstead","Cyrix/VIA"},
526 {"NexGenDriven","NexGen"},
527 {"CentaurHauls","IDT/Centaur/VIA"},
528 {"RiseRiseRise","Rise"},
529 {"GenuineTMx86","Transmeta"}
532 #endif /* MPLAYER_CPUTABLE_H */