llvm-project/clang/test/CodeGen/lwp-builtins.c
Simon Pilgrim 3511348dbb [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
2017-05-08 12:09:45 +00:00

40 lines
1.1 KiB
C

// 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);
}