diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-05-08 12:09:45 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-05-08 12:09:45 +0000 |
commit | 3511348dbbcccbebe64d77488cc4d3689a2bdce9 (patch) | |
tree | ee0eec248d965f9512536a78cee625824dc7b5cc /clang/test/CodeGen/lwp-builtins.c | |
parent | f5ca255d18359bb9fc3c2ddd54b0ed2ee2bdc0a6 (diff) | |
download | bcm5719-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.c | 39 |
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); +} |