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