diff options
author | Igor Laevsky <igmyrj@gmail.com> | 2016-12-29 14:31:07 +0000 |
---|---|---|
committer | Igor Laevsky <igmyrj@gmail.com> | 2016-12-29 14:31:07 +0000 |
commit | f755153552bdb5350a4bd072cd6bccf1f3379424 (patch) | |
tree | 2a04679029ec2c25cd5b932963316a337e6e5653 /test/Verifier | |
parent | f05137f8f8fb80f74364731efc9c98315c39dcf6 (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.ll | 17 |
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! |