break;
// Skylake:
- case 0x4e: // Skylake mobile
- case 0x5e: // Skylake desktop
- case 0x8e: // Kaby Lake mobile
- case 0x9e: // Kaby Lake desktop
+ case 0x4e: // Skylake mobile
+ case 0x5e: // Skylake desktop
+ case 0x8e: // Kaby Lake mobile
+ case 0x9e: // Kaby Lake desktop
*Type = X86::INTEL_COREI7; // "skylake"
*Subtype = X86::INTEL_COREI7_SKYLAKE;
break;
// Skylake Xeon:
case 0x55:
*Type = X86::INTEL_COREI7;
- *Subtype = X86::INTEL_COREI7_SKYLAKE_AVX512; // "skylake-avx512"
+ if (Features2 & (1 << (X86::FEATURE_AVX512VNNI - 32)))
+ *Subtype = X86::INTEL_COREI7_CASCADELAKE; // "cascadelake"
+ else
+ *Subtype = X86::INTEL_COREI7_SKYLAKE_AVX512; // "skylake-avx512"
break;
// Cannonlake:
case 0x86:
*Type = X86::INTEL_TREMONT;
break;
+
case 0x57:
*Type = X86::INTEL_KNL; // knl
break;
+
case 0x85:
*Type = X86::INTEL_KNM; // knm
break;