[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / occupancy-levels.ll
blob44e5bf9635ac8278321ceb3a45281c81409c3936
1 ; RUN: llc -march=amdgcn -mcpu=gfx900 -mattr=-xnack < %s | FileCheck --check-prefixes=GCN,GFX9 %s
2 ; RUN: llc -march=amdgcn -mcpu=gfx1010 -mattr=-xnack < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W32,GFX1010,GFX1010W32 %s
3 ; RUN: llc -march=amdgcn -mcpu=gfx1010 -mattr=-xnack -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W64,GFX1010,GFX1010W64 %s
4 ; RUN: llc -march=amdgcn -mcpu=gfx1030 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W32,GFX1030,GFX1030W32 %s
5 ; RUN: llc -march=amdgcn -mcpu=gfx1030 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W64,GFX1030,GFX1030W64 %s
6 ; RUN: llc -march=amdgcn -mcpu=gfx1100 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W32 %s
7 ; RUN: llc -march=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W64 %s
8 ; RUN: llc -march=amdgcn -mcpu=gfx1101 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W32 %s
9 ; RUN: llc -march=amdgcn -mcpu=gfx1101 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W64 %s
10 ; RUN: llc -march=amdgcn -mcpu=gfx1102 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W32,GFX1030,GFX1030W32 %s
11 ; RUN: llc -march=amdgcn -mcpu=gfx1102 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W64,GFX1030,GFX1030W64 %s
12 ; RUN: llc -march=amdgcn -mcpu=gfx1150 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W32,GFX1030,GFX1030W32 %s
13 ; RUN: llc -march=amdgcn -mcpu=gfx1150 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX10,GFX10W64,GFX1030,GFX1030W64 %s
14 ; RUN: llc -march=amdgcn -mcpu=gfx1151 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W32 %s
15 ; RUN: llc -march=amdgcn -mcpu=gfx1151 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W64 %s
17 ; GCN-LABEL: {{^}}max_occupancy:
18 ; GFX9:       ; Occupancy: 10
19 ; GFX1010:    ; Occupancy: 20
20 ; GFX1030:    ; Occupancy: 16
21 ; GFX1100:    ; Occupancy: 16
22 define amdgpu_kernel void @max_occupancy() #10 {
23   ret void
26 ; GCN-LABEL: {{^}}limited_occupancy_3:
27 ; GFX9:       ; Occupancy: 3
28 ; GFX10W64:   ; Occupancy: 3
29 ; GFX10W32:   ; Occupancy: 4
30 ; GFX1100W64: ; Occupancy: 3
31 ; GFX1100W32: ; Occupancy: 5
32 define amdgpu_kernel void @limited_occupancy_3() #0 {
33   ret void
36 ; GCN-LABEL: {{^}}limited_occupancy_18:
37 ; GFX9:       ; Occupancy: 10
38 ; GFX1010:    ; Occupancy: 18
39 ; GFX1030:    ; Occupancy: 16
40 ; GFX1100:    ; Occupancy: 16
41 define amdgpu_kernel void @limited_occupancy_18() #1 {
42   ret void
45 ; GCN-LABEL: {{^}}limited_occupancy_19:
46 ; GFX9:       ; Occupancy: 10
47 ; GFX1010:    ; Occupancy: 20
48 ; GFX1030:    ; Occupancy: 16
49 ; GFX1100:    ; Occupancy: 16
50 define amdgpu_kernel void @limited_occupancy_19() #2 {
51   ret void
54 ; GCN-LABEL: {{^}}used_24_vgprs:
55 ; GFX9:       ; Occupancy: 10
56 ; GFX1010:    ; Occupancy: 20
57 ; GFX1030:    ; Occupancy: 16
58 ; GFX1100:    ; Occupancy: 16
59 define amdgpu_kernel void @used_24_vgprs() #10 {
60   call void asm sideeffect "", "~{v23}" ()
61   ret void
64 ; GCN-LABEL: {{^}}used_28_vgprs:
65 ; GFX9:       ; Occupancy: 9
66 ; GFX1010W64: ; Occupancy: 18
67 ; GFX1010W32: ; Occupancy: 20
68 ; GFX1030:    ; Occupancy: 16
69 ; GFX1100:    ; Occupancy: 16
70 define amdgpu_kernel void @used_28_vgprs() #10 {
71   call void asm sideeffect "", "~{v27}" ()
72   ret void
75 ; GCN-LABEL: {{^}}used_32_vgprs:
76 ; GFX9:       ; Occupancy: 8
77 ; GFX10W64:   ; Occupancy: 16
78 ; GFX1010W32: ; Occupancy: 20
79 ; GFX1030W32: ; Occupancy: 16
80 ; GFX1100:    ; Occupancy: 16
81 define amdgpu_kernel void @used_32_vgprs() #10 {
82   call void asm sideeffect "", "~{v31}" ()
83   ret void
86 ; GCN-LABEL: {{^}}used_36_vgprs:
87 ; GFX9:       ; Occupancy: 7
88 ; GFX1010W64: ; Occupancy: 14
89 ; GFX1010W32: ; Occupancy: 20
90 ; GFX1030W64: ; Occupancy: 12
91 ; GFX1030W32: ; Occupancy: 16
92 ; GFX1100:    ; Occupancy: 16
93 define amdgpu_kernel void @used_36_vgprs() #10 {
94   call void asm sideeffect "", "~{v35}" ()
95   ret void
98 ; GCN-LABEL: {{^}}used_40_vgprs:
99 ; GFX9:       ; Occupancy: 6
100 ; GFX10W64:   ; Occupancy: 12
101 ; GFX1010W32: ; Occupancy: 20
102 ; GFX1030W32: ; Occupancy: 16
103 ; GFX1100:    ; Occupancy: 16
104 define amdgpu_kernel void @used_40_vgprs() #10 {
105   call void asm sideeffect "", "~{v39}" ()
106   ret void
109 ; GCN-LABEL: {{^}}used_44_vgprs:
110 ; GFX9:       ; Occupancy: 5
111 ; GFX1010W64: ; Occupancy: 11
112 ; GFX1010W32: ; Occupancy: 20
113 ; GFX1030W64: ; Occupancy: 10
114 ; GFX1030W32: ; Occupancy: 16
115 ; GFX1100:    ; Occupancy: 16
116 define amdgpu_kernel void @used_44_vgprs() #10 {
117   call void asm sideeffect "", "~{v43}" ()
118   ret void
121 ; GCN-LABEL: {{^}}used_48_vgprs:
122 ; GFX9:       ; Occupancy: 5
123 ; GFX10W64:   ; Occupancy: 10
124 ; GFX1010W32: ; Occupancy: 20
125 ; GFX1030W32: ; Occupancy: 16
126 ; GFX1100:    ; Occupancy: 16
127 define amdgpu_kernel void @used_48_vgprs() #10 {
128   call void asm sideeffect "", "~{v47}" ()
129   ret void
132 ; GCN-LABEL: {{^}}used_56_vgprs:
133 ; GFX9:       ; Occupancy: 4
134 ; GFX10W64:   ; Occupancy: 9
135 ; GFX1010W32: ; Occupancy: 18
136 ; GFX1030W32: ; Occupancy: 16
137 ; GFX1100W64: ; Occupancy: 12
138 ; GFX1100W32: ; Occupancy: 16
139 define amdgpu_kernel void @used_56_vgprs() #10 {
140   call void asm sideeffect "", "~{v55}" ()
141   ret void
144 ; GCN-LABEL: {{^}}used_64_vgprs:
145 ; GFX9:       ; Occupancy: 4
146 ; GFX10W64:   ; Occupancy: 8
147 ; GFX10W32:   ; Occupancy: 16
148 ; GFX1100W64: ; Occupancy: 10
149 ; GFX1100W32: ; Occupancy: 16
150 define amdgpu_kernel void @used_64_vgprs() #10 {
151   call void asm sideeffect "", "~{v63}" ()
152   ret void
155 ; GCN-LABEL: {{^}}used_72_vgprs:
156 ; GFX9:       ; Occupancy: 3
157 ; GFX10W64:   ; Occupancy: 7
158 ; GFX1010W32: ; Occupancy: 14
159 ; GFX1030W32: ; Occupancy: 12
160 ; GFX1100W64: ; Occupancy: 10
161 ; GFX1100W32: ; Occupancy: 16
162 define amdgpu_kernel void @used_72_vgprs() #10 {
163   call void asm sideeffect "", "~{v71}" ()
164   ret void
167 ; GCN-LABEL: {{^}}used_80_vgprs:
168 ; GFX9:       ; Occupancy: 3
169 ; GFX10W64:   ; Occupancy: 6
170 ; GFX10W32:   ; Occupancy: 12
171 ; GFX1100W64: ; Occupancy: 9
172 ; GFX1100W32: ; Occupancy: 16
173 define amdgpu_kernel void @used_80_vgprs() #10 {
174   call void asm sideeffect "", "~{v79}" ()
175   ret void
178 ; GCN-LABEL: {{^}}used_84_vgprs:
179 ; GFX9:       ; Occupancy: 3
180 ; GFX1010W64: ; Occupancy: 6
181 ; GFX1010W32: ; Occupancy: 11
182 ; GFX1030W64: ; Occupancy: 5
183 ; GFX1030W32: ; Occupancy: 10
184 ; GFX1100W64: ; Occupancy: 9
185 ; GFX1100W32: ; Occupancy: 16
186 define amdgpu_kernel void @used_84_vgprs() #10 {
187   call void asm sideeffect "", "~{v83}" ()
188   ret void
191 ; GCN-LABEL: {{^}}used_88_vgprs:
192 ; GFX9:       ; Occupancy: 2
193 ; GFX10W64:   ; Occupancy: 5
194 ; GFX1010W32: ; Occupancy: 11
195 ; GFX1030W32: ; Occupancy: 10
196 ; GFX1100W64: ; Occupancy: 8
197 ; GFX1100W32: ; Occupancy: 16
198 define amdgpu_kernel void @used_88_vgprs() #10 {
199   call void asm sideeffect "", "~{v87}" ()
200   ret void
203 ; GCN-LABEL: {{^}}used_96_vgprs:
204 ; GFX9:       ; Occupancy: 2
205 ; GFX10W64:   ; Occupancy: 5
206 ; GFX10W32:   ; Occupancy: 10
207 ; GFX1100W64: ; Occupancy: 8
208 ; GFX1100W32: ; Occupancy: 16
209 define amdgpu_kernel void @used_96_vgprs() #10 {
210   call void asm sideeffect "", "~{v95}" ()
211   ret void
214 ; GCN-LABEL: {{^}}used_100_vgprs:
215 ; GFX9:       ; Occupancy: 2
216 ; GFX1010W64: ; Occupancy: 5
217 ; GFX1030W64: ; Occupancy: 4
218 ; GFX10W32:   ; Occupancy: 9
219 ; GFX1100W64: ; Occupancy: 7
220 ; GFX1100W32: ; Occupancy: 12
221 define amdgpu_kernel void @used_100_vgprs() #10 {
222   call void asm sideeffect "", "~{v99}" ()
223   ret void
226 ; GCN-LABEL: {{^}}used_112_vgprs:
227 ; GFX9:       ; Occupancy: 2
228 ; GFX10W64:   ; Occupancy: 4
229 ; GFX10W32:   ; Occupancy: 9
230 ; GFX1100W64: ; Occupancy: 6
231 ; GFX1100W32: ; Occupancy: 12
232 define amdgpu_kernel void @used_112_vgprs() #10 {
233   call void asm sideeffect "", "~{v111}" ()
234   ret void
237 ; GCN-LABEL: {{^}}used_128_vgprs:
238 ; GFX9:       ; Occupancy: 2
239 ; GFX10W64:   ; Occupancy: 4
240 ; GFX10W32:   ; Occupancy: 8
241 ; GFX1100W64: ; Occupancy: 5
242 ; GFX1100W32: ; Occupancy: 10
243 define amdgpu_kernel void @used_128_vgprs() #10 {
244   call void asm sideeffect "", "~{v127}" ()
245   ret void
248 ; GCN-LABEL: {{^}}used_144_vgprs:
249 ; GFX9:       ; Occupancy: 1
250 ; GFX10W64:   ; Occupancy: 3
251 ; GFX10W32:   ; Occupancy: 7
252 ; GFX1100W64: ; Occupancy: 5
253 ; GFX1100W32: ; Occupancy: 10
254 define amdgpu_kernel void @used_144_vgprs() #10 {
255   call void asm sideeffect "", "~{v143}" ()
256   ret void
259 ; GCN-LABEL: {{^}}used_168_vgprs:
260 ; GFX9:       ; Occupancy: 1
261 ; GFX10W64:   ; Occupancy: 3
262 ; GFX1010W32: ; Occupancy: 6
263 ; GFX1030W32: ; Occupancy: 5
264 ; GFX1100W64: ; Occupancy: 4
265 ; GFX1100W32: ; Occupancy: 9
266 define amdgpu_kernel void @used_168_vgprs() #10 {
267   call void asm sideeffect "", "~{v167}" ()
268   ret void
271 ; GCN-LABEL: {{^}}used_200_vgprs:
272 ; GFX9:       ; Occupancy: 1
273 ; GFX10W64:   ; Occupancy: 2
274 ; GFX1010W32: ; Occupancy: 5
275 ; GFX1030W32: ; Occupancy: 4
276 ; GFX1100W64: ; Occupancy: 3
277 ; GFX1100W32: ; Occupancy: 7
278 define amdgpu_kernel void @used_200_vgprs() #10 {
279   call void asm sideeffect "", "~{v199}" ()
280   ret void
283 ; GCN-LABEL: {{^}}used_256_vgprs:
284 ; GFX9:       ; Occupancy: 1
285 ; GFX10W64:   ; Occupancy: 2
286 ; GFX10W32:   ; Occupancy: 4
287 ; GFX1100W64: ; Occupancy: 2
288 ; GFX1100W32: ; Occupancy: 5
289 define amdgpu_kernel void @used_256_vgprs() #10 {
290   call void asm sideeffect "", "~{v255}" ()
291   ret void
294 ; GCN-LABEL: {{^}}used_80_sgprs:
295 ; GFX9:       ; Occupancy: 10
296 ; GFX1010:    ; Occupancy: 20
297 ; GFX1030:    ; Occupancy: 16
298 ; GFX1100:    ; Occupancy: 16
299 define amdgpu_kernel void @used_80_sgprs() #10 {
300   call void asm sideeffect "", "~{s79}" ()
301   ret void
304 ; GCN-LABEL: {{^}}used_88_sgprs:
305 ; GFX9:       ; Occupancy: 9
306 ; GFX1010:    ; Occupancy: 20
307 ; GFX1030:    ; Occupancy: 16
308 ; GFX1100:    ; Occupancy: 16
309 define amdgpu_kernel void @used_88_sgprs() #10 {
310   call void asm sideeffect "", "~{s87}" ()
311   ret void
314 ; GCN-LABEL: {{^}}used_100_sgprs:
315 ; GFX9:       ; Occupancy: 8
316 ; GFX1010:    ; Occupancy: 20
317 ; GFX1030:    ; Occupancy: 16
318 ; GFX1100:    ; Occupancy: 16
319 define amdgpu_kernel void @used_100_sgprs() #10 {
320   call void asm sideeffect "", "~{s99}" ()
321   ret void
324 ; GCN-LABEL: {{^}}used_101_sgprs:
325 ; GFX9:       ; Occupancy: 7
326 ; GFX1010:    ; Occupancy: 20
327 ; GFX1030:    ; Occupancy: 16
328 ; GFX1100:    ; Occupancy: 16
329 define amdgpu_kernel void @used_101_sgprs() #10 {
330   call void asm sideeffect "", "~{s100}" ()
331   ret void
334 ; GCN-LABEL: {{^}}used_lds_6552:
335 ; GFX9:       ; Occupancy: 8
336 ; GFX1010W64: ; Occupancy: 20
337 ; GFX1030W64: ; Occupancy: 16
338 ; GFX10W32:   ; Occupancy: 16
339 ; GFX1100:    ; Occupancy: 16
340 @lds6552 = internal addrspace(3) global [6552 x i8] undef, align 4
341 define amdgpu_kernel void @used_lds_6552() {
342   store volatile i8 1, ptr addrspace(3) @lds6552
343   ret void
346 ; GCN-LABEL: {{^}}used_lds_6556:
347 ; GFX9:       ; Occupancy: 8
348 ; GFX1010W64: ; Occupancy: 20
349 ; GFX1030W64: ; Occupancy: 16
350 ; GFX10W32:   ; Occupancy: 16
351 ; GFX1100:    ; Occupancy: 16
352 @lds6556 = internal addrspace(3) global [6556 x i8] undef, align 4
353 define amdgpu_kernel void @used_lds_6556() {
354   store volatile i8 1, ptr addrspace(3) @lds6556
355   ret void
358 ; GCN-LABEL: {{^}}used_lds_13112:
359 ; GFX9:       ; Occupancy: 8
360 ; GFX1010W64: ; Occupancy: 20
361 ; GFX1030W64: ; Occupancy: 16
362 ; GFX10W32:   ; Occupancy: 16
363 ; GFX1100:    ; Occupancy: 16
364 @lds13112 = internal addrspace(3) global [13112 x i8] undef, align 4
365 define amdgpu_kernel void @used_lds_13112() {
366   store volatile i8 1, ptr addrspace(3) @lds13112
367   ret void
370 ; GCN-LABEL: {{^}}used_lds_8252_max_group_size_64:
371 ; GFX9:       ; Occupancy: 2{{$}}
372 ; GFX10W64:   ; Occupancy: 4{{$}}
373 ; GFX10W32:   ; Occupancy: 8{{$}}
374 ; GFX1100W64: ; Occupancy: 4{{$}}
375 ; GFX1100W32: ; Occupancy: 8{{$}}
376 @lds8252 = internal addrspace(3) global [8252 x i8] undef, align 4
377 define amdgpu_kernel void @used_lds_8252_max_group_size_64() #3 {
378   store volatile i8 1, ptr addrspace(3) @lds8252
379   ret void
382 ; GCN-LABEL: {{^}}used_lds_8252_max_group_size_96:
383 ; GFX9:       ; Occupancy: 4{{$}}
384 ; GFX10W64:   ; Occupancy: 8{{$}}
385 ; GFX10W32:   ; Occupancy: 12{{$}}
386 ; GFX1100W64: ; Occupancy: 8{{$}}
387 ; GFX1100W32: ; Occupancy: 12{{$}}
388 define amdgpu_kernel void @used_lds_8252_max_group_size_96() #4 {
389   store volatile i8 1, ptr addrspace(3) @lds8252
390   ret void
393 ; GCN-LABEL: {{^}}used_lds_8252_max_group_size_128:
394 ; GFX9:       ; Occupancy: 4{{$}}
395 ; GFX10W64:   ; Occupancy: 8{{$}}
396 ; GFX10W32:   ; Occupancy: 15{{$}}
397 ; GFX1100W64: ; Occupancy: 8{{$}}
398 ; GFX1100W32: ; Occupancy: 15{{$}}
399 define amdgpu_kernel void @used_lds_8252_max_group_size_128() #5 {
400   store volatile i8 1, ptr addrspace(3) @lds8252
401   ret void
404 ; GCN-LABEL: {{^}}used_lds_8252_max_group_size_192:
405 ; GFX9:       ; Occupancy: 6{{$}}
406 ; GFX10W64:   ; Occupancy: 12{{$}}
407 ; GFX1010W32: ; Occupancy: 20{{$}}
408 ; GFX1030W32: ; Occupancy: 15{{$}}
409 ; GFX1100W64: ; Occupancy: 12{{$}}
410 ; GFX1100W32: ; Occupancy: 15{{$}}
411 define amdgpu_kernel void @used_lds_8252_max_group_size_192() #6 {
412   store volatile i8 1, ptr addrspace(3) @lds8252
413   ret void
416 ; GCN-LABEL: {{^}}used_lds_8252_max_group_size_256:
417 ; GFX9:       ; Occupancy: 7{{$}}
418 ; GFX10W64:   ; Occupancy: 15{{$}}
419 ; GFX1010W32: ; Occupancy: 20{{$}}
420 ; GFX1030W32: ; Occupancy: 16{{$}}
421 ; GFX1100W64: ; Occupancy: 15{{$}}
422 ; GFX1100W32: ; Occupancy: 16{{$}}
423 define amdgpu_kernel void @used_lds_8252_max_group_size_256() #7 {
424   store volatile i8 1, ptr addrspace(3) @lds8252
425   ret void
428 ; GCN-LABEL: {{^}}used_lds_8252_max_group_size_512:
429 ; GFX9:       ; Occupancy: 10{{$}}
430 ; GFX1010:    ; Occupancy: 20{{$}}
431 ; GFX1030:    ; Occupancy: 16{{$}}
432 ; GFX1100:    ; Occupancy: 16{{$}}
433 define amdgpu_kernel void @used_lds_8252_max_group_size_512() #8 {
434   store volatile i8 1, ptr addrspace(3) @lds8252
435   ret void
438 ; GCN-LABEL: {{^}}used_lds_8252_max_group_size_1024:
439 ; GFX9:       ; Occupancy: 8{{$}}
440 ; GFX1010W32: ; Occupancy: 16{{$}}
441 ; GFX1010W64: ; Occupancy: 20{{$}}
442 ; GFX1030:    ; Occupancy: 16{{$}}
443 ; GFX1100:    ; Occupancy: 16{{$}}
444 define amdgpu_kernel void @used_lds_8252_max_group_size_1024() #9 {
445   store volatile i8 1, ptr addrspace(3) @lds8252
446   ret void
449 ; GCN-LABEL: {{^}}used_lds_8252_max_group_size_32:
450 ; GFX9:       ; Occupancy: 2{{$}}
451 ; GFX10:      ; Occupancy: 4{{$}}
452 ; GFX1100:    ; Occupancy: 4{{$}}
453 define amdgpu_kernel void @used_lds_8252_max_group_size_32() #10 {
454   store volatile i8 1, ptr addrspace(3) @lds8252
455   ret void
458 attributes #0 = { "amdgpu-waves-per-eu"="2,3" "amdgpu-flat-work-group-size"="1,64" }
459 attributes #1 = { "amdgpu-waves-per-eu"="18,18" "amdgpu-flat-work-group-size"="1,32" }
460 attributes #2 = { "amdgpu-waves-per-eu"="19,19" "amdgpu-flat-work-group-size"="1,32" }
461 attributes #3 = { "amdgpu-flat-work-group-size"="1,64" }
462 attributes #4 = { "amdgpu-flat-work-group-size"="1,96" }
463 attributes #5 = { "amdgpu-flat-work-group-size"="1,128" }
464 attributes #6 = { "amdgpu-flat-work-group-size"="1,192" }
465 attributes #7 = { "amdgpu-flat-work-group-size"="1,256" }
466 attributes #8 = { "amdgpu-flat-work-group-size"="1,512" }
467 attributes #9 = { "amdgpu-flat-work-group-size"="1,1024" }
468 attributes #10 = { "amdgpu-flat-work-group-size"="1,32" }