Skip to content

Commit a256b8b

Browse files
committed
AMDGPU: Improve alias analysis for GDS
Summary: GDS cannot alias anything else. Original patch by: Marek Olšák Reviewers: arsenm, mareko Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, Petar.Avramovic, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64114 Change-Id: I07bfbd96f5d5c37a6dfba7997df12f291dd794b0 llvm-svn: 366313
1 parent 52c3939 commit a256b8b

File tree

2 files changed

+47
-12
lines changed

2 files changed

+47
-12
lines changed

llvm/lib/Target/AMDGPU/AMDGPUAliasAnalysis.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ void AMDGPUAAWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const {
5656
// These arrays are indexed by address space value enum elements 0 ... to 7
5757
static const AliasResult ASAliasRules[8][8] = {
5858
/* Flat Global Region Group Constant Private Constant 32-bit Buffer Fat Ptr */
59-
/* Flat */ {MayAlias, MayAlias, MayAlias, MayAlias, MayAlias, MayAlias, MayAlias, MayAlias},
59+
/* Flat */ {MayAlias, MayAlias, NoAlias, MayAlias, MayAlias, MayAlias, MayAlias, MayAlias},
6060
/* Global */ {MayAlias, MayAlias, NoAlias , NoAlias , MayAlias, NoAlias , MayAlias, MayAlias},
61-
/* Region */ {MayAlias, NoAlias , NoAlias , NoAlias , MayAlias, NoAlias , MayAlias, NoAlias},
61+
/* Region */ {NoAlias, NoAlias , MayAlias, NoAlias , NoAlias, NoAlias , NoAlias, NoAlias},
6262
/* Group */ {MayAlias, NoAlias , NoAlias , MayAlias, NoAlias , NoAlias , NoAlias , NoAlias},
63-
/* Constant */ {MayAlias, MayAlias, MayAlias, NoAlias , NoAlias , NoAlias , MayAlias, MayAlias},
63+
/* Constant */ {MayAlias, MayAlias, NoAlias, NoAlias , NoAlias , NoAlias , MayAlias, MayAlias},
6464
/* Private */ {MayAlias, NoAlias , NoAlias , NoAlias , NoAlias , MayAlias, NoAlias , NoAlias},
65-
/* Constant 32-bit */ {MayAlias, MayAlias, MayAlias, NoAlias , MayAlias, NoAlias , NoAlias , MayAlias},
65+
/* Constant 32-bit */ {MayAlias, MayAlias, NoAlias, NoAlias , MayAlias, NoAlias , NoAlias , MayAlias},
6666
/* Buffer Fat Ptr */ {MayAlias, MayAlias, NoAlias , NoAlias , MayAlias, NoAlias , MayAlias, MayAlias}
6767
};
6868

llvm/test/CodeGen/AMDGPU/amdgpu-alias-analysis.ll

+43-8
Original file line numberDiff line numberDiff line change
@@ -51,42 +51,77 @@ define void @test_999_1(i8 addrspace(999)* %p, i8 addrspace(1)* %p1) {
5151
ret void
5252
}
5353

54+
; CHECK: NoAlias: i8 addrspace(2)* %p, i8* %p1
55+
define 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
60+
define 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
65+
define 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
70+
define 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
75+
define 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
80+
define 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
85+
define void @test_region_vs_const32(i8 addrspace(2)* %p, i8 addrspace(6)* %p1) {
86+
ret void
87+
}
88+
5489
; CHECK: MayAlias: i8 addrspace(7)* %p, i8* %p1
5590
define void @test_7_0(i8 addrspace(7)* %p, i8 addrspace(0)* %p1) {
56-
ret void
91+
ret void
5792
}
5893

5994
; CHECK: MayAlias: i8 addrspace(1)* %p1, i8 addrspace(7)* %p
6095
define void @test_7_1(i8 addrspace(7)* %p, i8 addrspace(1)* %p1) {
61-
ret void
96+
ret void
6297
}
6398

6499
; CHECK: NoAlias: i8 addrspace(2)* %p1, i8 addrspace(7)* %p
65100
define void @test_7_2(i8 addrspace(7)* %p, i8 addrspace(2)* %p1) {
66-
ret void
101+
ret void
67102
}
68103

69104
; CHECK: NoAlias: i8 addrspace(3)* %p1, i8 addrspace(7)* %p
70105
define void @test_7_3(i8 addrspace(7)* %p, i8 addrspace(3)* %p1) {
71-
ret void
106+
ret void
72107
}
73108

74109
; CHECK: MayAlias: i8 addrspace(4)* %p1, i8 addrspace(7)* %p
75110
define void @test_7_4(i8 addrspace(7)* %p, i8 addrspace(4)* %p1) {
76-
ret void
111+
ret void
77112
}
78113

79114
; CHECK: NoAlias: i8 addrspace(5)* %p1, i8 addrspace(7)* %p
80115
define void @test_7_5(i8 addrspace(7)* %p, i8 addrspace(5)* %p1) {
81-
ret void
116+
ret void
82117
}
83118

84119
; CHECK: MayAlias: i8 addrspace(6)* %p1, i8 addrspace(7)* %p
85120
define void @test_7_6(i8 addrspace(7)* %p, i8 addrspace(6)* %p1) {
86-
ret void
121+
ret void
87122
}
88123

89124
; CHECK: MayAlias: i8 addrspace(7)* %p, i8 addrspace(7)* %p1
90125
define void @test_7_7(i8 addrspace(7)* %p, i8 addrspace(7)* %p1) {
91-
ret void
126+
ret void
92127
}

0 commit comments

Comments
 (0)