1; RUN: not llvm-as < %s 2>&1 | FileCheck %s 2 3target datalayout = "p1:64:64:64:32" 4 5declare float @llvm.ptrmask.f32.i64(float, i64) 6declare ptr @llvm.ptrmask.p0.v4i64(ptr, <4 x i64>) 7declare <2 x ptr> @llvm.ptrmask.v2p0.i64(<2 x ptr>, i64) 8declare <2 x ptr> @llvm.ptrmask.v2p0.v4i64(<2 x ptr>, <4 x i64>) 9declare ptr @llvm.ptrmask.p0.i32(ptr, i32) 10declare ptr addrspace(1) @llvm.ptrmask.p1.i64(ptr addrspace(1), i64) 11 12; CHECK: llvm.ptrmask intrinsic first argument must be pointer or vector of pointers 13; CHECK-NEXT: %1 = call float @llvm.ptrmask.f32.i64(float 0.000000e+00, i64 0) 14define void @not_ptr() { 15 call float @llvm.ptrmask.f32.i64(float 0.0, i64 0) 16 ret void 17} 18 19; CHECK: llvm.ptrmask intrinsic arguments must be both scalars or both vectors 20; CHECK: %1 = call ptr @llvm.ptrmask.p0.v4i64(ptr null, <4 x i64> zeroinitializer) 21define void @scalar_vector_mismatch_1() { 22 call ptr @llvm.ptrmask.p0.v4i64(ptr null, <4 x i64> zeroinitializer) 23 ret void 24} 25 26; CHECK: llvm.ptrmask intrinsic arguments must be both scalars or both vectors 27; CHECK: %1 = call <2 x ptr> @llvm.ptrmask.v2p0.i64(<2 x ptr> zeroinitializer, i64 0) 28define void @scalar_vector_mismatch_2() { 29 call <2 x ptr> @llvm.ptrmask.v2p0.i64(<2 x ptr> zeroinitializer, i64 0) 30 ret void 31} 32 33; CHECK: llvm.ptrmask intrinsic arguments must have the same number of elements 34; CHECK: %1 = call <2 x ptr> @llvm.ptrmask.v2p0.v4i64(<2 x ptr> zeroinitializer, <4 x i64> zeroinitializer) 35define void @vector_size_mismatch() { 36 call <2 x ptr> @llvm.ptrmask.v2p0.v4i64(<2 x ptr> zeroinitializer, <4 x i64> zeroinitializer) 37 ret void 38} 39 40; CHECK: llvm.ptrmask intrinsic second argument bitwidth must match pointer index type size of first argument 41; CHECK: %1 = call ptr @llvm.ptrmask.p0.i32(ptr null, i32 0) 42define void @wrong_size_1() { 43 call ptr @llvm.ptrmask.p0.i32(ptr null, i32 0) 44 ret void 45} 46 47; CHECK: llvm.ptrmask intrinsic second argument bitwidth must match pointer index type size of first argument 48; CHECK: %1 = call ptr addrspace(1) @llvm.ptrmask.p1.i64(ptr addrspace(1) null, i64 0) 49define void @wrong_size_2() { 50 call ptr addrspace(1) @llvm.ptrmask.p1.i64(ptr addrspace(1) null, i64 0) 51 ret void 52} 53