summaryrefslogtreecommitdiffstats
path: root/test/Verifier
diff options
context:
space:
mode:
authorIgor Laevsky <igmyrj@gmail.com>2016-12-29 14:31:07 +0000
committerIgor Laevsky <igmyrj@gmail.com>2016-12-29 14:31:07 +0000
commitf755153552bdb5350a4bd072cd6bccf1f3379424 (patch)
tree2a04679029ec2c25cd5b932963316a337e6e5653 /test/Verifier
parentf05137f8f8fb80f74364731efc9c98315c39dcf6 (diff)
Introduce element-wise atomic memcpy intrinsic
This change adds a new intrinsic which is intended to provide memcpy functionality with additional atomicity guarantees. Please refer to the review thread or language reference for further details. Differential Revision: https://reviews.llvm.org/D27133 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@290708 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Verifier')
-rw-r--r--test/Verifier/element-wise-atomic-memory-intrinsics.ll17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/Verifier/element-wise-atomic-memory-intrinsics.ll b/test/Verifier/element-wise-atomic-memory-intrinsics.ll
new file mode 100644
index 000000000000..5690cd721407
--- /dev/null
+++ b/test/Verifier/element-wise-atomic-memory-intrinsics.ll
@@ -0,0 +1,17 @@
+; RUN: not opt -verify < %s 2>&1 | FileCheck %s
+
+define void @test_memcpy(i8* %P, i8* %Q) {
+ ; CHECK: element size of the element-wise atomic memory intrinsic must be a power of 2
+ call void @llvm.memcpy.element.atomic.p0i8.p0i8(i8* align 2 %P, i8* align 2 %Q, i64 4, i32 3)
+
+ ; CHECK: incorrect alignment of the destination argument
+ call void @llvm.memcpy.element.atomic.p0i8.p0i8(i8* align 2 %P, i8* align 4 %Q, i64 4, i32 4)
+
+ ; CHECK: incorrect alignment of the source argument
+ call void @llvm.memcpy.element.atomic.p0i8.p0i8(i8* align 4 %P, i8* align 2 %Q, i64 4, i32 4)
+
+ ret void
+}
+declare void @llvm.memcpy.element.atomic.p0i8.p0i8(i8* nocapture, i8* nocapture, i64, i32) nounwind
+
+; CHECK: input module is broken!