119155234SArthur Eubanks; RUN: opt -mtriple=amdgcn-- -data-layout=A5 -passes=aa-eval -aa-pipeline=amdgpu-aa -print-all-alias-modref-info -disable-output < %s 2>&1 | FileCheck %s
219155234SArthur Eubanks; RUN: opt -mtriple=r600-- -data-layout=A5 -passes=aa-eval -aa-pipeline=amdgpu-aa -print-all-alias-modref-info -disable-output < %s 2>&1 | FileCheck %s
3a27b2cacSStanislav Mekhanoshin
4*57d57b1aSNikita Popov; CHECK-LABEL: Function: test
5*57d57b1aSNikita Popov; CHECK: NoAlias:      i8 addrspace(5)* %p, i8 addrspace(1)* %p1
6a27b2cacSStanislav Mekhanoshin
72a22c5deSYaxun Liudefine void @test(i8 addrspace(5)* %p, i8 addrspace(1)* %p1) {
8*57d57b1aSNikita Popov  load i8, i8 addrspace(5)* %p
9*57d57b1aSNikita Popov  load i8, i8 addrspace(1)* %p1
10a27b2cacSStanislav Mekhanoshin  ret void
11a27b2cacSStanislav Mekhanoshin}
12a27b2cacSStanislav Mekhanoshin
13*57d57b1aSNikita Popov; CHECK-LABEL: Function: test_constant_vs_global
14*57d57b1aSNikita Popov; CHECK: MayAlias:      i8 addrspace(4)* %p, i8 addrspace(1)* %p1
15d81d6f7dSSamuel Pitoiset
16d81d6f7dSSamuel Pitoisetdefine void @test_constant_vs_global(i8 addrspace(4)* %p, i8 addrspace(1)* %p1) {
17*57d57b1aSNikita Popov  load i8, i8 addrspace(4)* %p
18*57d57b1aSNikita Popov  load i8, i8 addrspace(1)* %p1
19d81d6f7dSSamuel Pitoiset  ret void
20d81d6f7dSSamuel Pitoiset}
21d81d6f7dSSamuel Pitoiset
22d81d6f7dSSamuel Pitoiset; CHECK: MayAlias:      i8 addrspace(1)* %p, i8 addrspace(4)* %p1
23d81d6f7dSSamuel Pitoiset
24d81d6f7dSSamuel Pitoisetdefine void @test_global_vs_constant(i8 addrspace(1)* %p, i8 addrspace(4)* %p1) {
25*57d57b1aSNikita Popov  load i8, i8 addrspace(1)* %p
26*57d57b1aSNikita Popov  load i8, i8 addrspace(4)* %p1
27d81d6f7dSSamuel Pitoiset  ret void
28d81d6f7dSSamuel Pitoiset}
29d81d6f7dSSamuel Pitoiset
30*57d57b1aSNikita Popov; CHECK: MayAlias:      i8 addrspace(6)* %p, i8 addrspace(1)* %p1
317bd9dcffSSamuel Pitoiset
327bd9dcffSSamuel Pitoisetdefine void @test_constant_32bit_vs_global(i8 addrspace(6)* %p, i8 addrspace(1)* %p1) {
33*57d57b1aSNikita Popov  load i8, i8 addrspace(6)* %p
34*57d57b1aSNikita Popov  load i8, i8 addrspace(1)* %p1
357bd9dcffSSamuel Pitoiset  ret void
367bd9dcffSSamuel Pitoiset}
377bd9dcffSSamuel Pitoiset
38*57d57b1aSNikita Popov; CHECK: MayAlias:      i8 addrspace(6)* %p, i8 addrspace(4)* %p1
397bd9dcffSSamuel Pitoiset
407bd9dcffSSamuel Pitoisetdefine void @test_constant_32bit_vs_constant(i8 addrspace(6)* %p, i8 addrspace(4)* %p1) {
41*57d57b1aSNikita Popov  load i8, i8 addrspace(6)* %p
42*57d57b1aSNikita Popov  load i8, i8 addrspace(4)* %p1
437bd9dcffSSamuel Pitoiset  ret void
447bd9dcffSSamuel Pitoiset}
457bd9dcffSSamuel Pitoiset
46*57d57b1aSNikita Popov; CHECK: MayAlias:	i8* %p, i8 addrspace(999)* %p0
4799c78015SMatt Arsenaultdefine void @test_0_999(i8 addrspace(0)* %p, i8 addrspace(999)* %p0) {
48*57d57b1aSNikita Popov  load i8, i8 addrspace(0)* %p
49*57d57b1aSNikita Popov  load i8, i8 addrspace(999)* %p0
5099c78015SMatt Arsenault  ret void
5199c78015SMatt Arsenault}
5299c78015SMatt Arsenault
5399c78015SMatt Arsenault; CHECK: MayAlias:	i8 addrspace(999)* %p, i8* %p1
5499c78015SMatt Arsenaultdefine void @test_999_0(i8 addrspace(999)* %p, i8 addrspace(0)* %p1) {
55*57d57b1aSNikita Popov  load i8, i8 addrspace(999)* %p
56*57d57b1aSNikita Popov  load i8, i8 addrspace(0)* %p1
5799c78015SMatt Arsenault  ret void
5899c78015SMatt Arsenault}
5999c78015SMatt Arsenault
6099c78015SMatt Arsenault; CHECK: MayAlias:	i8 addrspace(1)* %p, i8 addrspace(999)* %p1
6199c78015SMatt Arsenaultdefine void @test_1_999(i8 addrspace(1)* %p, i8 addrspace(999)* %p1) {
62*57d57b1aSNikita Popov  load i8, i8 addrspace(1)* %p
63*57d57b1aSNikita Popov  load i8, i8 addrspace(999)* %p1
6499c78015SMatt Arsenault  ret void
6599c78015SMatt Arsenault}
6699c78015SMatt Arsenault
67*57d57b1aSNikita Popov; CHECK: MayAlias:	i8 addrspace(999)* %p, i8 addrspace(1)* %p1
6899c78015SMatt Arsenaultdefine void @test_999_1(i8 addrspace(999)* %p, i8 addrspace(1)* %p1) {
69*57d57b1aSNikita Popov  load i8, i8 addrspace(999)* %p
70*57d57b1aSNikita Popov  load i8, i8 addrspace(1)* %p1
7199c78015SMatt Arsenault  ret void
7299c78015SMatt Arsenault}
73523dab07SNeil Henning
74a256b8b7SNicolai Haehnle; CHECK: NoAlias:  i8 addrspace(2)* %p, i8* %p1
75a256b8b7SNicolai Haehnledefine void @test_region_vs_flat(i8 addrspace(2)* %p, i8 addrspace(0)* %p1) {
76*57d57b1aSNikita Popov  load i8, i8 addrspace(2)* %p
77*57d57b1aSNikita Popov  load i8, i8 addrspace(0)* %p1
78a256b8b7SNicolai Haehnle  ret void
79a256b8b7SNicolai Haehnle}
80a256b8b7SNicolai Haehnle
81*57d57b1aSNikita Popov; CHECK: NoAlias:  i8 addrspace(2)* %p, i8 addrspace(1)* %p1
82a256b8b7SNicolai Haehnledefine void @test_region_vs_global(i8 addrspace(2)* %p, i8 addrspace(1)* %p1) {
83*57d57b1aSNikita Popov  load i8, i8 addrspace(2)* %p
84*57d57b1aSNikita Popov  load i8, i8 addrspace(1)* %p1
85a256b8b7SNicolai Haehnle  ret void
86a256b8b7SNicolai Haehnle}
87a256b8b7SNicolai Haehnle
88a256b8b7SNicolai Haehnle; CHECK: MayAlias: i8 addrspace(2)* %p, i8 addrspace(2)* %p1
89a256b8b7SNicolai Haehnledefine void @test_region(i8 addrspace(2)* %p, i8 addrspace(2)* %p1) {
90*57d57b1aSNikita Popov  load i8, i8 addrspace(2)* %p
91*57d57b1aSNikita Popov  load i8, i8 addrspace(2)* %p1
92a256b8b7SNicolai Haehnle  ret void
93a256b8b7SNicolai Haehnle}
94a256b8b7SNicolai Haehnle
95a256b8b7SNicolai Haehnle; CHECK: NoAlias:  i8 addrspace(2)* %p, i8 addrspace(3)* %p1
96a256b8b7SNicolai Haehnledefine void @test_region_vs_group(i8 addrspace(2)* %p, i8 addrspace(3)* %p1) {
97*57d57b1aSNikita Popov  load i8, i8 addrspace(2)* %p
98*57d57b1aSNikita Popov  load i8, i8 addrspace(3)* %p1
99a256b8b7SNicolai Haehnle  ret void
100a256b8b7SNicolai Haehnle}
101a256b8b7SNicolai Haehnle
102a256b8b7SNicolai Haehnle; CHECK: NoAlias:  i8 addrspace(2)* %p, i8 addrspace(4)* %p1
103a256b8b7SNicolai Haehnledefine void @test_region_vs_constant(i8 addrspace(2)* %p, i8 addrspace(4)* %p1) {
104*57d57b1aSNikita Popov  load i8, i8 addrspace(2)* %p
105*57d57b1aSNikita Popov  load i8, i8 addrspace(4)* %p1
106a256b8b7SNicolai Haehnle  ret void
107a256b8b7SNicolai Haehnle}
108a256b8b7SNicolai Haehnle
109a256b8b7SNicolai Haehnle; CHECK: NoAlias:  i8 addrspace(2)* %p, i8 addrspace(5)* %p1
110a256b8b7SNicolai Haehnledefine void @test_region_vs_private(i8 addrspace(2)* %p, i8 addrspace(5)* %p1) {
111*57d57b1aSNikita Popov  load i8, i8 addrspace(2)* %p
112*57d57b1aSNikita Popov  load i8, i8 addrspace(5)* %p1
113a256b8b7SNicolai Haehnle  ret void
114a256b8b7SNicolai Haehnle}
115a256b8b7SNicolai Haehnle
116a256b8b7SNicolai Haehnle; CHECK: NoAlias:  i8 addrspace(2)* %p, i8 addrspace(6)* %p1
117a256b8b7SNicolai Haehnledefine void @test_region_vs_const32(i8 addrspace(2)* %p, i8 addrspace(6)* %p1) {
118*57d57b1aSNikita Popov  load i8, i8 addrspace(2)* %p
119*57d57b1aSNikita Popov  load i8, i8 addrspace(6)* %p1
120a256b8b7SNicolai Haehnle  ret void
121a256b8b7SNicolai Haehnle}
122a256b8b7SNicolai Haehnle
123523dab07SNeil Henning; CHECK: MayAlias:  i8 addrspace(7)* %p, i8* %p1
124523dab07SNeil Henningdefine void @test_7_0(i8 addrspace(7)* %p, i8 addrspace(0)* %p1) {
125*57d57b1aSNikita Popov  load i8, i8 addrspace(7)* %p
126*57d57b1aSNikita Popov  load i8, i8 addrspace(0)* %p1
127523dab07SNeil Henning  ret void
128523dab07SNeil Henning}
129523dab07SNeil Henning
130*57d57b1aSNikita Popov; CHECK: MayAlias:  i8 addrspace(7)* %p, i8 addrspace(1)* %p1
131523dab07SNeil Henningdefine void @test_7_1(i8 addrspace(7)* %p, i8 addrspace(1)* %p1) {
132*57d57b1aSNikita Popov  load i8, i8 addrspace(7)* %p
133*57d57b1aSNikita Popov  load i8, i8 addrspace(1)* %p1
134523dab07SNeil Henning  ret void
135523dab07SNeil Henning}
136523dab07SNeil Henning
137*57d57b1aSNikita Popov; CHECK: NoAlias:  i8 addrspace(7)* %p, i8 addrspace(2)* %p1
138523dab07SNeil Henningdefine void @test_7_2(i8 addrspace(7)* %p, i8 addrspace(2)* %p1) {
139*57d57b1aSNikita Popov  load i8, i8 addrspace(7)* %p
140*57d57b1aSNikita Popov  load i8, i8 addrspace(2)* %p1
141523dab07SNeil Henning  ret void
142523dab07SNeil Henning}
143523dab07SNeil Henning
144*57d57b1aSNikita Popov; CHECK: NoAlias:  i8 addrspace(7)* %p, i8 addrspace(3)* %p1
145523dab07SNeil Henningdefine void @test_7_3(i8 addrspace(7)* %p, i8 addrspace(3)* %p1) {
146*57d57b1aSNikita Popov  load i8, i8 addrspace(7)* %p
147*57d57b1aSNikita Popov  load i8, i8 addrspace(3)* %p1
148523dab07SNeil Henning  ret void
149523dab07SNeil Henning}
150523dab07SNeil Henning
151*57d57b1aSNikita Popov; CHECK: MayAlias:  i8 addrspace(7)* %p, i8 addrspace(4)* %p1
152523dab07SNeil Henningdefine void @test_7_4(i8 addrspace(7)* %p, i8 addrspace(4)* %p1) {
153*57d57b1aSNikita Popov  load i8, i8 addrspace(7)* %p
154*57d57b1aSNikita Popov  load i8, i8 addrspace(4)* %p1
155523dab07SNeil Henning  ret void
156523dab07SNeil Henning}
157523dab07SNeil Henning
158*57d57b1aSNikita Popov; CHECK: NoAlias:  i8 addrspace(7)* %p, i8 addrspace(5)* %p1
159523dab07SNeil Henningdefine void @test_7_5(i8 addrspace(7)* %p, i8 addrspace(5)* %p1) {
160*57d57b1aSNikita Popov  load i8, i8 addrspace(7)* %p
161*57d57b1aSNikita Popov  load i8, i8 addrspace(5)* %p1
162523dab07SNeil Henning  ret void
163523dab07SNeil Henning}
164523dab07SNeil Henning
165*57d57b1aSNikita Popov; CHECK: MayAlias:  i8 addrspace(7)* %p, i8 addrspace(6)* %p1
166523dab07SNeil Henningdefine void @test_7_6(i8 addrspace(7)* %p, i8 addrspace(6)* %p1) {
167*57d57b1aSNikita Popov  load i8, i8 addrspace(7)* %p
168*57d57b1aSNikita Popov  load i8, i8 addrspace(6)* %p1
169523dab07SNeil Henning  ret void
170523dab07SNeil Henning}
171523dab07SNeil Henning
172523dab07SNeil Henning; CHECK: MayAlias:  i8 addrspace(7)* %p, i8 addrspace(7)* %p1
173523dab07SNeil Henningdefine void @test_7_7(i8 addrspace(7)* %p, i8 addrspace(7)* %p1) {
174*57d57b1aSNikita Popov  load i8, i8 addrspace(7)* %p
175*57d57b1aSNikita Popov  load i8, i8 addrspace(7)* %p1
176523dab07SNeil Henning  ret void
177523dab07SNeil Henning}
1782a0e4d1cSMichael Liao
1792a0e4d1cSMichael Liao@cst = internal addrspace(4) global i8* undef, align 4
1802a0e4d1cSMichael Liao
1812a0e4d1cSMichael Liao; CHECK-LABEL: Function: test_8_0
182*57d57b1aSNikita Popov; CHECK-DAG: NoAlias:   i8 addrspace(3)* %p, i8* %p1
183*57d57b1aSNikita Popov; CHECK-DAG: NoAlias:   i8 addrspace(3)* %p, i8* addrspace(4)* @cst
184*57d57b1aSNikita Popov; CHECK-DAG: MayAlias:  i8* %p1, i8* addrspace(4)* @cst
1852a0e4d1cSMichael Liaodefine void @test_8_0(i8 addrspace(3)* %p) {
1862a0e4d1cSMichael Liao  %p1 = load i8*, i8* addrspace(4)* @cst
187*57d57b1aSNikita Popov  load i8, i8 addrspace(3)* %p
188*57d57b1aSNikita Popov  load i8, i8* %p1
1892a0e4d1cSMichael Liao  ret void
1902a0e4d1cSMichael Liao}
1912a0e4d1cSMichael Liao
1922a0e4d1cSMichael Liao; CHECK-LABEL: Function: test_8_1
193*57d57b1aSNikita Popov; CHECK-DAG: NoAlias:   i8 addrspace(5)* %p, i8* %p1
194*57d57b1aSNikita Popov; CHECK-DAG: NoAlias:   i8 addrspace(5)* %p, i8* addrspace(4)* @cst
195*57d57b1aSNikita Popov; CHECK-DAG: MayAlias:  i8* %p1, i8* addrspace(4)* @cst
1962a0e4d1cSMichael Liaodefine void @test_8_1(i8 addrspace(5)* %p) {
1972a0e4d1cSMichael Liao  %p1 = load i8*, i8* addrspace(4)* @cst
198*57d57b1aSNikita Popov  load i8, i8 addrspace(5)* %p
199*57d57b1aSNikita Popov  load i8, i8* %p1
2002a0e4d1cSMichael Liao  ret void
2012a0e4d1cSMichael Liao}
2022a0e4d1cSMichael Liao
2032a0e4d1cSMichael Liao; CHECK-LABEL: Function: test_8_2
204*57d57b1aSNikita Popov; CHECK: NoAlias:   i8* %p, i8 addrspace(5)* %p1
2052a0e4d1cSMichael Liaodefine amdgpu_kernel void @test_8_2(i8* %p) {
2062a0e4d1cSMichael Liao  %p1 = alloca i8, align 1, addrspace(5)
207*57d57b1aSNikita Popov  load i8, i8* %p
208*57d57b1aSNikita Popov  load i8, i8 addrspace(5)* %p1
2092a0e4d1cSMichael Liao  ret void
2102a0e4d1cSMichael Liao}
2112a0e4d1cSMichael Liao
2122a0e4d1cSMichael Liao; CHECK-LABEL: Function: test_8_3
213*57d57b1aSNikita Popov; CHECK: MayAlias:  i8* %p, i8 addrspace(5)* %p1
2142a0e4d1cSMichael Liao; TODO: So far, %p1 may still alias to %p. As it's not captured at all, it
2152a0e4d1cSMichael Liao; should be NoAlias.
2162a0e4d1cSMichael Liaodefine void @test_8_3(i8* %p) {
2172a0e4d1cSMichael Liao  %p1 = alloca i8, align 1, addrspace(5)
218*57d57b1aSNikita Popov  load i8, i8* %p
219*57d57b1aSNikita Popov  load i8, i8 addrspace(5)* %p1
2202a0e4d1cSMichael Liao  ret void
2212a0e4d1cSMichael Liao}
2222a0e4d1cSMichael Liao
2232a0e4d1cSMichael Liao@shm = internal addrspace(3) global i8 undef, align 4
2242a0e4d1cSMichael Liao
2252a0e4d1cSMichael Liao; CHECK-LABEL: Function: test_8_4
226*57d57b1aSNikita Popov; CHECK: NoAlias:   i8* %p, i8 addrspace(3)* %p1
227*57d57b1aSNikita Popov; CHECK: NoAlias:   i8* %p, i8 addrspace(3)* @shm
2282a0e4d1cSMichael Liao; CHECK: MayAlias:  i8 addrspace(3)* %p1, i8 addrspace(3)* @shm
2292a0e4d1cSMichael Liaodefine amdgpu_kernel void @test_8_4(i8* %p) {
2302a0e4d1cSMichael Liao  %p1 = getelementptr i8, i8 addrspace(3)* @shm, i32 0
231*57d57b1aSNikita Popov  load i8, i8* %p
232*57d57b1aSNikita Popov  load i8, i8 addrspace(3)* %p1
233*57d57b1aSNikita Popov  load i8, i8 addrspace(3)* @shm
2342a0e4d1cSMichael Liao  ret void
2352a0e4d1cSMichael Liao}
2362a0e4d1cSMichael Liao
2372a0e4d1cSMichael Liao; CHECK-LABEL: Function: test_8_5
238*57d57b1aSNikita Popov; CHECK: MayAlias:  i8* %p, i8 addrspace(3)* %p1
239*57d57b1aSNikita Popov; CHECK: MayAlias:  i8* %p, i8 addrspace(3)* @shm
2402a0e4d1cSMichael Liao; CHECK: MayAlias:  i8 addrspace(3)* %p1, i8 addrspace(3)* @shm
2412a0e4d1cSMichael Liao; TODO: So far, %p1 may still alias to %p. As it's not captured at all, it
2422a0e4d1cSMichael Liao; should be NoAlias.
2432a0e4d1cSMichael Liaodefine void @test_8_5(i8* %p) {
2442a0e4d1cSMichael Liao  %p1 = getelementptr i8, i8 addrspace(3)* @shm, i32 0
245*57d57b1aSNikita Popov  load i8, i8* %p
246*57d57b1aSNikita Popov  load i8, i8 addrspace(3)* %p1
247*57d57b1aSNikita Popov  load i8, i8 addrspace(3)* @shm
2482a0e4d1cSMichael Liao  ret void
2492a0e4d1cSMichael Liao}
250