1 ; RUN: not opt -verify < %s 2>&1 | FileCheck %s
3 define 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)
6 ; CHECK: element size of the element-wise atomic memory intrinsic must be a power of 2
7 call void @llvm.memcpy.element.unordered.atomic.p0i8.p0i8.i32(i8* align 4 %P, i8* align 4 %Q, i32 1, i32 3)
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)
12 ; CHECK: incorrect alignment of the destination argument
13 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)
17 ; CHECK: incorrect alignment of the source argument
18 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)
24 declare void @llvm.memcpy.element.unordered.atomic.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32) nounwind
26 define void @test_memmove(i8* %P, i8* %Q, i32 %A, i32 %E) {
27 ; CHECK: element size of the element-wise unordered atomic memory intrinsic must be a constant int
28 call void @llvm.memmove.element.unordered.atomic.p0i8.p0i8.i32(i8* align 4 %P, i8* align 4 %Q, i32 1, i32 %E)
29 ; CHECK: element size of the element-wise atomic memory intrinsic must be a power of 2
30 call void @llvm.memmove.element.unordered.atomic.p0i8.p0i8.i32(i8* align 4 %P, i8* align 4 %Q, i32 1, i32 3)
32 ; CHECK: constant length must be a multiple of the element size in the element-wise atomic memory intrinsic
33 call void @llvm.memmove.element.unordered.atomic.p0i8.p0i8.i32(i8* align 4 %P, i8* align 4 %Q, i32 7, i32 4)
35 ; CHECK: incorrect alignment of the destination argument
36 call void @llvm.memmove.element.unordered.atomic.p0i8.p0i8.i32(i8* %P, i8* align 4 %Q, i32 1, i32 1)
37 ; CHECK: incorrect alignment of the destination argument
38 call void @llvm.memmove.element.unordered.atomic.p0i8.p0i8.i32(i8* align 1 %P, i8* align 4 %Q, i32 4, i32 4)
40 ; CHECK: incorrect alignment of the source argument
41 call void @llvm.memmove.element.unordered.atomic.p0i8.p0i8.i32(i8* align 4 %P, i8* %Q, i32 1, i32 1)
42 ; CHECK: incorrect alignment of the source argument
43 call void @llvm.memmove.element.unordered.atomic.p0i8.p0i8.i32(i8* align 4 %P, i8* align 1 %Q, i32 4, i32 4)
47 declare void @llvm.memmove.element.unordered.atomic.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32) nounwind
49 define void @test_memset(i8* %P, i8 %V, i32 %A, i32 %E) {
50 ; CHECK: element size of the element-wise unordered atomic memory intrinsic must be a constant int
51 call void @llvm.memset.element.unordered.atomic.p0i8.i32(i8* align 4 %P, i8 %V, i32 1, i32 %E)
52 ; CHECK: element size of the element-wise atomic memory intrinsic must be a power of 2
53 call void @llvm.memset.element.unordered.atomic.p0i8.i32(i8* align 4 %P, i8 %V, i32 1, i32 3)
55 ; CHECK: constant length must be a multiple of the element size in the element-wise atomic memory intrinsic
56 call void @llvm.memset.element.unordered.atomic.p0i8.i32(i8* align 4 %P, i8 %V, i32 7, i32 4)
58 ; CHECK: incorrect alignment of the destination argument
59 call void @llvm.memset.element.unordered.atomic.p0i8.i32(i8* %P, i8 %V, i32 1, i32 1)
60 ; CHECK: incorrect alignment of the destination argument
61 call void @llvm.memset.element.unordered.atomic.p0i8.i32(i8* align 1 %P, i8 %V, i32 4, i32 4)
65 declare void @llvm.memset.element.unordered.atomic.p0i8.i32(i8* nocapture, i8, i32, i32) nounwind
67 ; CHECK: input module is broken!