]> granicus.if.org Git - clang/commitdiff
Pull X86 "CPUKind" checking into .cpp file. [NFC]
authorErich Keane <erich.keane@intel.com>
Mon, 23 Oct 2017 16:20:15 +0000 (16:20 +0000)
committerErich Keane <erich.keane@intel.com>
Mon, 23 Oct 2017 16:20:15 +0000 (16:20 +0000)
Preparing to do a refactor of CPU/feature checking, this
patch pulls the one CPU implementation from the .h file
to the .cpp file.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@316338 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/Targets/X86.cpp
lib/Basic/Targets/X86.h

index 6eee2facda2dff93d56cd52ac042ea9774721954..644cf467b002ae5613521e54a381ff495cc60217 100644 (file)
@@ -1522,6 +1522,78 @@ std::string X86TargetInfo::convertConstraint(const char *&Constraint) const {
   }
 }
 
+bool X86TargetInfo::checkCPUKind(CPUKind Kind) const {
+  // Perform any per-CPU checks necessary to determine if this CPU is
+  // acceptable.
+  // FIXME: This results in terrible diagnostics. Clang just says the CPU is
+  // invalid without explaining *why*.
+  switch (Kind) {
+  case CK_Generic:
+    // No processor selected!
+    return false;
+
+  case CK_i386:
+  case CK_i486:
+  case CK_WinChipC6:
+  case CK_WinChip2:
+  case CK_C3:
+  case CK_i586:
+  case CK_Pentium:
+  case CK_PentiumMMX:
+  case CK_i686:
+  case CK_PentiumPro:
+  case CK_Pentium2:
+  case CK_Pentium3:
+  case CK_PentiumM:
+  case CK_Yonah:
+  case CK_C3_2:
+  case CK_Pentium4:
+  case CK_Lakemont:
+  case CK_Prescott:
+  case CK_K6:
+  case CK_K6_2:
+  case CK_K6_3:
+  case CK_Athlon:
+  case CK_AthlonXP:
+  case CK_Geode:
+    // Only accept certain architectures when compiling in 32-bit mode.
+    if (getTriple().getArch() != llvm::Triple::x86)
+      return false;
+
+    LLVM_FALLTHROUGH;
+  case CK_Nocona:
+  case CK_Core2:
+  case CK_Penryn:
+  case CK_Bonnell:
+  case CK_Silvermont:
+  case CK_Goldmont:
+  case CK_Nehalem:
+  case CK_Westmere:
+  case CK_SandyBridge:
+  case CK_IvyBridge:
+  case CK_Haswell:
+  case CK_Broadwell:
+  case CK_SkylakeClient:
+  case CK_SkylakeServer:
+  case CK_Cannonlake:
+  case CK_KNL:
+  case CK_KNM:
+  case CK_K8:
+  case CK_K8SSE3:
+  case CK_AMDFAM10:
+  case CK_BTVER1:
+  case CK_BTVER2:
+  case CK_BDVER1:
+  case CK_BDVER2:
+  case CK_BDVER3:
+  case CK_BDVER4:
+  case CK_ZNVER1:
+  case CK_x86_64:
+    return true;
+  }
+  llvm_unreachable("Unhandled CPU kind");
+}
+
 X86TargetInfo::CPUKind X86TargetInfo::getCPUKind(StringRef CPU) const {
   return llvm::StringSwitch<CPUKind>(CPU)
       .Case("i386", CK_i386)
index 3b405dc762bf8d223a741e4853a96c845ac22a3d..321ce65bd174dbf556323f8245c7867af28aa0ca 100644 (file)
@@ -270,77 +270,7 @@ class LLVM_LIBRARY_VISIBILITY X86TargetInfo : public TargetInfo {
     //@}
   } CPU = CK_Generic;
 
-  bool checkCPUKind(CPUKind Kind) const {
-    // Perform any per-CPU checks necessary to determine if this CPU is
-    // acceptable.
-    // FIXME: This results in terrible diagnostics. Clang just says the CPU is
-    // invalid without explaining *why*.
-    switch (Kind) {
-    case CK_Generic:
-      // No processor selected!
-      return false;
-
-    case CK_i386:
-    case CK_i486:
-    case CK_WinChipC6:
-    case CK_WinChip2:
-    case CK_C3:
-    case CK_i586:
-    case CK_Pentium:
-    case CK_PentiumMMX:
-    case CK_i686:
-    case CK_PentiumPro:
-    case CK_Pentium2:
-    case CK_Pentium3:
-    case CK_PentiumM:
-    case CK_Yonah:
-    case CK_C3_2:
-    case CK_Pentium4:
-    case CK_Lakemont:
-    case CK_Prescott:
-    case CK_K6:
-    case CK_K6_2:
-    case CK_K6_3:
-    case CK_Athlon:
-    case CK_AthlonXP:
-    case CK_Geode:
-      // Only accept certain architectures when compiling in 32-bit mode.
-      if (getTriple().getArch() != llvm::Triple::x86)
-        return false;
-
-      LLVM_FALLTHROUGH;
-    case CK_Nocona:
-    case CK_Core2:
-    case CK_Penryn:
-    case CK_Bonnell:
-    case CK_Silvermont:
-    case CK_Goldmont:
-    case CK_Nehalem:
-    case CK_Westmere:
-    case CK_SandyBridge:
-    case CK_IvyBridge:
-    case CK_Haswell:
-    case CK_Broadwell:
-    case CK_SkylakeClient:
-    case CK_SkylakeServer:
-    case CK_Cannonlake:
-    case CK_KNL:
-    case CK_KNM:
-    case CK_K8:
-    case CK_K8SSE3:
-    case CK_AMDFAM10:
-    case CK_BTVER1:
-    case CK_BTVER2:
-    case CK_BDVER1:
-    case CK_BDVER2:
-    case CK_BDVER3:
-    case CK_BDVER4:
-    case CK_ZNVER1:
-    case CK_x86_64:
-      return true;
-    }
-    llvm_unreachable("Unhandled CPU kind");
-  }
+  bool checkCPUKind(CPUKind Kind) const;
 
   CPUKind getCPUKind(StringRef CPU) const;