1; RUN: opt -mtriple=amdgcn-- -data-layout=A5 -aa-eval -amdgpu-aa -amdgpu-aa-wrapper -disable-basic-aa -print-all-alias-modref-info -disable-output < %s 2>&1 | FileCheck %s 2; RUN: opt -mtriple=r600-- -data-layout=A5 -aa-eval -amdgpu-aa -amdgpu-aa-wrapper -disable-basic-aa -print-all-alias-modref-info -disable-output < %s 2>&1 | FileCheck %s 3 4; CHECK: NoAlias: i8 addrspace(1)* %p1, i8 addrspace(5)* %p 5 6define void @test(i8 addrspace(5)* %p, i8 addrspace(1)* %p1) { 7 ret void 8} 9 10; CHECK: MayAlias: i8 addrspace(1)* %p1, i8 addrspace(4)* %p 11 12define void @test_constant_vs_global(i8 addrspace(4)* %p, i8 addrspace(1)* %p1) { 13 ret void 14} 15 16; CHECK: MayAlias: i8 addrspace(1)* %p, i8 addrspace(4)* %p1 17 18define void @test_global_vs_constant(i8 addrspace(1)* %p, i8 addrspace(4)* %p1) { 19 ret void 20} 21 22; CHECK: MayAlias: i8 addrspace(1)* %p1, i8 addrspace(6)* %p 23 24define void @test_constant_32bit_vs_global(i8 addrspace(6)* %p, i8 addrspace(1)* %p1) { 25 ret void 26} 27 28; CHECK: MayAlias: i8 addrspace(4)* %p1, i8 addrspace(6)* %p 29 30define void @test_constant_32bit_vs_constant(i8 addrspace(6)* %p, i8 addrspace(4)* %p1) { 31 ret void 32} 33 34; CHECK: MayAlias: i8 addrspace(999)* %p0, i8* %p 35define void @test_0_999(i8 addrspace(0)* %p, i8 addrspace(999)* %p0) { 36 ret void 37} 38 39; CHECK: MayAlias: i8 addrspace(999)* %p, i8* %p1 40define void @test_999_0(i8 addrspace(999)* %p, i8 addrspace(0)* %p1) { 41 ret void 42} 43 44; CHECK: MayAlias: i8 addrspace(1)* %p, i8 addrspace(999)* %p1 45define void @test_1_999(i8 addrspace(1)* %p, i8 addrspace(999)* %p1) { 46 ret void 47} 48 49; CHECK: MayAlias: i8 addrspace(1)* %p1, i8 addrspace(999)* %p 50define void @test_999_1(i8 addrspace(999)* %p, i8 addrspace(1)* %p1) { 51 ret void 52} 53 54; CHECK: NoAlias: i8 addrspace(2)* %p, i8* %p1 55define void @test_region_vs_flat(i8 addrspace(2)* %p, i8 addrspace(0)* %p1) { 56 ret void 57} 58 59; CHECK: NoAlias: i8 addrspace(1)* %p1, i8 addrspace(2)* %p 60define void @test_region_vs_global(i8 addrspace(2)* %p, i8 addrspace(1)* %p1) { 61 ret void 62} 63 64; CHECK: MayAlias: i8 addrspace(2)* %p, i8 addrspace(2)* %p1 65define void @test_region(i8 addrspace(2)* %p, i8 addrspace(2)* %p1) { 66 ret void 67} 68 69; CHECK: NoAlias: i8 addrspace(2)* %p, i8 addrspace(3)* %p1 70define void @test_region_vs_group(i8 addrspace(2)* %p, i8 addrspace(3)* %p1) { 71 ret void 72} 73 74; CHECK: NoAlias: i8 addrspace(2)* %p, i8 addrspace(4)* %p1 75define void @test_region_vs_constant(i8 addrspace(2)* %p, i8 addrspace(4)* %p1) { 76 ret void 77} 78 79; CHECK: NoAlias: i8 addrspace(2)* %p, i8 addrspace(5)* %p1 80define void @test_region_vs_private(i8 addrspace(2)* %p, i8 addrspace(5)* %p1) { 81 ret void 82} 83 84; CHECK: NoAlias: i8 addrspace(2)* %p, i8 addrspace(6)* %p1 85define void @test_region_vs_const32(i8 addrspace(2)* %p, i8 addrspace(6)* %p1) { 86 ret void 87} 88 89; CHECK: MayAlias: i8 addrspace(7)* %p, i8* %p1 90define void @test_7_0(i8 addrspace(7)* %p, i8 addrspace(0)* %p1) { 91 ret void 92} 93 94; CHECK: MayAlias: i8 addrspace(1)* %p1, i8 addrspace(7)* %p 95define void @test_7_1(i8 addrspace(7)* %p, i8 addrspace(1)* %p1) { 96 ret void 97} 98 99; CHECK: NoAlias: i8 addrspace(2)* %p1, i8 addrspace(7)* %p 100define void @test_7_2(i8 addrspace(7)* %p, i8 addrspace(2)* %p1) { 101 ret void 102} 103 104; CHECK: NoAlias: i8 addrspace(3)* %p1, i8 addrspace(7)* %p 105define void @test_7_3(i8 addrspace(7)* %p, i8 addrspace(3)* %p1) { 106 ret void 107} 108 109; CHECK: MayAlias: i8 addrspace(4)* %p1, i8 addrspace(7)* %p 110define void @test_7_4(i8 addrspace(7)* %p, i8 addrspace(4)* %p1) { 111 ret void 112} 113 114; CHECK: NoAlias: i8 addrspace(5)* %p1, i8 addrspace(7)* %p 115define void @test_7_5(i8 addrspace(7)* %p, i8 addrspace(5)* %p1) { 116 ret void 117} 118 119; CHECK: MayAlias: i8 addrspace(6)* %p1, i8 addrspace(7)* %p 120define void @test_7_6(i8 addrspace(7)* %p, i8 addrspace(6)* %p1) { 121 ret void 122} 123 124; CHECK: MayAlias: i8 addrspace(7)* %p, i8 addrspace(7)* %p1 125define void @test_7_7(i8 addrspace(7)* %p, i8 addrspace(7)* %p1) { 126 ret void 127} 128 129@cst = internal addrspace(4) global i8* undef, align 4 130 131; CHECK-LABEL: Function: test_8_0 132; CHECK: NoAlias: i8 addrspace(3)* %p, i8* %p1 133; CHECK: NoAlias: i8 addrspace(3)* %p, i8* addrspace(4)* @cst 134; CHECK: MayAlias: i8* %p1, i8* addrspace(4)* @cst 135define void @test_8_0(i8 addrspace(3)* %p) { 136 %p1 = load i8*, i8* addrspace(4)* @cst 137 ret void 138} 139 140; CHECK-LABEL: Function: test_8_1 141; CHECK: NoAlias: i8 addrspace(5)* %p, i8* %p1 142; CHECK: NoAlias: i8 addrspace(5)* %p, i8* addrspace(4)* @cst 143; CHECK: MayAlias: i8* %p1, i8* addrspace(4)* @cst 144define void @test_8_1(i8 addrspace(5)* %p) { 145 %p1 = load i8*, i8* addrspace(4)* @cst 146 ret void 147} 148 149; CHECK-LABEL: Function: test_8_2 150; CHECK: NoAlias: i8 addrspace(5)* %p1, i8* %p 151define amdgpu_kernel void @test_8_2(i8* %p) { 152 %p1 = alloca i8, align 1, addrspace(5) 153 ret void 154} 155 156; CHECK-LABEL: Function: test_8_3 157; CHECK: MayAlias: i8 addrspace(5)* %p1, i8* %p 158; TODO: So far, %p1 may still alias to %p. As it's not captured at all, it 159; should be NoAlias. 160define void @test_8_3(i8* %p) { 161 %p1 = alloca i8, align 1, addrspace(5) 162 ret void 163} 164 165@shm = internal addrspace(3) global i8 undef, align 4 166 167; CHECK-LABEL: Function: test_8_4 168; CHECK: NoAlias: i8 addrspace(3)* %p1, i8* %p 169; CHECK: NoAlias: i8 addrspace(3)* @shm, i8* %p 170; CHECK: MayAlias: i8 addrspace(3)* %p1, i8 addrspace(3)* @shm 171define amdgpu_kernel void @test_8_4(i8* %p) { 172 %p1 = getelementptr i8, i8 addrspace(3)* @shm, i32 0 173 ret void 174} 175 176; CHECK-LABEL: Function: test_8_5 177; CHECK: MayAlias: i8 addrspace(3)* %p1, i8* %p 178; CHECK: MayAlias: i8 addrspace(3)* @shm, i8* %p 179; CHECK: MayAlias: i8 addrspace(3)* %p1, i8 addrspace(3)* @shm 180; TODO: So far, %p1 may still alias to %p. As it's not captured at all, it 181; should be NoAlias. 182define void @test_8_5(i8* %p) { 183 %p1 = getelementptr i8, i8 addrspace(3)* @shm, i32 0 184 ret void 185} 186