xref: /llvm-project/llvm/test/Transforms/InferAddressSpaces/AMDGPU/is.constant.ll (revision 2ef553c05ffe274d6910e3d11f52ed6417cc5061)
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