summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2011-10-31 02:15:47 +0000
committerCraig Topper <craig.topper@gmail.com>2011-10-31 02:15:47 +0000
commit593c1d9761b8b9710503d4fed284261b32304eea (patch)
treeee6b9c0876b91ccc40b60ee10a17f1b0dbab5276
parent6b1c5fc02a2c68397fd9fb79f4643e9020e829a8 (diff)
downloadllvm-593c1d9761b8b9710503d4fed284261b32304eea.tar.gz
llvm-593c1d9761b8b9710503d4fed284261b32304eea.tar.bz2
llvm-593c1d9761b8b9710503d4fed284261b32304eea.tar.xz
Test case for X86 FS/GS Base intrinsics
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143332 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/CodeGen/X86/fsgsbase.ll57
1 files changed, 57 insertions, 0 deletions
diff --git a/test/CodeGen/X86/fsgsbase.ll b/test/CodeGen/X86/fsgsbase.ll
new file mode 100644
index 0000000000..0c22e3c7db
--- /dev/null
+++ b/test/CodeGen/X86/fsgsbase.ll
@@ -0,0 +1,57 @@
+; RUN: llc < %s -mtriple=x86_64-apple-darwin -march=x86-64 -mcpu=core-avx-i -mattr=fsgsbase | FileCheck %s
+
+define i32 @test_x86_rdfsbase_32() {
+ ; CHECK: rdfsbasel
+ %res = call i32 @llvm.x86.rdfsbase.32()
+ ret i32 %res
+}
+declare i32 @llvm.x86.rdfsbase.32() nounwind readnone
+
+define i32 @test_x86_rdgsbase_32() {
+ ; CHECK: rdgsbasel
+ %res = call i32 @llvm.x86.rdgsbase.32()
+ ret i32 %res
+}
+declare i32 @llvm.x86.rdgsbase.32() nounwind readnone
+
+define i64 @test_x86_rdfsbase_64() {
+ ; CHECK: rdfsbaseq
+ %res = call i64 @llvm.x86.rdfsbase.64()
+ ret i64 %res
+}
+declare i64 @llvm.x86.rdfsbase.64() nounwind readnone
+
+define i64 @test_x86_rdgsbase_64() {
+ ; CHECK: rdgsbaseq
+ %res = call i64 @llvm.x86.rdgsbase.64()
+ ret i64 %res
+}
+declare i64 @llvm.x86.rdgsbase.64() nounwind readnone
+
+define void @test_x86_wrfsbase_32(i32 %x) {
+ ; CHECK: wrfsbasel
+ call void @llvm.x86.wrfsbase.32(i32 %x)
+ ret void
+}
+declare void @llvm.x86.wrfsbase.32(i32) nounwind readnone
+
+define void @test_x86_wrgsbase_32(i32 %x) {
+ ; CHECK: wrgsbasel
+ call void @llvm.x86.wrgsbase.32(i32 %x)
+ ret void
+}
+declare void @llvm.x86.wrgsbase.32(i32) nounwind readnone
+
+define void @test_x86_wrfsbase_64(i64 %x) {
+ ; CHECK: wrfsbaseq
+ call void @llvm.x86.wrfsbase.64(i64 %x)
+ ret void
+}
+declare void @llvm.x86.wrfsbase.64(i64) nounwind readnone
+
+define void @test_x86_wrgsbase_64(i64 %x) {
+ ; CHECK: wrgsbaseq
+ call void @llvm.x86.wrgsbase.64(i64 %x)
+ ret void
+}
+declare void @llvm.x86.wrgsbase.64(i64) nounwind readnone