summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/function-target-features.c
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2015-03-21 06:15:15 +0000
committerEric Christopher <echristo@gmail.com>2015-03-21 06:15:15 +0000
commitea00c2a06f5135b88c8331f35108d174d412725b (patch)
treed55a704a7b5f9c46af27cce8411b493072296bfa /clang/test/CodeGen/function-target-features.c
parentec6c06610fe41ee78261efc06ea86a8e87af12ed (diff)
downloadbcm5719-llvm-ea00c2a06f5135b88c8331f35108d174d412725b.tar.gz
bcm5719-llvm-ea00c2a06f5135b88c8331f35108d174d412725b.zip
Add CodeGen support for adding cpu attributes on functions based on
the target-cpu, if different from the triple's cpu, and target-features as they're written that are passed down from the driver. Together with LLVM r232885 this should allow the LTO'ing of binaries that contain modules compiled with different code generation options on a subset of architectures with full backend support (x86, powerpc, aarch64). llvm-svn: 232888
Diffstat (limited to 'clang/test/CodeGen/function-target-features.c')
-rw-r--r--clang/test/CodeGen/function-target-features.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/clang/test/CodeGen/function-target-features.c b/clang/test/CodeGen/function-target-features.c
new file mode 100644
index 00000000000..5665b1f841f
--- /dev/null
+++ b/clang/test/CodeGen/function-target-features.c
@@ -0,0 +1,21 @@
+// This test verifies that we produce target-cpu and target-features attributes
+// on functions when they're different from the standard cpu and have written
+// features.
+
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-feature +avx | FileCheck %s -check-prefix=AVX-FEATURE
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-feature +avx | FileCheck %s -check-prefix=AVX-NO-CPU
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-feature +avx512f -target-feature +avx512er | FileCheck %s -check-prefix=TWO-AVX
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-cpu corei7 | FileCheck %s -check-prefix=CORE-CPU
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-cpu corei7 -target-feature +avx | FileCheck %s -check-prefix=CORE-CPU-AND-FEATURES
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-cpu x86-64 | FileCheck %s -check-prefix=X86-64-CPU-NOT
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s -target-cpu corei7-avx -target-feature -avx | FileCheck %s -check-prefix=AVX-MINUS-FEATURE
+
+void foo() {}
+
+// AVX-FEATURE: "target-features"="+avx"
+// AVX-NO-CPU-NOT: target-cpu
+// TWO-AVX: "target-features"="+avx512f,+avx512er"
+// CORE-CPU: "target-cpu"="corei7"
+// CORE-CPU-AND-FEATURES: "target-cpu"="corei7" "target-features"="+avx"
+// X86-64-CPU-NOT: "target-cpu"
+// AVX-MINUS-FEATURE: "target-features"="-avx"
OpenPOWER on IntegriCloud