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