https://github.com/tomershafir created 
https://github.com/llvm/llvm-project/pull/146896

This change removes unnecessary tune args to the AArch64 backend. The AArch64 
backend automatically handles `tune-cpu` and adds the necessary features based 
on the models from TableGen.

>From 47da7044807f139512c04b3f3ad3ef6634d49a44 Mon Sep 17 00:00:00 2001
From: tomershafir <tomer.shaf...@gmail.com>
Date: Thu, 3 Jul 2025 16:53:26 +0300
Subject: [PATCH] [Clang][AArch64] Remove redundant tune args to the backend

This change removes unnecessary tune args to the AArch64 backend. The AArch64 
backend automatically handles `tune-cpu` and adds the necessary features based 
on the models from TableGen.
---
 clang/lib/Driver/ToolChains/Arch/AArch64.cpp     | 11 -----------
 .../test/Preprocessor/aarch64-target-features.c  | 16 ++++++++--------
 2 files changed, 8 insertions(+), 19 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp 
b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
index 343a18b9ca2ea..4f45c369c83db 100644
--- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
@@ -163,17 +163,6 @@ getAArch64MicroArchFeaturesFromMtune(const Driver &D, 
StringRef Mtune,
   if (!DecodeAArch64Mcpu(D, MtuneLowerCase, Tune, Extensions))
     return false;
 
-  // Handle CPU name is 'native'.
-  if (MtuneLowerCase == "native")
-    MtuneLowerCase = std::string(llvm::sys::getHostCPUName());
-
-  // 'cyclone' and later have zero-cycle register moves and zeroing.
-  if (MtuneLowerCase == "cyclone" ||
-      StringRef(MtuneLowerCase).starts_with("apple")) {
-    Features.push_back("+zcm-gpr64");
-    Features.push_back("+zcz");
-  }
-
   return true;
 }
 
diff --git a/clang/test/Preprocessor/aarch64-target-features.c 
b/clang/test/Preprocessor/aarch64-target-features.c
index 6700153b79795..f45f3e74d690f 100644
--- a/clang/test/Preprocessor/aarch64-target-features.c
+++ b/clang/test/Preprocessor/aarch64-target-features.c
@@ -316,7 +316,7 @@
 
 // ================== Check whether -mtune accepts mixed-case features.
 // RUN: %clang -target aarch64 -mtune=CYCLONE -### -c %s 2>&1 | FileCheck 
-check-prefix=CHECK-MTUNE-CYCLONE %s
-// CHECK-MTUNE-CYCLONE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" 
"-target-feature" "+zcm-gpr64" "-target-feature" "+zcz" "-target-feature" "+v8a"
+// CHECK-MTUNE-CYCLONE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" 
"-target-feature" "+v8a"
 
 // RUN: %clang -target aarch64 -mcpu=apple-a7 -### -c %s 2>&1 | FileCheck 
-check-prefix=CHECK-MCPU-APPLE-A7 %s
 // RUN: %clang -target aarch64 -mcpu=apple-a8 -### -c %s 2>&1 | FileCheck 
-check-prefix=CHECK-MCPU-APPLE-A7 %s
@@ -342,12 +342,12 @@
 // RUN: %clang -target aarch64 -mcpu=thunderx2t99 -### -c %s 2>&1 | FileCheck 
-check-prefix=CHECK-MCPU-THUNDERX2T99 %s
 // RUN: %clang -target aarch64 -mcpu=a64fx -### -c %s 2>&1 | FileCheck 
-check-prefix=CHECK-MCPU-A64FX %s
 // RUN: %clang -target aarch64 -mcpu=carmel -### -c %s 2>&1 | FileCheck 
-check-prefix=CHECK-MCPU-CARMEL %s
-// CHECK-MCPU-APPLE-A7: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" 
"-target-feature" "+zcm-gpr64" "-target-feature" "+zcz" "-target-feature" 
"+v8a" "-target-feature" "+aes" "-target-feature" "+fp-armv8" "-target-feature" 
"+neon" "-target-feature" "+perfmon" "-target-feature" "+sha2"
-// CHECK-MCPU-APPLE-A10: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" 
"-target-feature" "+zcm-gpr64" "-target-feature" "+zcz" "-target-feature" 
"+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" 
"+fp-armv8" "-target-feature" "+lor" "-target-feature" "+neon" 
"-target-feature" "+pan" "-target-feature" "+perfmon" "-target-feature" "+rdm" 
"-target-feature" "+sha2" "-target-feature" "+vh"
-// CHECK-MCPU-APPLE-A11: "-cc1"{{.*}} "-triple" 
"aarch64{{.*}}"{{.*}}"-target-feature" "+zcm-gpr64" "-target-feature" "+zcz" 
"-target-feature" "+v8.2a" "-target-feature" "+aes" "-target-feature" "+crc" 
"-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" 
"+lse" "-target-feature" "+neon" "-target-feature" "+perfmon" "-target-feature" 
"+ras" "-target-feature" "+rdm" "-target-feature" "+sha2"
-// CHECK-MCPU-APPLE-A12: "-cc1"{{.*}} "-triple" "aarch64"{{.*}} 
"-target-feature" "+zcm-gpr64" "-target-feature" "+zcz" "-target-feature" 
"+v8.3a" "-target-feature" "+aes" "-target-feature" "+complxnum" 
"-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" 
"+fullfp16" "-target-feature" "+jsconv" "-target-feature" "+lse" 
"-target-feature" "+neon" "-target-feature" "+pauth" "-target-feature" 
"+perfmon" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" 
"+rdm" "-target-feature" "+sha2"
+// CHECK-MCPU-APPLE-A7: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" 
"-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+fp-armv8" 
"-target-feature" "+neon" "-target-feature" "+perfmon" "-target-feature" "+sha2"
+// CHECK-MCPU-APPLE-A10: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" 
"-target-feature" "+v8a" "-target-feature" "+aes" "-target-feature" "+crc" 
"-target-feature" "+fp-armv8" "-target-feature" "+lor" "-target-feature" 
"+neon" "-target-feature" "+pan" "-target-feature" "+perfmon" "-target-feature" 
"+rdm" "-target-feature" "+sha2" "-target-feature" "+vh"
+// CHECK-MCPU-APPLE-A11: "-cc1"{{.*}} "-triple" "aarch64{{.*}}"{{.*} 
"-target-feature" "+v8.2a" "-target-feature" "+aes" "-target-feature" "+crc" 
"-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" 
"+lse" "-target-feature" "+neon" "-target-feature" "+perfmon" "-target-feature" 
"+ras" "-target-feature" "+rdm" "-target-feature" "+sha2"
+// CHECK-MCPU-APPLE-A12: "-cc1"{{.*}} "-triple" "aarch64"{{.*}} 
"-target-feature" "+v8.3a" "-target-feature" "+aes" "-target-feature" 
"+complxnum" "-target-feature" "+crc" "-target-feature" "+fp-armv8" 
"-target-feature" "+fullfp16" "-target-feature" "+jsconv" "-target-feature" 
"+lse" "-target-feature" "+neon" "-target-feature" "+pauth" "-target-feature" 
"+perfmon" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" 
"+rdm" "-target-feature" "+sha2"
 // CHECK-MCPU-A34: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" 
"+aes" "-target-feature" "+crc" "-target-feature" "+fp-armv8" "-target-feature" 
"+neon" "-target-feature" "+perfmon" "-target-feature" "+sha2"
-// CHECK-MCPU-APPLE-A13: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" 
"-target-feature" "+zcm-gpr64" "-target-feature" "+zcz" "-target-feature" 
"+v8.4a" "-target-feature" "+aes" "-target-feature" "+complxnum" 
"-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" 
"+fp-armv8" "-target-feature" "+fp16fml" "-target-feature" "+fullfp16" 
"-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+neon" 
"-target-feature" "+pauth" "-target-feature" "+perfmon" "-target-feature" 
"+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" 
"+sha2" "-target-feature" "+sha3"
+// CHECK-MCPU-APPLE-A13: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" 
"-target-feature" "+v8.4a" "-target-feature" "+aes" "-target-feature" 
"+complxnum" "-target-feature" "+crc" "-target-feature" "+dotprod" 
"-target-feature" "+fp-armv8" "-target-feature" "+fp16fml" "-target-feature" 
"+fullfp16" "-target-feature" "+jsconv" "-target-feature" "+lse" 
"-target-feature" "+neon" "-target-feature" "+pauth" "-target-feature" 
"+perfmon" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" 
"+rdm" "-target-feature" "+sha2" "-target-feature" "+sha3"
 // CHECK-MCPU-A35: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" 
"+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" 
"+fp-armv8" "-target-feature" "+neon" "-target-feature" "+perfmon" 
"-target-feature" "+sha2"
 // CHECK-MCPU-A53: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" 
"+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" 
"+fp-armv8" "-target-feature" "+neon" "-target-feature" "+perfmon" 
"-target-feature" "+sha2"
 // CHECK-MCPU-A57: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" 
"+v8a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" 
"+fp-armv8" "-target-feature" "+neon" "-target-feature" "+perfmon" 
"-target-feature" "+sha2"
@@ -362,10 +362,10 @@
 // CHECK-MCPU-CARMEL: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" 
"+v8.2a" "-target-feature" "+aes" "-target-feature" "+crc" "-target-feature" 
"+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" 
"-target-feature" "+neon" "-target-feature" "+ras" "-target-feature" "+rdm" 
"-target-feature" "+sha2"
 
 // RUN: %clang -target x86_64-apple-macosx -arch arm64 -### -c %s 2>&1 | 
FileCheck --check-prefix=CHECK-ARCH-ARM64 %s
-// CHECK-ARCH-ARM64: "-target-cpu" "apple-m1" "-target-feature" "+zcm-gpr64" 
"-target-feature" "+zcz" "-target-feature" "+v8.4a" "-target-feature" "+aes" 
"-target-feature" "+altnzcv" "-target-feature" "+ccdp" "-target-feature" 
"+ccpp" "-target-feature" "+complxnum" "-target-feature" "+crc" 
"-target-feature" "+dotprod" "-target-feature" "+flagm" "-target-feature" 
"+fp-armv8" "-target-feature" "+fp16fml" "-target-feature" "+fptoint" 
"-target-feature" "+fullfp16" "-target-feature" "+jsconv" "-target-feature" 
"+lse" "-target-feature" "+neon" "-target-feature" "+pauth" "-target-feature" 
"+perfmon" "-target-feature" "+predres" "-target-feature" "+ras" 
"-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sb" 
"-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" 
"+specrestrict" "-target-feature" "+ssbs"
+// CHECK-ARCH-ARM64: "-target-cpu" "apple-m1" "-target-feature" "+v8.4a" 
"-target-feature" "+aes" "-target-feature" "+altnzcv" "-target-feature" "+ccdp" 
"-target-feature" "+ccpp" "-target-feature" "+complxnum" "-target-feature" 
"+crc" "-target-feature" "+dotprod" "-target-feature" "+flagm" 
"-target-feature" "+fp-armv8" "-target-feature" "+fp16fml" "-target-feature" 
"+fptoint" "-target-feature" "+fullfp16" "-target-feature" "+jsconv" 
"-target-feature" "+lse" "-target-feature" "+neon" "-target-feature" "+pauth" 
"-target-feature" "+perfmon" "-target-feature" "+predres" "-target-feature" 
"+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" 
"+sb" "-target-feature" "+sha2" "-target-feature" "+sha3" "-target-feature" 
"+specrestrict" "-target-feature" "+ssbs"
 
 // RUN: %clang -target x86_64-apple-macosx -arch arm64_32 -### -c %s 2>&1 | 
FileCheck --check-prefix=CHECK-ARCH-ARM64_32 %s
-// CHECK-ARCH-ARM64_32: "-target-cpu" "apple-s4" "-target-feature" 
"+zcm-gpr64" "-target-feature" "+zcz" "-target-feature" "+v8.3a" 
"-target-feature" "+aes" "-target-feature" "+complxnum" "-target-feature" 
"+crc" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" 
"-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+neon" 
"-target-feature" "+pauth" "-target-feature" "+perfmon" "-target-feature" 
"+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" 
"+sha2"
+// CHECK-ARCH-ARM64_32: "-target-cpu" "apple-s4" "-target-feature" "+v8.3a" 
"-target-feature" "+aes" "-target-feature" "+complxnum" "-target-feature" 
"+crc" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" 
"-target-feature" "+jsconv" "-target-feature" "+lse" "-target-feature" "+neon" 
"-target-feature" "+pauth" "-target-feature" "+perfmon" "-target-feature" 
"+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" 
"+sha2"
 
 // RUN: %clang -target aarch64 -march=armv8-a+fp+simd+crc+crypto -### -c %s 
2>&1 | FileCheck -check-prefix=CHECK-MARCH-1 %s
 // RUN: %clang -target aarch64 
-march=armv8-a+nofp+nosimd+nocrc+nocrypto+fp+simd+crc+crypto -### -c %s 2>&1 | 
FileCheck -check-prefix=CHECK-MARCH-1 %s

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to