[X86] Add getHostCPUName support for cannonlake.
This adds an explicit model number check and fallback path to the unknown family 6 detection.
llvm-svn: 318270
diff --git a/llvm/lib/Support/Host.cpp b/llvm/lib/Support/Host.cpp
index 63a2117..a7f1133 100644
--- a/llvm/lib/Support/Host.cpp
+++ b/llvm/lib/Support/Host.cpp
@@ -637,6 +637,12 @@
*Subtype = X86::INTEL_COREI7_SKYLAKE_AVX512; // "skylake-avx512"
break;
+ // Cannonlake:
+ case 0x66:
+ *Type = X86::INTEL_COREI7;
+ *Subtype = X86::INTEL_COREI7_CANNONLAKE; // "cannonlake"
+ break;
+
case 0x1c: // Most 45 nm Intel Atom processors
case 0x26: // 45 nm Atom Lincroft
case 0x27: // 32 nm Atom Medfield
@@ -667,15 +673,23 @@
break;
default: // Unknown family 6 CPU, try to guess.
- if (Features & (1 << FEATURE_AVX512F)) {
- if (Features & (1 << FEATURE_AVX512VL)) {
- *Type = X86::INTEL_COREI7;
- *Subtype = X86::INTEL_COREI7_SKYLAKE_AVX512;
- } else {
- *Type = X86::INTEL_KNL; // knl
- }
+ if (Features & (1 << FEATURE_AVX512VBMI)) {
+ *Type = X86::INTEL_COREI7;
+ *Subtype = X86::INTEL_COREI7_CANNONLAKE;
break;
}
+
+ if (Features & (1 << FEATURE_AVX512VL)) {
+ *Type = X86::INTEL_COREI7;
+ *Subtype = X86::INTEL_COREI7_SKYLAKE_AVX512;
+ break;
+ }
+
+ if (Features & (1 << FEATURE_AVX512ER)) {
+ *Type = X86::INTEL_KNL; // knl
+ break;
+ }
+
if (Features2 & (1 << (FEATURE_CLFLUSHOPT - 32))) {
if (Features2 & (1 << (FEATURE_SHA - 32))) {
*Type = X86::INTEL_GOLDMONT;