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