xref: /llvm-project/llvm/test/CodeGen/AMDGPU/aa-points-to-constant-memory.ll (revision d85e849ff4d5e03ed83ee10e56074f238ba444d3)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -mtriple=amdgcn-amd-amdhsa -S -amdgpu-aa-wrapper -amdgpu-aa -instcombine -o - %s | FileCheck %s
3;
4; Test AA::pointsToConstantMemory implementation. These should mostly
5; turn out to be stores to constant memory, and will therefore be
6; deleted as UB.
7
8define void @test_constant_addrspace(ptr addrspace(4) %p) {
9; CHECK-LABEL: @test_constant_addrspace(
10; CHECK-NEXT:    ret void
11;
12  store i8 0, ptr addrspace(4) %p
13  ret void
14}
15
16define void @test_constant32bit_addrspace(ptr addrspace(6) %p) {
17; CHECK-LABEL: @test_constant32bit_addrspace(
18; CHECK-NEXT:    ret void
19;
20  store i8 0, ptr addrspace(6) %p
21  ret void
22}
23
24define void @test_cast_generic_from_constant_addrspace(ptr addrspace(4) %p) {
25; CHECK-LABEL: @test_cast_generic_from_constant_addrspace(
26; CHECK-NEXT:    ret void
27;
28  %cast = addrspacecast ptr addrspace(4) %p to ptr
29  store i8 0, ptr %cast
30  ret void
31}
32
33define void @test_cast_generic_from_constant32bit_addrspace(ptr addrspace(6) %p) {
34; CHECK-LABEL: @test_cast_generic_from_constant32bit_addrspace(
35; CHECK-NEXT:    ret void
36;
37  %cast = addrspacecast ptr addrspace(6) %p to ptr
38  store i8 0, ptr %cast
39  ret void
40}
41
42define void @test_cast_generic_to_constant_addrspace(ptr %p) {
43; CHECK-LABEL: @test_cast_generic_to_constant_addrspace(
44; CHECK-NEXT:    ret void
45;
46  %cast = addrspacecast ptr %p to ptr addrspace(4)
47  store i8 0, ptr addrspace(4) %cast
48  ret void
49}
50
51define void @test_cast_generic_to_constant32bit_addrspace(ptr %p) {
52; CHECK-LABEL: @test_cast_generic_to_constant32bit_addrspace(
53; CHECK-NEXT:    ret void
54;
55  %cast = addrspacecast ptr %p to ptr addrspace(6)
56  store i8 0, ptr addrspace(6) %cast
57  ret void
58}
59
60define amdgpu_kernel void @noalias_readnone_global_kernarg(ptr addrspace(1) noalias readnone %arg) {
61; CHECK-LABEL: @noalias_readnone_global_kernarg(
62; CHECK-NEXT:    ret void
63;
64  store i32 0, ptr addrspace(1) %arg
65  ret void
66}
67
68define amdgpu_kernel void @noalias_readonly_global_kernarg(ptr addrspace(1) noalias readonly %arg) {
69; CHECK-LABEL: @noalias_readonly_global_kernarg(
70; CHECK-NEXT:    ret void
71;
72  store i32 0, ptr addrspace(1) %arg
73  ret void
74}
75
76define amdgpu_kernel void @readnone_global_kernarg(ptr addrspace(1) readnone %arg) {
77; CHECK-LABEL: @readnone_global_kernarg(
78; CHECK-NEXT:    store i32 0, ptr addrspace(1) [[ARG:%.*]], align 4
79; CHECK-NEXT:    ret void
80;
81  store i32 0, ptr addrspace(1) %arg
82  ret void
83}
84
85define amdgpu_kernel void @readonly_global_kernarg(ptr addrspace(1) readonly %arg) {
86; CHECK-LABEL: @readonly_global_kernarg(
87; CHECK-NEXT:    store i32 0, ptr addrspace(1) [[ARG:%.*]], align 4
88; CHECK-NEXT:    ret void
89;
90  store i32 0, ptr addrspace(1) %arg
91  ret void
92}
93
94@global_as_constant = external addrspace(1) constant i32, align 4
95
96define amdgpu_kernel void @constant_gv_global_as() {
97; CHECK-LABEL: @constant_gv_global_as(
98; CHECK-NEXT:    ret void
99;
100  store i32 0, ptr addrspace(1) @global_as_constant
101  ret void
102}
103
104@global_nonconstant_constant_as = external addrspace(4) global i32, align 4
105
106define amdgpu_kernel void @nonconst_gv_constant_as() {
107; CHECK-LABEL: @nonconst_gv_constant_as(
108; CHECK-NEXT:    ret void
109;
110  store i32 0, ptr addrspace(4) @global_nonconstant_constant_as
111  ret void
112}
113