blob: 470c861c50573d3f19b601b99fa9adb8dc58bd12 [file] [log] [blame]
Igor Laevsky4f31e522016-12-29 14:31:07 +00001; RUN: not opt -verify < %s 2>&1 | FileCheck %s
2
Daniel Neilson3faabbb2017-06-16 14:43:59 +00003define void @test_memcpy(i8* %P, i8* %Q, i32 %A, i32 %E) {
4 ; CHECK: element size of the element-wise unordered atomic memory intrinsic must be a constant int
5 call void @llvm.memcpy.element.unordered.atomic.p0i8.p0i8.i32(i8* align 4 %P, i8* align 4 %Q, i32 1, i32 %E)
Igor Laevsky4f31e522016-12-29 14:31:07 +00006 ; CHECK: element size of the element-wise atomic memory intrinsic must be a power of 2
Daniel Neilson3faabbb2017-06-16 14:43:59 +00007 call void @llvm.memcpy.element.unordered.atomic.p0i8.p0i8.i32(i8* align 4 %P, i8* align 4 %Q, i32 1, i32 3)
8
9 ; CHECK: constant length must be a multiple of the element size in the element-wise atomic memory intrinsic
10 call void @llvm.memcpy.element.unordered.atomic.p0i8.p0i8.i32(i8* align 4 %P, i8* align 4 %Q, i32 7, i32 4)
Igor Laevsky4f31e522016-12-29 14:31:07 +000011
12 ; CHECK: incorrect alignment of the destination argument
Daniel Neilson3faabbb2017-06-16 14:43:59 +000013 call void @llvm.memcpy.element.unordered.atomic.p0i8.p0i8.i32(i8* %P, i8* align 4 %Q, i32 1, i32 1)
14 ; CHECK: incorrect alignment of the destination argument
15 call void @llvm.memcpy.element.unordered.atomic.p0i8.p0i8.i32(i8* align 1 %P, i8* align 4 %Q, i32 4, i32 4)
Igor Laevsky4f31e522016-12-29 14:31:07 +000016
17 ; CHECK: incorrect alignment of the source argument
Daniel Neilson3faabbb2017-06-16 14:43:59 +000018 call void @llvm.memcpy.element.unordered.atomic.p0i8.p0i8.i32(i8* align 4 %P, i8* %Q, i32 1, i32 1)
19 ; CHECK: incorrect alignment of the source argument
20 call void @llvm.memcpy.element.unordered.atomic.p0i8.p0i8.i32(i8* align 4 %P, i8* align 1 %Q, i32 4, i32 4)
Igor Laevsky4f31e522016-12-29 14:31:07 +000021
22 ret void
23}
Daniel Neilson3faabbb2017-06-16 14:43:59 +000024declare void @llvm.memcpy.element.unordered.atomic.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32) nounwind
Igor Laevsky4f31e522016-12-29 14:31:07 +000025; CHECK: input module is broken!