summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/lwp-builtins.c
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2017-05-08 12:09:45 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2017-05-08 12:09:45 +0000
commit3511348dbbcccbebe64d77488cc4d3689a2bdce9 (patch)
treeee0eec248d965f9512536a78cee625824dc7b5cc /clang/test/CodeGen/lwp-builtins.c
parentf5ca255d18359bb9fc3c2ddd54b0ed2ee2bdc0a6 (diff)
downloadbcm5719-llvm-3511348dbbcccbebe64d77488cc4d3689a2bdce9.tar.gz
bcm5719-llvm-3511348dbbcccbebe64d77488cc4d3689a2bdce9.zip
[X86][LWP] Add clang support for LWP instructions.
This patch adds support for the the LightWeight Profiling (LWP) instructions which are available on all AMD Bulldozer class CPUs (bdver1 to bdver4). Differential Revision: https://reviews.llvm.org/D32770 llvm-svn: 302418
Diffstat (limited to 'clang/test/CodeGen/lwp-builtins.c')
-rw-r--r--clang/test/CodeGen/lwp-builtins.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/clang/test/CodeGen/lwp-builtins.c b/clang/test/CodeGen/lwp-builtins.c
new file mode 100644
index 00000000000..c689c3974d4
--- /dev/null
+++ b/clang/test/CodeGen/lwp-builtins.c
@@ -0,0 +1,39 @@
+// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +lwp -emit-llvm -o - -Wall -Werror | FileCheck %s
+
+#include <x86intrin.h>
+
+void test_llwpcb(void *ptr) {
+ // CHECK-LABEL: @test_llwpcb
+ // CHECK: call void @llvm.x86.llwpcb(i8* %{{.*}})
+ __llwpcb(ptr);
+}
+
+void* test_slwpcb() {
+ // CHECK-LABEL: @test_slwpcb
+ // CHECK: call i8* @llvm.x86.slwpcb()
+ return __slwpcb();
+}
+
+unsigned char test_lwpins32(unsigned val2, unsigned val1) {
+ // CHECK-LABEL: @test_lwpins32
+ // CHECK: call i8 @llvm.x86.lwpins32(i32
+ return __lwpins32(val2, val1, 0x01234);
+}
+
+unsigned char test_lwpins64(unsigned long long val2, unsigned val1) {
+ // CHECK-LABEL: @test_lwpins64
+ // CHECK: call i8 @llvm.x86.lwpins64(i64
+ return __lwpins64(val2, val1, 0x56789);
+}
+
+void test_lwpval32(unsigned val2, unsigned val1) {
+ // CHECK-LABEL: @test_lwpval32
+ // CHECK: call void @llvm.x86.lwpval32(i32
+ __lwpval32(val2, val1, 0x01234);
+}
+
+void test_lwpval64(unsigned long long val2, unsigned val1) {
+ // CHECK-LABEL: @test_lwpval64
+ // CHECK: call void @llvm.x86.lwpval64(i64
+ __lwpval64(val2, val1, 0xABCDEF);
+}
OpenPOWER on IntegriCloud