From: Craig Topper Date: Fri, 13 Oct 2017 18:10:17 +0000 (+0000) Subject: [X86] Add initial skeleton support for knm cpu X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b1021f33e0bfd10c8e5ff9cbc01ac489f66bf5a6;p=llvm [X86] Add initial skeleton support for knm cpu This adds Intel's Knights Mill CPU to valid CPU names for the backend. For now its an alias of "knl", but ultimately we need to support AVX5124FMAPS and AVX5124VNNIW instruction sets for it. Differential Revision: https://reviews.llvm.org/D38811 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315722 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Support/Host.cpp b/lib/Support/Host.cpp index e5bd7e0e44f..b1d5b44ebd0 100644 --- a/lib/Support/Host.cpp +++ b/lib/Support/Host.cpp @@ -339,6 +339,7 @@ enum ProcessorTypes { AMD_BTVER1, AMD_BTVER2, AMDFAM17H, + INTEL_KNM, // Entries below this are not in libgcc/compiler-rt. INTEL_i386, INTEL_i486, @@ -759,6 +760,9 @@ getIntelProcessorTypeAndSubtype(unsigned Family, unsigned Model, case 0x57: *Type = INTEL_KNL; // knl break; + case 0x85: + *Type = INTEL_KNM; // knm + break; default: // Unknown family 6 CPU, try to guess. if (Features & (1 << FEATURE_AVX512F)) { @@ -1167,6 +1171,8 @@ StringRef sys::getHostCPUName() { return "goldmont"; case INTEL_KNL: return "knl"; + case INTEL_KNM: + return "knm"; case INTEL_X86_64: return "x86-64"; case INTEL_NOCONA: diff --git a/lib/Target/X86/X86.td b/lib/Target/X86/X86.td index dbe3620ee8f..07e78adf928 100644 --- a/lib/Target/X86/X86.td +++ b/lib/Target/X86/X86.td @@ -610,10 +610,7 @@ class SkylakeClientProc : ProcModel; def : SkylakeClientProc<"skylake">; -// FIXME: define KNL model -class KnightsLandingProc : ProcModel : ProcModel; + +// FIXME: define KNL model +class KnightsLandingProc : ProcModel; def : KnightsLandingProc<"knl">; +class KnightsMillProc : ProcModel; +def : KnightsMillProc<"knm">; // TODO Add AVX5124FMAPS/AVX5124VNNIW features + def SKXFeatures : ProcessorFeatures&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=lakemont 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=knl 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty +; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=knm 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=k8 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=opteron 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty ; RUN: llc < %s -o /dev/null -mtriple=x86_64-unknown-unknown -mcpu=athlon64 2>&1 | FileCheck %s --check-prefix=CHECK-NO-ERROR --allow-empty