[clang] fc3cdd0 - Revert "[AArch64] Add support for -march=native for Apple M1 CPU"

Keith Smiley via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 23 14:27:15 PDT 2022


Author: Keith Smiley
Date: 2022-03-23T14:27:02-07:00
New Revision: fc3cdd0b295a04c38f01b391ae414553963e33b9

URL: https://github.com/llvm/llvm-project/commit/fc3cdd0b295a04c38f01b391ae414553963e33b9
DIFF: https://github.com/llvm/llvm-project/commit/fc3cdd0b295a04c38f01b391ae414553963e33b9.diff

LOG: Revert "[AArch64] Add support for -march=native for Apple M1 CPU"

This reverts commit fcca10c69aaab539962d10fcc59a5f074b73b0de.

Added: 
    

Modified: 
    clang/lib/Driver/ToolChains/Arch/AArch64.cpp
    llvm/lib/Support/Host.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
index a0be30f881e52..610c672feb677 100644
--- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
@@ -151,8 +151,6 @@ getAArch64ArchFeaturesFromMarch(const Driver &D, StringRef March,
   std::pair<StringRef, StringRef> Split = StringRef(MarchLowerCase).split("+");
 
   llvm::AArch64::ArchKind ArchKind = llvm::AArch64::parseArch(Split.first);
-  if (Split.first == "native")
-    ArchKind = llvm::AArch64::getCPUArchKind(llvm::sys::getHostCPUName().str());
   if (ArchKind == llvm::AArch64::ArchKind::INVALID ||
       !llvm::AArch64::getArchFeatures(ArchKind, Features))
     return false;

diff  --git a/llvm/lib/Support/Host.cpp b/llvm/lib/Support/Host.cpp
index 31cc4df1d9250..a4a375ee7cfa4 100644
--- a/llvm/lib/Support/Host.cpp
+++ b/llvm/lib/Support/Host.cpp
@@ -41,8 +41,6 @@
 #include <mach/mach.h>
 #include <mach/mach_host.h>
 #include <mach/machine.h>
-#include <sys/param.h>
-#include <sys/sysctl.h>
 #endif
 #ifdef _AIX
 #include <sys/systemcfg.h>
@@ -1299,45 +1297,32 @@ StringRef sys::getHostCPUName() {
   bool HaveVectorSupport = CVT[244] & 0x80;
   return getCPUNameFromS390Model(Id, HaveVectorSupport);
 }
-#elif defined(__APPLE__) && (defined(__arm__) || defined(__aarch64__))
-#define CPUFAMILY_ARM_SWIFT 0x1e2d6381
-#define CPUFAMILY_ARM_CYCLONE 0x37a09642
-#define CPUFAMILY_ARM_TYPHOON 0x2c91a47e
-#define CPUFAMILY_ARM_TWISTER 0x92fb37c8
-#define CPUFAMILY_ARM_HURRICANE 0x67ceee93
-#define CPUFAMILY_ARM_MONSOON_MISTRAL 0xe81e7ef6
-#define CPUFAMILY_ARM_VORTEX_TEMPEST 0x07d34b9f
-#define CPUFAMILY_ARM_LIGHTNING_THUNDER 0x462504d2
-#define CPUFAMILY_ARM_FIRESTORM_ICESTORM 0x1b588bb3
-
+#elif defined(__APPLE__) && defined(__aarch64__)
 StringRef sys::getHostCPUName() {
-  uint32_t Family;
-  size_t Length = sizeof(Family);
-  sysctlbyname("hw.cpufamily", &Family, &Length, NULL, 0);
+  return "cyclone";
+}
+#elif defined(__APPLE__) && defined(__arm__)
+StringRef sys::getHostCPUName() {
+  host_basic_info_data_t hostInfo;
+  mach_msg_type_number_t infoCount;
 
-  switch (Family) {
-  case CPUFAMILY_ARM_SWIFT:
-    return "swift";
-  case CPUFAMILY_ARM_CYCLONE:
-    return "apple-a7";
-  case CPUFAMILY_ARM_TYPHOON:
-    return "apple-a8";
-  case CPUFAMILY_ARM_TWISTER:
-    return "apple-a9";
-  case CPUFAMILY_ARM_HURRICANE:
-    return "apple-a10";
-  case CPUFAMILY_ARM_MONSOON_MISTRAL:
-    return "apple-a11";
-  case CPUFAMILY_ARM_VORTEX_TEMPEST:
-    return "apple-a12";
-  case CPUFAMILY_ARM_LIGHTNING_THUNDER:
-    return "apple-a13";
-  case CPUFAMILY_ARM_FIRESTORM_ICESTORM:
-    return "apple-m1";
-  default:
-    // Default to the newest CPU we know about.
-    return "apple-m1";
+  infoCount = HOST_BASIC_INFO_COUNT;
+  mach_port_t hostPort = mach_host_self();
+  host_info(hostPort, HOST_BASIC_INFO, (host_info_t)&hostInfo,
+            &infoCount);
+  mach_port_deallocate(mach_task_self(), hostPort);
+
+  if (hostInfo.cpu_type != CPU_TYPE_ARM) {
+    assert(false && "CPUType not equal to ARM should not be possible on ARM");
+    return "generic";
   }
+  switch (hostInfo.cpu_subtype) {
+    case CPU_SUBTYPE_ARM_V7S:
+      return "swift";
+    default:;
+    }
+
+  return "generic";
 }
 #elif defined(_AIX)
 StringRef sys::getHostCPUName() {
@@ -1468,6 +1453,9 @@ int computeHostNumPhysicalCores() {
 #elif defined(__linux__) && defined(__s390x__)
 int computeHostNumPhysicalCores() { return sysconf(_SC_NPROCESSORS_ONLN); }
 #elif defined(__APPLE__)
+#include <sys/param.h>
+#include <sys/sysctl.h>
+
 // Gets the number of *physical cores* on the machine.
 int computeHostNumPhysicalCores() {
   uint32_t count;


        


More information about the cfe-commits mailing list