19a827906SAndy Kaylor; Test upgrade of ptr.annotation intrinsics. 29a827906SAndy Kaylor; 3e114979dSAlex Richardson; RUN: llvm-as < %s | llvm-dis | FileCheck %s 49a827906SAndy Kaylor; RUN: llvm-dis < %s.bc | FileCheck %s 59a827906SAndy Kaylor 69a827906SAndy Kaylor; Unused return values 79a827906SAndy Kaylor; The arguments passed to the intrinisic wouldn't normally be arguments to 89a827906SAndy Kaylor; the function, but that makes it easier to test that they are handled 99a827906SAndy Kaylor; correctly. 109a827906SAndy Kaylordefine void @f1(i8* %arg0, i8* %arg1, i8* %arg2, i32 %arg3) { 11*e45cf479SNikita Popov;CHECK: @f1(ptr [[ARG0:%.*]], ptr [[ARG1:%.*]], ptr [[ARG2:%.*]], i32 [[ARG3:%.*]]) 129a827906SAndy Kaylor %t0 = call i8* @llvm.ptr.annotation.p0i8(i8* %arg0, i8* %arg1, i8* %arg2, i32 %arg3) 13*e45cf479SNikita Popov;CHECK: call ptr @llvm.ptr.annotation.p0.p0(ptr [[ARG0]], ptr [[ARG1]], ptr [[ARG2]], i32 [[ARG3]], ptr null) 149a827906SAndy Kaylor 159a827906SAndy Kaylor %arg0_p16 = bitcast i8* %arg0 to i16* 169a827906SAndy Kaylor %t1 = call i16* @llvm.ptr.annotation.p0i16(i16* %arg0_p16, i8* %arg1, i8* %arg2, i32 %arg3) 179a827906SAndy Kaylor;CHECK: [[ARG0_P16:%.*]] = bitcast 18*e45cf479SNikita Popov;CHECK: call ptr @llvm.ptr.annotation.p0.p0(ptr [[ARG0_P16]], ptr [[ARG1]], ptr [[ARG2]], i32 [[ARG3]], ptr null) 199a827906SAndy Kaylor 209a827906SAndy Kaylor %arg0_p256 = bitcast i8* %arg0 to i256* 219a827906SAndy Kaylor %t2 = call i256* @llvm.ptr.annotation.p0i256(i256* %arg0_p256, i8* %arg1, i8* %arg2, i32 %arg3) 229a827906SAndy Kaylor;CHECK: [[ARG0_P256:%.*]] = bitcast 23*e45cf479SNikita Popov;CHECK: call ptr @llvm.ptr.annotation.p0.p0(ptr [[ARG0_P256]], ptr [[ARG1]], ptr [[ARG2]], i32 [[ARG3]], ptr null) 249a827906SAndy Kaylor ret void 259a827906SAndy Kaylor} 269a827906SAndy Kaylor 279a827906SAndy Kaylor; Used return values 289a827906SAndy Kaylordefine i16* @f2(i16* %x, i16* %y) { 299a827906SAndy Kaylor %t0 = call i16* @llvm.ptr.annotation.p0i16(i16* %x, i8* undef, i8* undef, i32 undef) 309a827906SAndy Kaylor %t1 = call i16* @llvm.ptr.annotation.p0i16(i16* %y, i8* undef, i8* undef, i32 undef) 319a827906SAndy Kaylor %cmp = icmp ugt i16* %t0, %t1 329a827906SAndy Kaylor %sel = select i1 %cmp, i16* %t0, i16* %t1 339a827906SAndy Kaylor ret i16* %sel 34*e45cf479SNikita Popov; CHECK: [[T0:%.*]] = call ptr @llvm.ptr.annotation.p0.p0(ptr %x, ptr undef, ptr undef, i32 undef, ptr null) 35*e45cf479SNikita Popov; CHECK: [[T1:%.*]] = call ptr @llvm.ptr.annotation.p0.p0(ptr %y, ptr undef, ptr undef, i32 undef, ptr null) 36*e45cf479SNikita Popov; CHECK: %cmp = icmp ugt ptr [[T0]], [[T1]] 37*e45cf479SNikita Popov; CHECK: %sel = select i1 %cmp, ptr [[T0]], ptr [[T1]] 38*e45cf479SNikita Popov; CHECK: ret ptr %sel 399a827906SAndy Kaylor} 409a827906SAndy Kaylor 41*e45cf479SNikita Popov; CHECK: declare ptr @llvm.ptr.annotation.p0.p0(ptr, ptr, ptr, i32, ptr) 429a827906SAndy Kaylordeclare i8* @llvm.ptr.annotation.p0i8(i8*, i8*, i8*, i32) 439a827906SAndy Kaylordeclare i16* @llvm.ptr.annotation.p0i16(i16*, i8*, i8*, i32) 449a827906SAndy Kaylordeclare i256* @llvm.ptr.annotation.p0i256(i256*, i8*, i8*, i32) 45