xref: /llvm-project/llvm/test/CodeGen/AMDGPU/copy-vgpr-clobber-spill-vgpr.mir (revision b6b703b2dfc1d1ba45ebc64ed6b53a3a46f531f5)
1# NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2# RUN: llc -mtriple=amdgcn -mcpu=gfx908 -verify-machineinstrs -start-before=prologepilog %s -o - | FileCheck --check-prefix=GFX908 %s
3# RUN: llc -mtriple=amdgcn -mcpu=gfx90a -verify-machineinstrs -start-before=prologepilog %s -o - | FileCheck --check-prefix=GFX90A %s
4
5--- |
6
7  define amdgpu_kernel void @test_spill() #0 {
8  ; GFX908-LABEL: test_spill:
9  ; GFX908:       ; %bb.0:
10  ; GFX908-NEXT:    ; implicit-def: $agpr96_agpr97_agpr98_agpr99_agpr100_agpr101_agpr102_agpr103_agpr104_agpr105_agpr106_agpr107_agpr108_agpr109_agpr110_agpr111
11  ; GFX908-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
12  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a96
13  ; GFX908-NEXT:    ; implicit-def: $vgpr0
14  ; GFX908-NEXT:    ; implicit-def: $vgpr1
15  ; GFX908-NEXT:    ; implicit-def: $vgpr2
16  ; GFX908-NEXT:    ; implicit-def: $vgpr3
17  ; GFX908-NEXT:    ; implicit-def: $vgpr4
18  ; GFX908-NEXT:    ; implicit-def: $vgpr5
19  ; GFX908-NEXT:    ; implicit-def: $vgpr6
20  ; GFX908-NEXT:    ; implicit-def: $vgpr7
21  ; GFX908-NEXT:    ; implicit-def: $vgpr8
22  ; GFX908-NEXT:    ; implicit-def: $vgpr9
23  ; GFX908-NEXT:    ; implicit-def: $vgpr10
24  ; GFX908-NEXT:    ; implicit-def: $vgpr11
25  ; GFX908-NEXT:    ; implicit-def: $vgpr12
26  ; GFX908-NEXT:    ; implicit-def: $vgpr13
27  ; GFX908-NEXT:    ; implicit-def: $vgpr14
28  ; GFX908-NEXT:    ; implicit-def: $vgpr15
29  ; GFX908-NEXT:    ; implicit-def: $vgpr16
30  ; GFX908-NEXT:    ; implicit-def: $vgpr17
31  ; GFX908-NEXT:    ; implicit-def: $vgpr18
32  ; GFX908-NEXT:    ; implicit-def: $vgpr19
33  ; GFX908-NEXT:    ; implicit-def: $vgpr20
34  ; GFX908-NEXT:    ; implicit-def: $vgpr21
35  ; GFX908-NEXT:    ; implicit-def: $vgpr22
36  ; GFX908-NEXT:    ; implicit-def: $vgpr23
37  ; GFX908-NEXT:    ; implicit-def: $vgpr24
38  ; GFX908-NEXT:    ; implicit-def: $vgpr25
39  ; GFX908-NEXT:    ; implicit-def: $vgpr26
40  ; GFX908-NEXT:    ; implicit-def: $vgpr27
41  ; GFX908-NEXT:    ; implicit-def: $vgpr28
42  ; GFX908-NEXT:    ; implicit-def: $vgpr29
43  ; GFX908-NEXT:    ; implicit-def: $vgpr30
44  ; GFX908-NEXT:    ; implicit-def: $vgpr31
45  ; GFX908-NEXT:    ; implicit-def: $vgpr32
46  ; GFX908-NEXT:    ; implicit-def: $vgpr33
47  ; GFX908-NEXT:    ; implicit-def: $vgpr34
48  ; GFX908-NEXT:    ; implicit-def: $vgpr35
49  ; GFX908-NEXT:    ; implicit-def: $vgpr36
50  ; GFX908-NEXT:    ; implicit-def: $vgpr37
51  ; GFX908-NEXT:    ; implicit-def: $vgpr38
52  ; GFX908-NEXT:    ; implicit-def: $vgpr39
53  ; GFX908-NEXT:    ; implicit-def: $vgpr40
54  ; GFX908-NEXT:    ; implicit-def: $vgpr41
55  ; GFX908-NEXT:    ; implicit-def: $vgpr42
56  ; GFX908-NEXT:    ; implicit-def: $vgpr43
57  ; GFX908-NEXT:    ; implicit-def: $vgpr44
58  ; GFX908-NEXT:    ; implicit-def: $vgpr45
59  ; GFX908-NEXT:    ; implicit-def: $vgpr46
60  ; GFX908-NEXT:    ; implicit-def: $vgpr47
61  ; GFX908-NEXT:    ; implicit-def: $vgpr48
62  ; GFX908-NEXT:    ; implicit-def: $vgpr49
63  ; GFX908-NEXT:    ; implicit-def: $vgpr50
64  ; GFX908-NEXT:    ; implicit-def: $vgpr51
65  ; GFX908-NEXT:    ; implicit-def: $vgpr52
66  ; GFX908-NEXT:    ; implicit-def: $vgpr53
67  ; GFX908-NEXT:    ; implicit-def: $vgpr54
68  ; GFX908-NEXT:    ; implicit-def: $vgpr55
69  ; GFX908-NEXT:    ; implicit-def: $vgpr56
70  ; GFX908-NEXT:    ; implicit-def: $vgpr57
71  ; GFX908-NEXT:    ; implicit-def: $vgpr58
72  ; GFX908-NEXT:    ; implicit-def: $vgpr59
73  ; GFX908-NEXT:    ; implicit-def: $vgpr60
74  ; GFX908-NEXT:    ; implicit-def: $vgpr61
75  ; GFX908-NEXT:    s_nop 1
76  ; GFX908-NEXT:    v_accvgpr_write_b32 a64, v63
77  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a97
78  ; GFX908-NEXT:    s_nop 1
79  ; GFX908-NEXT:    v_accvgpr_write_b32 a65, v63
80  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a98
81  ; GFX908-NEXT:    s_nop 1
82  ; GFX908-NEXT:    v_accvgpr_write_b32 a66, v63
83  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a99
84  ; GFX908-NEXT:    s_nop 1
85  ; GFX908-NEXT:    v_accvgpr_write_b32 a67, v63
86  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a100
87  ; GFX908-NEXT:    s_nop 1
88  ; GFX908-NEXT:    v_accvgpr_write_b32 a68, v63
89  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a101
90  ; GFX908-NEXT:    s_nop 1
91  ; GFX908-NEXT:    v_accvgpr_write_b32 a69, v63
92  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a102
93  ; GFX908-NEXT:    s_nop 1
94  ; GFX908-NEXT:    v_accvgpr_write_b32 a70, v63
95  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a103
96  ; GFX908-NEXT:    s_nop 1
97  ; GFX908-NEXT:    v_accvgpr_write_b32 a71, v63
98  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a104
99  ; GFX908-NEXT:    s_nop 1
100  ; GFX908-NEXT:    v_accvgpr_write_b32 a72, v63
101  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a105
102  ; GFX908-NEXT:    s_nop 1
103  ; GFX908-NEXT:    v_accvgpr_write_b32 a73, v63
104  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a106
105  ; GFX908-NEXT:    s_nop 1
106  ; GFX908-NEXT:    v_accvgpr_write_b32 a74, v63
107  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a107
108  ; GFX908-NEXT:    s_nop 1
109  ; GFX908-NEXT:    v_accvgpr_write_b32 a75, v63
110  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a108
111  ; GFX908-NEXT:    s_nop 1
112  ; GFX908-NEXT:    v_accvgpr_write_b32 a76, v63
113  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a109
114  ; GFX908-NEXT:    s_nop 1
115  ; GFX908-NEXT:    v_accvgpr_write_b32 a77, v63
116  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a110
117  ; GFX908-NEXT:    s_nop 1
118  ; GFX908-NEXT:    v_accvgpr_write_b32 a78, v63
119  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a111
120  ; GFX908-NEXT:    s_nop 1
121  ; GFX908-NEXT:    v_accvgpr_write_b32 a79, v63
122  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a96 ; Reload Reuse
123  ; GFX908-NEXT:    v_accvgpr_read_b32 v62, a111 ; Reload Reuse
124  ; GFX908-NEXT:    s_nop 0
125  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 ; 4-byte Folded Spill
126  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a97 ; Reload Reuse
127  ; GFX908-NEXT:    s_nop 1
128  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:4 ; 4-byte Folded Spill
129  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a98 ; Reload Reuse
130  ; GFX908-NEXT:    s_nop 1
131  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:8 ; 4-byte Folded Spill
132  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a99 ; Reload Reuse
133  ; GFX908-NEXT:    s_nop 1
134  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:12 ; 4-byte Folded Spill
135  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a100 ; Reload Reuse
136  ; GFX908-NEXT:    s_nop 1
137  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:16 ; 4-byte Folded Spill
138  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a101 ; Reload Reuse
139  ; GFX908-NEXT:    s_nop 1
140  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:20 ; 4-byte Folded Spill
141  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a102 ; Reload Reuse
142  ; GFX908-NEXT:    s_nop 1
143  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:24 ; 4-byte Folded Spill
144  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a103 ; Reload Reuse
145  ; GFX908-NEXT:    s_nop 1
146  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:28 ; 4-byte Folded Spill
147  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a104 ; Reload Reuse
148  ; GFX908-NEXT:    s_nop 1
149  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:32 ; 4-byte Folded Spill
150  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a105 ; Reload Reuse
151  ; GFX908-NEXT:    s_nop 1
152  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:36 ; 4-byte Folded Spill
153  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a106 ; Reload Reuse
154  ; GFX908-NEXT:    s_nop 1
155  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:40 ; 4-byte Folded Spill
156  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a107 ; Reload Reuse
157  ; GFX908-NEXT:    s_nop 1
158  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:44 ; 4-byte Folded Spill
159  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a108 ; Reload Reuse
160  ; GFX908-NEXT:    s_nop 1
161  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:48 ; 4-byte Folded Spill
162  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a109 ; Reload Reuse
163  ; GFX908-NEXT:    s_nop 1
164  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:52 ; 4-byte Folded Spill
165  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a110 ; Reload Reuse
166  ; GFX908-NEXT:    s_nop 1
167  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:56 ; 4-byte Folded Spill
168  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a96 ; Reload Reuse
169  ; GFX908-NEXT:    s_nop 1
170  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:64 ; 4-byte Folded Spill
171  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a97 ; Reload Reuse
172  ; GFX908-NEXT:    s_nop 1
173  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:68 ; 4-byte Folded Spill
174  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a98 ; Reload Reuse
175  ; GFX908-NEXT:    s_nop 1
176  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:72 ; 4-byte Folded Spill
177  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a99 ; Reload Reuse
178  ; GFX908-NEXT:    s_nop 1
179  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:76 ; 4-byte Folded Spill
180  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a100 ; Reload Reuse
181  ; GFX908-NEXT:    s_nop 1
182  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:80 ; 4-byte Folded Spill
183  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a101 ; Reload Reuse
184  ; GFX908-NEXT:    s_nop 1
185  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:84 ; 4-byte Folded Spill
186  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a102 ; Reload Reuse
187  ; GFX908-NEXT:    s_nop 1
188  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:88 ; 4-byte Folded Spill
189  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a103 ; Reload Reuse
190  ; GFX908-NEXT:    s_nop 1
191  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:92 ; 4-byte Folded Spill
192  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a104 ; Reload Reuse
193  ; GFX908-NEXT:    s_nop 1
194  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:96 ; 4-byte Folded Spill
195  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a105 ; Reload Reuse
196  ; GFX908-NEXT:    s_nop 1
197  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:100 ; 4-byte Folded Spill
198  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a106 ; Reload Reuse
199  ; GFX908-NEXT:    s_nop 1
200  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:104 ; 4-byte Folded Spill
201  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a107 ; Reload Reuse
202  ; GFX908-NEXT:    s_nop 1
203  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:108 ; 4-byte Folded Spill
204  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a108 ; Reload Reuse
205  ; GFX908-NEXT:    s_nop 1
206  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:112 ; 4-byte Folded Spill
207  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a109 ; Reload Reuse
208  ; GFX908-NEXT:    s_nop 1
209  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:116 ; 4-byte Folded Spill
210  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a110 ; Reload Reuse
211  ; GFX908-NEXT:    s_nop 1
212  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:120 ; 4-byte Folded Spill
213  ; GFX908-NEXT:    v_accvgpr_read_b32 v63, a111 ; Reload Reuse
214  ; GFX908-NEXT:    s_nop 1
215  ; GFX908-NEXT:    buffer_store_dword v63, off, s[0:3], s32 offset:124 ; 4-byte Folded Spill
216  ; GFX908-NEXT:    s_nop 0
217  ;
218  ; GFX90A-LABEL: test_spill:
219  ; GFX90A:       ; %bb.0:
220  ; GFX90A-NEXT:    ; implicit-def: $agpr96_agpr97_agpr98_agpr99_agpr100_agpr101_agpr102_agpr103_agpr104_agpr105_agpr106_agpr107_agpr108_agpr109_agpr110_agpr111
221  ; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
222  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a64, a96
223  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a65, a97
224  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a66, a98
225  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a67, a99
226  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a68, a100
227  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a69, a101
228  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a70, a102
229  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a71, a103
230  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a72, a104
231  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a73, a105
232  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a74, a106
233  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a75, a107
234  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a76, a108
235  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a77, a109
236  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a78, a110
237  ; GFX90A-NEXT:    v_accvgpr_mov_b32 a79, a111
238  ; GFX90A-NEXT:    v_accvgpr_read_b32 v77, a96 ; Reload Reuse
239  ; GFX90A-NEXT:    ; implicit-def: $vgpr0
240  ; GFX90A-NEXT:    ; implicit-def: $vgpr1
241  ; GFX90A-NEXT:    ; implicit-def: $vgpr2
242  ; GFX90A-NEXT:    ; implicit-def: $vgpr3
243  ; GFX90A-NEXT:    ; implicit-def: $vgpr4
244  ; GFX90A-NEXT:    ; implicit-def: $vgpr5
245  ; GFX90A-NEXT:    ; implicit-def: $vgpr6
246  ; GFX90A-NEXT:    ; implicit-def: $vgpr7
247  ; GFX90A-NEXT:    ; implicit-def: $vgpr8
248  ; GFX90A-NEXT:    ; implicit-def: $vgpr9
249  ; GFX90A-NEXT:    ; implicit-def: $vgpr10
250  ; GFX90A-NEXT:    ; implicit-def: $vgpr11
251  ; GFX90A-NEXT:    ; implicit-def: $vgpr12
252  ; GFX90A-NEXT:    ; implicit-def: $vgpr13
253  ; GFX90A-NEXT:    ; implicit-def: $vgpr14
254  ; GFX90A-NEXT:    ; implicit-def: $vgpr15
255  ; GFX90A-NEXT:    ; implicit-def: $vgpr16
256  ; GFX90A-NEXT:    ; implicit-def: $vgpr17
257  ; GFX90A-NEXT:    ; implicit-def: $vgpr18
258  ; GFX90A-NEXT:    ; implicit-def: $vgpr19
259  ; GFX90A-NEXT:    ; implicit-def: $vgpr20
260  ; GFX90A-NEXT:    ; implicit-def: $vgpr21
261  ; GFX90A-NEXT:    ; implicit-def: $vgpr22
262  ; GFX90A-NEXT:    ; implicit-def: $vgpr23
263  ; GFX90A-NEXT:    ; implicit-def: $vgpr24
264  ; GFX90A-NEXT:    ; implicit-def: $vgpr25
265  ; GFX90A-NEXT:    ; implicit-def: $vgpr26
266  ; GFX90A-NEXT:    ; implicit-def: $vgpr27
267  ; GFX90A-NEXT:    ; implicit-def: $vgpr28
268  ; GFX90A-NEXT:    ; implicit-def: $vgpr29
269  ; GFX90A-NEXT:    ; implicit-def: $vgpr30
270  ; GFX90A-NEXT:    ; implicit-def: $vgpr31
271  ; GFX90A-NEXT:    ; implicit-def: $vgpr32
272  ; GFX90A-NEXT:    ; implicit-def: $vgpr33
273  ; GFX90A-NEXT:    ; implicit-def: $vgpr34
274  ; GFX90A-NEXT:    ; implicit-def: $vgpr35
275  ; GFX90A-NEXT:    ; implicit-def: $vgpr36
276  ; GFX90A-NEXT:    ; implicit-def: $vgpr37
277  ; GFX90A-NEXT:    ; implicit-def: $vgpr38
278  ; GFX90A-NEXT:    ; implicit-def: $vgpr39
279  ; GFX90A-NEXT:    ; implicit-def: $vgpr40
280  ; GFX90A-NEXT:    ; implicit-def: $vgpr41
281  ; GFX90A-NEXT:    ; implicit-def: $vgpr42
282  ; GFX90A-NEXT:    ; implicit-def: $vgpr43
283  ; GFX90A-NEXT:    ; implicit-def: $vgpr44
284  ; GFX90A-NEXT:    ; implicit-def: $vgpr45
285  ; GFX90A-NEXT:    ; implicit-def: $vgpr46
286  ; GFX90A-NEXT:    ; implicit-def: $vgpr47
287  ; GFX90A-NEXT:    ; implicit-def: $vgpr48
288  ; GFX90A-NEXT:    ; implicit-def: $vgpr49
289  ; GFX90A-NEXT:    ; implicit-def: $vgpr50
290  ; GFX90A-NEXT:    ; implicit-def: $vgpr51
291  ; GFX90A-NEXT:    ; implicit-def: $vgpr52
292  ; GFX90A-NEXT:    ; implicit-def: $vgpr53
293  ; GFX90A-NEXT:    ; implicit-def: $vgpr54
294  ; GFX90A-NEXT:    ; implicit-def: $vgpr55
295  ; GFX90A-NEXT:    ; implicit-def: $vgpr56
296  ; GFX90A-NEXT:    ; implicit-def: $vgpr57
297  ; GFX90A-NEXT:    ; implicit-def: $vgpr58
298  ; GFX90A-NEXT:    ; implicit-def: $vgpr59
299  ; GFX90A-NEXT:    ; implicit-def: $vgpr60
300  ; GFX90A-NEXT:    ; implicit-def: $vgpr61
301  ; GFX90A-NEXT:    v_accvgpr_read_b32 v76, a97 ; Reload Reuse
302  ; GFX90A-NEXT:    v_accvgpr_read_b32 v75, a98 ; Reload Reuse
303  ; GFX90A-NEXT:    v_accvgpr_read_b32 v74, a99 ; Reload Reuse
304  ; GFX90A-NEXT:    v_accvgpr_read_b32 v73, a100 ; Reload Reuse
305  ; GFX90A-NEXT:    v_accvgpr_read_b32 v72, a101 ; Reload Reuse
306  ; GFX90A-NEXT:    v_accvgpr_read_b32 v71, a102 ; Reload Reuse
307  ; GFX90A-NEXT:    v_accvgpr_read_b32 v70, a103 ; Reload Reuse
308  ; GFX90A-NEXT:    v_accvgpr_read_b32 v69, a104 ; Reload Reuse
309  ; GFX90A-NEXT:    v_accvgpr_read_b32 v68, a105 ; Reload Reuse
310  ; GFX90A-NEXT:    v_accvgpr_read_b32 v67, a106 ; Reload Reuse
311  ; GFX90A-NEXT:    v_accvgpr_read_b32 v66, a107 ; Reload Reuse
312  ; GFX90A-NEXT:    v_accvgpr_read_b32 v65, a108 ; Reload Reuse
313  ; GFX90A-NEXT:    v_accvgpr_read_b32 v64, a109 ; Reload Reuse
314  ; GFX90A-NEXT:    v_accvgpr_read_b32 v63, a110 ; Reload Reuse
315  ; GFX90A-NEXT:    v_accvgpr_read_b32 v62, a111 ; Reload Reuse
316  ; GFX90A-NEXT:    v_accvgpr_read_b32 v93, a96 ; Reload Reuse
317  ; GFX90A-NEXT:    v_accvgpr_read_b32 v92, a97 ; Reload Reuse
318  ; GFX90A-NEXT:    v_accvgpr_read_b32 v91, a98 ; Reload Reuse
319  ; GFX90A-NEXT:    v_accvgpr_read_b32 v90, a99 ; Reload Reuse
320  ; GFX90A-NEXT:    v_accvgpr_read_b32 v89, a100 ; Reload Reuse
321  ; GFX90A-NEXT:    v_accvgpr_read_b32 v88, a101 ; Reload Reuse
322  ; GFX90A-NEXT:    v_accvgpr_read_b32 v87, a102 ; Reload Reuse
323  ; GFX90A-NEXT:    v_accvgpr_read_b32 v86, a103 ; Reload Reuse
324  ; GFX90A-NEXT:    v_accvgpr_read_b32 v85, a104 ; Reload Reuse
325  ; GFX90A-NEXT:    v_accvgpr_read_b32 v84, a105 ; Reload Reuse
326  ; GFX90A-NEXT:    v_accvgpr_read_b32 v83, a106 ; Reload Reuse
327  ; GFX90A-NEXT:    v_accvgpr_read_b32 v82, a107 ; Reload Reuse
328  ; GFX90A-NEXT:    v_accvgpr_read_b32 v81, a108 ; Reload Reuse
329  ; GFX90A-NEXT:    v_accvgpr_read_b32 v80, a109 ; Reload Reuse
330  ; GFX90A-NEXT:    v_accvgpr_read_b32 v79, a110 ; Reload Reuse
331  ; GFX90A-NEXT:    v_accvgpr_read_b32 v78, a111 ; Reload Reuse
332  ; GFX90A-NEXT:    s_nop 0
333    ret void
334  }
335
336  attributes #0 = { "amdgpu-waves-per-eu"="4,4" "amdgpu-no-agpr" }
337
338...
339---
340name:            test_spill
341tracksRegLiveness: true
342stack:
343  - { id: 0, name: '', type: spill-slot, offset: 0, size: 64, alignment: 4 }
344  - { id: 1, name: '', type: spill-slot, offset: 0, size: 64, alignment: 4 }
345
346machineFunctionInfo:
347  scratchRSrcReg:  $sgpr0_sgpr1_sgpr2_sgpr3
348  stackPtrOffsetReg: '$sgpr32'
349  hasSpilledVGPRs: true
350body:             |
351  bb.0:
352    $agpr96_agpr97_agpr98_agpr99_agpr100_agpr101_agpr102_agpr103_agpr104_agpr105_agpr106_agpr107_agpr108_agpr109_agpr110_agpr111 = IMPLICIT_DEF
353    $vgpr0 = IMPLICIT_DEF
354    $vgpr1 = IMPLICIT_DEF
355    $vgpr2 = IMPLICIT_DEF
356    $vgpr3 = IMPLICIT_DEF
357    $vgpr4 = IMPLICIT_DEF
358    $vgpr5 = IMPLICIT_DEF
359    $vgpr6 = IMPLICIT_DEF
360    $vgpr7 = IMPLICIT_DEF
361    $vgpr8 = IMPLICIT_DEF
362    $vgpr9 = IMPLICIT_DEF
363    $vgpr10 = IMPLICIT_DEF
364    $vgpr11 = IMPLICIT_DEF
365    $vgpr12 = IMPLICIT_DEF
366    $vgpr13 = IMPLICIT_DEF
367    $vgpr14 = IMPLICIT_DEF
368    $vgpr15 = IMPLICIT_DEF
369    $vgpr16 = IMPLICIT_DEF
370    $vgpr17 = IMPLICIT_DEF
371    $vgpr18 = IMPLICIT_DEF
372    $vgpr19 = IMPLICIT_DEF
373    $vgpr20 = IMPLICIT_DEF
374    $vgpr21 = IMPLICIT_DEF
375    $vgpr22 = IMPLICIT_DEF
376    $vgpr23 = IMPLICIT_DEF
377    $vgpr24 = IMPLICIT_DEF
378    $vgpr25 = IMPLICIT_DEF
379    $vgpr26 = IMPLICIT_DEF
380    $vgpr27 = IMPLICIT_DEF
381    $vgpr28 = IMPLICIT_DEF
382    $vgpr29 = IMPLICIT_DEF
383    $vgpr30 = IMPLICIT_DEF
384    $vgpr31 = IMPLICIT_DEF
385    $vgpr32 = IMPLICIT_DEF
386    $vgpr33 = IMPLICIT_DEF
387    $vgpr34 = IMPLICIT_DEF
388    $vgpr35 = IMPLICIT_DEF
389    $vgpr36 = IMPLICIT_DEF
390    $vgpr37 = IMPLICIT_DEF
391    $vgpr38 = IMPLICIT_DEF
392    $vgpr39 = IMPLICIT_DEF
393    $vgpr40 = IMPLICIT_DEF
394    $vgpr41 = IMPLICIT_DEF
395    $vgpr42 = IMPLICIT_DEF
396    $vgpr43 = IMPLICIT_DEF
397    $vgpr44 = IMPLICIT_DEF
398    $vgpr45 = IMPLICIT_DEF
399    $vgpr46 = IMPLICIT_DEF
400    $vgpr47 = IMPLICIT_DEF
401    $vgpr48 = IMPLICIT_DEF
402    $vgpr49 = IMPLICIT_DEF
403    $vgpr50 = IMPLICIT_DEF
404    $vgpr51 = IMPLICIT_DEF
405    $vgpr52 = IMPLICIT_DEF
406    $vgpr53 = IMPLICIT_DEF
407    $vgpr54 = IMPLICIT_DEF
408    $vgpr55 = IMPLICIT_DEF
409    $vgpr56 = IMPLICIT_DEF
410    $vgpr57 = IMPLICIT_DEF
411    $vgpr58 = IMPLICIT_DEF
412    $vgpr59 = IMPLICIT_DEF
413    $vgpr60 = IMPLICIT_DEF
414    $vgpr61 = IMPLICIT_DEF
415
416    $agpr64_agpr65_agpr66_agpr67_agpr68_agpr69_agpr70_agpr71_agpr72_agpr73_agpr74_agpr75_agpr76_agpr77_agpr78_agpr79 = COPY $agpr96_agpr97_agpr98_agpr99_agpr100_agpr101_agpr102_agpr103_agpr104_agpr105_agpr106_agpr107_agpr108_agpr109_agpr110_agpr111, implicit $exec
417    SI_SPILL_AV512_SAVE killed $agpr96_agpr97_agpr98_agpr99_agpr100_agpr101_agpr102_agpr103_agpr104_agpr105_agpr106_agpr107_agpr108_agpr109_agpr110_agpr111, %stack.0, $sgpr32, 0, implicit $exec :: (store (s512) into %stack.0, align 4, addrspace 5)
418    SI_SPILL_AV512_SAVE $agpr96_agpr97_agpr98_agpr99_agpr100_agpr101_agpr102_agpr103_agpr104_agpr105_agpr106_agpr107_agpr108_agpr109_agpr110_agpr111, %stack.1, $sgpr32, 0, implicit $exec :: (store (s512) into %stack.0, align 4, addrspace 5)
419    S_NOP 0, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr7, implicit $vgpr8, implicit $vgpr9, implicit $vgpr10, implicit $vgpr11, implicit $vgpr12, implicit $vgpr13, implicit $vgpr14, implicit $vgpr15, implicit $vgpr16, implicit $vgpr17, implicit $vgpr18, implicit $vgpr19, implicit $vgpr20, implicit $vgpr21, implicit $vgpr22, implicit $vgpr23, implicit $vgpr24, implicit $vgpr25, implicit $vgpr26, implicit $vgpr27, implicit $vgpr28, implicit $vgpr29, implicit $vgpr30, implicit $vgpr31, implicit $vgpr32, implicit $vgpr33, implicit $vgpr34, implicit $vgpr35, implicit $vgpr36, implicit $vgpr37, implicit $vgpr38, implicit $vgpr39, implicit $vgpr40, implicit $vgpr41, implicit $vgpr42, implicit $vgpr43, implicit $vgpr44, implicit $vgpr45, implicit $vgpr46, implicit $vgpr47, implicit $vgpr48, implicit $vgpr49, implicit $vgpr50, implicit $vgpr51, implicit $vgpr52, implicit $vgpr53, implicit $vgpr54, implicit $vgpr55, implicit $vgpr56, implicit $vgpr57, implicit $vgpr58, implicit $vgpr59, implicit $vgpr60, implicit $vgpr61
420...
421