diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index 02c5935..c477272 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -1570,7 +1570,7 @@
 // most of the implementation can be shared.
 class X86TargetInfo : public TargetInfo {
   enum X86SSEEnum {
-    NoSSE, SSE1, SSE2, SSE3, SSSE3, SSE41, SSE42, AVX, AVX2, AVX512
+    NoSSE, SSE1, SSE2, SSE3, SSSE3, SSE41, SSE42, AVX, AVX2
   } SSELevel;
   enum MMX3DNowEnum {
     NoMMX3DNow, MMX, AMD3DNow, AMD3DNowAthlon
@@ -1675,10 +1675,6 @@
     CK_CoreAVX2,
     //@}
 
-    /// \name Knights Landing
-    /// Knights Landing processor.
-    CK_KNL,
-
     /// \name K6
     /// K6 architecture processors.
     //@{
@@ -1822,7 +1818,6 @@
       .Case("corei7-avx", CK_Corei7AVX)
       .Case("core-avx-i", CK_CoreAVXi)
       .Case("core-avx2", CK_CoreAVX2)
-      .Case("knl", CK_KNL)
       .Case("k6", CK_K6)
       .Case("k6-2", CK_K6_2)
       .Case("k6-3", CK_K6_3)
@@ -1897,7 +1892,6 @@
     case CK_Corei7AVX:
     case CK_CoreAVXi:
     case CK_CoreAVX2:
-    case CK_KNL:
     case CK_Athlon64:
     case CK_Athlon64SSE3:
     case CK_AthlonFX:
@@ -1947,7 +1941,6 @@
   Features["pclmul"] = false;
   Features["avx"] = false;
   Features["avx2"] = false;
-  Features["avx512"] = false;
   Features["lzcnt"] = false;
   Features["rdrand"] = false;
   Features["bmi"] = false;
@@ -2031,18 +2024,6 @@
     setFeatureEnabled(Features, "rtm", true);
     setFeatureEnabled(Features, "fma", true);
     break;
-  case CK_KNL:
-    setFeatureEnabled(Features, "avx512", true);
-    setFeatureEnabled(Features, "aes", true);
-    setFeatureEnabled(Features, "pclmul", true);
-    setFeatureEnabled(Features, "lzcnt", true);
-    setFeatureEnabled(Features, "rdrnd", true);
-    setFeatureEnabled(Features, "f16c", true);
-    setFeatureEnabled(Features, "bmi", true);
-    setFeatureEnabled(Features, "bmi2", true);
-    setFeatureEnabled(Features, "rtm", true);
-    setFeatureEnabled(Features, "fma", true);
-    break;
   case CK_K6:
   case CK_WinChipC6:
     setFeatureEnabled(Features, "mmx", true);
@@ -2168,11 +2149,6 @@
       Features["mmx"] = Features["sse"] = Features["sse2"] = Features["sse3"] =
         Features["ssse3"] = Features["sse41"] = Features["sse42"] =
         Features["popcnt"] = Features["avx"] = Features["avx2"] = true;
-    else if (Name == "avx512")
-      Features["mmx"] = Features["sse"] = Features["sse2"] = Features["sse3"] =
-        Features["ssse3"] = Features["sse41"] = Features["sse42"] =
-        Features["popcnt"] = Features["avx"] = Features["avx2"] =
-        Features["avx512"] = true;
     else if (Name == "fma")
       Features["mmx"] = Features["sse"] = Features["sse2"] = Features["sse3"] =
         Features["ssse3"] = Features["sse41"] = Features["sse42"] =
@@ -2215,29 +2191,28 @@
       Features["sse"] = Features["sse2"] = Features["sse3"] =
         Features["ssse3"] = Features["sse41"] = Features["sse42"] =
         Features["sse4a"] = Features["avx"] = Features["avx2"] =
-        Features["avx512"] = Features["fma"] = Features["fma4"] =
-        Features["aes"] = Features["pclmul"] = Features["xop"] = false;
+        Features["fma"] = Features["fma4"] = Features["aes"] =
+        Features["pclmul"] = Features["xop"] = false;
     else if (Name == "sse2")
       Features["sse2"] = Features["sse3"] = Features["ssse3"] =
         Features["sse41"] = Features["sse42"] = Features["sse4a"] =
-        Features["avx"] = Features["avx2"] = Features["avx512"] =
-        Features["fma"] = Features["fma4"] = Features["aes"] =
-        Features["pclmul"] = Features["xop"] = false;
+        Features["avx"] = Features["avx2"] = Features["fma"] =
+        Features["fma4"] = Features["aes"] = Features["pclmul"] =
+        Features["xop"] = false;
     else if (Name == "sse3")
       Features["sse3"] = Features["ssse3"] = Features["sse41"] =
         Features["sse42"] = Features["sse4a"] = Features["avx"] =
-        Features["avx2"] = Features["avx512"] = Features["fma"] =
-        Features["fma4"] = Features["xop"] = false;
+        Features["avx2"] = Features["fma"] = Features["fma4"] =
+        Features["xop"] = false;
     else if (Name == "ssse3")
       Features["ssse3"] = Features["sse41"] = Features["sse42"] =
-        Features["avx"] = Features["avx2"] = Features["avx512"] =
-        Features["fma"] = false;
+        Features["avx"] = Features["avx2"] = Features["fma"] = false;
     else if (Name == "sse4" || Name == "sse4.1")
       Features["sse41"] = Features["sse42"] = Features["avx"] =
-        Features["avx2"] = Features["avx512"] = Features["fma"] = false;
+        Features["avx2"] = Features["fma"] = false;
     else if (Name == "sse4.2")
       Features["sse42"] = Features["avx"] = Features["avx2"] =
-        Features["avx512"] = Features["fma"] = false;
+        Features["fma"] = false;
     else if (Name == "3dnow")
       Features["3dnow"] = Features["3dnowa"] = false;
     else if (Name == "3dnowa")
@@ -2247,12 +2222,10 @@
     else if (Name == "pclmul")
       Features["pclmul"] = false;
     else if (Name == "avx")
-      Features["avx"] = Features["avx2"] = Features["avx512"] =
-        Features["fma"] = Features["fma4"] = Features["xop"] = false;
+      Features["avx"] = Features["avx2"] = Features["fma"] =
+        Features["fma4"] = Features["xop"] = false;
     else if (Name == "avx2")
-      Features["avx2"] = Features["avx512"] = false;
-    else if (Name == "avx512")
-      Features["avx512"] = false;
+      Features["avx2"] = false;
     else if (Name == "fma")
       Features["fma"] = false;
     else if (Name == "sse4a")
@@ -2372,7 +2345,6 @@
 
     assert(Features[i][0] == '+' && "Invalid target feature!");
     X86SSEEnum Level = llvm::StringSwitch<X86SSEEnum>(Feature)
-      .Case("avx512", AVX512)
       .Case("avx2", AVX2)
       .Case("avx", AVX)
       .Case("sse42", SSE42)
@@ -2483,9 +2455,6 @@
   case CK_CoreAVX2:
     defineCPUMacros(Builder, "corei7");
     break;
-  case CK_KNL:
-    defineCPUMacros(Builder, "knl");
-    break;
   case CK_K6_2:
     Builder.defineMacro("__k6_2__");
     Builder.defineMacro("__tune_k6_2__");
@@ -2599,8 +2568,6 @@
 
   // Each case falls through to the previous one here.
   switch (SSELevel) {
-  case AVX512:
-    Builder.defineMacro("__AVX512__");
   case AVX2:
     Builder.defineMacro("__AVX2__");
   case AVX:
@@ -2625,7 +2592,6 @@
 
   if (Opts.MicrosoftExt && getTriple().getArch() == llvm::Triple::x86) {
     switch (SSELevel) {
-    case AVX512:
     case AVX2:
     case AVX:
     case SSE42:
@@ -2669,7 +2635,6 @@
       .Case("aes", HasAES)
       .Case("avx", SSELevel >= AVX)
       .Case("avx2", SSELevel >= AVX2)
-      .Case("avx512", SSELevel >= AVX512)
       .Case("bmi", HasBMI)
       .Case("bmi2", HasBMI2)
       .Case("fma", HasFMA)
