1# RUN: llc -mtriple=amdgcn-amd-amdhsa -run-pass=none -verify-machineinstrs %s -o - | FileCheck -check-prefixes=FULL,ALL %s
2# RUN: llc -mtriple=amdgcn-amd-amdhsa -run-pass=none -simplify-mir -verify-machineinstrs %s -o - | FileCheck -check-prefixes=SIMPLE,ALL %s
3
4
5---
6# ALL-LABEL: name: kernel0
7# FULL: machineFunctionInfo:
8# FULL-NEXT: explicitKernArgSize: 128
9# FULL-NEXT: maxKernArgAlign: 64
10# FULL-NEXT: ldsSize: 2048
11# FULL-NEXT: gdsSize: 256
12# FULL-NEXT: dynLDSAlign: 1
13# FULL-NEXT: isEntryFunction: true
14# FULL-NEXT: noSignedZerosFPMath: false
15# FULL-NEXT: memoryBound:     true
16# FULL-NEXT: waveLimiter:     true
17# FULL-NEXT: hasSpilledSGPRs: false
18# FULL-NEXT: hasSpilledVGPRs: false
19# FULL-NEXT: scratchRSrcReg:  '$sgpr8_sgpr9_sgpr10_sgpr11'
20# FULL-NEXT: frameOffsetReg:  '$sgpr12'
21# FULL-NEXT: stackPtrOffsetReg:  '$sgpr13'
22# FULL-NEXT: bytesInStackArgArea: 0
23# FULL-NEXT: returnsVoid: true
24# FULL-NEXT: argumentInfo:
25# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
26# FULL-NEXT: dispatchPtr:     { reg: '$sgpr4_sgpr5' }
27# FULL-NEXT: queuePtr:        { reg: '$sgpr6_sgpr7' }
28# FULL-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
29# FULL-NEXT: dispatchID:      { reg: '$sgpr10_sgpr11' }
30# FULL-NEXT: workGroupIDX:    { reg: '$sgpr6' }
31# FULL-NEXT: workGroupIDY:    { reg: '$sgpr13' }
32# FULL-NEXT: workGroupIDZ:    { reg: '$sgpr14' }
33# FULL-NEXT: LDSKernelId:     { reg: '$sgpr15' }
34# FULL-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr7' }
35# FULL-NEXT: implicitArgPtr:  { reg: '$sgpr8_sgpr9' }
36# FULL-NEXT: workItemIDX:     { reg: '$vgpr0' }
37# FULL-NEXT: workItemIDY:     { reg: '$vgpr31', mask: 1047552 }
38# FULL-NEXT: workItemIDZ:     { reg: '$vgpr31', mask: 1072693248 }
39# FULL-NEXT: mode:
40# FULL-NEXT: ieee: true
41# FULL-NEXT: dx10-clamp: true
42# FULL-NEXT: fp32-input-denormals: true
43# FULL-NEXT: fp32-output-denormals: true
44# FULL-NEXT: fp64-fp16-input-denormals: true
45# FULL-NEXT: fp64-fp16-output-denormals: true
46# FULL-NEXT:  highBitsOf32BitAddress: 0
47# FULL-NEXT:  occupancy: 10
48# FULL-NEXT:  vgprForAGPRCopy: ''
49# FULL-NEXT: body:
50
51# SIMPLE: machineFunctionInfo:
52# SIMPLE-NEXT: explicitKernArgSize: 128
53# SIMPLE-NEXT: maxKernArgAlign: 64
54# SIMPLE-NEXT: ldsSize: 2048
55# SIMPLE-NEXT: gdsSize: 256
56# SIMPLE-NEXT: isEntryFunction: true
57# SIMPLE-NEXT: memoryBound: true
58# SIMPLE-NEXT: waveLimiter: true
59# SIMPLE-NEXT: scratchRSrcReg: '$sgpr8_sgpr9_sgpr10_sgpr11'
60# SIMPLE-NEXT: frameOffsetReg:  '$sgpr12'
61# SIMPLE-NEXT: stackPtrOffsetReg:  '$sgpr13'
62# SIMPLE-NEXT: argumentInfo:
63# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
64# SIMPLE-NEXT: dispatchPtr:     { reg: '$sgpr4_sgpr5' }
65# SIMPLE-NEXT: queuePtr:        { reg: '$sgpr6_sgpr7' }
66# SIMPLE-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
67# SIMPLE-NEXT: dispatchID:      { reg: '$sgpr10_sgpr11' }
68# SIMPLE-NEXT: workGroupIDX:    { reg: '$sgpr6' }
69# SIMPLE-NEXT: workGroupIDY:    { reg: '$sgpr13' }
70# SIMPLE-NEXT: workGroupIDZ:    { reg: '$sgpr14' }
71# SIMPLE-NEXT: LDSKernelId:     { reg: '$sgpr15' }
72# SIMPLE-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr7' }
73# SIMPLE-NEXT: implicitArgPtr:  { reg: '$sgpr8_sgpr9' }
74# SIMPLE-NEXT: workItemIDX: { reg: '$vgpr0' }
75# SIMPLE-NEXT: workItemIDY:     { reg: '$vgpr31', mask: 1047552 }
76# SIMPLE-NEXT: workItemIDZ:     { reg: '$vgpr31', mask: 1072693248 }
77# SIMPLE-NEXT: occupancy: 10
78# SIMPLE-NEXT: body:
79name: kernel0
80machineFunctionInfo:
81  explicitKernArgSize: 128
82  maxKernArgAlign: 64
83  ldsSize: 2048
84  gdsSize: 256
85  isEntryFunction: true
86  noSignedZerosFPMath: false
87  memoryBound:     true
88  waveLimiter:     true
89  scratchRSrcReg:  '$sgpr8_sgpr9_sgpr10_sgpr11'
90  frameOffsetReg: '$sgpr12'
91  stackPtrOffsetReg:  '$sgpr13'
92  argumentInfo:
93    privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
94    kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
95    workGroupIDX:    { reg: '$sgpr6' }
96    privateSegmentWaveByteOffset: { reg: '$sgpr7' }
97    workItemIDX:     { reg: '$vgpr0' }
98body:             |
99  bb.0:
100    S_ENDPGM 0
101
102...
103
104# FIXME: Should be able to not print section for simple
105---
106# ALL-LABEL: name: no_mfi
107# FULL: machineFunctionInfo:
108# FULL-NEXT: explicitKernArgSize: 0
109# FULL-NEXT: maxKernArgAlign: 1
110# FULL-NEXT: ldsSize: 0
111# FULL-NEXT: gdsSize: 0
112# FULL-NEXT: dynLDSAlign: 1
113# FULL-NEXT: isEntryFunction: false
114# FULL-NEXT: noSignedZerosFPMath: false
115# FULL-NEXT: memoryBound:     false
116# FULL-NEXT: waveLimiter:     false
117# FULL-NEXT: hasSpilledSGPRs: false
118# FULL-NEXT: hasSpilledVGPRs: false
119# FULL-NEXT: scratchRSrcReg:  '$private_rsrc_reg'
120# FULL-NEXT: frameOffsetReg:  '$fp_reg'
121# FULL-NEXT: stackPtrOffsetReg:  '$sp_reg'
122# FULL-NEXT: bytesInStackArgArea: 0
123# FULL-NEXT: returnsVoid: true
124# FULL-NEXT: argumentInfo:
125# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
126# FULL-NEXT: dispatchPtr:     { reg: '$sgpr4_sgpr5' }
127# FULL-NEXT: queuePtr:        { reg: '$sgpr6_sgpr7' }
128# FULL-NEXT: dispatchID:      { reg: '$sgpr10_sgpr11' }
129# FULL-NEXT: workGroupIDX:    { reg: '$sgpr12' }
130# FULL-NEXT: workGroupIDY:    { reg: '$sgpr13' }
131# FULL-NEXT: workGroupIDZ:    { reg: '$sgpr14' }
132# FULL-NEXT: LDSKernelId:     { reg: '$sgpr15' }
133# FULL-NEXT: implicitArgPtr:  { reg: '$sgpr8_sgpr9' }
134# FULL-NEXT: workItemIDX:     { reg: '$vgpr31', mask: 1023 }
135# FULL-NEXT: workItemIDY:     { reg: '$vgpr31', mask: 1047552 }
136# FULL-NEXT: workItemIDZ:     { reg: '$vgpr31', mask: 1072693248 }
137# FULL-NEXT: mode:
138# FULL-NEXT: ieee: true
139# FULL-NEXT: dx10-clamp: true
140# FULL-NEXT: fp32-input-denormals: true
141# FULL-NEXT: fp32-output-denormals: true
142# FULL-NEXT: fp64-fp16-input-denormals: true
143# FULL-NEXT: fp64-fp16-output-denormals: true
144# FULL-NEXT:  highBitsOf32BitAddress: 0
145# FULL-NEXT:  occupancy: 10
146# FULL-NEXT: vgprForAGPRCopy: ''
147# FULL-NEXT: body:
148
149# SIMPLE: machineFunctionInfo:
150# SIMPLE-NEXT: maxKernArgAlign: 1
151# SIMPLE-NEXT: argumentInfo:
152# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
153# SIMPLE-NEXT: dispatchPtr:     { reg: '$sgpr4_sgpr5' }
154# SIMPLE-NEXT: queuePtr:        { reg: '$sgpr6_sgpr7' }
155# SIMPLE-NEXT: dispatchID:      { reg: '$sgpr10_sgpr11' }
156# SIMPLE-NEXT: workGroupIDX:    { reg: '$sgpr12' }
157# SIMPLE-NEXT: workGroupIDY:    { reg: '$sgpr13' }
158# SIMPLE-NEXT: workGroupIDZ:    { reg: '$sgpr14' }
159# SIMPLE-NEXT: LDSKernelId:     { reg: '$sgpr15' }
160# SIMPLE-NEXT: implicitArgPtr:  { reg: '$sgpr8_sgpr9' }
161# SIMPLE-NEXT: workItemIDX:     { reg: '$vgpr31', mask: 1023 }
162# SIMPLE-NEXT: workItemIDY:     { reg: '$vgpr31', mask: 1047552 }
163# SIMPLE-NEXT: workItemIDZ:     { reg: '$vgpr31', mask: 1072693248 }
164# SIMPLE-NEXT:  occupancy: 10
165# SIMPLE-NEXT: body:
166
167name: no_mfi
168body:             |
169  bb.0:
170    S_ENDPGM 0
171
172...
173
174---
175# ALL-LABEL: name: empty_mfi
176# FULL: machineFunctionInfo:
177# FULL-NEXT: explicitKernArgSize: 0
178# FULL-NEXT: maxKernArgAlign: 1
179# FULL-NEXT: ldsSize: 0
180# FULL-NEXT: gdsSize: 0
181# FULL-NEXT: dynLDSAlign: 1
182# FULL-NEXT: isEntryFunction: false
183# FULL-NEXT: noSignedZerosFPMath: false
184# FULL-NEXT: memoryBound:     false
185# FULL-NEXT: waveLimiter:     false
186# FULL-NEXT: hasSpilledSGPRs: false
187# FULL-NEXT: hasSpilledVGPRs: false
188# FULL-NEXT: scratchRSrcReg:  '$private_rsrc_reg'
189# FULL-NEXT: frameOffsetReg:  '$fp_reg'
190# FULL-NEXT: stackPtrOffsetReg:  '$sp_reg'
191# FULL-NEXT: bytesInStackArgArea: 0
192# FULL-NEXT: returnsVoid: true
193# FULL-NEXT: argumentInfo:
194# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
195# FULL-NEXT: dispatchPtr:     { reg: '$sgpr4_sgpr5' }
196# FULL-NEXT: queuePtr:        { reg: '$sgpr6_sgpr7' }
197# FULL-NEXT: dispatchID:      { reg: '$sgpr10_sgpr11' }
198# FULL-NEXT: workGroupIDX:    { reg: '$sgpr12' }
199# FULL-NEXT: workGroupIDY:    { reg: '$sgpr13' }
200# FULL-NEXT: workGroupIDZ:    { reg: '$sgpr14' }
201# FULL-NEXT: LDSKernelId:     { reg: '$sgpr15' }
202# FULL-NEXT: implicitArgPtr:  { reg: '$sgpr8_sgpr9' }
203# FULL-NEXT: workItemIDX:     { reg: '$vgpr31', mask: 1023 }
204# FULL-NEXT: workItemIDY:     { reg: '$vgpr31', mask: 1047552 }
205# FULL-NEXT: workItemIDZ:     { reg: '$vgpr31', mask: 1072693248 }
206# FULL-NEXT: mode:
207# FULL-NEXT: ieee: true
208# FULL-NEXT: dx10-clamp: true
209# FULL-NEXT: fp32-input-denormals: true
210# FULL-NEXT: fp32-output-denormals: true
211# FULL-NEXT: fp64-fp16-input-denormals: true
212# FULL-NEXT: fp64-fp16-output-denormals: true
213# FULL-NEXT:  highBitsOf32BitAddress: 0
214# FULL-NEXT:  occupancy: 10
215# FULL-NEXT: vgprForAGPRCopy: ''
216# FULL-NEXT: body:
217
218# SIMPLE: machineFunctionInfo:
219# SIMPLE-NEXT: maxKernArgAlign: 1
220# SIMPLE-NEXT: argumentInfo:
221# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
222# SIMPLE-NEXT: dispatchPtr:     { reg: '$sgpr4_sgpr5' }
223# SIMPLE-NEXT: queuePtr:        { reg: '$sgpr6_sgpr7' }
224# SIMPLE-NEXT: dispatchID:      { reg: '$sgpr10_sgpr11' }
225# SIMPLE-NEXT: workGroupIDX:    { reg: '$sgpr12' }
226# SIMPLE-NEXT: workGroupIDY:    { reg: '$sgpr13' }
227# SIMPLE-NEXT: workGroupIDZ:    { reg: '$sgpr14' }
228# SIMPLE-NEXT: LDSKernelId:     { reg: '$sgpr15' }
229# SIMPLE-NEXT: implicitArgPtr:  { reg: '$sgpr8_sgpr9' }
230# SIMPLE-NEXT: workItemIDX:     { reg: '$vgpr31', mask: 1023 }
231# SIMPLE-NEXT: workItemIDY:     { reg: '$vgpr31', mask: 1047552 }
232# SIMPLE-NEXT: workItemIDZ:     { reg: '$vgpr31', mask: 1072693248 }
233# SIMPLE-NEXT:  occupancy: 10
234# SIMPLE-NEXT: body:
235
236name: empty_mfi
237machineFunctionInfo:
238body:             |
239  bb.0:
240    S_ENDPGM 0
241
242...
243
244---
245# ALL-LABEL: name: empty_mfi_entry_func
246# FULL: machineFunctionInfo:
247# FULL-NEXT: explicitKernArgSize: 0
248# FULL-NEXT: maxKernArgAlign: 1
249# FULL-NEXT: ldsSize: 0
250# FULL-NEXT: gdsSize: 0
251# FULL-NEXT: dynLDSAlign: 1
252# FULL-NEXT: isEntryFunction: true
253# FULL-NEXT: noSignedZerosFPMath: false
254# FULL-NEXT: memoryBound:     false
255# FULL-NEXT: waveLimiter:     false
256# FULL-NEXT: hasSpilledSGPRs: false
257# FULL-NEXT: hasSpilledVGPRs: false
258# FULL-NEXT: scratchRSrcReg:  '$private_rsrc_reg'
259# FULL-NEXT: frameOffsetReg:  '$fp_reg'
260# FULL-NEXT: stackPtrOffsetReg:  '$sp_reg'
261# FULL-NEXT: bytesInStackArgArea: 0
262# FULL-NEXT: returnsVoid: true
263# FULL-NEXT: argumentInfo:
264# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
265# FULL-NEXT: dispatchPtr:     { reg: '$sgpr4_sgpr5' }
266# FULL-NEXT: queuePtr:        { reg: '$sgpr6_sgpr7' }
267# FULL-NEXT: dispatchID:      { reg: '$sgpr10_sgpr11' }
268# FULL-NEXT: workGroupIDX:    { reg: '$sgpr12' }
269# FULL-NEXT: workGroupIDY:    { reg: '$sgpr13' }
270# FULL-NEXT: workGroupIDZ:    { reg: '$sgpr14' }
271# FULL-NEXT: LDSKernelId:     { reg: '$sgpr15' }
272# FULL-NEXT: implicitArgPtr:  { reg: '$sgpr8_sgpr9' }
273# FULL-NEXT: workItemIDX:     { reg: '$vgpr31', mask: 1023 }
274# FULL-NEXT: workItemIDY:     { reg: '$vgpr31', mask: 1047552 }
275# FULL-NEXT: workItemIDZ:     { reg: '$vgpr31', mask: 1072693248 }
276# FULL-NEXT: mode:
277# FULL-NEXT: ieee: true
278# FULL-NEXT: dx10-clamp: true
279# FULL-NEXT: fp32-input-denormals: true
280# FULL-NEXT: fp32-output-denormals: true
281# FULL-NEXT: fp64-fp16-input-denormals: true
282# FULL-NEXT: fp64-fp16-output-denormals: true
283# FULL-NEXT:  highBitsOf32BitAddress: 0
284# FULL-NEXT:  occupancy: 10
285# FULL-NEXT: vgprForAGPRCopy: ''
286# FULL-NEXT: body:
287
288# SIMPLE: machineFunctionInfo:
289# SIMPLE-NEXT: maxKernArgAlign: 1
290# SIMPLE-NEXT: isEntryFunction: true
291# SIMPLE-NEXT: argumentInfo:
292# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
293# SIMPLE-NEXT: dispatchPtr:     { reg: '$sgpr4_sgpr5' }
294# SIMPLE-NEXT: queuePtr:        { reg: '$sgpr6_sgpr7' }
295# SIMPLE-NEXT: dispatchID:      { reg: '$sgpr10_sgpr11' }
296# SIMPLE-NEXT: workGroupIDX:    { reg: '$sgpr12' }
297# SIMPLE-NEXT: workGroupIDY:    { reg: '$sgpr13' }
298# SIMPLE-NEXT: workGroupIDZ:    { reg: '$sgpr14' }
299# SIMPLE-NEXT: LDSKernelId:     { reg: '$sgpr15' }
300# SIMPLE-NEXT: implicitArgPtr:  { reg: '$sgpr8_sgpr9' }
301# SIMPLE-NEXT: workItemIDX:     { reg: '$vgpr31', mask: 1023 }
302# SIMPLE-NEXT: workItemIDY:     { reg: '$vgpr31', mask: 1047552 }
303# SIMPLE-NEXT: workItemIDZ:     { reg: '$vgpr31', mask: 1072693248 }
304# SIMPLE-NEXT: occupancy: 10
305# SIMPLE-NEXT: body:
306
307name: empty_mfi_entry_func
308machineFunctionInfo:
309  isEntryFunction: true
310body:             |
311  bb.0:
312    S_ENDPGM 0
313
314...
315
316---
317# ALL-LABEL: name: default_regs_mfi
318
319# FULL: scratchRSrcReg:  '$private_rsrc_reg'
320# FULL-NEXT: frameOffsetReg:  '$fp_reg'
321# FULL-NEXT: stackPtrOffsetReg:  '$sp_reg'
322
323# SIMPLE-NOT: scratchRSrcReg
324# SIMPLE-NOT:: stackPtrOffsetReg
325name: default_regs_mfi
326machineFunctionInfo:
327  scratchRSrcReg:  '$private_rsrc_reg'
328
329body:             |
330  bb.0:
331    S_ENDPGM 0
332
333...
334
335---
336# ALL-LABEL: name: fake_stack_arginfo
337
338# FULL: argumentInfo:
339# FULL: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
340# FULL: flatScratchInit: { offset: 4 }
341# FULL: workItemIDY: { reg: '$vgpr0', mask: 65280 }
342
343# SIMPLE: argumentInfo:
344# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
345# SIMPLE-NEXT: dispatchPtr:     { reg: '$sgpr4_sgpr5' }
346# SIMPLE-NEXT: queuePtr:        { reg: '$sgpr6_sgpr7' }
347# SIMPLE-NEXT: dispatchID:      { reg: '$sgpr10_sgpr11' }
348# SIMPLE-NEXT: flatScratchInit: { offset: 4 }
349# SIMPLE-NEXT: workGroupIDX:    { reg: '$sgpr12' }
350# SIMPLE-NEXT: workGroupIDY:    { reg: '$sgpr13' }
351# SIMPLE-NEXT: workGroupIDZ:    { reg: '$sgpr14' }
352# SIMPLE-NEXT: LDSKernelId:     { reg: '$sgpr15' }
353# SIMPLE-NEXT: implicitArgPtr:  { reg: '$sgpr8_sgpr9' }
354# SIMPLE-NEXT: workItemIDX:     { reg: '$vgpr31', mask: 1023 }
355# SIMPLE-NEXT: workItemIDY:     { reg: '$vgpr0', mask: 65280 }
356# SIMPLE-NEXT: workItemIDZ:     { reg: '$vgpr31', mask: 1072693248 }
357name: fake_stack_arginfo
358machineFunctionInfo:
359  argumentInfo:
360    flatScratchInit: { offset: 4 }
361    workItemIDY:     { reg: '$vgpr0' , mask: 0xff00 }
362
363body:             |
364  bb.0:
365    S_ENDPGM 0
366
367...
368
369---
370# ALL-LABEL: name: parse_mode
371# ALL: mode:
372# ALL-NEXT: ieee: false
373# ALL-NEXT: dx10-clamp: false
374# ALL-NEXT: fp32-input-denormals: false
375# ALL-NEXT: fp32-output-denormals: false
376# ALL-NEXT: fp64-fp16-input-denormals: false
377# ALL-NEXT: fp64-fp16-output-denormals: false
378
379name: parse_mode
380machineFunctionInfo:
381  mode:
382    ieee: false
383    dx10-clamp: false
384    fp32-input-denormals: false
385    fp32-output-denormals: false
386    fp64-fp16-input-denormals: false
387    fp64-fp16-output-denormals: false
388
389body:             |
390  bb.0:
391    S_ENDPGM 0
392
393...
394
395
396---
397# ALL-LABEL: name: parse_spilled_regs
398# ALL: machineFunctionInfo:
399# ALL: hasSpilledSGPRs: true
400# ALL-NEXT: hasSpilledVGPRs: true
401
402name: parse_spilled_regs
403machineFunctionInfo:
404  hasSpilledSGPRs: true
405  hasSpilledVGPRs: true
406
407body:             |
408  bb.0:
409    S_ENDPGM 0
410
411...
412
413---
414# ALL-LABEL: name: dyn_lds_with_alignment
415
416# FULL: ldsSize: 0
417# FULL-NEXT: gdsSize: 0
418# FULL-NEXT: dynLDSAlign: 8
419
420# SIMPLE: dynLDSAlign: 8
421name: dyn_lds_with_alignment
422machineFunctionInfo:
423  dynLDSAlign: 8
424
425body:             |
426  bb.0:
427    S_ENDPGM 0
428
429...
430
431---
432# ALL-LABEL: name: occupancy_0
433# ALL: occupancy: 10
434name: occupancy_0
435machineFunctionInfo:
436  occupancy: 0
437
438body:             |
439  bb.0:
440    S_ENDPGM 0
441
442...
443
444---
445# ALL-LABEL: name: occupancy_3
446# ALL: occupancy: 3
447name: occupancy_3
448machineFunctionInfo:
449  occupancy: 3
450
451body:             |
452  bb.0:
453    S_ENDPGM 0
454
455...
456
457---
458# ALL-LABEL: name: scavenge_fi
459# ALL: scavengeFI: '%stack.0'
460name: scavenge_fi
461stack:
462  - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 }
463machineFunctionInfo:
464  scavengeFI: '%stack.0'
465
466body:             |
467  bb.0:
468    S_ENDPGM 0
469
470...
471
472---
473# ALL-LABEL: name: bytes_in_stack_arg_area
474# ALL: bytesInStackArgArea: 444
475name: bytes_in_stack_arg_area
476machineFunctionInfo:
477  bytesInStackArgArea: 444
478body:             |
479  bb.0:
480    SI_RETURN
481
482...
483
484---
485# ALL-LABEL: name: returns_void_true
486# FULL: returnsVoid: true
487# SIMPLE-NOT: returnsVoid
488name: returns_void_true
489machineFunctionInfo:
490  returnsVoid: true
491body:             |
492  bb.0:
493    SI_RETURN
494
495...
496---
497# ALL-LABEL: name: returns_void_false
498# ALL: returnsVoid: false
499name: returns_void_false
500machineFunctionInfo:
501  returnsVoid: false
502body:             |
503  bb.0:
504    SI_RETURN
505
506...
507
508---
509# ALL-LABEL: name: vgpr_for_agpr_copy
510# ALL: vgprForAGPRCopy: '$vgpr2'
511name: vgpr_for_agpr_copy
512machineFunctionInfo:
513  vgprForAGPRCopy: '$vgpr2'
514body:             |
515  bb.0:
516    SI_RETURN
517
518...
519
520---
521# ALL-LABEL: name: vgpr_for_agpr_copy_noreg
522# FULL: vgprForAGPRCopy: ''
523# SIMPLE-NOT: vgprForAGPRCopy
524name: vgpr_for_agpr_copy_noreg
525machineFunctionInfo:
526  vgprForAGPRCopy: '$noreg'
527body:             |
528  bb.0:
529    SI_RETURN
530
531...
532