summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorEli Bendersky <eliben@google.com>2015-07-10 15:40:33 +0000
committerEli Bendersky <eliben@google.com>2015-07-10 15:40:33 +0000
commit5c0039a0142d4f99c5f8cf4162018eb2d5414572 (patch)
treea8e61c7f63e0b13d08e183a4d6c65be8a760ebeb /llvm/test
parentd9e4b4ff36abdd513c0fd246f98abef8094fe114 (diff)
downloadbcm5719-llvm-5c0039a0142d4f99c5f8cf4162018eb2d5414572.tar.gz
bcm5719-llvm-5c0039a0142d4f99c5f8cf4162018eb2d5414572.zip
Actually support volatile memcpys in NVPTX lowering
Differential Revision: http://reviews.llvm.org/D11091 llvm-svn: 241914
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/NVPTX/lower-aggr-copies.ll13
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/NVPTX/lower-aggr-copies.ll b/llvm/test/CodeGen/NVPTX/lower-aggr-copies.ll
index ff706b5df25..c3adfc4646c 100644
--- a/llvm/test/CodeGen/NVPTX/lower-aggr-copies.ll
+++ b/llvm/test/CodeGen/NVPTX/lower-aggr-copies.ll
@@ -19,6 +19,19 @@ entry:
; CHECK-NEXT: @%p[[PRED]] bra LBB[[LABEL]]
}
+define i8* @memcpy_volatile_caller(i8* %dst, i8* %src, i64 %n) #0 {
+entry:
+ tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* %dst, i8* %src, i64 %n, i32 1, i1 true)
+ ret i8* %dst
+; CHECK-LABEL: .visible .func (.param .b32 func_retval0) memcpy_volatile_caller
+; CHECK: LBB[[LABEL:[_0-9]+]]:
+; CHECK: ld.volatile.u8 %rs[[REG:[0-9]+]]
+; CHECK: st.volatile.u8 [%r{{[0-9]+}}], %rs[[REG]]
+; CHECK: add.s64 %rd[[COUNTER:[0-9]+]], %rd[[COUNTER]], 1
+; CHECK-NEXT: setp.lt.u64 %p[[PRED:[0-9]+]], %rd[[COUNTER]], %rd
+; CHECK-NEXT: @%p[[PRED]] bra LBB[[LABEL]]
+}
+
define i8* @memset_caller(i8* %dst, i32 %c, i64 %n) #0 {
entry:
%0 = trunc i32 %c to i8
OpenPOWER on IntegriCloud