Add support for krait cpu in llvm::sys::getHostCPUName()
authorKai Nacke <kai.nacke@redstar.de>
Fri, 20 Dec 2013 09:24:13 +0000 (09:24 +0000)
committerKai Nacke <kai.nacke@redstar.de>
Fri, 20 Dec 2013 09:24:13 +0000 (09:24 +0000)
Recently, support for krait cpu was added. This commit extends getHostCPUName()
to return krait as cpu for the APQ8064 (a Krait 300).

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

lib/Support/Host.cpp

index c5f9c8724808e1cacc30e8fb6fe88950ded53f58..b6e2cb164d4d2806b17f9af11a69d38fcc2b8537 100644 (file)
@@ -620,6 +620,17 @@ StringRef sys::getHostCPUName() {
           .Case("0xc24", "cortex-m4")
           .Default("generic");
 
+  if (Implementer == "0x51") // Qualcomm Technologies, Inc.
+    // Look for the CPU part line.
+    for (unsigned I = 0, E = Lines.size(); I != E; ++I)
+      if (Lines[I].startswith("CPU part"))
+        // The CPU part is a 3 digit hexadecimal number with a 0x prefix. The
+        // values correspond to the "Part number" in the CP15/c0 register. The
+        // contents are specified in the various processor manuals.
+        return StringSwitch<const char *>(Lines[I].substr(8).ltrim("\t :"))
+          .Case("0x06f", "krait") // APQ8064
+          .Default("generic");
+
   return "generic";
 }
 #elif defined(__linux__) && defined(__s390x__)