[clang] c9ca3a3 - [AArch64] Add driver tests for HiSilicon's TSV110
Author: Elvina Yakubova Date: 2020-11-07T01:51:37+03:00 New Revision: c9ca3a3c66a493d72cf7afc7ee975e2de399f2e5 URL: https://github.com/llvm/llvm-project/commit/c9ca3a3c66a493d72cf7afc7ee975e2de399f2e5 DIFF: https://github.com/llvm/llvm-project/commit/c9ca3a3c66a493d72cf7afc7ee975e2de399f2e5.diff LOG: [AArch64] Add driver tests for HiSilicon's TSV110 Added: Modified: clang/test/Driver/aarch64-cpus.c Removed: diff --git a/clang/test/Driver/aarch64-cpus.c b/clang/test/Driver/aarch64-cpus.c index 356674e7a707..9cdf346148c3 100644 --- a/clang/test/Driver/aarch64-cpus.c +++ b/clang/test/Driver/aarch64-cpus.c @@ -295,6 +295,20 @@ // ARM64-THUNDERX3T110: "-cc1"{{.*}} "-triple" "arm64{{.*}}" "-target-cpu" "thunderx3t110" "-target-feature" "+v8.3a" // ARM64-THUNDERX3T110-TUNE: "-cc1"{{.*}} "-triple" "arm64{{.*}}" "-target-cpu" "generic" +// RUN: %clang -target aarch64 -mcpu=tsv110 -### -c %s 2>&1 | FileCheck -check-prefix=TSV110 %s +// RUN: %clang -target aarch64 -mlittle-endian -mcpu=tsv110 -### -c %s 2>&1 | FileCheck -check-prefix=TSV110 %s +// RUN: %clang -target aarch64 -mtune=tsv110 -### -c %s 2>&1 | FileCheck -check-prefix=TSV110-TUNE %s +// RUN: %clang -target aarch64 -mlittle-endian -mtune=tsv110 -### -c %s 2>&1 | FileCheck -check-prefix=TSV110-TUNE %s +// TSV110: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "tsv110" +// TSV110-TUNE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "generic" + +// RUN: %clang -target arm64 -mcpu=tsv110 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-TSV110 %s +// RUN: %clang -target arm64 -mlittle-endian -mcpu=tsv110 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-TSV110 %s +// RUN: %clang -target arm64 -mtune=tsv110 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-TSV110-TUNE %s +// RUN: %clang -target arm64 -mlittle-endian -mtune=tsv110 -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-TSV110-TUNE %s +// ARM64-TSV110: "-cc1"{{.*}} "-triple" "arm64{{.*}}" "-target-cpu" "tsv110" +// ARM64-TSV110-TUNE: "-cc1"{{.*}} "-triple" "arm64{{.*}}" "-target-cpu" "generic" + // RUN: %clang -target aarch64 -mcpu=a64fx -### -c %s 2>&1 | FileCheck -check-prefix=A64FX %s // RUN: %clang -target aarch64 -mlittle-endian -mcpu=a64fx -### -c %s 2>&1 | FileCheck -check-prefix=A64FX %s // RUN: %clang -target aarch64 -mtune=a64fx -### -c %s 2>&1 | FileCheck -check-prefix=A64FX-TUNE %s ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 624bced - [OpenCL] Make Clang recognize -cl-std=1.0 as a value argument
Author: Elvina Yakubova Date: 2020-11-11T17:01:57+03:00 New Revision: 624bced7eec09a6a70f6e04faeddd0adc1553799 URL: https://github.com/llvm/llvm-project/commit/624bced7eec09a6a70f6e04faeddd0adc1553799 DIFF: https://github.com/llvm/llvm-project/commit/624bced7eec09a6a70f6e04faeddd0adc1553799.diff LOG: [OpenCL] Make Clang recognize -cl-std=1.0 as a value argument This patch makes Clang recognize -cl-std=1.0 as a value argument, before only -std=cl1.0 has to be used instead. Fixes https://bugs.llvm.org/show_bug.cgi?id=47981 Reviewed By: Anastasia Differential Revision: https://reviews.llvm.org/D91237 Added: Modified: clang/include/clang/Driver/Options.td clang/lib/Frontend/CompilerInvocation.cpp clang/test/Driver/autocomplete.c clang/test/Driver/opencl.cl clang/test/Frontend/stdlang.c clang/test/Preprocessor/predefined-macros.c Removed: diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 867b47857295..2e6efef04dbb 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -605,7 +605,7 @@ def cl_no_signed_zeros : Flag<["-"], "cl-no-signed-zeros">, Group, HelpText<"OpenCL only. Allow use of less precise no signed zeros computations in the generated binary.">, MarshallingInfoFlag<"LangOpts->CLNoSignedZero">; def cl_std_EQ : Joined<["-"], "cl-std=">, Group, Flags<[CC1Option]>, - HelpText<"OpenCL language standard to compile for.">, Values<"cl,CL,cl1.1,CL1.1,cl1.2,CL1.2,cl2.0,CL2.0,cl3.0,CL3.0,clc++,CLC++">; + HelpText<"OpenCL language standard to compile for.">, Values<"cl,CL,cl1.0,CL1.0,cl1.1,CL1.1,cl1.2,CL1.2,cl2.0,CL2.0,cl3.0,CL3.0,clc++,CLC++">; def cl_denorms_are_zero : Flag<["-"], "cl-denorms-are-zero">, Group, HelpText<"OpenCL only. Allow denormals to be flushed to zero.">; def cl_fp32_correctly_rounded_divide_sqrt : Flag<["-"], "cl-fp32-correctly-rounded-divide-sqrt">, Group, Flags<[CC1Option]>, diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 590808cf69a0..0a776bfe4518 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -2596,6 +2596,7 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK, LangStandard::Kind OpenCLLangStd = llvm::StringSwitch(A->getValue()) .Cases("cl", "CL", LangStandard::lang_opencl10) +.Cases("cl1.0", "CL1.0", LangStandard::lang_opencl10) .Cases("cl1.1", "CL1.1", LangStandard::lang_opencl11) .Cases("cl1.2", "CL1.2", LangStandard::lang_opencl12) .Cases("cl2.0", "CL2.0", LangStandard::lang_opencl20) diff --git a/clang/test/Driver/autocomplete.c b/clang/test/Driver/autocomplete.c index c9f66de7cd5d..89f7c6e76125 100644 --- a/clang/test/Driver/autocomplete.c +++ b/clang/test/Driver/autocomplete.c @@ -37,6 +37,8 @@ // CLSTDALL: cl // CLSTDALL-NEXT: CL +// CLSTDALL-NEXT: cl1.0 +// CLSTDALL-NEXT: CL1.0 // CLSTDALL-NEXT: cl1.1 // CLSTDALL-NEXT: CL1.1 // CLSTDALL-NEXT: cl1.2 diff --git a/clang/test/Driver/opencl.cl b/clang/test/Driver/opencl.cl index cc0a9143ab37..44ae12330662 100644 --- a/clang/test/Driver/opencl.cl +++ b/clang/test/Driver/opencl.cl @@ -1,4 +1,5 @@ // RUN: %clang -S -### -cl-std=CL %s 2>&1 | FileCheck --check-prefix=CHECK-CL %s +// RUN: %clang -S -### -cl-std=CL1.0 %s 2>&1 | FileCheck --check-prefix=CHECK-CL10 %s // RUN: %clang -S -### -cl-std=CL1.1 %s 2>&1 | FileCheck --check-prefix=CHECK-CL11 %s // RUN: %clang -S -### -cl-std=CL1.2 %s 2>&1 | FileCheck --check-prefix=CHECK-CL12 %s // RUN: %clang -S -### -cl-std=CL2.0 %s 2>&1 | FileCheck --check-prefix=CHECK-CL20 %s @@ -20,6 +21,7 @@ // RUN: not %clang -cl-std=invalid -DOPENCL %s 2>&1 | FileCheck --check-prefix=CHECK-INVALID %s // CHECK-CL: "-cc1" {{.*}} "-cl-std=CL" +// CHECK-CL10: "-cc1" {{.*}} "-cl-std=CL1.0" // CHECK-CL11: "-cc1" {{.*}} "-cl-std=CL1.1" // CHECK-CL12: "-cc1" {{.*}} "-cl-std=CL1.2" // CHECK-CL20: "-cc1" {{.*}} "-cl-std=CL2.0" diff --git a/clang/test/Frontend/stdlang.c b/clang/test/Frontend/stdlang.c index 35a2116859d5..0cb67deef23b 100644 --- a/clang/test/Frontend/stdlang.c +++ b/clang/test/Frontend/stdlang.c @@ -1,6 +1,7 @@ // RUN: %clang_cc1 -x cuda -std=c++11 -DCUDA %s // RUN: %clang_cc1 -x cl -DOPENCL %s // RUN: %clang_cc1 -x cl -cl-std=cl -DOPENCL %s +// RUN: %clang_cc1 -x cl -cl-std=cl1.0 -DOPENCL %s // RUN: %clang_cc1 -x cl -cl-std=cl1.1 -DOPENCL %s // RUN: %clang_cc1 -x cl -cl-std=cl1.2 -DOPENCL %s // RUN: %clang_cc1 -x cl -cl-std=cl2.0 -DOPENCL %s diff --git a/clang/test/Preprocessor/predefined-macros.c b/clang/test/Preprocessor/predefined-macros.c index 6c80517ec4d4..e406b9a70570 100644 --- a/clang/test/Preprocessor/predefined-macros.c +++ b/clang/test/Preprocessor/predefined-macros.c @@ -123,6 +123,8 @@ // RUN: %clang_cc1 %s -E -
[clang] [llvm] [clang][AArch64] Add getHostCPUFeatures to query for enabled features in cpu info (PR #97749)
https://github.com/ElvinaYakubova updated https://github.com/llvm/llvm-project/pull/97749 >From 6ba67c2f67d6f5039b3f9dbfc283c0c17ba34c89 Mon Sep 17 00:00:00 2001 From: Neil Hickey Date: Wed, 3 Jul 2024 07:22:46 -0700 Subject: [PATCH 1/2] [AArch64] Add getHostCPUFeatures to query for enabled features in cpuinfo --- clang/lib/Driver/ToolChains/Arch/AArch64.cpp | 20 +--- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp index f083e40df13144..1e2ac4e501bafd 100644 --- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp +++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp @@ -135,15 +135,21 @@ getAArch64ArchFeaturesFromMarch(const Driver &D, StringRef March, return true; } -static bool -getAArch64ArchFeaturesFromMcpu(const Driver &D, StringRef Mcpu, - const ArgList &Args, - llvm::AArch64::ExtensionSet &Extensions) { +static bool getAArch64ArchFeaturesFromMcpu( +const Driver &D, StringRef Mcpu, const ArgList &Args, +llvm::AArch64::ExtensionSet &Extensions, std::vector &Features) { StringRef CPU; std::string McpuLowerCase = Mcpu.lower(); if (!DecodeAArch64Mcpu(D, McpuLowerCase, CPU, Extensions)) return false; + if (Mcpu == "native") { +llvm::StringMap HostFeatures = llvm::sys::getHostCPUFeatures(); +for (auto &[Feature, Enabled] : HostFeatures) { + Features.push_back(Args.MakeArgString((Enabled ? "+" : "-") + Feature)); +} + } + return true; } @@ -210,11 +216,11 @@ void aarch64::getAArch64TargetFeatures(const Driver &D, success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, Extensions); else if ((A = Args.getLastArg(options::OPT_mcpu_EQ))) -success = -getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions); +success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions, + Features); else if (isCPUDeterminedByTriple(Triple)) success = getAArch64ArchFeaturesFromMcpu( -D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions); +D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions, Features); else // Default to 'A' profile if the architecture is not specified. success = getAArch64ArchFeaturesFromMarch(D, "armv8-a", Args, Extensions); >From db66fb7a218d1362e20143f5e1f3f40509e8abb5 Mon Sep 17 00:00:00 2001 From: Elvina Yakubova Date: Mon, 23 Sep 2024 03:00:19 -0700 Subject: [PATCH 2/2] [clang][AArch64] Add LLVM_CPUINFO environment variable Add LLVM_CPUINFO environment variable to test mock /proc/cpuinfo files for -mcpu=native --- clang/test/Driver/Inputs/cpunative/cortex-a57 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a72 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a76 | 8 + .../test/Driver/Inputs/cpunative/neoverse-n1 | 8 + .../test/Driver/Inputs/cpunative/neoverse-v2 | 8 + clang/test/Driver/aarch64-mcpu-native.c | 137 ++ llvm/lib/TargetParser/Host.cpp| 4 + 7 files changed, 181 insertions(+) create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a57 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a72 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a76 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-n1 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-v2 create mode 100644 clang/test/Driver/aarch64-mcpu-native.c diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a57 b/clang/test/Driver/Inputs/cpunative/cortex-a57 new file mode 100644 index 00..e1903012ab79cc --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a57 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 200.00 +Features: fp asimd evtstrm crc32 cpuid +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part: 0xd07 +CPU revision: 1 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a72 b/clang/test/Driver/Inputs/cpunative/cortex-a72 new file mode 100644 index 00..7aed4a6fa73236 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a72 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 250.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid asimdrdm +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x0 +CPU part: 0xd08 +CPU revision: 2 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a76 b/clang/test/Driver/Inputs/cpunative/cortex-a76 new file mode 100644 index 00..21822cfcec60b0 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a76 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 500.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics cpuid asimdrdm ssbs jscvt fcma +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +
[clang] [llvm] [clang][AArch64] Add getHostCPUFeatures to query for enabled features in cpu info (PR #97749)
https://github.com/ElvinaYakubova updated https://github.com/llvm/llvm-project/pull/97749 >From 6ba67c2f67d6f5039b3f9dbfc283c0c17ba34c89 Mon Sep 17 00:00:00 2001 From: Neil Hickey Date: Wed, 3 Jul 2024 07:22:46 -0700 Subject: [PATCH 1/2] [AArch64] Add getHostCPUFeatures to query for enabled features in cpuinfo --- clang/lib/Driver/ToolChains/Arch/AArch64.cpp | 20 +--- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp index f083e40df13144..1e2ac4e501bafd 100644 --- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp +++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp @@ -135,15 +135,21 @@ getAArch64ArchFeaturesFromMarch(const Driver &D, StringRef March, return true; } -static bool -getAArch64ArchFeaturesFromMcpu(const Driver &D, StringRef Mcpu, - const ArgList &Args, - llvm::AArch64::ExtensionSet &Extensions) { +static bool getAArch64ArchFeaturesFromMcpu( +const Driver &D, StringRef Mcpu, const ArgList &Args, +llvm::AArch64::ExtensionSet &Extensions, std::vector &Features) { StringRef CPU; std::string McpuLowerCase = Mcpu.lower(); if (!DecodeAArch64Mcpu(D, McpuLowerCase, CPU, Extensions)) return false; + if (Mcpu == "native") { +llvm::StringMap HostFeatures = llvm::sys::getHostCPUFeatures(); +for (auto &[Feature, Enabled] : HostFeatures) { + Features.push_back(Args.MakeArgString((Enabled ? "+" : "-") + Feature)); +} + } + return true; } @@ -210,11 +216,11 @@ void aarch64::getAArch64TargetFeatures(const Driver &D, success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, Extensions); else if ((A = Args.getLastArg(options::OPT_mcpu_EQ))) -success = -getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions); +success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions, + Features); else if (isCPUDeterminedByTriple(Triple)) success = getAArch64ArchFeaturesFromMcpu( -D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions); +D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions, Features); else // Default to 'A' profile if the architecture is not specified. success = getAArch64ArchFeaturesFromMarch(D, "armv8-a", Args, Extensions); >From 9f1a5b60a98107530407773f4166cf7619e0728c Mon Sep 17 00:00:00 2001 From: Elvina Yakubova Date: Tue, 8 Oct 2024 03:48:51 +0530 Subject: [PATCH 2/2] [clang][AArch64] Add LLVM_CPUINFO environment variable Add LLVM_CPUINFO environment variable to test mock /proc/cpuinfo files for -mcpu=native --- clang/test/Driver/Inputs/cpunative/cortex-a57 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a72 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a76 | 8 + .../test/Driver/Inputs/cpunative/neoverse-n1 | 8 + .../test/Driver/Inputs/cpunative/neoverse-v2 | 8 + clang/test/Driver/aarch64-mcpu-native.c | 137 ++ llvm/lib/TargetParser/Host.cpp| 4 + 7 files changed, 181 insertions(+) create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a57 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a72 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a76 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-n1 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-v2 create mode 100644 clang/test/Driver/aarch64-mcpu-native.c diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a57 b/clang/test/Driver/Inputs/cpunative/cortex-a57 new file mode 100644 index 00..e1903012ab79cc --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a57 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 200.00 +Features: fp asimd evtstrm crc32 cpuid +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part: 0xd07 +CPU revision: 1 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a72 b/clang/test/Driver/Inputs/cpunative/cortex-a72 new file mode 100644 index 00..7aed4a6fa73236 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a72 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 250.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid asimdrdm +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x0 +CPU part: 0xd08 +CPU revision: 2 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a76 b/clang/test/Driver/Inputs/cpunative/cortex-a76 new file mode 100644 index 00..21822cfcec60b0 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a76 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 500.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics cpuid asimdrdm ssbs jscvt fcma +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +C
[clang] [llvm] Revert "[clang][AArch64] Add getHostCPUFeatures to query for enabled … (PR #114066)
https://github.com/ElvinaYakubova closed https://github.com/llvm/llvm-project/pull/114066 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] Revert "[clang][AArch64] Add getHostCPUFeatures to query for enabled … (PR #114066)
https://github.com/ElvinaYakubova created https://github.com/llvm/llvm-project/pull/114066 …features in cpu info (#97749)" This reverts commit d732c0b13c55259177f2936516b6087d634078e0. This is breaking buildbots https://lab.llvm.org/buildbot/#/builders/190/builds/8413, https://lab.llvm.org/buildbot/#/builders/56/builds/10880 and a few others. >From 64c94581f63fa11de0984d70aac754de495d2ae3 Mon Sep 17 00:00:00 2001 From: Elvina Yakubova Date: Tue, 29 Oct 2024 07:35:27 -0700 Subject: [PATCH] Revert "[clang][AArch64] Add getHostCPUFeatures to query for enabled features in cpu info (#97749)" This reverts commit d732c0b13c55259177f2936516b6087d634078e0. --- clang/lib/Driver/ToolChains/Arch/AArch64.cpp | 20 +-- clang/test/Driver/Inputs/cpunative/cortex-a57 | 8 - clang/test/Driver/Inputs/cpunative/cortex-a72 | 8 - clang/test/Driver/Inputs/cpunative/cortex-a76 | 8 - .../test/Driver/Inputs/cpunative/neoverse-n1 | 8 - .../test/Driver/Inputs/cpunative/neoverse-v2 | 8 - clang/test/Driver/aarch64-mcpu-native.c | 138 -- llvm/lib/TargetParser/Host.cpp| 10 +- 8 files changed, 10 insertions(+), 198 deletions(-) delete mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a57 delete mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a72 delete mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a76 delete mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-n1 delete mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-v2 delete mode 100644 clang/test/Driver/aarch64-mcpu-native.c diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp index 1e2ac4e501bafd..f083e40df13144 100644 --- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp +++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp @@ -135,21 +135,15 @@ getAArch64ArchFeaturesFromMarch(const Driver &D, StringRef March, return true; } -static bool getAArch64ArchFeaturesFromMcpu( -const Driver &D, StringRef Mcpu, const ArgList &Args, -llvm::AArch64::ExtensionSet &Extensions, std::vector &Features) { +static bool +getAArch64ArchFeaturesFromMcpu(const Driver &D, StringRef Mcpu, + const ArgList &Args, + llvm::AArch64::ExtensionSet &Extensions) { StringRef CPU; std::string McpuLowerCase = Mcpu.lower(); if (!DecodeAArch64Mcpu(D, McpuLowerCase, CPU, Extensions)) return false; - if (Mcpu == "native") { -llvm::StringMap HostFeatures = llvm::sys::getHostCPUFeatures(); -for (auto &[Feature, Enabled] : HostFeatures) { - Features.push_back(Args.MakeArgString((Enabled ? "+" : "-") + Feature)); -} - } - return true; } @@ -216,11 +210,11 @@ void aarch64::getAArch64TargetFeatures(const Driver &D, success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, Extensions); else if ((A = Args.getLastArg(options::OPT_mcpu_EQ))) -success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions, - Features); +success = +getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions); else if (isCPUDeterminedByTriple(Triple)) success = getAArch64ArchFeaturesFromMcpu( -D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions, Features); +D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions); else // Default to 'A' profile if the architecture is not specified. success = getAArch64ArchFeaturesFromMarch(D, "armv8-a", Args, Extensions); diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a57 b/clang/test/Driver/Inputs/cpunative/cortex-a57 deleted file mode 100644 index e1903012ab79cc..00 --- a/clang/test/Driver/Inputs/cpunative/cortex-a57 +++ /dev/null @@ -1,8 +0,0 @@ -processor : 0 -BogoMIPS: 200.00 -Features: fp asimd evtstrm crc32 cpuid -CPU implementer : 0x41 -CPU architecture: 8 -CPU variant : 0x1 -CPU part: 0xd07 -CPU revision: 1 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a72 b/clang/test/Driver/Inputs/cpunative/cortex-a72 deleted file mode 100644 index 7aed4a6fa73236..00 --- a/clang/test/Driver/Inputs/cpunative/cortex-a72 +++ /dev/null @@ -1,8 +0,0 @@ -processor : 0 -BogoMIPS: 250.00 -Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid asimdrdm -CPU implementer : 0x41 -CPU architecture: 8 -CPU variant : 0x0 -CPU part: 0xd08 -CPU revision: 2 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a76 b/clang/test/Driver/Inputs/cpunative/cortex-a76 deleted file mode 100644 index 21822cfcec60b0..00 --- a/clang/test/Driver/Inputs/cpunative/cortex-a76 +++ /dev/null @@ -1,8 +0,0 @@ -processor : 0 -BogoMIPS: 500.00 -Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics cpuid asimdrdm ssbs jscvt fcma -CPU implementer : 0x41 -CPU architecture: 8 -CPU variant
[clang] [llvm] [clang][AArch64] Add getHostCPUFeatures to query for enabled features in cpu info (PR #97749)
@@ -0,0 +1,137 @@ +// RUN: export LLVM_CPUINFO=%S/Inputs/cpunative/neoverse-v2 +// RUN: %clang --target=aarch64 --print-enabled-extensions -mcpu=native | FileCheck --strict-whitespace --check-prefix=CHECK-FEAT-NV2 --implicit-check-not=FEAT_ %s + ElvinaYakubova wrote: thanks, you're right, added it https://github.com/llvm/llvm-project/pull/97749 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [clang][AArch64] Add getHostCPUFeatures to query for enabled features in cpu info (PR #97749)
https://github.com/ElvinaYakubova updated https://github.com/llvm/llvm-project/pull/97749 >From e46cbb0dd668f8be6b93c1b9adee671b995fa478 Mon Sep 17 00:00:00 2001 From: Neil Hickey Date: Wed, 3 Jul 2024 07:22:46 -0700 Subject: [PATCH 1/2] [AArch64] Add getHostCPUFeatures to query for enabled features in cpuinfo --- clang/lib/Driver/ToolChains/Arch/AArch64.cpp | 20 +--- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp index f083e40df13144..1e2ac4e501bafd 100644 --- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp +++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp @@ -135,15 +135,21 @@ getAArch64ArchFeaturesFromMarch(const Driver &D, StringRef March, return true; } -static bool -getAArch64ArchFeaturesFromMcpu(const Driver &D, StringRef Mcpu, - const ArgList &Args, - llvm::AArch64::ExtensionSet &Extensions) { +static bool getAArch64ArchFeaturesFromMcpu( +const Driver &D, StringRef Mcpu, const ArgList &Args, +llvm::AArch64::ExtensionSet &Extensions, std::vector &Features) { StringRef CPU; std::string McpuLowerCase = Mcpu.lower(); if (!DecodeAArch64Mcpu(D, McpuLowerCase, CPU, Extensions)) return false; + if (Mcpu == "native") { +llvm::StringMap HostFeatures = llvm::sys::getHostCPUFeatures(); +for (auto &[Feature, Enabled] : HostFeatures) { + Features.push_back(Args.MakeArgString((Enabled ? "+" : "-") + Feature)); +} + } + return true; } @@ -210,11 +216,11 @@ void aarch64::getAArch64TargetFeatures(const Driver &D, success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, Extensions); else if ((A = Args.getLastArg(options::OPT_mcpu_EQ))) -success = -getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions); +success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions, + Features); else if (isCPUDeterminedByTriple(Triple)) success = getAArch64ArchFeaturesFromMcpu( -D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions); +D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions, Features); else // Default to 'A' profile if the architecture is not specified. success = getAArch64ArchFeaturesFromMarch(D, "armv8-a", Args, Extensions); >From 50d917f1e042de4023f73a33f39e60ee65a84411 Mon Sep 17 00:00:00 2001 From: Elvina Yakubova Date: Tue, 8 Oct 2024 03:48:51 +0530 Subject: [PATCH 2/2] [clang][AArch64] Add LLVM_CPUINFO environment variable Add LLVM_CPUINFO environment variable to test mock /proc/cpuinfo files for -mcpu=native --- clang/test/Driver/Inputs/cpunative/cortex-a57 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a72 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a76 | 8 + .../test/Driver/Inputs/cpunative/neoverse-n1 | 8 + .../test/Driver/Inputs/cpunative/neoverse-v2 | 8 + clang/test/Driver/aarch64-mcpu-native.c | 138 ++ llvm/lib/TargetParser/Host.cpp| 10 +- 7 files changed, 185 insertions(+), 3 deletions(-) create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a57 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a72 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a76 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-n1 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-v2 create mode 100644 clang/test/Driver/aarch64-mcpu-native.c diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a57 b/clang/test/Driver/Inputs/cpunative/cortex-a57 new file mode 100644 index 00..e1903012ab79cc --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a57 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 200.00 +Features: fp asimd evtstrm crc32 cpuid +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part: 0xd07 +CPU revision: 1 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a72 b/clang/test/Driver/Inputs/cpunative/cortex-a72 new file mode 100644 index 00..7aed4a6fa73236 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a72 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 250.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid asimdrdm +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x0 +CPU part: 0xd08 +CPU revision: 2 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a76 b/clang/test/Driver/Inputs/cpunative/cortex-a76 new file mode 100644 index 00..21822cfcec60b0 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a76 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 500.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics cpuid asimdrdm ssbs jscvt fcma +CPU implementer : 0x41 +CPU architecture: 8 +CPU var
[clang] [llvm] [clang][AArch64] Add getHostCPUFeatures to query for enabled features in cpu info (PR #97749)
@@ -70,6 +70,10 @@ static std::unique_ptr LLVM_ATTRIBUTE_UNUSED getProcCpuinfoContent() { llvm::ErrorOr> Text = llvm::MemoryBuffer::getFileAsStream("/proc/cpuinfo"); + if (const char *cpuinfoIntercept = std::getenv("LLVM_CPUINFO")) { ElvinaYakubova wrote: Thanks, changed that https://github.com/llvm/llvm-project/pull/97749 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [clang][AArch64] Add getHostCPUFeatures to query for enabled features in cpu info (PR #97749)
ElvinaYakubova wrote: Sorry for the delays in response. I addressed the comments and rebased the branch https://github.com/llvm/llvm-project/pull/97749 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [clang][AArch64] Add getHostCPUFeatures to query for enabled features in cpu info (PR #97749)
https://github.com/ElvinaYakubova updated https://github.com/llvm/llvm-project/pull/97749 >From e46cbb0dd668f8be6b93c1b9adee671b995fa478 Mon Sep 17 00:00:00 2001 From: Neil Hickey Date: Wed, 3 Jul 2024 07:22:46 -0700 Subject: [PATCH 1/2] [AArch64] Add getHostCPUFeatures to query for enabled features in cpuinfo --- clang/lib/Driver/ToolChains/Arch/AArch64.cpp | 20 +--- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp index f083e40df13144..1e2ac4e501bafd 100644 --- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp +++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp @@ -135,15 +135,21 @@ getAArch64ArchFeaturesFromMarch(const Driver &D, StringRef March, return true; } -static bool -getAArch64ArchFeaturesFromMcpu(const Driver &D, StringRef Mcpu, - const ArgList &Args, - llvm::AArch64::ExtensionSet &Extensions) { +static bool getAArch64ArchFeaturesFromMcpu( +const Driver &D, StringRef Mcpu, const ArgList &Args, +llvm::AArch64::ExtensionSet &Extensions, std::vector &Features) { StringRef CPU; std::string McpuLowerCase = Mcpu.lower(); if (!DecodeAArch64Mcpu(D, McpuLowerCase, CPU, Extensions)) return false; + if (Mcpu == "native") { +llvm::StringMap HostFeatures = llvm::sys::getHostCPUFeatures(); +for (auto &[Feature, Enabled] : HostFeatures) { + Features.push_back(Args.MakeArgString((Enabled ? "+" : "-") + Feature)); +} + } + return true; } @@ -210,11 +216,11 @@ void aarch64::getAArch64TargetFeatures(const Driver &D, success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, Extensions); else if ((A = Args.getLastArg(options::OPT_mcpu_EQ))) -success = -getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions); +success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions, + Features); else if (isCPUDeterminedByTriple(Triple)) success = getAArch64ArchFeaturesFromMcpu( -D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions); +D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions, Features); else // Default to 'A' profile if the architecture is not specified. success = getAArch64ArchFeaturesFromMarch(D, "armv8-a", Args, Extensions); >From faceffdac240f80e8f21ca3a35daa6fa8ac16a06 Mon Sep 17 00:00:00 2001 From: Elvina Yakubova Date: Tue, 8 Oct 2024 03:48:51 +0530 Subject: [PATCH 2/2] [clang][AArch64] Add LLVM_CPUINFO environment variable Add LLVM_CPUINFO environment variable to test mock /proc/cpuinfo files for -mcpu=native --- clang/test/Driver/Inputs/cpunative/cortex-a57 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a72 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a76 | 8 + .../test/Driver/Inputs/cpunative/neoverse-n1 | 8 + .../test/Driver/Inputs/cpunative/neoverse-v2 | 8 + clang/test/Driver/aarch64-mcpu-native.c | 137 ++ llvm/lib/TargetParser/Host.cpp| 10 +- 7 files changed, 184 insertions(+), 3 deletions(-) create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a57 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a72 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a76 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-n1 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-v2 create mode 100644 clang/test/Driver/aarch64-mcpu-native.c diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a57 b/clang/test/Driver/Inputs/cpunative/cortex-a57 new file mode 100644 index 00..e1903012ab79cc --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a57 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 200.00 +Features: fp asimd evtstrm crc32 cpuid +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part: 0xd07 +CPU revision: 1 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a72 b/clang/test/Driver/Inputs/cpunative/cortex-a72 new file mode 100644 index 00..7aed4a6fa73236 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a72 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 250.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid asimdrdm +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x0 +CPU part: 0xd08 +CPU revision: 2 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a76 b/clang/test/Driver/Inputs/cpunative/cortex-a76 new file mode 100644 index 00..21822cfcec60b0 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a76 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 500.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics cpuid asimdrdm ssbs jscvt fcma +CPU implementer : 0x41 +CPU architecture: 8 +CPU var
[clang] [llvm] Reland [clang][AArch64] Add getHostCPUFeatures to query for enabled f… (PR #115467)
ElvinaYakubova wrote: Oh yes, you were right, thanks for the explanation. I modified the test to run it only in case the host is AArch64. https://github.com/llvm/llvm-project/pull/115467 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] Reland [clang][AArch64] Add getHostCPUFeatures to query for enabled f… (PR #115467)
https://github.com/ElvinaYakubova updated https://github.com/llvm/llvm-project/pull/115467 >From 8453bd11fa366b4865dce64b55d2a548c8b74a42 Mon Sep 17 00:00:00 2001 From: Elvina Yakubova Date: Fri, 8 Nov 2024 03:11:44 -0800 Subject: [PATCH 1/3] Reland [clang][AArch64] Add getHostCPUFeatures to query for enabled features in cpu info --- clang/lib/Driver/ToolChains/Arch/AArch64.cpp | 20 ++- clang/test/Driver/Inputs/cpunative/cortex-a57 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a72 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a76 | 8 + .../test/Driver/Inputs/cpunative/neoverse-n1 | 8 + .../test/Driver/Inputs/cpunative/neoverse-v2 | 8 + clang/test/Driver/aarch64-mcpu-native.c | 138 ++ clang/test/lit.cfg.py | 3 + llvm/lib/TargetParser/Host.cpp| 10 +- 9 files changed, 201 insertions(+), 10 deletions(-) create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a57 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a72 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a76 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-n1 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-v2 create mode 100644 clang/test/Driver/aarch64-mcpu-native.c diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp index f083e40df13144..1e2ac4e501bafd 100644 --- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp +++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp @@ -135,15 +135,21 @@ getAArch64ArchFeaturesFromMarch(const Driver &D, StringRef March, return true; } -static bool -getAArch64ArchFeaturesFromMcpu(const Driver &D, StringRef Mcpu, - const ArgList &Args, - llvm::AArch64::ExtensionSet &Extensions) { +static bool getAArch64ArchFeaturesFromMcpu( +const Driver &D, StringRef Mcpu, const ArgList &Args, +llvm::AArch64::ExtensionSet &Extensions, std::vector &Features) { StringRef CPU; std::string McpuLowerCase = Mcpu.lower(); if (!DecodeAArch64Mcpu(D, McpuLowerCase, CPU, Extensions)) return false; + if (Mcpu == "native") { +llvm::StringMap HostFeatures = llvm::sys::getHostCPUFeatures(); +for (auto &[Feature, Enabled] : HostFeatures) { + Features.push_back(Args.MakeArgString((Enabled ? "+" : "-") + Feature)); +} + } + return true; } @@ -210,11 +216,11 @@ void aarch64::getAArch64TargetFeatures(const Driver &D, success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, Extensions); else if ((A = Args.getLastArg(options::OPT_mcpu_EQ))) -success = -getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions); +success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions, + Features); else if (isCPUDeterminedByTriple(Triple)) success = getAArch64ArchFeaturesFromMcpu( -D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions); +D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions, Features); else // Default to 'A' profile if the architecture is not specified. success = getAArch64ArchFeaturesFromMarch(D, "armv8-a", Args, Extensions); diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a57 b/clang/test/Driver/Inputs/cpunative/cortex-a57 new file mode 100644 index 00..e1903012ab79cc --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a57 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 200.00 +Features: fp asimd evtstrm crc32 cpuid +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part: 0xd07 +CPU revision: 1 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a72 b/clang/test/Driver/Inputs/cpunative/cortex-a72 new file mode 100644 index 00..7aed4a6fa73236 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a72 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 250.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid asimdrdm +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x0 +CPU part: 0xd08 +CPU revision: 2 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a76 b/clang/test/Driver/Inputs/cpunative/cortex-a76 new file mode 100644 index 00..21822cfcec60b0 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a76 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 500.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics cpuid asimdrdm ssbs jscvt fcma +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part: 0xd0b +CPU revision: 2 diff --git a/clang/test/Driver/Inputs/cpunative/neoverse-n1 b/clang/test/Driver/Inputs/cpunative/neoverse-n1 new file mode 100644 index 00..571e8840b09f08 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/neoverse
[clang] [llvm] Reland [clang][AArch64] Add getHostCPUFeatures to query for enabled f… (PR #115467)
https://github.com/ElvinaYakubova closed https://github.com/llvm/llvm-project/pull/115467 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] Reland [clang][AArch64] Add getHostCPUFeatures to query for enabled f… (PR #115467)
ElvinaYakubova wrote: @davemgreen all tests are shown as passed, and I noticed the same failure on some other PRs. Can this be an infrastructure problem then? Regarding the original error - it was showing "unsupported argument 'native' to option '-mcpu='" for the cases where the target was AArch64 and the host was X86, that's why I added a check to compare host and target. And also there was a crash for Darwin systems, since we added this feature only for AArch64+linux case. https://github.com/llvm/llvm-project/pull/115467 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] Reland [clang][AArch64] Add getHostCPUFeatures to query for enabled f… (PR #115467)
https://github.com/ElvinaYakubova updated https://github.com/llvm/llvm-project/pull/115467 >From 8453bd11fa366b4865dce64b55d2a548c8b74a42 Mon Sep 17 00:00:00 2001 From: Elvina Yakubova Date: Fri, 8 Nov 2024 03:11:44 -0800 Subject: [PATCH 1/2] Reland [clang][AArch64] Add getHostCPUFeatures to query for enabled features in cpu info --- clang/lib/Driver/ToolChains/Arch/AArch64.cpp | 20 ++- clang/test/Driver/Inputs/cpunative/cortex-a57 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a72 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a76 | 8 + .../test/Driver/Inputs/cpunative/neoverse-n1 | 8 + .../test/Driver/Inputs/cpunative/neoverse-v2 | 8 + clang/test/Driver/aarch64-mcpu-native.c | 138 ++ clang/test/lit.cfg.py | 3 + llvm/lib/TargetParser/Host.cpp| 10 +- 9 files changed, 201 insertions(+), 10 deletions(-) create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a57 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a72 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a76 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-n1 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-v2 create mode 100644 clang/test/Driver/aarch64-mcpu-native.c diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp index f083e40df13144..1e2ac4e501bafd 100644 --- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp +++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp @@ -135,15 +135,21 @@ getAArch64ArchFeaturesFromMarch(const Driver &D, StringRef March, return true; } -static bool -getAArch64ArchFeaturesFromMcpu(const Driver &D, StringRef Mcpu, - const ArgList &Args, - llvm::AArch64::ExtensionSet &Extensions) { +static bool getAArch64ArchFeaturesFromMcpu( +const Driver &D, StringRef Mcpu, const ArgList &Args, +llvm::AArch64::ExtensionSet &Extensions, std::vector &Features) { StringRef CPU; std::string McpuLowerCase = Mcpu.lower(); if (!DecodeAArch64Mcpu(D, McpuLowerCase, CPU, Extensions)) return false; + if (Mcpu == "native") { +llvm::StringMap HostFeatures = llvm::sys::getHostCPUFeatures(); +for (auto &[Feature, Enabled] : HostFeatures) { + Features.push_back(Args.MakeArgString((Enabled ? "+" : "-") + Feature)); +} + } + return true; } @@ -210,11 +216,11 @@ void aarch64::getAArch64TargetFeatures(const Driver &D, success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, Extensions); else if ((A = Args.getLastArg(options::OPT_mcpu_EQ))) -success = -getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions); +success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions, + Features); else if (isCPUDeterminedByTriple(Triple)) success = getAArch64ArchFeaturesFromMcpu( -D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions); +D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions, Features); else // Default to 'A' profile if the architecture is not specified. success = getAArch64ArchFeaturesFromMarch(D, "armv8-a", Args, Extensions); diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a57 b/clang/test/Driver/Inputs/cpunative/cortex-a57 new file mode 100644 index 00..e1903012ab79cc --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a57 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 200.00 +Features: fp asimd evtstrm crc32 cpuid +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part: 0xd07 +CPU revision: 1 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a72 b/clang/test/Driver/Inputs/cpunative/cortex-a72 new file mode 100644 index 00..7aed4a6fa73236 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a72 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 250.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid asimdrdm +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x0 +CPU part: 0xd08 +CPU revision: 2 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a76 b/clang/test/Driver/Inputs/cpunative/cortex-a76 new file mode 100644 index 00..21822cfcec60b0 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a76 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 500.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics cpuid asimdrdm ssbs jscvt fcma +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part: 0xd0b +CPU revision: 2 diff --git a/clang/test/Driver/Inputs/cpunative/neoverse-n1 b/clang/test/Driver/Inputs/cpunative/neoverse-n1 new file mode 100644 index 00..571e8840b09f08 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/neoverse
[clang] [llvm] Reland [clang][AArch64] Add getHostCPUFeatures to query for enabled f… (PR #115467)
@@ -210,6 +210,9 @@ def have_host_clang_repl_cuda(): config.substitutions.append(("%host_cc", config.host_cc)) config.substitutions.append(("%host_cxx", config.host_cxx)) +# Determine whether the test target is compatible with execution on the host. +if config.host_arch in config.target_triple: +config.available_features.add("host-arch-compatible") ElvinaYakubova wrote: Thanks for the suggestion, renamed it https://github.com/llvm/llvm-project/pull/115467 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [CMake] Preserve clang-prebolt (PR #109351)
ElvinaYakubova wrote: @aaupov this happens on AArch64 target, and only with -split-strategy=cdsplit enabled. Changing it to profile2, for example, fixes the issue https://github.com/llvm/llvm-project/pull/109351 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] Reland [clang][AArch64] Add getHostCPUFeatures to query for enabled f… (PR #115467)
https://github.com/ElvinaYakubova created https://github.com/llvm/llvm-project/pull/115467 …eatures in cpu info >From 8453bd11fa366b4865dce64b55d2a548c8b74a42 Mon Sep 17 00:00:00 2001 From: Elvina Yakubova Date: Fri, 8 Nov 2024 03:11:44 -0800 Subject: [PATCH] Reland [clang][AArch64] Add getHostCPUFeatures to query for enabled features in cpu info --- clang/lib/Driver/ToolChains/Arch/AArch64.cpp | 20 ++- clang/test/Driver/Inputs/cpunative/cortex-a57 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a72 | 8 + clang/test/Driver/Inputs/cpunative/cortex-a76 | 8 + .../test/Driver/Inputs/cpunative/neoverse-n1 | 8 + .../test/Driver/Inputs/cpunative/neoverse-v2 | 8 + clang/test/Driver/aarch64-mcpu-native.c | 138 ++ clang/test/lit.cfg.py | 3 + llvm/lib/TargetParser/Host.cpp| 10 +- 9 files changed, 201 insertions(+), 10 deletions(-) create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a57 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a72 create mode 100644 clang/test/Driver/Inputs/cpunative/cortex-a76 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-n1 create mode 100644 clang/test/Driver/Inputs/cpunative/neoverse-v2 create mode 100644 clang/test/Driver/aarch64-mcpu-native.c diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp index f083e40df13144..1e2ac4e501bafd 100644 --- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp +++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp @@ -135,15 +135,21 @@ getAArch64ArchFeaturesFromMarch(const Driver &D, StringRef March, return true; } -static bool -getAArch64ArchFeaturesFromMcpu(const Driver &D, StringRef Mcpu, - const ArgList &Args, - llvm::AArch64::ExtensionSet &Extensions) { +static bool getAArch64ArchFeaturesFromMcpu( +const Driver &D, StringRef Mcpu, const ArgList &Args, +llvm::AArch64::ExtensionSet &Extensions, std::vector &Features) { StringRef CPU; std::string McpuLowerCase = Mcpu.lower(); if (!DecodeAArch64Mcpu(D, McpuLowerCase, CPU, Extensions)) return false; + if (Mcpu == "native") { +llvm::StringMap HostFeatures = llvm::sys::getHostCPUFeatures(); +for (auto &[Feature, Enabled] : HostFeatures) { + Features.push_back(Args.MakeArgString((Enabled ? "+" : "-") + Feature)); +} + } + return true; } @@ -210,11 +216,11 @@ void aarch64::getAArch64TargetFeatures(const Driver &D, success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, Extensions); else if ((A = Args.getLastArg(options::OPT_mcpu_EQ))) -success = -getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions); +success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Extensions, + Features); else if (isCPUDeterminedByTriple(Triple)) success = getAArch64ArchFeaturesFromMcpu( -D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions); +D, getAArch64TargetCPU(Args, Triple, A), Args, Extensions, Features); else // Default to 'A' profile if the architecture is not specified. success = getAArch64ArchFeaturesFromMarch(D, "armv8-a", Args, Extensions); diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a57 b/clang/test/Driver/Inputs/cpunative/cortex-a57 new file mode 100644 index 00..e1903012ab79cc --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a57 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 200.00 +Features: fp asimd evtstrm crc32 cpuid +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part: 0xd07 +CPU revision: 1 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a72 b/clang/test/Driver/Inputs/cpunative/cortex-a72 new file mode 100644 index 00..7aed4a6fa73236 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a72 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 250.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid asimdrdm +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x0 +CPU part: 0xd08 +CPU revision: 2 diff --git a/clang/test/Driver/Inputs/cpunative/cortex-a76 b/clang/test/Driver/Inputs/cpunative/cortex-a76 new file mode 100644 index 00..21822cfcec60b0 --- /dev/null +++ b/clang/test/Driver/Inputs/cpunative/cortex-a76 @@ -0,0 +1,8 @@ +processor : 0 +BogoMIPS: 500.00 +Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics cpuid asimdrdm ssbs jscvt fcma +CPU implementer : 0x41 +CPU architecture: 8 +CPU variant : 0x1 +CPU part: 0xd0b +CPU revision: 2 diff --git a/clang/test/Driver/Inputs/cpunative/neoverse-n1 b/clang/test/Driver/Inputs/cpunative/neoverse-n1 new file mode 100644 index 00..571e8840b09f08 --- /dev/null +++ b/clang/test/Driver/Inputs/
[clang] [llvm] Reland [clang][AArch64] Add getHostCPUFeatures to query for enabled f… (PR #115467)
https://github.com/ElvinaYakubova edited https://github.com/llvm/llvm-project/pull/115467 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [AArch64] Add optional extensions enabled on Grace (PR #127620)
https://github.com/ElvinaYakubova updated https://github.com/llvm/llvm-project/pull/127620 >From 814aace81379e6e95fd83a3384fd52e11730a5ac Mon Sep 17 00:00:00 2001 From: Elvina Yakubova Date: Thu, 13 Feb 2025 05:45:21 -0800 Subject: [PATCH] [AArch64] Add optional extensions enabled on Grace Enable optional ISA extensions on Grace when mcpu=grace is used: sve2-sm4, sve2-aes, sve2-sha3. Grace is no longer an alias, but a separate CPU definition. --- clang/test/Driver/aarch64-mcpu.c | 2 +- .../print-enabled-extensions/aarch64-grace.c | 62 +++ llvm/lib/Target/AArch64/AArch64Processors.td | 5 +- llvm/test/CodeGen/AArch64/cpus.ll | 1 + .../TargetParser/TargetParserTest.cpp | 2 +- 5 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 clang/test/Driver/print-enabled-extensions/aarch64-grace.c diff --git a/clang/test/Driver/aarch64-mcpu.c b/clang/test/Driver/aarch64-mcpu.c index 97303510d6881..447ee4bd3a6f9 100644 --- a/clang/test/Driver/aarch64-mcpu.c +++ b/clang/test/Driver/aarch64-mcpu.c @@ -92,7 +92,7 @@ // COBALT-100: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "neoverse-n2" // RUN: %clang --target=aarch64 -mcpu=grace -### -c %s 2>&1 | FileCheck -check-prefix=GRACE %s -// GRACE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "neoverse-v2" +// GRACE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "grace" // == Check whether -mcpu and -mtune accept mixed-case values. // RUN: %clang --target=aarch64 -mcpu=Cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CASE-INSENSITIVE-CA53 %s diff --git a/clang/test/Driver/print-enabled-extensions/aarch64-grace.c b/clang/test/Driver/print-enabled-extensions/aarch64-grace.c new file mode 100644 index 0..fde6aee468cdc --- /dev/null +++ b/clang/test/Driver/print-enabled-extensions/aarch64-grace.c @@ -0,0 +1,62 @@ +// REQUIRES: aarch64-registered-target +// RUN: %clang --target=aarch64 --print-enabled-extensions -mcpu=grace | FileCheck --strict-whitespace --implicit-check-not=FEAT_ %s + +// CHECK: Extensions enabled for the given AArch64 target +// CHECK-EMPTY: +// CHECK-NEXT: Architecture Feature(s) Description +// CHECK-NEXT: FEAT_AES, FEAT_PMULL Enable AES support +// CHECK-NEXT: FEAT_AMUv1 Enable Armv8.4-A Activity Monitors extension +// CHECK-NEXT: FEAT_AdvSIMD Enable Advanced SIMD instructions +// CHECK-NEXT: FEAT_BF16 Enable BFloat16 Extension +// CHECK-NEXT: FEAT_BTI Enable Branch Target Identification +// CHECK-NEXT: FEAT_CCIDX Enable Armv8.3-A Extend of the CCSIDR number of sets +// CHECK-NEXT: FEAT_CRC32 Enable Armv8.0-A CRC-32 checksum instructions +// CHECK-NEXT: FEAT_CSV2_2 Enable architectural speculation restriction +// CHECK-NEXT: FEAT_DIT Enable Armv8.4-A Data Independent Timing instructions +// CHECK-NEXT: FEAT_DPB Enable Armv8.2-A data Cache Clean to Point of Persistence +// CHECK-NEXT: FEAT_DPB2 Enable Armv8.5-A Cache Clean to Point of Deep Persistence +// CHECK-NEXT: FEAT_DotProd Enable dot product support +// CHECK-NEXT: FEAT_ETE Enable Embedded Trace Extension +// CHECK-NEXT: FEAT_FCMA Enable Armv8.3-A Floating-point complex number support +// CHECK-NEXT: FEAT_FHM Enable FP16 FML instructions +// CHECK-NEXT: FEAT_FP Enable Armv8.0-A Floating Point Extensions +// CHECK-NEXT: FEAT_FP16 Enable half-precision floating-point data processing +// CHECK-NEXT: FEAT_FRINTTS Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int +// CHECK-NEXT: FEAT_FlagM Enable Armv8.4-A Flag Manipulation instructions +// CHECK-NEXT: FEAT_FlagM2 Enable alternative NZCV format for floating point comparisons +// CHECK-NEXT: FEAT_I8MM Enable Matrix Multiply Int8 Extension +// CHECK-NEXT: FEAT_JSCVT Enable Armv8.3-A JavaScript FP conversion instructions +// CHE
[clang] [llvm] [AArch64] Add optional extensions enabled on Grace (PR #127620)
ElvinaYakubova wrote: Thanks, addressed Dave's comment https://github.com/llvm/llvm-project/pull/127620 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [AArch64] Add optional extensions enabled on Grace (PR #127620)
https://github.com/ElvinaYakubova closed https://github.com/llvm/llvm-project/pull/127620 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [AArch64] Add optional extensions enabled on Grace (PR #127620)
https://github.com/ElvinaYakubova edited https://github.com/llvm/llvm-project/pull/127620 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [AArch64] Add optional extensions enabled on Grace (PR #127620)
https://github.com/ElvinaYakubova updated https://github.com/llvm/llvm-project/pull/127620 >From 4c29499a36117ab9681f99a16e017b33c2322317 Mon Sep 17 00:00:00 2001 From: Elvina Yakubova Date: Thu, 13 Feb 2025 05:45:21 -0800 Subject: [PATCH] [AArch64] Add optional extensions enabled on Grace Enable optional ISA extensions on Grace when mcpu=grace is used: aes, sha2, sve2-sm4, sve2-aes, sve2-sha3. Grace is no longer an alias, but a separate CPU definition. --- clang/test/Driver/aarch64-mcpu.c | 2 +- .../print-enabled-extensions/aarch64-grace.c | 62 +++ llvm/lib/Target/AArch64/AArch64Processors.td | 6 +- llvm/test/CodeGen/AArch64/cpus.ll | 1 + .../TargetParser/TargetParserTest.cpp | 2 +- 5 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 clang/test/Driver/print-enabled-extensions/aarch64-grace.c diff --git a/clang/test/Driver/aarch64-mcpu.c b/clang/test/Driver/aarch64-mcpu.c index 97303510d6881..447ee4bd3a6f9 100644 --- a/clang/test/Driver/aarch64-mcpu.c +++ b/clang/test/Driver/aarch64-mcpu.c @@ -92,7 +92,7 @@ // COBALT-100: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "neoverse-n2" // RUN: %clang --target=aarch64 -mcpu=grace -### -c %s 2>&1 | FileCheck -check-prefix=GRACE %s -// GRACE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "neoverse-v2" +// GRACE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "grace" // == Check whether -mcpu and -mtune accept mixed-case values. // RUN: %clang --target=aarch64 -mcpu=Cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CASE-INSENSITIVE-CA53 %s diff --git a/clang/test/Driver/print-enabled-extensions/aarch64-grace.c b/clang/test/Driver/print-enabled-extensions/aarch64-grace.c new file mode 100644 index 0..fde6aee468cdc --- /dev/null +++ b/clang/test/Driver/print-enabled-extensions/aarch64-grace.c @@ -0,0 +1,62 @@ +// REQUIRES: aarch64-registered-target +// RUN: %clang --target=aarch64 --print-enabled-extensions -mcpu=grace | FileCheck --strict-whitespace --implicit-check-not=FEAT_ %s + +// CHECK: Extensions enabled for the given AArch64 target +// CHECK-EMPTY: +// CHECK-NEXT: Architecture Feature(s) Description +// CHECK-NEXT: FEAT_AES, FEAT_PMULL Enable AES support +// CHECK-NEXT: FEAT_AMUv1 Enable Armv8.4-A Activity Monitors extension +// CHECK-NEXT: FEAT_AdvSIMD Enable Advanced SIMD instructions +// CHECK-NEXT: FEAT_BF16 Enable BFloat16 Extension +// CHECK-NEXT: FEAT_BTI Enable Branch Target Identification +// CHECK-NEXT: FEAT_CCIDX Enable Armv8.3-A Extend of the CCSIDR number of sets +// CHECK-NEXT: FEAT_CRC32 Enable Armv8.0-A CRC-32 checksum instructions +// CHECK-NEXT: FEAT_CSV2_2 Enable architectural speculation restriction +// CHECK-NEXT: FEAT_DIT Enable Armv8.4-A Data Independent Timing instructions +// CHECK-NEXT: FEAT_DPB Enable Armv8.2-A data Cache Clean to Point of Persistence +// CHECK-NEXT: FEAT_DPB2 Enable Armv8.5-A Cache Clean to Point of Deep Persistence +// CHECK-NEXT: FEAT_DotProd Enable dot product support +// CHECK-NEXT: FEAT_ETE Enable Embedded Trace Extension +// CHECK-NEXT: FEAT_FCMA Enable Armv8.3-A Floating-point complex number support +// CHECK-NEXT: FEAT_FHM Enable FP16 FML instructions +// CHECK-NEXT: FEAT_FP Enable Armv8.0-A Floating Point Extensions +// CHECK-NEXT: FEAT_FP16 Enable half-precision floating-point data processing +// CHECK-NEXT: FEAT_FRINTTS Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int +// CHECK-NEXT: FEAT_FlagM Enable Armv8.4-A Flag Manipulation instructions +// CHECK-NEXT: FEAT_FlagM2 Enable alternative NZCV format for floating point comparisons +// CHECK-NEXT: FEAT_I8MM Enable Matrix Multiply Int8 Extension +// CHECK-NEXT: FEAT_JSCVT Enable Armv8.3-A JavaScript FP conversion instructi
[clang] [llvm] [AArch64] Add optional extensions enabled on Grace (PR #127620)
@@ -944,6 +944,15 @@ def ProcessorFeatures { list Falkor = [HasV8_0aOps, FeatureCRC, FeatureSHA2, FeatureAES, FeatureFPARMv8, FeatureNEON, FeaturePerfMon, FeatureRDM]; + list Grace= [HasV9_0aOps, FeatureBF16, FeatureSPE, ElvinaYakubova wrote: Thanks a lot, it looks much better with !listconcat https://github.com/llvm/llvm-project/pull/127620 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [AArch64] Add optional extensions enabled on Grace (PR #127620)
https://github.com/ElvinaYakubova created https://github.com/llvm/llvm-project/pull/127620 Enable optional ISA extensions on Grace when mcpu=grace is used >From 9be1c6f17270507343e564afb21ffa49d84f2c58 Mon Sep 17 00:00:00 2001 From: Elvina Yakubova Date: Thu, 13 Feb 2025 05:45:21 -0800 Subject: [PATCH] [AArch64] Add optional extensions enabled on Grace Enable optional ISA extensions on Grace when mcpu=grace is used --- clang/test/Driver/aarch64-mcpu.c | 2 +- .../print-enabled-extensions/aarch64-grace.c | 63 +++ llvm/lib/Target/AArch64/AArch64Processors.td | 12 +++- llvm/test/CodeGen/AArch64/cpus.ll | 1 + .../TargetParser/TargetParserTest.cpp | 1 + 5 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 clang/test/Driver/print-enabled-extensions/aarch64-grace.c diff --git a/clang/test/Driver/aarch64-mcpu.c b/clang/test/Driver/aarch64-mcpu.c index 97303510d6881..447ee4bd3a6f9 100644 --- a/clang/test/Driver/aarch64-mcpu.c +++ b/clang/test/Driver/aarch64-mcpu.c @@ -92,7 +92,7 @@ // COBALT-100: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "neoverse-n2" // RUN: %clang --target=aarch64 -mcpu=grace -### -c %s 2>&1 | FileCheck -check-prefix=GRACE %s -// GRACE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "neoverse-v2" +// GRACE: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-cpu" "grace" // == Check whether -mcpu and -mtune accept mixed-case values. // RUN: %clang --target=aarch64 -mcpu=Cortex-a53 -### -c %s 2>&1 | FileCheck -check-prefix=CASE-INSENSITIVE-CA53 %s diff --git a/clang/test/Driver/print-enabled-extensions/aarch64-grace.c b/clang/test/Driver/print-enabled-extensions/aarch64-grace.c new file mode 100644 index 0..8fb9a21ac18d4 --- /dev/null +++ b/clang/test/Driver/print-enabled-extensions/aarch64-grace.c @@ -0,0 +1,63 @@ +// REQUIRES: aarch64-registered-target +// RUN: %clang --target=aarch64 --print-enabled-extensions -mcpu=grace | FileCheck --strict-whitespace --implicit-check-not=FEAT_ %s + +// CHECK: Extensions enabled for the given AArch64 target +// CHECK-EMPTY: +// CHECK-NEXT: Architecture Feature(s) Description +// CHECK-NEXT: FEAT_AES, FEAT_PMULL Enable AES support +// CHECK-NEXT: FEAT_AMUv1 Enable Armv8.4-A Activity Monitors extension +// CHECK-NEXT: FEAT_AdvSIMD Enable Advanced SIMD instructions +// CHECK-NEXT: FEAT_BF16 Enable BFloat16 Extension +// CHECK-NEXT: FEAT_BTI Enable Branch Target Identification +// CHECK-NEXT: FEAT_CCIDX Enable Armv8.3-A Extend of the CCSIDR number of sets +// CHECK-NEXT: FEAT_CRC32 Enable Armv8.0-A CRC-32 checksum instructions +// CHECK-NEXT: FEAT_CSV2_2 Enable architectural speculation restriction +// CHECK-NEXT: FEAT_Crypto Enable cryptographic instructions +// CHECK-NEXT: FEAT_DIT Enable Armv8.4-A Data Independent Timing instructions +// CHECK-NEXT: FEAT_DPB Enable Armv8.2-A data Cache Clean to Point of Persistence +// CHECK-NEXT: FEAT_DPB2 Enable Armv8.5-A Cache Clean to Point of Deep Persistence +// CHECK-NEXT: FEAT_DotProd Enable dot product support +// CHECK-NEXT: FEAT_ETE Enable Embedded Trace Extension +// CHECK-NEXT: FEAT_FCMA Enable Armv8.3-A Floating-point complex number support +// CHECK-NEXT: FEAT_FHM Enable FP16 FML instructions +// CHECK-NEXT: FEAT_FP Enable Armv8.0-A Floating Point Extensions +// CHECK-NEXT: FEAT_FP16 Enable half-precision floating-point data processing +// CHECK-NEXT: FEAT_FRINTTS Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int +// CHECK-NEXT: FEAT_FlagM Enable Armv8.4-A Flag Manipulation instructions +// CHECK-NEXT: FEAT_FlagM2 Enable alternative NZCV format for floating point comparisons +// CHECK-NEXT: FEAT_I8MM Enable Matrix Multiply Int8 Extension +// CHECK-NEXT: FEAT_JSCVT