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