brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.4 KiB · 32f3da6 Raw
338 lines · plain
1; 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 %s2; 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 %s3 4; CHECK-LABEL: Function: test5; CHECK: NoAlias:      i8 addrspace(5)* %p, i8 addrspace(1)* %p16 7define void @test(ptr addrspace(5) %p, ptr addrspace(1) %p1) {8  load i8, ptr addrspace(5) %p9  load i8, ptr addrspace(1) %p110  ret void11}12 13; CHECK-LABEL: Function: test_constant_vs_global14; CHECK: MayAlias:      i8 addrspace(4)* %p, i8 addrspace(1)* %p115 16define void @test_constant_vs_global(ptr addrspace(4) %p, ptr addrspace(1) %p1) {17  load i8, ptr addrspace(4) %p18  load i8, ptr addrspace(1) %p119  ret void20}21 22; CHECK: MayAlias:      i8 addrspace(1)* %p, i8 addrspace(4)* %p123 24define void @test_global_vs_constant(ptr addrspace(1) %p, ptr addrspace(4) %p1) {25  load i8, ptr addrspace(1) %p26  load i8, ptr addrspace(4) %p127  ret void28}29 30; CHECK: MayAlias:      i8 addrspace(6)* %p, i8 addrspace(1)* %p131 32define void @test_constant_32bit_vs_global(ptr addrspace(6) %p, ptr addrspace(1) %p1) {33  load i8, ptr addrspace(6) %p34  load i8, ptr addrspace(1) %p135  ret void36}37 38; CHECK: MayAlias:      i8 addrspace(6)* %p, i8 addrspace(4)* %p139 40define void @test_constant_32bit_vs_constant(ptr addrspace(6) %p, ptr addrspace(4) %p1) {41  load i8, ptr addrspace(6) %p42  load i8, ptr addrspace(4) %p143  ret void44}45 46; CHECK: MayAlias:	i8* %p, i8 addrspace(999)* %p047define void @test_0_999(ptr addrspace(0) %p, ptr addrspace(999) %p0) {48  load i8, ptr addrspace(0) %p49  load i8, ptr addrspace(999) %p050  ret void51}52 53; CHECK: MayAlias:	i8 addrspace(999)* %p, i8* %p154define void @test_999_0(ptr addrspace(999) %p, ptr addrspace(0) %p1) {55  load i8, ptr addrspace(999) %p56  load i8, ptr addrspace(0) %p157  ret void58}59 60; CHECK: MayAlias:	i8 addrspace(1)* %p, i8 addrspace(999)* %p161define void @test_1_999(ptr addrspace(1) %p, ptr addrspace(999) %p1) {62  load i8, ptr addrspace(1) %p63  load i8, ptr addrspace(999) %p164  ret void65}66 67; CHECK: MayAlias:	i8 addrspace(999)* %p, i8 addrspace(1)* %p168define void @test_999_1(ptr addrspace(999) %p, ptr addrspace(1) %p1) {69  load i8, ptr addrspace(999) %p70  load i8, ptr addrspace(1) %p171  ret void72}73 74; CHECK: NoAlias:  i8 addrspace(2)* %p, i8* %p175define void @test_region_vs_flat(ptr addrspace(2) %p, ptr addrspace(0) %p1) {76  load i8, ptr addrspace(2) %p77  load i8, ptr addrspace(0) %p178  ret void79}80 81; CHECK: NoAlias:  i8 addrspace(2)* %p, i8 addrspace(1)* %p182define void @test_region_vs_global(ptr addrspace(2) %p, ptr addrspace(1) %p1) {83  load i8, ptr addrspace(2) %p84  load i8, ptr addrspace(1) %p185  ret void86}87 88; CHECK: MayAlias: i8 addrspace(2)* %p, i8 addrspace(2)* %p189define void @test_region(ptr addrspace(2) %p, ptr addrspace(2) %p1) {90  load i8, ptr addrspace(2) %p91  load i8, ptr addrspace(2) %p192  ret void93}94 95; CHECK: NoAlias:  i8 addrspace(2)* %p, i8 addrspace(3)* %p196define void @test_region_vs_group(ptr addrspace(2) %p, ptr addrspace(3) %p1) {97  load i8, ptr addrspace(2) %p98  load i8, ptr addrspace(3) %p199  ret void100}101 102; CHECK: NoAlias:  i8 addrspace(2)* %p, i8 addrspace(4)* %p1103define void @test_region_vs_constant(ptr addrspace(2) %p, ptr addrspace(4) %p1) {104  load i8, ptr addrspace(2) %p105  load i8, ptr addrspace(4) %p1106  ret void107}108 109; CHECK: NoAlias:  i8 addrspace(2)* %p, i8 addrspace(5)* %p1110define void @test_region_vs_private(ptr addrspace(2) %p, ptr addrspace(5) %p1) {111  load i8, ptr addrspace(2) %p112  load i8, ptr addrspace(5) %p1113  ret void114}115 116; CHECK: NoAlias:  i8 addrspace(2)* %p, i8 addrspace(6)* %p1117define void @test_region_vs_const32(ptr addrspace(2) %p, ptr addrspace(6) %p1) {118  load i8, ptr addrspace(2) %p119  load i8, ptr addrspace(6) %p1120  ret void121}122 123; CHECK: MayAlias:  i8 addrspace(7)* %p, i8* %p1124define void @test_7_0(ptr addrspace(7) %p, ptr addrspace(0) %p1) {125  load i8, ptr addrspace(7) %p126  load i8, ptr addrspace(0) %p1127  ret void128}129 130; CHECK: MayAlias:  i8 addrspace(7)* %p, i8 addrspace(1)* %p1131define void @test_7_1(ptr addrspace(7) %p, ptr addrspace(1) %p1) {132  load i8, ptr addrspace(7) %p133  load i8, ptr addrspace(1) %p1134  ret void135}136 137; CHECK: NoAlias:  i8 addrspace(7)* %p, i8 addrspace(2)* %p1138define void @test_7_2(ptr addrspace(7) %p, ptr addrspace(2) %p1) {139  load i8, ptr addrspace(7) %p140  load i8, ptr addrspace(2) %p1141  ret void142}143 144; CHECK: NoAlias:  i8 addrspace(7)* %p, i8 addrspace(3)* %p1145define void @test_7_3(ptr addrspace(7) %p, ptr addrspace(3) %p1) {146  load i8, ptr addrspace(7) %p147  load i8, ptr addrspace(3) %p1148  ret void149}150 151; CHECK: MayAlias:  i8 addrspace(7)* %p, i8 addrspace(4)* %p1152define void @test_7_4(ptr addrspace(7) %p, ptr addrspace(4) %p1) {153  load i8, ptr addrspace(7) %p154  load i8, ptr addrspace(4) %p1155  ret void156}157 158; CHECK: NoAlias:  i8 addrspace(7)* %p, i8 addrspace(5)* %p1159define void @test_7_5(ptr addrspace(7) %p, ptr addrspace(5) %p1) {160  load i8, ptr addrspace(7) %p161  load i8, ptr addrspace(5) %p1162  ret void163}164 165; CHECK: MayAlias:  i8 addrspace(7)* %p, i8 addrspace(6)* %p1166define void @test_7_6(ptr addrspace(7) %p, ptr addrspace(6) %p1) {167  load i8, ptr addrspace(7) %p168  load i8, ptr addrspace(6) %p1169  ret void170}171 172; CHECK: MayAlias:  i8 addrspace(7)* %p, i8 addrspace(7)* %p1173define void @test_7_7(ptr addrspace(7) %p, ptr addrspace(7) %p1) {174  load i8, ptr addrspace(7) %p175  load i8, ptr addrspace(7) %p1176  ret void177}178 179@cst = internal addrspace(4) global ptr poison, align 4180 181; CHECK-LABEL: Function: test_8_0182; CHECK-DAG: NoAlias:   i8 addrspace(3)* %p, i8* %p1183; CHECK-DAG: NoAlias:   i8 addrspace(3)* %p, ptr addrspace(4)* @cst184; CHECK-DAG: MayAlias:  i8* %p1, ptr addrspace(4)* @cst185define void @test_8_0(ptr addrspace(3) %p) {186  %p1 = load ptr, ptr addrspace(4) @cst187  load i8, ptr addrspace(3) %p188  load i8, ptr %p1189  ret void190}191 192; CHECK-LABEL: Function: test_8_1193; CHECK-DAG: NoAlias:   i8 addrspace(5)* %p, i8* %p1194; CHECK-DAG: NoAlias:   i8 addrspace(5)* %p, ptr addrspace(4)* @cst195; CHECK-DAG: MayAlias:  i8* %p1, ptr addrspace(4)* @cst196define void @test_8_1(ptr addrspace(5) %p) {197  %p1 = load ptr, ptr addrspace(4) @cst198  load i8, ptr addrspace(5) %p199  load i8, ptr %p1200  ret void201}202 203; CHECK-LABEL: Function: test_8_2204; CHECK: NoAlias:   i8* %p, i8 addrspace(5)* %p1205define amdgpu_kernel void @test_8_2(ptr %p) {206  %p1 = alloca i8, align 1, addrspace(5)207  load i8, ptr %p208  load i8, ptr addrspace(5) %p1209  ret void210}211 212; CHECK-LABEL: Function: test_8_3213; CHECK: MayAlias:  i8* %p, i8 addrspace(5)* %p1214; TODO: So far, %p1 may still alias to %p. As it's not captured at all, it215; should be NoAlias.216define void @test_8_3(ptr %p) {217  %p1 = alloca i8, align 1, addrspace(5)218  load i8, ptr %p219  load i8, ptr addrspace(5) %p1220  ret void221}222 223@shm = internal addrspace(3) global [2 x i8] poison, align 4224 225; CHECK-LABEL: Function: test_8_4226; CHECK: NoAlias:   i8* %p, i8 addrspace(3)* %p1227; CHECK: NoAlias:   i8* %p, i8 addrspace(3)* @shm228; CHECK: MayAlias:  i8 addrspace(3)* %p1, i8 addrspace(3)* @shm229define amdgpu_kernel void @test_8_4(ptr %p) {230  %p1 = getelementptr [2 x i8], ptr addrspace(3) @shm, i32 0, i32 1231  load i8, ptr %p232  load i8, ptr addrspace(3) %p1233  load i8, ptr addrspace(3) @shm234  ret void235}236 237; CHECK-LABEL: Function: test_8_5238; CHECK: MayAlias:  i8* %p, i8 addrspace(3)* %p1239; CHECK: MayAlias:  i8* %p, i8 addrspace(3)* @shm240; CHECK: MayAlias:  i8 addrspace(3)* %p1, i8 addrspace(3)* @shm241 242; TODO: So far, @shm may still alias to %p. As it's not captured at all, it243; should be NoAlias.244define void @test_8_5(ptr %p) {245  %p1 = getelementptr [2 x i8], ptr addrspace(3) @shm, i32 0, i32 1246  load i8, ptr %p247  load i8, ptr addrspace(3) %p1248  load i8, ptr addrspace(3) @shm249  ret void250}251 252; CHECK: MayAlias:  i8 addrspace(9)* %p, i8* %p1253define void @test_9_0(ptr addrspace(9) %p, ptr addrspace(0) %p1) {254  load i8, ptr addrspace(9) %p255  load i8, ptr addrspace(0) %p1256  ret void257}258 259; CHECK: MayAlias:  i8 addrspace(9)* %p, i8 addrspace(1)* %p1260define void @test_9_1(ptr addrspace(9) %p, ptr addrspace(1) %p1) {261  load i8, ptr addrspace(9) %p262  load i8, ptr addrspace(1) %p1263  ret void264}265 266; CHECK: NoAlias:  i8 addrspace(9)* %p, i8 addrspace(2)* %p1267define void @test_9_2(ptr addrspace(9) %p, ptr addrspace(2) %p1) {268  load i8, ptr addrspace(9) %p269  load i8, ptr addrspace(2) %p1270  ret void271}272 273; CHECK: NoAlias:  i8 addrspace(9)* %p, i8 addrspace(3)* %p1274define void @test_9_3(ptr addrspace(9) %p, ptr addrspace(3) %p1) {275  load i8, ptr addrspace(9) %p276  load i8, ptr addrspace(3) %p1277  ret void278}279 280; CHECK: MayAlias:  i8 addrspace(9)* %p, i8 addrspace(4)* %p1281define void @test_9_4(ptr addrspace(9) %p, ptr addrspace(4) %p1) {282  load i8, ptr addrspace(9) %p283  load i8, ptr addrspace(4) %p1284  ret void285}286 287; CHECK: NoAlias:  i8 addrspace(9)* %p, i8 addrspace(5)* %p1288define void @test_9_5(ptr addrspace(9) %p, ptr addrspace(5) %p1) {289  load i8, ptr addrspace(9) %p290  load i8, ptr addrspace(5) %p1291  ret void292}293 294; CHECK: MayAlias:  i8 addrspace(9)* %p, i8 addrspace(6)* %p1295define void @test_9_6(ptr addrspace(9) %p, ptr addrspace(6) %p1) {296  load i8, ptr addrspace(9) %p297  load i8, ptr addrspace(6) %p1298  ret void299}300 301; CHECK: MayAlias:  i8 addrspace(9)* %p, i8 addrspace(7)* %p1302define void @test_9_7(ptr addrspace(9) %p, ptr addrspace(7) %p1) {303  load i8, ptr addrspace(9) %p304  load i8, ptr addrspace(7) %p1305  ret void306}307 308; CHECK: MayAlias:  i8 addrspace(9)* %p, i8 addrspace(8)* %p1309define void @test_9_8(ptr addrspace(9) %p, ptr addrspace(8) %p1) {310  load i8, ptr addrspace(9) %p311  load i8, ptr addrspace(8) %p1312  ret void313}314 315; CHECK: MayAlias:  i8 addrspace(9)* %p, i8 addrspace(9)* %p1316define void @test_9_9(ptr addrspace(9) %p, ptr addrspace(9) %p1) {317  load i8, ptr addrspace(9) %p318  load i8, ptr addrspace(9) %p1319  ret void320}321 322; CHECK-LABEL: Function: test_kernel_arg_local_ptr323; CHECK: MayAlias:   i32 addrspace(3)* %arg, i32 addrspace(3)* %arg1324; CHECK: MayAlias:   i32 addrspace(3)* %arg, i32* %arg2325; CHECK: MayAlias:   i32 addrspace(3)* %arg1, i32* %arg2326define amdgpu_kernel void @test_kernel_arg_local_ptr(ptr addrspace(3) %arg) {327entry:328  %load1 = load i32, ptr addrspace(3) %arg, align 4329  %arg.plus.1 = getelementptr inbounds nuw i8, ptr addrspace(3) %arg, i64 1330  %arg1 = getelementptr inbounds nuw i8, ptr addrspace(3) %arg.plus.1, i64 -1331  %load2 = load i32, ptr addrspace(3) %arg1, align 4332  %arg.plus.4 = getelementptr inbounds nuw i8, ptr addrspace(3) %arg, i64 4333  %acast = addrspacecast ptr addrspace(3) %arg.plus.4 to ptr334  %arg2 = getelementptr inbounds i8, ptr %acast, i64 -4335  %load3 = load i32, ptr %arg2, align 4336  ret void337}338