forked from OSchip/llvm-project
Fill out X86 table, although we are missing lots of names for things. We now
properly detect my Xeon box though. llvm-svn: 88814
This commit is contained in:
parent
d90a9a04f3
commit
397235f11c
|
@ -124,52 +124,136 @@ std::string sys::getHostCPUName() {
|
|||
GetX86CpuIDAndInfo(0, &EAX, text.u+0, text.u+2, text.u+1);
|
||||
if (memcmp(text.c, "GenuineIntel", 12) == 0) {
|
||||
switch (Family) {
|
||||
case 3:
|
||||
return "i386";
|
||||
case 4:
|
||||
return "i486";
|
||||
case 5:
|
||||
switch (Model) {
|
||||
case 4: return "pentium-mmx";
|
||||
default: return "pentium";
|
||||
}
|
||||
case 6:
|
||||
switch (Model) {
|
||||
case 1: return "pentiumpro";
|
||||
case 3:
|
||||
case 5:
|
||||
case 6: return "pentium2";
|
||||
case 7:
|
||||
case 8:
|
||||
case 10:
|
||||
case 11: return "pentium3";
|
||||
case 9:
|
||||
case 13: return "pentium-m";
|
||||
case 14: return "yonah";
|
||||
case 15:
|
||||
case 22: // Celeron M 540
|
||||
return "core2";
|
||||
case 23: // 45nm: Penryn , Wolfdale, Yorkfield (XE)
|
||||
return "penryn";
|
||||
default: return "i686";
|
||||
}
|
||||
case 15: {
|
||||
switch (Model) {
|
||||
case 3:
|
||||
case 4:
|
||||
case 6: // same as 4, but 65nm
|
||||
return (Em64T) ? "nocona" : "prescott";
|
||||
case 26:
|
||||
return "corei7";
|
||||
case 28:
|
||||
return "atom";
|
||||
default:
|
||||
return (Em64T) ? "x86-64" : "pentium4";
|
||||
}
|
||||
case 3:
|
||||
return "i386";
|
||||
case 4:
|
||||
switch (Model) {
|
||||
case 0: // Intel486TM DX processors
|
||||
case 1: // Intel486TM DX processors
|
||||
case 2: // Intel486 SX processors
|
||||
case 3: // Intel487TM processors, IntelDX2 OverDrive® processors,
|
||||
// IntelDX2TM processors
|
||||
case 4: // Intel486 SL processor
|
||||
case 5: // IntelSX2TM processors
|
||||
case 7: // Write-Back Enhanced IntelDX2 processors
|
||||
case 8: // IntelDX4 OverDrive processors, IntelDX4TM processors
|
||||
default: return "i486";
|
||||
}
|
||||
|
||||
case 5:
|
||||
switch (Model) {
|
||||
case 1: // Pentium OverDrive processor for Pentium processor (60, 66),
|
||||
// Pentium® processors (60, 66)
|
||||
case 2: // Pentium OverDrive processor for Pentium processor (75, 90,
|
||||
// 100, 120, 133), Pentium processors (75, 90, 100, 120, 133,
|
||||
// 150, 166, 200)
|
||||
case 3: // Pentium OverDrive processors for Intel486 processor-based
|
||||
// systems
|
||||
return "pentium";
|
||||
|
||||
case 4: // Pentium OverDrive processor with MMXTM technology for Pentium
|
||||
// processor (75, 90, 100, 120, 133), Pentium processor with
|
||||
// MMXTM technology (166, 200)
|
||||
return "pentium-mmx";
|
||||
|
||||
default: return "pentium";
|
||||
}
|
||||
case 6:
|
||||
switch (Model) {
|
||||
case 1: // Pentium Pro processor
|
||||
return "pentiumpro";
|
||||
|
||||
case 3: // Intel Pentium II OverDrive processor, Pentium II processor,
|
||||
// model 03
|
||||
case 5: // Pentium II processor, model 05, Pentium II Xeon processor,
|
||||
// model 05, and Intel® Celeron® processor, model 05
|
||||
case 6: // Celeron processor, model 06
|
||||
return "pentium2";
|
||||
|
||||
case 7: // Pentium III processor, model 07, and Pentium III Xeon
|
||||
// processor, model 07
|
||||
case 8: // Pentium III processor, model 08, Pentium III Xeon processor,
|
||||
// model 08, and Celeron processor, model 08
|
||||
case 10: // Pentium III Xeon processor, model 0Ah
|
||||
case 11: // Pentium III processor, model 0Bh
|
||||
return "pentium3";
|
||||
|
||||
case 9: // Intel Pentium M processor, Intel Celeron M processor model 09.
|
||||
case 13: // Intel Pentium M processor, Intel Celeron M processor, model
|
||||
// 0Dh. All processors are manufactured using the 90 nm process.
|
||||
return "pentium-m";
|
||||
|
||||
case 14: // Intel CoreTM Duo processor, Intel CoreTM Solo processor, model
|
||||
// 0Eh. All processors are manufactured using the 65 nm process.
|
||||
return "yonah";
|
||||
|
||||
case 15: // Intel CoreTM2 Duo processor, Intel CoreTM2 Duo mobile
|
||||
// processor, Intel CoreTM2 Quad processor, Intel CoreTM2 Quad
|
||||
// mobile processor, Intel CoreTM2 Extreme processor, Intel
|
||||
// Pentium Dual-Core processor, Intel Xeon processor, model
|
||||
// 0Fh. All processors are manufactured using the 65 nm process.
|
||||
case 22: // Intel Celeron processor model 16h. All processors are
|
||||
// manufactured using the 65 nm process
|
||||
return "core2";
|
||||
|
||||
case 21: // Intel EP80579 Integrated Processor and Intel EP80579
|
||||
// Integrated Processor with Intel QuickAssist Technology
|
||||
return "i686"; // FIXME: ???
|
||||
|
||||
case 23: // Intel CoreTM2 Extreme processor, Intel Xeon processor, model
|
||||
// 17h. All processors are manufactured using the 45 nm process.
|
||||
//
|
||||
// 45nm: Penryn , Wolfdale, Yorkfield (XE)
|
||||
return "penryn";
|
||||
|
||||
case 26: // Intel Core i7 processor and Intel Xeon processor. All
|
||||
// processors are manufactured using the 45 nm process.
|
||||
case 29: // Intel Xeon processor MP. All processors are manufactured using
|
||||
// the 45 nm process.
|
||||
return "corei7";
|
||||
|
||||
case 28: // Intel Atom processor. All processors are manufactured using
|
||||
// the 45 nm process
|
||||
return "atom";
|
||||
|
||||
default: return "i686";
|
||||
}
|
||||
case 15: {
|
||||
switch (Model) {
|
||||
case 0: // Pentium 4 processor, Intel Xeon processor. All processors are
|
||||
// model 00h and manufactured using the 0.18 micron process.
|
||||
case 1: // Pentium 4 processor, Intel Xeon processor, Intel Xeon
|
||||
// processor MP, and Intel Celeron processor. All processors are
|
||||
// model 01h and manufactured using the 0.18 micron process.
|
||||
case 2: // Pentium 4 processor, Mobile Intel Pentium 4 processor – M,
|
||||
// Intel Xeon processor, Intel Xeon processor MP, Intel Celeron
|
||||
// processor, and Mobile Intel Celeron processor. All processors
|
||||
// are model 02h and manufactured using the 0.13 micron process.
|
||||
return (Em64T) ? "x86-64" : "pentium4";
|
||||
|
||||
case 3: // Pentium 4 processor, Intel Xeon processor, Intel Celeron D
|
||||
// processor. All processors are model 03h and manufactured using
|
||||
// the 90 nm process.
|
||||
case 4: // Pentium 4 processor, Pentium 4 processor Extreme Edition,
|
||||
// Pentium D processor, Intel Xeon processor, Intel Xeon
|
||||
// processor MP, Intel Celeron D processor. All processors are
|
||||
// model 04h and manufactured using the 90 nm process.
|
||||
case 6: // Pentium 4 processor, Pentium D processor, Pentium processor
|
||||
// Extreme Edition, Intel Xeon processor, Intel Xeon processor
|
||||
// MP, Intel Celeron D processor. All processors are model 06h
|
||||
// and manufactured using the 65 nm process.
|
||||
return (Em64T) ? "nocona" : "prescott";
|
||||
|
||||
// FIXME: Are these bogus?
|
||||
case 26: return "corei7";
|
||||
case 28: return "atom";
|
||||
|
||||
default:
|
||||
return (Em64T) ? "x86-64" : "pentium4";
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
return "generic";
|
||||
return "";
|
||||
}
|
||||
} else if (memcmp(text.c, "AuthenticAMD", 12) == 0) {
|
||||
// FIXME: this poorly matches the generated SubtargetFeatureKV table. There
|
||||
|
@ -209,12 +293,10 @@ std::string sys::getHostCPUName() {
|
|||
case 16:
|
||||
return "amdfam10";
|
||||
default:
|
||||
return "generic";
|
||||
return "";
|
||||
}
|
||||
} else {
|
||||
return "generic";
|
||||
}
|
||||
#else
|
||||
return "generic";
|
||||
#endif
|
||||
|
||||
return "";
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue