1; RUN: not opt -verify < %s 2>&1 | FileCheck %s 2 3define 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) 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) 11 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) 16 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) 21 22 ret void 23} 24declare void @llvm.memcpy.element.unordered.atomic.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32) nounwind 25 26define 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) 31 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) 34 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) 39 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) 44 45 ret void 46} 47declare void @llvm.memmove.element.unordered.atomic.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32) nounwind 48 49define 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) 54 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) 57 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) 62 63 ret void 64} 65declare void @llvm.memset.element.unordered.atomic.p0i8.i32(i8* nocapture, i8, i32, i32) nounwind 66 67; CHECK: input module is broken! 68