mirror of
https://github.com/google/cpu_features.git
synced 2025-04-27 15:12:30 +02:00
Add support for detecting Intel CascadeLake CPUs (#271)
Should close https://github.com/google/cpu_features/issues/260
This commit is contained in:
parent
cee2648cf0
commit
b69591add3
@ -139,6 +139,7 @@ typedef enum {
|
||||
INTEL_HSW, // HASWELL
|
||||
INTEL_BDW, // BROADWELL
|
||||
INTEL_SKL, // SKYLAKE
|
||||
INTEL_CCL, // CASCADELAKE
|
||||
INTEL_ATOM_GMT, // GOLDMONT
|
||||
INTEL_ATOM_GMT_PLUS, // GOLDMONT+
|
||||
INTEL_ATOM_TMT, // TREMONT
|
||||
|
@ -514,10 +514,15 @@ X86Microarchitecture GetX86Microarchitecture(const X86Info* info) {
|
||||
// https://en.wikipedia.org/wiki/Broadwell_(microarchitecture)
|
||||
return INTEL_BDW;
|
||||
case CPUID(0x06, 0x4E):
|
||||
case CPUID(0x06, 0x55):
|
||||
case CPUID(0x06, 0x5E):
|
||||
// https://en.wikipedia.org/wiki/Skylake_(microarchitecture)
|
||||
return INTEL_SKL;
|
||||
case CPUID(0x06, 0x55):
|
||||
if (info->stepping >= 6 && info->stepping <= 7) {
|
||||
// https://en.wikipedia.org/wiki/Cascade_Lake_(microprocessor)
|
||||
return INTEL_CCL;
|
||||
}
|
||||
return INTEL_SKL;
|
||||
case CPUID(0x06, 0x66):
|
||||
// https://en.wikipedia.org/wiki/Cannon_Lake_(microarchitecture)
|
||||
return INTEL_CNL;
|
||||
@ -1911,6 +1916,7 @@ CacheInfo GetX86CacheInfo(void) {
|
||||
LINE(INTEL_HSW) \
|
||||
LINE(INTEL_BDW) \
|
||||
LINE(INTEL_SKL) \
|
||||
LINE(INTEL_CCL) \
|
||||
LINE(INTEL_ATOM_GMT) \
|
||||
LINE(INTEL_ATOM_GMT_PLUS) \
|
||||
LINE(INTEL_ATOM_TMT) \
|
||||
|
@ -219,6 +219,34 @@ TEST_F(CpuidX86Test, SkyLake) {
|
||||
EXPECT_EQ(GetX86Microarchitecture(&info), X86Microarchitecture::INTEL_SKL);
|
||||
}
|
||||
|
||||
// http://users.atw.hu/instlatx64/GenuineIntel/GenuineIntel0050654_SkylakeXeon_CPUID8.txt
|
||||
TEST_F(CpuidX86Test, SkyLakeXeon) {
|
||||
cpu().SetLeaves({
|
||||
{{0x00000000, 0}, Leaf{0x00000016, 0x756E6547, 0x6C65746E, 0x49656E69}},
|
||||
{{0x00000001, 0}, Leaf{0x00050654, 0x00100800, 0x7FFEFBFF, 0xBFEBFBFF}}
|
||||
});
|
||||
const auto info = GetX86Info();
|
||||
EXPECT_STREQ(info.vendor, CPU_FEATURES_VENDOR_GENUINE_INTEL);
|
||||
EXPECT_EQ(info.family, 0x06);
|
||||
EXPECT_EQ(info.model, 0x055);
|
||||
EXPECT_EQ(info.stepping, 0x04);
|
||||
EXPECT_EQ(GetX86Microarchitecture(&info), X86Microarchitecture::INTEL_SKL);
|
||||
}
|
||||
|
||||
// http://users.atw.hu/instlatx64/GenuineIntel/GenuineIntel0050657_CascadeLakeXeon_CPUID.txt
|
||||
TEST_F(CpuidX86Test, CascadeLake) {
|
||||
cpu().SetLeaves({
|
||||
{{0x00000000, 0}, Leaf{0x00000016, 0x756E6547, 0x6C65746E, 0x49656E69}},
|
||||
{{0x00000001, 0}, Leaf{0x00050657, 0x00400800, 0x7FFEFBFF, 0xBFEBFBFF}}
|
||||
});
|
||||
const auto info = GetX86Info();
|
||||
EXPECT_STREQ(info.vendor, CPU_FEATURES_VENDOR_GENUINE_INTEL);
|
||||
EXPECT_EQ(info.family, 0x06);
|
||||
EXPECT_EQ(info.model, 0x055);
|
||||
EXPECT_EQ(info.stepping, 0x07);
|
||||
EXPECT_EQ(GetX86Microarchitecture(&info), X86Microarchitecture::INTEL_CCL);
|
||||
}
|
||||
|
||||
TEST_F(CpuidX86Test, Branding) {
|
||||
cpu().SetLeaves({
|
||||
{{0x00000000, 0}, Leaf{0x00000016, 0x756E6547, 0x6C65746E, 0x49656E69}},
|
||||
|
Loading…
x
Reference in New Issue
Block a user