1*2ef553c0SMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 2*2ef553c0SMatt Arsenault; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=infer-address-spaces %s | FileCheck %s 3*2ef553c0SMatt Arsenault 4*2ef553c0SMatt Arsenaultdefine i1 @is_constant_global_to_flat(ptr addrspace(1) %ptr) { 5*2ef553c0SMatt Arsenault; CHECK-LABEL: define i1 @is_constant_global_to_flat( 6*2ef553c0SMatt Arsenault; CHECK-SAME: ptr addrspace(1) [[PTR:%.*]]) { 7*2ef553c0SMatt Arsenault; CHECK-NEXT: [[RET:%.*]] = call i1 @llvm.is.constant.p1(ptr addrspace(1) [[PTR]]) 8*2ef553c0SMatt Arsenault; CHECK-NEXT: ret i1 [[RET]] 9*2ef553c0SMatt Arsenault; 10*2ef553c0SMatt Arsenault %cast = addrspacecast ptr addrspace(1) %ptr to ptr 11*2ef553c0SMatt Arsenault %ret = call i1 @llvm.is.constant.p0(ptr %cast) 12*2ef553c0SMatt Arsenault ret i1 %ret 13*2ef553c0SMatt Arsenault} 14*2ef553c0SMatt Arsenault 15*2ef553c0SMatt Arsenaultdefine i1 @is_constant_local_to_flat(ptr addrspace(3) %ptr) { 16*2ef553c0SMatt Arsenault; CHECK-LABEL: define i1 @is_constant_local_to_flat( 17*2ef553c0SMatt Arsenault; CHECK-SAME: ptr addrspace(3) [[PTR:%.*]]) { 18*2ef553c0SMatt Arsenault; CHECK-NEXT: [[RET:%.*]] = call i1 @llvm.is.constant.p3(ptr addrspace(3) [[PTR]]) 19*2ef553c0SMatt Arsenault; CHECK-NEXT: ret i1 [[RET]] 20*2ef553c0SMatt Arsenault; 21*2ef553c0SMatt Arsenault %cast = addrspacecast ptr addrspace(3) %ptr to ptr 22*2ef553c0SMatt Arsenault %ret = call i1 @llvm.is.constant.p0(ptr %cast) 23*2ef553c0SMatt Arsenault ret i1 %ret 24*2ef553c0SMatt Arsenault} 25*2ef553c0SMatt Arsenault 26*2ef553c0SMatt Arsenaultdefine i1 @is_constant_private_to_flat(ptr addrspace(5) %ptr) { 27*2ef553c0SMatt Arsenault; CHECK-LABEL: define i1 @is_constant_private_to_flat( 28*2ef553c0SMatt Arsenault; CHECK-SAME: ptr addrspace(5) [[PTR:%.*]]) { 29*2ef553c0SMatt Arsenault; CHECK-NEXT: [[RET:%.*]] = call i1 @llvm.is.constant.p5(ptr addrspace(5) [[PTR]]) 30*2ef553c0SMatt Arsenault; CHECK-NEXT: ret i1 [[RET]] 31*2ef553c0SMatt Arsenault; 32*2ef553c0SMatt Arsenault %cast = addrspacecast ptr addrspace(5) %ptr to ptr 33*2ef553c0SMatt Arsenault %ret = call i1 @llvm.is.constant.p0(ptr %cast) 34*2ef553c0SMatt Arsenault ret i1 %ret 35*2ef553c0SMatt Arsenault} 36*2ef553c0SMatt Arsenault 37*2ef553c0SMatt Arsenaultdefine i1 @is_constant_private_to_flat_v2(<2 x ptr addrspace(5)> %ptr) { 38*2ef553c0SMatt Arsenault; CHECK-LABEL: define i1 @is_constant_private_to_flat_v2( 39*2ef553c0SMatt Arsenault; CHECK-SAME: <2 x ptr addrspace(5)> [[PTR:%.*]]) { 40*2ef553c0SMatt Arsenault; CHECK-NEXT: [[RET:%.*]] = call i1 @llvm.is.constant.v2p5(<2 x ptr addrspace(5)> [[PTR]]) 41*2ef553c0SMatt Arsenault; CHECK-NEXT: ret i1 [[RET]] 42*2ef553c0SMatt Arsenault; 43*2ef553c0SMatt Arsenault %cast = addrspacecast <2 x ptr addrspace(5)> %ptr to <2 x ptr> 44*2ef553c0SMatt Arsenault %ret = call i1 @llvm.is.constant.v2p0(<2 x ptr> %cast) 45*2ef553c0SMatt Arsenault ret i1 %ret 46*2ef553c0SMatt Arsenault} 47*2ef553c0SMatt Arsenault 48*2ef553c0SMatt Arsenaultdefine i1 @is_constant_i32(i32 %val) { 49*2ef553c0SMatt Arsenault; CHECK-LABEL: define i1 @is_constant_i32( 50*2ef553c0SMatt Arsenault; CHECK-SAME: i32 [[VAL:%.*]]) { 51*2ef553c0SMatt Arsenault; CHECK-NEXT: [[RET:%.*]] = call i1 @llvm.is.constant.i32(i32 [[VAL]]) 52*2ef553c0SMatt Arsenault; CHECK-NEXT: ret i1 [[RET]] 53*2ef553c0SMatt Arsenault; 54*2ef553c0SMatt Arsenault %ret = call i1 @llvm.is.constant.i32(i32 %val) 55*2ef553c0SMatt Arsenault ret i1 %ret 56*2ef553c0SMatt Arsenault} 57