Skip to content

Commit e0c7ef6

Browse files
committed
Add test
Change-Id: I68bc69d5bafa3d8161c7b507721a9cde3e99d2b1
1 parent 1b22c91 commit e0c7ef6

File tree

1 file changed

+348
-0
lines changed

1 file changed

+348
-0
lines changed
Lines changed: 348 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,348 @@
1+
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx950 -run-pass=machine-scheduler --debug-only=machine-scheduler -o - %s 2>&1 | FileCheck %s
2+
# REQUIRES: asserts
3+
4+
--- |
5+
define void @avgpr_rp_occ1() #0 {
6+
entry:
7+
unreachable
8+
}
9+
10+
define void @avgpr_rp_occ2() #1 {
11+
entry:
12+
unreachable
13+
}
14+
15+
define void @avgpr_rp_occ3() #2 {
16+
entry:
17+
unreachable
18+
}
19+
20+
define void @avgpr_rp_occ4() #3 {
21+
entry:
22+
unreachable
23+
}
24+
25+
define void @avgpr_rp_occ5() #4 {
26+
entry:
27+
unreachable
28+
}
29+
30+
define void @avgpr_rp_occ6() #5 {
31+
entry:
32+
unreachable
33+
}
34+
35+
define void @avgpr_rp_occ7() #6 {
36+
entry:
37+
unreachable
38+
}
39+
40+
define void @avgpr_rp_occ8() #7 {
41+
entry:
42+
unreachable
43+
}
44+
45+
attributes #0 = {"amdgpu-waves-per-eu"="1,1" "amdgpu-flat-work-group-size"="64,64"}
46+
attributes #1 = {"amdgpu-waves-per-eu"="2,2" "amdgpu-flat-work-group-size"="64,64"}
47+
attributes #2 = {"amdgpu-waves-per-eu"="3,3" "amdgpu-flat-work-group-size"="64,64"}
48+
attributes #3 = {"amdgpu-waves-per-eu"="4,4" "amdgpu-flat-work-group-size"="64,64"}
49+
attributes #4 = {"amdgpu-waves-per-eu"="5,5" "amdgpu-flat-work-group-size"="64,64"}
50+
attributes #5 = {"amdgpu-waves-per-eu"="6,6" "amdgpu-flat-work-group-size"="64,64"}
51+
attributes #6 = {"amdgpu-waves-per-eu"="7,7" "amdgpu-flat-work-group-size"="64,64"}
52+
attributes #7 = {"amdgpu-waves-per-eu"="8,8" "amdgpu-flat-work-group-size"="64,64"}
53+
54+
55+
...
56+
57+
# CHECK: avgpr_rp_occ1:%bb.0
58+
# CHECK: Pressure before scheduling:
59+
# CHECK-NEXT: Region live-ins:
60+
# CHECK-NEXT: Region live-in pressure: VGPRs: 0 AGPRs: 0(O8), SGPRs: 0(O10), LVGPR WT: 0, LSGPR WT: 0 -> Occ: 8
61+
# CHECK-NEXT: Region register pressure: VGPRs: 256 AGPRs: 192(O1), SGPRs: 0(O10), LVGPR WT: 256, LSGPR WT: 0 -> Occ: 1
62+
63+
---
64+
name: avgpr_rp_occ1
65+
tracksRegLiveness: true
66+
machineFunctionInfo:
67+
isEntryFunction: true
68+
scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'
69+
stackPtrOffsetReg: '$sgpr32'
70+
argumentInfo:
71+
privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
72+
kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
73+
workGroupIDX: { reg: '$sgpr6' }
74+
privateSegmentWaveByteOffset: { reg: '$sgpr7' }
75+
workItemIDX: { reg: '$vgpr0' }
76+
sgprForEXECCopy: '$sgpr100_sgpr101'
77+
body: |
78+
bb.0:
79+
liveins: $vgpr0, $sgpr4_sgpr5
80+
%1:vreg_1024 = IMPLICIT_DEF
81+
%2:vreg_1024 = IMPLICIT_DEF
82+
%3:vreg_1024 = IMPLICIT_DEF
83+
%4:vreg_1024 = IMPLICIT_DEF
84+
%5:vreg_1024 = IMPLICIT_DEF
85+
%6:vreg_1024 = IMPLICIT_DEF
86+
%7:vreg_1024 = IMPLICIT_DEF
87+
%8:av_1024 = IMPLICIT_DEF
88+
%9:av_1024 = IMPLICIT_DEF
89+
%10:av_1024 = IMPLICIT_DEF
90+
%11:av_1024 = IMPLICIT_DEF
91+
%12:av_1024 = IMPLICIT_DEF
92+
%13:av_1024 = IMPLICIT_DEF
93+
%14:av_1024 = IMPLICIT_DEF
94+
SCHED_BARRIER 0
95+
KILL %1, %2, %3, %4, %5, %6, %7
96+
97+
bb.1:
98+
KILL %8, %9, %10, %11, %12, %13, %14
99+
S_ENDPGM 0
100+
...
101+
102+
# CHECK: avgpr_rp_occ2:%bb.0
103+
# CHECK: Pressure before scheduling:
104+
# CHECK-NEXT: Region live-ins:
105+
# CHECK-NEXT: Region live-in pressure: VGPRs: 0 AGPRs: 0(O8), SGPRs: 0(O10), LVGPR WT: 0, LSGPR WT: 0 -> Occ: 8
106+
# CHECK-NEXT: Region register pressure: VGPRs: 128 AGPRs: 64(O2), SGPRs: 0(O10), LVGPR WT: 128, LSGPR WT: 0 -> Occ: 2
107+
108+
---
109+
name: avgpr_rp_occ2
110+
tracksRegLiveness: true
111+
machineFunctionInfo:
112+
isEntryFunction: true
113+
scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'
114+
stackPtrOffsetReg: '$sgpr32'
115+
argumentInfo:
116+
privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
117+
kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
118+
workGroupIDX: { reg: '$sgpr6' }
119+
privateSegmentWaveByteOffset: { reg: '$sgpr7' }
120+
workItemIDX: { reg: '$vgpr0' }
121+
sgprForEXECCopy: '$sgpr100_sgpr101'
122+
body: |
123+
bb.0:
124+
liveins: $vgpr0, $sgpr4_sgpr5
125+
%1:vreg_1024 = IMPLICIT_DEF
126+
%2:vreg_1024 = IMPLICIT_DEF
127+
%3:vreg_1024 = IMPLICIT_DEF
128+
%4:av_1024 = IMPLICIT_DEF
129+
%5:av_1024 = IMPLICIT_DEF
130+
%6:av_1024 = IMPLICIT_DEF
131+
SCHED_BARRIER 0
132+
KILL %1, %2, %3
133+
134+
bb.1:
135+
KILL %4, %5, %6
136+
S_ENDPGM 0
137+
...
138+
139+
# CHECK: avgpr_rp_occ3:%bb.0
140+
# CHECK: Pressure before scheduling:
141+
# CHECK-NEXT: Region live-ins:
142+
# CHECK-NEXT: Region live-in pressure: VGPRs: 0 AGPRs: 0(O8), SGPRs: 0(O10), LVGPR WT: 0, LSGPR WT: 0 -> Occ: 8
143+
# CHECK-NEXT: Region register pressure: VGPRs: 84 AGPRs: 44(O4), SGPRs: 0(O10), LVGPR WT: 84, LSGPR WT: 0 -> Occ: 4
144+
145+
---
146+
name: avgpr_rp_occ3
147+
tracksRegLiveness: true
148+
machineFunctionInfo:
149+
isEntryFunction: true
150+
scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'
151+
stackPtrOffsetReg: '$sgpr32'
152+
argumentInfo:
153+
privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
154+
kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
155+
workGroupIDX: { reg: '$sgpr6' }
156+
privateSegmentWaveByteOffset: { reg: '$sgpr7' }
157+
workItemIDX: { reg: '$vgpr0' }
158+
sgprForEXECCopy: '$sgpr100_sgpr101'
159+
body: |
160+
bb.0:
161+
liveins: $vgpr0, $sgpr4_sgpr5
162+
%1:vreg_1024 = IMPLICIT_DEF
163+
%2:vreg_1024 = IMPLICIT_DEF
164+
%3:av_1024 = IMPLICIT_DEF
165+
%4:av_1024 = IMPLICIT_DEF
166+
SCHED_BARRIER 0
167+
KILL %1, %2
168+
169+
bb.1:
170+
KILL %3, %4
171+
S_ENDPGM 0
172+
...
173+
174+
# CHECK: avgpr_rp_occ4:%bb.0
175+
# CHECK: Pressure before scheduling:
176+
# CHECK-NEXT: Region live-ins:
177+
# CHECK-NEXT: Region live-in pressure: VGPRs: 0 AGPRs: 0(O8), SGPRs: 0(O10), LVGPR WT: 0, LSGPR WT: 0 -> Occ: 8
178+
# CHECK-NEXT: Region register pressure: VGPRs: 64 AGPRs: 64(O4), SGPRs: 0(O10), LVGPR WT: 64, LSGPR WT: 0 -> Occ: 4
179+
180+
---
181+
name: avgpr_rp_occ4
182+
tracksRegLiveness: true
183+
machineFunctionInfo:
184+
isEntryFunction: true
185+
scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'
186+
stackPtrOffsetReg: '$sgpr32'
187+
argumentInfo:
188+
privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
189+
kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
190+
workGroupIDX: { reg: '$sgpr6' }
191+
privateSegmentWaveByteOffset: { reg: '$sgpr7' }
192+
workItemIDX: { reg: '$vgpr0' }
193+
sgprForEXECCopy: '$sgpr100_sgpr101'
194+
body: |
195+
bb.0:
196+
liveins: $vgpr0, $sgpr4_sgpr5
197+
%1:vreg_1024 = IMPLICIT_DEF
198+
%2:vreg_1024 = IMPLICIT_DEF
199+
%3:av_1024 = IMPLICIT_DEF
200+
%4:av_1024 = IMPLICIT_DEF
201+
SCHED_BARRIER 0
202+
KILL %1, %2
203+
204+
bb.1:
205+
KILL %3, %4
206+
S_ENDPGM 0
207+
...
208+
209+
# CHECK: avgpr_rp_occ5:%bb.0
210+
# CHECK: Pressure before scheduling:
211+
# CHECK-NEXT: Region live-ins:
212+
# CHECK-NEXT: Region live-in pressure: VGPRs: 0 AGPRs: 0(O8), SGPRs: 0(O10), LVGPR WT: 0, LSGPR WT: 0 -> Occ: 8
213+
# CHECK-NEXT: Region register pressure: VGPRs: 48 AGPRs: 80(O4), SGPRs: 0(O10), LVGPR WT: 64, LSGPR WT: 0 -> Occ: 4
214+
215+
---
216+
name: avgpr_rp_occ5
217+
tracksRegLiveness: true
218+
machineFunctionInfo:
219+
isEntryFunction: true
220+
scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'
221+
stackPtrOffsetReg: '$sgpr32'
222+
argumentInfo:
223+
privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
224+
kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
225+
workGroupIDX: { reg: '$sgpr6' }
226+
privateSegmentWaveByteOffset: { reg: '$sgpr7' }
227+
workItemIDX: { reg: '$vgpr0' }
228+
sgprForEXECCopy: '$sgpr100_sgpr101'
229+
body: |
230+
bb.0:
231+
liveins: $vgpr0, $sgpr4_sgpr5
232+
%1:vreg_1024 = IMPLICIT_DEF
233+
%2:vreg_1024 = IMPLICIT_DEF
234+
%3:av_1024 = IMPLICIT_DEF
235+
%4:av_1024 = IMPLICIT_DEF
236+
SCHED_BARRIER 0
237+
KILL %1, %2
238+
239+
bb.1:
240+
KILL %3, %4
241+
S_ENDPGM 0
242+
...
243+
244+
# CHECK: avgpr_rp_occ6:%bb.0
245+
# CHECK: Pressure before scheduling:
246+
# CHECK-NEXT: Region live-ins:
247+
# CHECK-NEXT: Region live-in pressure: VGPRs: 0 AGPRs: 0(O8), SGPRs: 0(O10), LVGPR WT: 0, LSGPR WT: 0 -> Occ: 8
248+
# CHECK-NEXT: Region register pressure: VGPRs: 40 AGPRs: 88(O4), SGPRs: 0(O10), LVGPR WT: 64, LSGPR WT: 0 -> Occ: 4
249+
250+
---
251+
name: avgpr_rp_occ6
252+
tracksRegLiveness: true
253+
machineFunctionInfo:
254+
isEntryFunction: true
255+
scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'
256+
stackPtrOffsetReg: '$sgpr32'
257+
argumentInfo:
258+
privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
259+
kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
260+
workGroupIDX: { reg: '$sgpr6' }
261+
privateSegmentWaveByteOffset: { reg: '$sgpr7' }
262+
workItemIDX: { reg: '$vgpr0' }
263+
sgprForEXECCopy: '$sgpr100_sgpr101'
264+
body: |
265+
bb.0:
266+
liveins: $vgpr0, $sgpr4_sgpr5
267+
%1:vreg_1024 = IMPLICIT_DEF
268+
%2:vreg_1024 = IMPLICIT_DEF
269+
%3:av_1024 = IMPLICIT_DEF
270+
%4:av_1024 = IMPLICIT_DEF
271+
SCHED_BARRIER 0
272+
KILL %1, %2
273+
274+
bb.1:
275+
KILL %3, %4
276+
S_ENDPGM 0
277+
...
278+
279+
# CHECK: avgpr_rp_occ7:%bb.0
280+
# CHECK: Pressure before scheduling:
281+
# CHECK-NEXT: Region live-ins:
282+
# CHECK-NEXT: Region live-in pressure: VGPRs: 0 AGPRs: 0(O8), SGPRs: 0(O10), LVGPR WT: 0, LSGPR WT: 0 -> Occ: 8
283+
# CHECK-NEXT: Region register pressure: VGPRs: 36 AGPRs: 92(O4), SGPRs: 0(O10), LVGPR WT: 64, LSGPR WT: 0 -> Occ: 4
284+
285+
---
286+
name: avgpr_rp_occ7
287+
tracksRegLiveness: true
288+
machineFunctionInfo:
289+
isEntryFunction: true
290+
scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'
291+
stackPtrOffsetReg: '$sgpr32'
292+
argumentInfo:
293+
privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
294+
kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
295+
workGroupIDX: { reg: '$sgpr6' }
296+
privateSegmentWaveByteOffset: { reg: '$sgpr7' }
297+
workItemIDX: { reg: '$vgpr0' }
298+
sgprForEXECCopy: '$sgpr100_sgpr101'
299+
body: |
300+
bb.0:
301+
liveins: $vgpr0, $sgpr4_sgpr5
302+
%1:vreg_1024 = IMPLICIT_DEF
303+
%2:vreg_1024 = IMPLICIT_DEF
304+
%3:av_1024 = IMPLICIT_DEF
305+
%4:av_1024 = IMPLICIT_DEF
306+
SCHED_BARRIER 0
307+
KILL %1, %2
308+
309+
bb.1:
310+
KILL %3, %4
311+
S_ENDPGM 0
312+
...
313+
314+
# CHECK: avgpr_rp_occ8:%bb.0
315+
# CHECK: Pressure before scheduling:
316+
# CHECK-NEXT: Region live-ins:
317+
# CHECK-NEXT: Region live-in pressure: VGPRs: 0 AGPRs: 0(O8), SGPRs: 0(O10), LVGPR WT: 0, LSGPR WT: 0 -> Occ: 8
318+
# CHECK-NEXT: Region register pressure: VGPRs: 32 AGPRs: 96(O4), SGPRs: 0(O10), LVGPR WT: 64, LSGPR WT: 0 -> Occ: 4
319+
320+
---
321+
name: avgpr_rp_occ8
322+
tracksRegLiveness: true
323+
machineFunctionInfo:
324+
isEntryFunction: true
325+
scratchRSrcReg: '$sgpr96_sgpr97_sgpr98_sgpr99'
326+
stackPtrOffsetReg: '$sgpr32'
327+
argumentInfo:
328+
privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
329+
kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
330+
workGroupIDX: { reg: '$sgpr6' }
331+
privateSegmentWaveByteOffset: { reg: '$sgpr7' }
332+
workItemIDX: { reg: '$vgpr0' }
333+
sgprForEXECCopy: '$sgpr100_sgpr101'
334+
body: |
335+
bb.0:
336+
liveins: $vgpr0, $sgpr4_sgpr5
337+
%1:vreg_1024 = IMPLICIT_DEF
338+
%2:vreg_1024 = IMPLICIT_DEF
339+
%3:av_1024 = IMPLICIT_DEF
340+
%4:av_1024 = IMPLICIT_DEF
341+
SCHED_BARRIER 0
342+
KILL %1, %2
343+
344+
bb.1:
345+
KILL %3, %4
346+
S_ENDPGM 0
347+
...
348+

0 commit comments

Comments
 (0)