1
- ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals all --version 4
1
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals all --version 5
2
2
; RUN: opt < %s -passes=amdgpu-sw-lower-lds -S -mtriple=amdgcn-amd-amdhsa | FileCheck %s
3
3
4
4
; Test to check if static LDS is lowered correctly when a non-kernel with LDS accesses is called from kernel.
@@ -28,8 +28,12 @@ define void @use_variables() sanitize_address {
28
28
; CHECK-NEXT: [[TMP12:%.*]] = load ptr addrspace(1), ptr addrspace(1) [[TMP11]], align 8
29
29
; CHECK-NEXT: [[TMP10:%.*]] = load i32, ptr addrspace(1) [[TMP12]], align 4
30
30
; CHECK-NEXT: [[TMP15:%.*]] = getelementptr inbounds i8, ptr addrspace(3) [[TMP4]], i32 [[TMP10]]
31
- ; CHECK-NEXT: [[X:%.*]] = addrspacecast ptr addrspace(3) [[TMP9]] to ptr
32
- ; CHECK-NEXT: [[TMP16:%.*]] = addrspacecast ptr addrspace(3) [[TMP9]] to ptr
31
+ ; CHECK-NEXT: [[TMP13:%.*]] = ptrtoint ptr addrspace(3) [[TMP9]] to i32
32
+ ; CHECK-NEXT: [[TMP33:%.*]] = getelementptr inbounds i8, ptr addrspace(1) [[TMP7]], i32 [[TMP13]]
33
+ ; CHECK-NEXT: [[TMP34:%.*]] = addrspacecast ptr addrspace(1) [[TMP33]] to ptr
34
+ ; CHECK-NEXT: [[TMP35:%.*]] = ptrtoint ptr addrspace(3) [[TMP9]] to i32
35
+ ; CHECK-NEXT: [[TMP36:%.*]] = getelementptr inbounds i8, ptr addrspace(1) [[TMP7]], i32 [[TMP35]]
36
+ ; CHECK-NEXT: [[TMP16:%.*]] = addrspacecast ptr addrspace(1) [[TMP36]] to ptr
33
37
; CHECK-NEXT: store i8 3, ptr [[TMP16]], align 4
34
38
; CHECK-NEXT: [[TMP14:%.*]] = ptrtoint ptr addrspace(3) [[TMP15]] to i32
35
39
; CHECK-NEXT: [[TMP31:%.*]] = getelementptr inbounds i8, ptr addrspace(1) [[TMP7]], i32 [[TMP14]]
@@ -45,16 +49,16 @@ define void @use_variables() sanitize_address {
45
49
; CHECK-NEXT: [[TMP25:%.*]] = and i1 [[TMP21]], [[TMP24]]
46
50
; CHECK-NEXT: [[TMP26:%.*]] = call i64 @llvm.amdgcn.ballot.i64(i1 [[TMP25]])
47
51
; CHECK-NEXT: [[TMP27:%.*]] = icmp ne i64 [[TMP26]], 0
48
- ; CHECK-NEXT: br i1 [[TMP27]], label [[ASAN_REPORT:% .*]], label [[TMP30:% .*]], !prof [[PROF2:![0-9]+]]
49
- ; CHECK: asan.report :
50
- ; CHECK-NEXT: br i1 [[TMP25]], label [[TMP28:% .*]], label [[TMP29:% .*]]
51
- ; CHECK: 28 :
52
+ ; CHECK-NEXT: br i1 [[TMP27]], label % [[ASAN_REPORT:.*]], label %[[BB35: .*]], !prof [[PROF2:![0-9]+]]
53
+ ; CHECK: [[ASAN_REPORT]] :
54
+ ; CHECK-NEXT: br i1 [[TMP25]], label %[[BB33: .*]], label %[[BB34: .*]]
55
+ ; CHECK: [[BB33]] :
52
56
; CHECK-NEXT: call void @__asan_report_store1(i64 [[TMP32]]) #[[ATTR7:[0-9]+]]
53
57
; CHECK-NEXT: call void @llvm.amdgcn.unreachable()
54
- ; CHECK-NEXT: br label [[TMP29 ]]
55
- ; CHECK: 29 :
56
- ; CHECK-NEXT: br label [[TMP30 ]]
57
- ; CHECK: 30 :
58
+ ; CHECK-NEXT: br label %[[BB34 ]]
59
+ ; CHECK: [[BB34]] :
60
+ ; CHECK-NEXT: br label %[[BB35 ]]
61
+ ; CHECK: [[BB35]] :
58
62
; CHECK-NEXT: store i8 3, ptr addrspace(1) [[TMP31]], align 8
59
63
; CHECK-NEXT: ret void
60
64
;
@@ -67,15 +71,15 @@ define void @use_variables() sanitize_address {
67
71
define amdgpu_kernel void @k0 () sanitize_address {
68
72
; CHECK-LABEL: define amdgpu_kernel void @k0(
69
73
; CHECK-SAME: ) #[[ATTR1:[0-9]+]] !llvm.amdgcn.lds.kernel.id [[META3:![0-9]+]] {
70
- ; CHECK-NEXT: WId :
74
+ ; CHECK-NEXT: [[WID:.*]] :
71
75
; CHECK-NEXT: [[TMP0:%.*]] = call i32 @llvm.amdgcn.workitem.id.x()
72
76
; CHECK-NEXT: [[TMP1:%.*]] = call i32 @llvm.amdgcn.workitem.id.y()
73
77
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @llvm.amdgcn.workitem.id.z()
74
78
; CHECK-NEXT: [[TMP3:%.*]] = or i32 [[TMP0]], [[TMP1]]
75
79
; CHECK-NEXT: [[TMP4:%.*]] = or i32 [[TMP3]], [[TMP2]]
76
80
; CHECK-NEXT: [[TMP5:%.*]] = icmp eq i32 [[TMP4]], 0
77
- ; CHECK-NEXT: br i1 [[TMP5]], label [[MALLOC:% .*]], label [[TMP7:% .*]]
78
- ; CHECK: Malloc :
81
+ ; CHECK-NEXT: br i1 [[TMP5]], label % [[MALLOC:.*]], label %[[BB24: .*]]
82
+ ; CHECK: [[MALLOC]] :
79
83
; CHECK-NEXT: [[TMP13:%.*]] = load i32, ptr addrspace(1) getelementptr inbounds ([[LLVM_AMDGCN_SW_LDS_K0_MD_TYPE:%.*]], ptr addrspace(1) @llvm.amdgcn.sw.lds.k0.md, i32 0, i32 4, i32 0), align 4
80
84
; CHECK-NEXT: [[TMP14:%.*]] = load i32, ptr addrspace(1) getelementptr inbounds ([[LLVM_AMDGCN_SW_LDS_K0_MD_TYPE]], ptr addrspace(1) @llvm.amdgcn.sw.lds.k0.md, i32 0, i32 4, i32 2), align 4
81
85
; CHECK-NEXT: [[TMP16:%.*]] = add i32 [[TMP13]], [[TMP14]]
@@ -100,9 +104,9 @@ define amdgpu_kernel void @k0() sanitize_address {
100
104
; CHECK-NEXT: [[TMP67:%.*]] = getelementptr inbounds i8, ptr addrspace(1) [[TMP6]], i64 132
101
105
; CHECK-NEXT: [[TMP68:%.*]] = ptrtoint ptr addrspace(1) [[TMP67]] to i64
102
106
; CHECK-NEXT: call void @__asan_poison_region(i64 [[TMP68]], i64 28)
103
- ; CHECK-NEXT: br label [[TMP7 ]]
104
- ; CHECK: 24 :
105
- ; CHECK-NEXT: [[XYZCOND:%.*]] = phi i1 [ false, [[WID:%.* ]] ], [ true, [[MALLOC]] ]
107
+ ; CHECK-NEXT: br label %[[BB24 ]]
108
+ ; CHECK: [[BB24]] :
109
+ ; CHECK-NEXT: [[XYZCOND:%.*]] = phi i1 [ false, % [[WID]] ], [ true, % [[MALLOC]] ]
106
110
; CHECK-NEXT: call void @llvm.amdgcn.s.barrier()
107
111
; CHECK-NEXT: [[TMP19:%.*]] = load ptr addrspace(1), ptr addrspace(3) @llvm.amdgcn.sw.lds.k0, align 8
108
112
; CHECK-NEXT: [[TMP10:%.*]] = load i32, ptr addrspace(1) getelementptr inbounds ([[LLVM_AMDGCN_SW_LDS_K0_MD_TYPE]], ptr addrspace(1) @llvm.amdgcn.sw.lds.k0.md, i32 0, i32 1, i32 0), align 4
@@ -124,16 +128,16 @@ define amdgpu_kernel void @k0() sanitize_address {
124
128
; CHECK-NEXT: [[TMP41:%.*]] = and i1 [[TMP37]], [[TMP40]]
125
129
; CHECK-NEXT: [[TMP42:%.*]] = call i64 @llvm.amdgcn.ballot.i64(i1 [[TMP41]])
126
130
; CHECK-NEXT: [[TMP43:%.*]] = icmp ne i64 [[TMP42]], 0
127
- ; CHECK-NEXT: br i1 [[TMP43]], label [[ASAN_REPORT:% .*]], label [[TMP46:% .*]], !prof [[PROF2]]
128
- ; CHECK: asan.report :
129
- ; CHECK-NEXT: br i1 [[TMP41]], label [[TMP44:% .*]], label [[CONDFREE:% .*]]
130
- ; CHECK: 44 :
131
+ ; CHECK-NEXT: br i1 [[TMP43]], label % [[ASAN_REPORT:.*]], label %[[BB46: .*]], !prof [[PROF2]]
132
+ ; CHECK: [[ASAN_REPORT]] :
133
+ ; CHECK-NEXT: br i1 [[TMP41]], label %[[BB44: .*]], label %[[BB45: .*]]
134
+ ; CHECK: [[BB44]] :
131
135
; CHECK-NEXT: call void @__asan_report_store1(i64 [[TMP32]]) #[[ATTR7]]
132
136
; CHECK-NEXT: call void @llvm.amdgcn.unreachable()
133
- ; CHECK-NEXT: br label [[CONDFREE ]]
134
- ; CHECK: 45 :
135
- ; CHECK-NEXT: br label [[TMP46 ]]
136
- ; CHECK: 46 :
137
+ ; CHECK-NEXT: br label %[[BB45 ]]
138
+ ; CHECK: [[BB45]] :
139
+ ; CHECK-NEXT: br label %[[BB46 ]]
140
+ ; CHECK: [[BB46]] :
137
141
; CHECK-NEXT: store i8 7, ptr addrspace(1) [[TMP31]], align 1
138
142
; CHECK-NEXT: [[TMP47:%.*]] = ptrtoint ptr addrspace(3) [[TMP18]] to i32
139
143
; CHECK-NEXT: [[TMP48:%.*]] = getelementptr inbounds i8, ptr addrspace(1) [[TMP19]], i32 [[TMP47]]
@@ -152,16 +156,16 @@ define amdgpu_kernel void @k0() sanitize_address {
152
156
; CHECK-NEXT: [[TMP59:%.*]] = and i1 [[TMP54]], [[TMP58]]
153
157
; CHECK-NEXT: [[TMP60:%.*]] = call i64 @llvm.amdgcn.ballot.i64(i1 [[TMP59]])
154
158
; CHECK-NEXT: [[TMP61:%.*]] = icmp ne i64 [[TMP60]], 0
155
- ; CHECK-NEXT: br i1 [[TMP61]], label [[ASAN_REPORT1:% .*]], label [[TMP64:% .*]], !prof [[PROF2]]
156
- ; CHECK: asan.report1 :
157
- ; CHECK-NEXT: br i1 [[TMP59]], label [[TMP62:% .*]], label [[TMP63:% .*]]
158
- ; CHECK: 64 :
159
+ ; CHECK-NEXT: br i1 [[TMP61]], label % [[ASAN_REPORT1:.*]], label %[[BB66: .*]], !prof [[PROF2]]
160
+ ; CHECK: [[ASAN_REPORT1]] :
161
+ ; CHECK-NEXT: br i1 [[TMP59]], label %[[BB64: .*]], label %[[BB65: .*]]
162
+ ; CHECK: [[BB64]] :
159
163
; CHECK-NEXT: call void @__asan_report_store1(i64 [[TMP83]]) #[[ATTR7]]
160
164
; CHECK-NEXT: call void @llvm.amdgcn.unreachable()
161
- ; CHECK-NEXT: br label [[TMP63 ]]
162
- ; CHECK: 65 :
163
- ; CHECK-NEXT: br label [[TMP64 ]]
164
- ; CHECK: 66 :
165
+ ; CHECK-NEXT: br label %[[BB65 ]]
166
+ ; CHECK: [[BB65]] :
167
+ ; CHECK-NEXT: br label %[[BB66 ]]
168
+ ; CHECK: [[BB66]] :
165
169
; CHECK-NEXT: [[TMP84:%.*]] = ptrtoint ptr addrspace(1) [[TMP82]] to i64
166
170
; CHECK-NEXT: [[TMP85:%.*]] = lshr i64 [[TMP84]], 3
167
171
; CHECK-NEXT: [[TMP69:%.*]] = add i64 [[TMP85]], 2147450880
@@ -174,28 +178,28 @@ define amdgpu_kernel void @k0() sanitize_address {
174
178
; CHECK-NEXT: [[TMP76:%.*]] = and i1 [[TMP72]], [[TMP75]]
175
179
; CHECK-NEXT: [[TMP77:%.*]] = call i64 @llvm.amdgcn.ballot.i64(i1 [[TMP76]])
176
180
; CHECK-NEXT: [[TMP78:%.*]] = icmp ne i64 [[TMP77]], 0
177
- ; CHECK-NEXT: br i1 [[TMP78]], label [[ASAN_REPORT2:% .*]], label [[TMP81:% .*]], !prof [[PROF2]]
178
- ; CHECK: asan.report2 :
179
- ; CHECK-NEXT: br i1 [[TMP76]], label [[TMP79:% .*]], label [[TMP80:% .*]]
180
- ; CHECK: 79 :
181
+ ; CHECK-NEXT: br i1 [[TMP78]], label % [[ASAN_REPORT2:.*]], label %[[BB81: .*]], !prof [[PROF2]]
182
+ ; CHECK: [[ASAN_REPORT2]] :
183
+ ; CHECK-NEXT: br i1 [[TMP76]], label %[[BB79: .*]], label %[[BB80: .*]]
184
+ ; CHECK: [[BB79]] :
181
185
; CHECK-NEXT: call void @__asan_report_store1(i64 [[TMP84]]) #[[ATTR7]]
182
186
; CHECK-NEXT: call void @llvm.amdgcn.unreachable()
183
- ; CHECK-NEXT: br label [[TMP80 ]]
184
- ; CHECK: 80 :
185
- ; CHECK-NEXT: br label [[TMP81 ]]
186
- ; CHECK: 81 :
187
+ ; CHECK-NEXT: br label %[[BB80 ]]
188
+ ; CHECK: [[BB80]] :
189
+ ; CHECK-NEXT: br label %[[BB81 ]]
190
+ ; CHECK: [[BB81]] :
187
191
; CHECK-NEXT: store i32 8, ptr addrspace(1) [[TMP48]], align 2
188
- ; CHECK-NEXT: br label [[CONDFREE1:% .*]]
189
- ; CHECK: CondFree :
192
+ ; CHECK-NEXT: br label %[[CONDFREE: .*]]
193
+ ; CHECK: [[CONDFREE]] :
190
194
; CHECK-NEXT: call void @llvm.amdgcn.s.barrier()
191
- ; CHECK-NEXT: br i1 [[XYZCOND]], label [[FREE:% .*]], label [[END:% .*]]
192
- ; CHECK: Free :
195
+ ; CHECK-NEXT: br i1 [[XYZCOND]], label % [[FREE:.*]], label % [[END:.*]]
196
+ ; CHECK: [[FREE]] :
193
197
; CHECK-NEXT: [[TMP20:%.*]] = call ptr @llvm.returnaddress(i32 0)
194
198
; CHECK-NEXT: [[TMP21:%.*]] = ptrtoint ptr [[TMP20]] to i64
195
199
; CHECK-NEXT: [[TMP22:%.*]] = ptrtoint ptr addrspace(1) [[TMP19]] to i64
196
200
; CHECK-NEXT: call void @__asan_free_impl(i64 [[TMP22]], i64 [[TMP21]])
197
- ; CHECK-NEXT: br label [[END]]
198
- ; CHECK: End :
201
+ ; CHECK-NEXT: br label % [[END]]
202
+ ; CHECK: [[END]] :
199
203
; CHECK-NEXT: ret void
200
204
;
201
205
call void @use_variables ()
0 commit comments