[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / eliminate-frame-index-s-add-i32.mir
blob001a72e36097683ea564e18c8195b133d7730d9f
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW64 %s
3 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW64 %s
4 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW64 %s
5 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW64 %s
6 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=MUBUFW32 %s
8 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=FLATSCRW64 %s
9 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=FLATSCRW32 %s
10 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=FLATSCRW32 %s
12 ---
13 name: s_add_i32__inline_imm__fi_offset0
14 tracksRegLiveness: true
15 stack:
16   - { id: 0, size: 32, alignment: 16 }
17 machineFunctionInfo:
18   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
19   frameOffsetReg:  '$sgpr33'
20   stackPtrOffsetReg: '$sgpr32'
21 body:             |
22   bb.0:
23     ; MUBUFW64-LABEL: name: s_add_i32__inline_imm__fi_offset0
24     ; MUBUFW64: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
25     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 12, $sgpr4, implicit-def dead $scc
26     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
27     ;
28     ; MUBUFW32-LABEL: name: s_add_i32__inline_imm__fi_offset0
29     ; MUBUFW32: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
30     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 12, $sgpr4, implicit-def dead $scc
31     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
32     ;
33     ; FLATSCRW64-LABEL: name: s_add_i32__inline_imm__fi_offset0
34     ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 12, $sgpr32, implicit-def dead $scc
35     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
36     ;
37     ; FLATSCRW32-LABEL: name: s_add_i32__inline_imm__fi_offset0
38     ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 12, $sgpr32, implicit-def dead $scc
39     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
40     renamable $sgpr7 = S_ADD_I32 12, %stack.0, implicit-def dead $scc
41     SI_RETURN implicit $sgpr7
43 ...
45 ---
46 name: s_add_i32__fi_offset0__inline_imm
47 tracksRegLiveness: true
48 stack:
49   - { id: 0, size: 32, alignment: 16 }
50 machineFunctionInfo:
51   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
52   frameOffsetReg:  '$sgpr33'
53   stackPtrOffsetReg: '$sgpr32'
54 body:             |
55   bb.0:
56     ; MUBUFW64-LABEL: name: s_add_i32__fi_offset0__inline_imm
57     ; MUBUFW64: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
58     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr4, 12, implicit-def dead $scc
59     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
60     ;
61     ; MUBUFW32-LABEL: name: s_add_i32__fi_offset0__inline_imm
62     ; MUBUFW32: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
63     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr4, 12, implicit-def dead $scc
64     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
65     ;
66     ; FLATSCRW64-LABEL: name: s_add_i32__fi_offset0__inline_imm
67     ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 $sgpr32, 12, implicit-def dead $scc
68     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
69     ;
70     ; FLATSCRW32-LABEL: name: s_add_i32__fi_offset0__inline_imm
71     ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 $sgpr32, 12, implicit-def dead $scc
72     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
73     renamable $sgpr7 = S_ADD_I32 %stack.0, 12, implicit-def dead $scc
74     SI_RETURN implicit $sgpr7
76 ...
78 ---
79 name: s_add_i32__inline_imm___fi_offset_inline_imm
80 tracksRegLiveness: true
81 stack:
82   - { id: 0, size: 16, alignment: 16 }
83   - { id: 1, size: 24, alignment: 4 }
84 machineFunctionInfo:
85   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
86   frameOffsetReg:  '$sgpr33'
87   stackPtrOffsetReg: '$sgpr32'
88 body:             |
89   bb.0:
90     ; MUBUFW64-LABEL: name: s_add_i32__inline_imm___fi_offset_inline_imm
91     ; MUBUFW64: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
92     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 28, $sgpr4, implicit-def $scc
93     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
94     ;
95     ; MUBUFW32-LABEL: name: s_add_i32__inline_imm___fi_offset_inline_imm
96     ; MUBUFW32: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
97     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 28, $sgpr4, implicit-def $scc
98     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
99     ;
100     ; FLATSCRW64-LABEL: name: s_add_i32__inline_imm___fi_offset_inline_imm
101     ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 28, $sgpr32, implicit-def $scc
102     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
103     ;
104     ; FLATSCRW32-LABEL: name: s_add_i32__inline_imm___fi_offset_inline_imm
105     ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 28, $sgpr32, implicit-def $scc
106     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
107     renamable $sgpr7 = S_ADD_I32 12, %stack.1, implicit-def $scc
108     SI_RETURN implicit $sgpr7
113 name: s_add_i32__literal__fi_offset0
114 tracksRegLiveness: true
115 stack:
116   - { id: 0, size: 96, alignment: 16 }
117 machineFunctionInfo:
118   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
119   frameOffsetReg:  '$sgpr33'
120   stackPtrOffsetReg: '$sgpr32'
121 body:             |
122   bb.0:
123     ; MUBUFW64-LABEL: name: s_add_i32__literal__fi_offset0
124     ; MUBUFW64: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
125     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 68, $sgpr4, implicit-def dead $scc
126     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
127     ;
128     ; MUBUFW32-LABEL: name: s_add_i32__literal__fi_offset0
129     ; MUBUFW32: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
130     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 68, $sgpr4, implicit-def dead $scc
131     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
132     ;
133     ; FLATSCRW64-LABEL: name: s_add_i32__literal__fi_offset0
134     ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 68, $sgpr32, implicit-def dead $scc
135     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
136     ;
137     ; FLATSCRW32-LABEL: name: s_add_i32__literal__fi_offset0
138     ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 68, $sgpr32, implicit-def dead $scc
139     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
140     renamable $sgpr7 = S_ADD_I32 68, %stack.0, implicit-def dead $scc
141     SI_RETURN implicit $sgpr7
146 name: s_add_i32__fi_offset0__literal
147 tracksRegLiveness: true
148 stack:
149   - { id: 0, size: 96, alignment: 16 }
150 machineFunctionInfo:
151   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
152   frameOffsetReg:  '$sgpr33'
153   stackPtrOffsetReg: '$sgpr32'
154 body:             |
155   bb.0:
156     ; MUBUFW64-LABEL: name: s_add_i32__fi_offset0__literal
157     ; MUBUFW64: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
158     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr4, 68, implicit-def $scc
159     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
160     ;
161     ; MUBUFW32-LABEL: name: s_add_i32__fi_offset0__literal
162     ; MUBUFW32: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
163     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr4, 68, implicit-def $scc
164     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
165     ;
166     ; FLATSCRW64-LABEL: name: s_add_i32__fi_offset0__literal
167     ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 $sgpr32, 68, implicit-def $scc
168     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
169     ;
170     ; FLATSCRW32-LABEL: name: s_add_i32__fi_offset0__literal
171     ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 $sgpr32, 68, implicit-def $scc
172     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
173     renamable $sgpr7 = S_ADD_I32 %stack.0, 68, implicit-def $scc
174     SI_RETURN implicit $sgpr7
179 name: s_add_i32__literal__fi_offset96
180 tracksRegLiveness: true
181 stack:
182   - { id: 0, size: 96, alignment: 16 }
183   - { id: 1, size: 24, alignment: 4 }
184 machineFunctionInfo:
185   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
186   frameOffsetReg:  '$sgpr33'
187   stackPtrOffsetReg: '$sgpr32'
188 body:             |
189   bb.0:
190     ; MUBUFW64-LABEL: name: s_add_i32__literal__fi_offset96
191     ; MUBUFW64: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
192     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 164, $sgpr4, implicit-def $scc
193     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
194     ;
195     ; MUBUFW32-LABEL: name: s_add_i32__literal__fi_offset96
196     ; MUBUFW32: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
197     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 164, $sgpr4, implicit-def $scc
198     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
199     ;
200     ; FLATSCRW64-LABEL: name: s_add_i32__literal__fi_offset96
201     ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 164, $sgpr32, implicit-def $scc
202     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
203     ;
204     ; FLATSCRW32-LABEL: name: s_add_i32__literal__fi_offset96
205     ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 164, $sgpr32, implicit-def $scc
206     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
207     renamable $sgpr7 = S_ADD_I32 68, %stack.1, implicit-def $scc
208     SI_RETURN implicit $sgpr7, implicit $scc
213 name: s_add_i32____fi_offset96__literal
214 tracksRegLiveness: true
215 stack:
216   - { id: 0, size: 96, alignment: 16 }
217   - { id: 1, size: 128, alignment: 4 }
218 machineFunctionInfo:
219   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
220   frameOffsetReg:  '$sgpr33'
221   stackPtrOffsetReg: '$sgpr32'
222 body:             |
223   bb.0:
224     ; MUBUFW64-LABEL: name: s_add_i32____fi_offset96__literal
225     ; MUBUFW64: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
226     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr4, 164, implicit-def $scc
227     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
228     ;
229     ; MUBUFW32-LABEL: name: s_add_i32____fi_offset96__literal
230     ; MUBUFW32: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
231     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr4, 164, implicit-def $scc
232     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
233     ;
234     ; FLATSCRW64-LABEL: name: s_add_i32____fi_offset96__literal
235     ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 $sgpr32, 164, implicit-def $scc
236     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
237     ;
238     ; FLATSCRW32-LABEL: name: s_add_i32____fi_offset96__literal
239     ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 $sgpr32, 164, implicit-def $scc
240     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
241     renamable $sgpr7 = S_ADD_I32 %stack.1, 68, implicit-def $scc
242     SI_RETURN implicit $sgpr7, implicit $scc
247 name: s_add_i32__sgpr__fi_offset0
248 tracksRegLiveness: true
249 stack:
250   - { id: 0, size: 128, alignment: 16 }
251 machineFunctionInfo:
252   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
253   frameOffsetReg:  '$sgpr33'
254   stackPtrOffsetReg: '$sgpr32'
255 body:             |
256   bb.0:
257     liveins: $sgpr8
258     ; MUBUFW64-LABEL: name: s_add_i32__sgpr__fi_offset0
259     ; MUBUFW64: liveins: $sgpr8
260     ; MUBUFW64-NEXT: {{  $}}
261     ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
262     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def dead $scc
263     ; MUBUFW64-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
264     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
265     ;
266     ; MUBUFW32-LABEL: name: s_add_i32__sgpr__fi_offset0
267     ; MUBUFW32: liveins: $sgpr8
268     ; MUBUFW32-NEXT: {{  $}}
269     ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
270     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def dead $scc
271     ; MUBUFW32-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
272     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
273     ;
274     ; FLATSCRW64-LABEL: name: s_add_i32__sgpr__fi_offset0
275     ; FLATSCRW64: liveins: $sgpr8
276     ; FLATSCRW64-NEXT: {{  $}}
277     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
278     ; FLATSCRW64-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
279     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
280     ;
281     ; FLATSCRW32-LABEL: name: s_add_i32__sgpr__fi_offset0
282     ; FLATSCRW32: liveins: $sgpr8
283     ; FLATSCRW32-NEXT: {{  $}}
284     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
285     ; FLATSCRW32-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
286     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
287     renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
288     SI_RETURN implicit $sgpr7
293 name: s_add_i32__fi_offset0__sgpr
294 tracksRegLiveness: true
295 stack:
296   - { id: 0, size: 128, alignment: 16 }
297 machineFunctionInfo:
298   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
299   frameOffsetReg:  '$sgpr33'
300   stackPtrOffsetReg: '$sgpr32'
301 body:             |
302   bb.0:
303     liveins: $sgpr8
304     ; MUBUFW64-LABEL: name: s_add_i32__fi_offset0__sgpr
305     ; MUBUFW64: liveins: $sgpr8
306     ; MUBUFW64-NEXT: {{  $}}
307     ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
308     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def dead $scc
309     ; MUBUFW64-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
310     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
311     ;
312     ; MUBUFW32-LABEL: name: s_add_i32__fi_offset0__sgpr
313     ; MUBUFW32: liveins: $sgpr8
314     ; MUBUFW32-NEXT: {{  $}}
315     ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
316     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def dead $scc
317     ; MUBUFW32-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
318     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
319     ;
320     ; FLATSCRW64-LABEL: name: s_add_i32__fi_offset0__sgpr
321     ; FLATSCRW64: liveins: $sgpr8
322     ; FLATSCRW64-NEXT: {{  $}}
323     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
324     ; FLATSCRW64-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
325     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
326     ;
327     ; FLATSCRW32-LABEL: name: s_add_i32__fi_offset0__sgpr
328     ; FLATSCRW32: liveins: $sgpr8
329     ; FLATSCRW32-NEXT: {{  $}}
330     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
331     ; FLATSCRW32-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
332     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
333     renamable $sgpr7 = S_ADD_I32 %stack.0, $sgpr8, implicit-def dead $scc
334     SI_RETURN implicit $sgpr7
339 name: s_add_i32__sgpr__fi_literal_offset
340 tracksRegLiveness: true
341 stack:
342   - { id: 0, size: 80, alignment: 16 }
343   - { id: 1, size: 48, alignment: 4 }
344 machineFunctionInfo:
345   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
346   frameOffsetReg:  '$sgpr33'
347   stackPtrOffsetReg: '$sgpr32'
348 body:             |
349   bb.0:
350     liveins: $sgpr8
351     ; MUBUFW64-LABEL: name: s_add_i32__sgpr__fi_literal_offset
352     ; MUBUFW64: liveins: $sgpr8
353     ; MUBUFW64-NEXT: {{  $}}
354     ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
355     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def dead $scc
356     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed renamable $sgpr7, 80, implicit-def dead $scc
357     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
358     ;
359     ; MUBUFW32-LABEL: name: s_add_i32__sgpr__fi_literal_offset
360     ; MUBUFW32: liveins: $sgpr8
361     ; MUBUFW32-NEXT: {{  $}}
362     ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
363     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def dead $scc
364     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed renamable $sgpr7, 80, implicit-def dead $scc
365     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
366     ;
367     ; FLATSCRW64-LABEL: name: s_add_i32__sgpr__fi_literal_offset
368     ; FLATSCRW64: liveins: $sgpr8
369     ; FLATSCRW64-NEXT: {{  $}}
370     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
371     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed renamable $sgpr7, 80, implicit-def dead $scc
372     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
373     ;
374     ; FLATSCRW32-LABEL: name: s_add_i32__sgpr__fi_literal_offset
375     ; FLATSCRW32: liveins: $sgpr8
376     ; FLATSCRW32-NEXT: {{  $}}
377     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
378     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed renamable $sgpr7, 80, implicit-def dead $scc
379     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
380     renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.1, implicit-def dead $scc
381     SI_RETURN implicit $sgpr7
386 name: s_add_i32__fi_literal_offset__sgpr
387 tracksRegLiveness: true
388 stack:
389   - { id: 0, size: 80, alignment: 16 }
390   - { id: 1, size: 48, alignment: 4 }
391 machineFunctionInfo:
392   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
393   frameOffsetReg:  '$sgpr33'
394   stackPtrOffsetReg: '$sgpr32'
395 body:             |
396   bb.0:
397     liveins: $sgpr8
398     ; MUBUFW64-LABEL: name: s_add_i32__fi_literal_offset__sgpr
399     ; MUBUFW64: liveins: $sgpr8
400     ; MUBUFW64-NEXT: {{  $}}
401     ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
402     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def $scc
403     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 80, killed renamable $sgpr7, implicit-def $scc
404     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
405     ;
406     ; MUBUFW32-LABEL: name: s_add_i32__fi_literal_offset__sgpr
407     ; MUBUFW32: liveins: $sgpr8
408     ; MUBUFW32-NEXT: {{  $}}
409     ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
410     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def $scc
411     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 80, killed renamable $sgpr7, implicit-def $scc
412     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
413     ;
414     ; FLATSCRW64-LABEL: name: s_add_i32__fi_literal_offset__sgpr
415     ; FLATSCRW64: liveins: $sgpr8
416     ; FLATSCRW64-NEXT: {{  $}}
417     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def $scc
418     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 80, killed renamable $sgpr7, implicit-def $scc
419     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
420     ;
421     ; FLATSCRW32-LABEL: name: s_add_i32__fi_literal_offset__sgpr
422     ; FLATSCRW32: liveins: $sgpr8
423     ; FLATSCRW32-NEXT: {{  $}}
424     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def $scc
425     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 80, killed renamable $sgpr7, implicit-def $scc
426     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
427     renamable $sgpr7 = S_ADD_I32 %stack.1, $sgpr8, implicit-def $scc
428     SI_RETURN implicit $sgpr7, implicit $scc
433 name: s_add_i32__kernel__literal__fi_offset96__offset_literal
434 tracksRegLiveness: true
435 stack:
436   - { id: 0, size: 96, alignment: 16 }
437   - { id: 1, size: 128, alignment: 4 }
438 machineFunctionInfo:
439   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
440   frameOffsetReg:  '$sgpr33'
441   stackPtrOffsetReg: '$sgpr32'
442   isEntryFunction: true
443 body:             |
444   bb.0:
445     ; MUBUFW64-LABEL: name: s_add_i32__kernel__literal__fi_offset96__offset_literal
446     ; MUBUFW64: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
447     ; MUBUFW64-NEXT: {{  $}}
448     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
449     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
450     ; MUBUFW64-NEXT: renamable $sgpr7 = S_MOV_B32 164
451     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
452     ;
453     ; MUBUFW32-LABEL: name: s_add_i32__kernel__literal__fi_offset96__offset_literal
454     ; MUBUFW32: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
455     ; MUBUFW32-NEXT: {{  $}}
456     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
457     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
458     ; MUBUFW32-NEXT: renamable $sgpr7 = S_MOV_B32 164
459     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
460     ;
461     ; FLATSCRW64-LABEL: name: s_add_i32__kernel__literal__fi_offset96__offset_literal
462     ; FLATSCRW64: renamable $sgpr7 = S_MOV_B32 164
463     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
464     ;
465     ; FLATSCRW32-LABEL: name: s_add_i32__kernel__literal__fi_offset96__offset_literal
466     ; FLATSCRW32: renamable $sgpr7 = S_MOV_B32 164
467     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
468     renamable $sgpr7 = S_ADD_I32 68, %stack.1, implicit-def dead $scc
469     SI_RETURN implicit $sgpr7
473 name: s_add_i32__kernel__literal__fi_offset96__offset_literal_live_scc
474 tracksRegLiveness: true
475 stack:
476   - { id: 0, size: 96, alignment: 16 }
477   - { id: 1, size: 128, alignment: 4 }
478 machineFunctionInfo:
479   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
480   frameOffsetReg:  '$sgpr33'
481   stackPtrOffsetReg: '$sgpr32'
482   isEntryFunction: true
483 body:             |
484   bb.0:
485     ; MUBUFW64-LABEL: name: s_add_i32__kernel__literal__fi_offset96__offset_literal_live_scc
486     ; MUBUFW64: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
487     ; MUBUFW64-NEXT: {{  $}}
488     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
489     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
490     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 164, 0, implicit-def $scc
491     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
492     ;
493     ; MUBUFW32-LABEL: name: s_add_i32__kernel__literal__fi_offset96__offset_literal_live_scc
494     ; MUBUFW32: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
495     ; MUBUFW32-NEXT: {{  $}}
496     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
497     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
498     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 164, 0, implicit-def $scc
499     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
500     ;
501     ; FLATSCRW64-LABEL: name: s_add_i32__kernel__literal__fi_offset96__offset_literal_live_scc
502     ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 164, 0, implicit-def $scc
503     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
504     ;
505     ; FLATSCRW32-LABEL: name: s_add_i32__kernel__literal__fi_offset96__offset_literal_live_scc
506     ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 164, 0, implicit-def $scc
507     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
508     renamable $sgpr7 = S_ADD_I32 68, %stack.1, implicit-def $scc
509     SI_RETURN implicit $sgpr7, implicit $scc
513 name: s_add_i32__kernel__fi_offset96__offset_literal__literal
514 tracksRegLiveness: true
515 stack:
516   - { id: 0, size: 96, alignment: 16 }
517   - { id: 1, size: 128, alignment: 4 }
518 machineFunctionInfo:
519   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
520   frameOffsetReg:  '$sgpr33'
521   stackPtrOffsetReg: '$sgpr32'
522   isEntryFunction: true
523 body:             |
524   bb.0:
525     ; MUBUFW64-LABEL: name: s_add_i32__kernel__fi_offset96__offset_literal__literal
526     ; MUBUFW64: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
527     ; MUBUFW64-NEXT: {{  $}}
528     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
529     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
530     ; MUBUFW64-NEXT: renamable $sgpr7 = S_MOV_B32 164
531     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
532     ;
533     ; MUBUFW32-LABEL: name: s_add_i32__kernel__fi_offset96__offset_literal__literal
534     ; MUBUFW32: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
535     ; MUBUFW32-NEXT: {{  $}}
536     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
537     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
538     ; MUBUFW32-NEXT: renamable $sgpr7 = S_MOV_B32 164
539     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
540     ;
541     ; FLATSCRW64-LABEL: name: s_add_i32__kernel__fi_offset96__offset_literal__literal
542     ; FLATSCRW64: renamable $sgpr7 = S_MOV_B32 164
543     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
544     ;
545     ; FLATSCRW32-LABEL: name: s_add_i32__kernel__fi_offset96__offset_literal__literal
546     ; FLATSCRW32: renamable $sgpr7 = S_MOV_B32 164
547     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
548     renamable $sgpr7 = S_ADD_I32 %stack.1, 68, implicit-def dead $scc
549     SI_RETURN implicit $sgpr7
554 name: s_add_i32__kernel__sgpr__fi_literal_offset
555 tracksRegLiveness: true
556 stack:
557   - { id: 0, size: 96, alignment: 16 }
558   - { id: 1, size: 64, alignment: 4 }
559 machineFunctionInfo:
560   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
561   frameOffsetReg:  '$sgpr33'
562   stackPtrOffsetReg: '$sgpr32'
563   isEntryFunction: true
564 body:             |
565   bb.0:
566     liveins: $sgpr8
567     ; MUBUFW64-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset
568     ; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
569     ; MUBUFW64-NEXT: {{  $}}
570     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
571     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
572     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def dead $scc
573     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
574     ;
575     ; MUBUFW32-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset
576     ; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
577     ; MUBUFW32-NEXT: {{  $}}
578     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
579     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
580     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def dead $scc
581     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
582     ;
583     ; FLATSCRW64-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset
584     ; FLATSCRW64: liveins: $sgpr8
585     ; FLATSCRW64-NEXT: {{  $}}
586     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def dead $scc
587     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
588     ;
589     ; FLATSCRW32-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset
590     ; FLATSCRW32: liveins: $sgpr8
591     ; FLATSCRW32-NEXT: {{  $}}
592     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def dead $scc
593     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
594     renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.1, implicit-def dead $scc
595     SI_RETURN implicit $sgpr7
600 name: s_add_i32__kernel__fi_literal_offset__sgpr
601 tracksRegLiveness: true
602 stack:
603   - { id: 0, size: 96, alignment: 16 }
604   - { id: 1, size: 64, alignment: 4 }
605 machineFunctionInfo:
606   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
607   frameOffsetReg:  '$sgpr33'
608   stackPtrOffsetReg: '$sgpr32'
609   isEntryFunction: true
610 body:             |
611   bb.0:
612     liveins: $sgpr8
613     ; MUBUFW64-LABEL: name: s_add_i32__kernel__fi_literal_offset__sgpr
614     ; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
615     ; MUBUFW64-NEXT: {{  $}}
616     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
617     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
618     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 96, $sgpr8, implicit-def dead $scc
619     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
620     ;
621     ; MUBUFW32-LABEL: name: s_add_i32__kernel__fi_literal_offset__sgpr
622     ; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
623     ; MUBUFW32-NEXT: {{  $}}
624     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
625     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
626     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 96, $sgpr8, implicit-def dead $scc
627     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
628     ;
629     ; FLATSCRW64-LABEL: name: s_add_i32__kernel__fi_literal_offset__sgpr
630     ; FLATSCRW64: liveins: $sgpr8
631     ; FLATSCRW64-NEXT: {{  $}}
632     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 96, $sgpr8, implicit-def dead $scc
633     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
634     ;
635     ; FLATSCRW32-LABEL: name: s_add_i32__kernel__fi_literal_offset__sgpr
636     ; FLATSCRW32: liveins: $sgpr8
637     ; FLATSCRW32-NEXT: {{  $}}
638     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 96, $sgpr8, implicit-def dead $scc
639     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
640     renamable $sgpr7 = S_ADD_I32 %stack.1, $sgpr8, implicit-def dead $scc
641     SI_RETURN implicit $sgpr7
646 name: s_add_i32__kernel__sgpr__fi_offset0__live_scc
647 tracksRegLiveness: true
648 stack:
649   - { id: 0, size: 96, alignment: 16 }
650 machineFunctionInfo:
651   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
652   frameOffsetReg:  '$sgpr33'
653   stackPtrOffsetReg: '$sgpr32'
654   isEntryFunction: true
655 body:             |
656   bb.0:
657     liveins: $sgpr8
658     ; MUBUFW64-LABEL: name: s_add_i32__kernel__sgpr__fi_offset0__live_scc
659     ; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
660     ; MUBUFW64-NEXT: {{  $}}
661     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
662     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
663     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 0, implicit-def $scc
664     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
665     ;
666     ; MUBUFW32-LABEL: name: s_add_i32__kernel__sgpr__fi_offset0__live_scc
667     ; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
668     ; MUBUFW32-NEXT: {{  $}}
669     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
670     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
671     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 0, implicit-def $scc
672     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
673     ;
674     ; FLATSCRW64-LABEL: name: s_add_i32__kernel__sgpr__fi_offset0__live_scc
675     ; FLATSCRW64: liveins: $sgpr8
676     ; FLATSCRW64-NEXT: {{  $}}
677     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 0, implicit-def $scc
678     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
679     ;
680     ; FLATSCRW32-LABEL: name: s_add_i32__kernel__sgpr__fi_offset0__live_scc
681     ; FLATSCRW32: liveins: $sgpr8
682     ; FLATSCRW32-NEXT: {{  $}}
683     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 0, implicit-def $scc
684     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
685     renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.0, implicit-def $scc
686     SI_RETURN implicit $sgpr7, implicit $scc
691 name: s_add_i32__sgpr__fi_offset0__live_scc
692 tracksRegLiveness: true
693 stack:
694   - { id: 0, size: 96, alignment: 16 }
695 machineFunctionInfo:
696   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
697   frameOffsetReg:  '$sgpr33'
698   stackPtrOffsetReg: '$sgpr32'
699 body:             |
700   bb.0:
701     liveins: $sgpr8
702     ; MUBUFW64-LABEL: name: s_add_i32__sgpr__fi_offset0__live_scc
703     ; MUBUFW64: liveins: $sgpr8
704     ; MUBUFW64-NEXT: {{  $}}
705     ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
706     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def $scc
707     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed renamable $sgpr7, 0, implicit-def $scc
708     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
709     ;
710     ; MUBUFW32-LABEL: name: s_add_i32__sgpr__fi_offset0__live_scc
711     ; MUBUFW32: liveins: $sgpr8
712     ; MUBUFW32-NEXT: {{  $}}
713     ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
714     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def $scc
715     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed renamable $sgpr7, 0, implicit-def $scc
716     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
717     ;
718     ; FLATSCRW64-LABEL: name: s_add_i32__sgpr__fi_offset0__live_scc
719     ; FLATSCRW64: liveins: $sgpr8
720     ; FLATSCRW64-NEXT: {{  $}}
721     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def $scc
722     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed renamable $sgpr7, 0, implicit-def $scc
723     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
724     ;
725     ; FLATSCRW32-LABEL: name: s_add_i32__sgpr__fi_offset0__live_scc
726     ; FLATSCRW32: liveins: $sgpr8
727     ; FLATSCRW32-NEXT: {{  $}}
728     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def $scc
729     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed renamable $sgpr7, 0, implicit-def $scc
730     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
731     renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.0, implicit-def $scc
732     SI_RETURN implicit $sgpr7, implicit $scc
737 name: s_add_i32__kernel__sgpr__fi_literal_offset__live_scc
738 tracksRegLiveness: true
739 stack:
740   - { id: 0, size: 96, alignment: 16 }
741   - { id: 1, size: 64, alignment: 4 }
742 machineFunctionInfo:
743   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
744   frameOffsetReg:  '$sgpr33'
745   stackPtrOffsetReg: '$sgpr32'
746   isEntryFunction: true
747 body:             |
748   bb.0:
749     liveins: $sgpr8
750     ; MUBUFW64-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset__live_scc
751     ; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
752     ; MUBUFW64-NEXT: {{  $}}
753     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
754     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
755     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def $scc
756     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
757     ;
758     ; MUBUFW32-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset__live_scc
759     ; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
760     ; MUBUFW32-NEXT: {{  $}}
761     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
762     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
763     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def $scc
764     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
765     ;
766     ; FLATSCRW64-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset__live_scc
767     ; FLATSCRW64: liveins: $sgpr8
768     ; FLATSCRW64-NEXT: {{  $}}
769     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def $scc
770     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
771     ;
772     ; FLATSCRW32-LABEL: name: s_add_i32__kernel__sgpr__fi_literal_offset__live_scc
773     ; FLATSCRW32: liveins: $sgpr8
774     ; FLATSCRW32-NEXT: {{  $}}
775     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr8, 96, implicit-def $scc
776     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
777     renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.1, implicit-def $scc
778     SI_RETURN implicit $sgpr7, implicit $scc
783 name: s_add_i32__sgpr__fi_literal_offset__live_scc
784 tracksRegLiveness: true
785 stack:
786   - { id: 0, size: 96, alignment: 16 }
787   - { id: 1, size: 64, alignment: 4 }
788 machineFunctionInfo:
789   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
790   frameOffsetReg:  '$sgpr33'
791   stackPtrOffsetReg: '$sgpr32'
792 body:             |
793   bb.0:
794     liveins: $sgpr8
795     ; MUBUFW64-LABEL: name: s_add_i32__sgpr__fi_literal_offset__live_scc
796     ; MUBUFW64: liveins: $sgpr8
797     ; MUBUFW64-NEXT: {{  $}}
798     ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
799     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def $scc
800     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed renamable $sgpr7, 96, implicit-def $scc
801     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
802     ;
803     ; MUBUFW32-LABEL: name: s_add_i32__sgpr__fi_literal_offset__live_scc
804     ; MUBUFW32: liveins: $sgpr8
805     ; MUBUFW32-NEXT: {{  $}}
806     ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
807     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def $scc
808     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed renamable $sgpr7, 96, implicit-def $scc
809     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
810     ;
811     ; FLATSCRW64-LABEL: name: s_add_i32__sgpr__fi_literal_offset__live_scc
812     ; FLATSCRW64: liveins: $sgpr8
813     ; FLATSCRW64-NEXT: {{  $}}
814     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def $scc
815     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed renamable $sgpr7, 96, implicit-def $scc
816     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
817     ;
818     ; FLATSCRW32-LABEL: name: s_add_i32__sgpr__fi_literal_offset__live_scc
819     ; FLATSCRW32: liveins: $sgpr8
820     ; FLATSCRW32-NEXT: {{  $}}
821     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def $scc
822     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed renamable $sgpr7, 96, implicit-def $scc
823     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
824     renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.1, implicit-def $scc
825     SI_RETURN implicit $sgpr7, implicit $scc
829 # Resulting offset is inline immediate
831 name: s_add_i32__inlineimm__fi_offset_32__total_offset_inlineimm
832 tracksRegLiveness: true
833 stack:
834   - { id: 0, size: 32, alignment: 16 }
835   - { id: 1, size: 16, alignment: 4 }
836 machineFunctionInfo:
837   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
838   frameOffsetReg:  '$sgpr33'
839   stackPtrOffsetReg: '$sgpr32'
840 body:             |
841   bb.0:
842     ; MUBUFW64-LABEL: name: s_add_i32__inlineimm__fi_offset_32__total_offset_inlineimm
843     ; MUBUFW64: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
844     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 40, $sgpr4, implicit-def $scc
845     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
846     ;
847     ; MUBUFW32-LABEL: name: s_add_i32__inlineimm__fi_offset_32__total_offset_inlineimm
848     ; MUBUFW32: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
849     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 40, $sgpr4, implicit-def $scc
850     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
851     ;
852     ; FLATSCRW64-LABEL: name: s_add_i32__inlineimm__fi_offset_32__total_offset_inlineimm
853     ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 40, $sgpr32, implicit-def $scc
854     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
855     ;
856     ; FLATSCRW32-LABEL: name: s_add_i32__inlineimm__fi_offset_32__total_offset_inlineimm
857     ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 40, $sgpr32, implicit-def $scc
858     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
859     renamable $sgpr7 = S_ADD_I32 8, %stack.1, implicit-def $scc
860     SI_RETURN implicit $sgpr7, implicit $scc
865 name: s_add_i32__fi_offset_32__inlineimm__total_offset_inlineimm
866 tracksRegLiveness: true
867 stack:
868   - { id: 0, size: 32, alignment: 16 }
869   - { id: 1, size: 16, alignment: 4 }
870 machineFunctionInfo:
871   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
872   frameOffsetReg:  '$sgpr33'
873   stackPtrOffsetReg: '$sgpr32'
874 body:             |
875   bb.0:
876     ; MUBUFW64-LABEL: name: s_add_i32__fi_offset_32__inlineimm__total_offset_inlineimm
877     ; MUBUFW64: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
878     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr4, 40, implicit-def $scc
879     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
880     ;
881     ; MUBUFW32-LABEL: name: s_add_i32__fi_offset_32__inlineimm__total_offset_inlineimm
882     ; MUBUFW32: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
883     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr4, 40, implicit-def $scc
884     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
885     ;
886     ; FLATSCRW64-LABEL: name: s_add_i32__fi_offset_32__inlineimm__total_offset_inlineimm
887     ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 $sgpr32, 40, implicit-def $scc
888     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
889     ;
890     ; FLATSCRW32-LABEL: name: s_add_i32__fi_offset_32__inlineimm__total_offset_inlineimm
891     ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 $sgpr32, 40, implicit-def $scc
892     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
893     renamable $sgpr7 = S_ADD_I32 %stack.1, 8, implicit-def $scc
894     SI_RETURN implicit $sgpr7, implicit $scc
899 name: s_add_i32__kernel_inlineimm__fi_offset_32__total_offset_inlineimm
900 tracksRegLiveness: true
901 stack:
902   - { id: 0, size: 32, alignment: 16 }
903   - { id: 1, size: 16, alignment: 4 }
904 machineFunctionInfo:
905   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
906   frameOffsetReg:  '$sgpr33'
907   stackPtrOffsetReg: '$sgpr32'
908   isEntryFunction: true
909 body:             |
910   bb.0:
911     ; MUBUFW64-LABEL: name: s_add_i32__kernel_inlineimm__fi_offset_32__total_offset_inlineimm
912     ; MUBUFW64: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
913     ; MUBUFW64-NEXT: {{  $}}
914     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
915     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
916     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 40, 0, implicit-def $scc
917     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
918     ;
919     ; MUBUFW32-LABEL: name: s_add_i32__kernel_inlineimm__fi_offset_32__total_offset_inlineimm
920     ; MUBUFW32: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
921     ; MUBUFW32-NEXT: {{  $}}
922     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
923     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
924     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 40, 0, implicit-def $scc
925     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
926     ;
927     ; FLATSCRW64-LABEL: name: s_add_i32__kernel_inlineimm__fi_offset_32__total_offset_inlineimm
928     ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 40, 0, implicit-def $scc
929     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
930     ;
931     ; FLATSCRW32-LABEL: name: s_add_i32__kernel_inlineimm__fi_offset_32__total_offset_inlineimm
932     ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 40, 0, implicit-def $scc
933     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
934     renamable $sgpr7 = S_ADD_I32 8, %stack.1, implicit-def $scc
935     SI_RETURN implicit $sgpr7, implicit $scc
940 name: s_add_i32__kernel_fi_offset_32__inlineimm__total_offset_inlineimm
941 tracksRegLiveness: true
942 stack:
943   - { id: 0, size: 32, alignment: 16 }
944   - { id: 1, size: 16, alignment: 4 }
945 machineFunctionInfo:
946   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
947   frameOffsetReg:  '$sgpr33'
948   stackPtrOffsetReg: '$sgpr32'
949   isEntryFunction: true
950 body:             |
951   bb.0:
952     ; MUBUFW64-LABEL: name: s_add_i32__kernel_fi_offset_32__inlineimm__total_offset_inlineimm
953     ; MUBUFW64: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
954     ; MUBUFW64-NEXT: {{  $}}
955     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
956     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
957     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 0, 40, implicit-def $scc
958     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
959     ;
960     ; MUBUFW32-LABEL: name: s_add_i32__kernel_fi_offset_32__inlineimm__total_offset_inlineimm
961     ; MUBUFW32: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
962     ; MUBUFW32-NEXT: {{  $}}
963     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
964     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
965     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 0, 40, implicit-def $scc
966     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
967     ;
968     ; FLATSCRW64-LABEL: name: s_add_i32__kernel_fi_offset_32__inlineimm__total_offset_inlineimm
969     ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 0, 40, implicit-def $scc
970     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
971     ;
972     ; FLATSCRW32-LABEL: name: s_add_i32__kernel_fi_offset_32__inlineimm__total_offset_inlineimm
973     ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 0, 40, implicit-def $scc
974     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $scc
975     renamable $sgpr7 = S_ADD_I32 %stack.1, 8, implicit-def $scc
976     SI_RETURN implicit $sgpr7, implicit $scc
981 name: s_add_i32__0__fi_offset0
982 tracksRegLiveness: true
983 stack:
984   - { id: 0, size: 32, alignment: 16 }
985 machineFunctionInfo:
986   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
987   frameOffsetReg:  '$sgpr33'
988   stackPtrOffsetReg: '$sgpr32'
989 body:             |
990   bb.0:
991     ; MUBUFW64-LABEL: name: s_add_i32__0__fi_offset0
992     ; MUBUFW64: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
993     ; MUBUFW64-NEXT: renamable $sgpr7 = COPY $sgpr4
994     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
995     ;
996     ; MUBUFW32-LABEL: name: s_add_i32__0__fi_offset0
997     ; MUBUFW32: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
998     ; MUBUFW32-NEXT: renamable $sgpr7 = COPY $sgpr4
999     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
1000     ;
1001     ; FLATSCRW64-LABEL: name: s_add_i32__0__fi_offset0
1002     ; FLATSCRW64: renamable $sgpr7 = COPY $sgpr32
1003     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
1004     ;
1005     ; FLATSCRW32-LABEL: name: s_add_i32__0__fi_offset0
1006     ; FLATSCRW32: renamable $sgpr7 = COPY $sgpr32
1007     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
1008     renamable $sgpr7 = S_ADD_I32 0, %stack.0, implicit-def dead $scc
1009     SI_RETURN implicit $sgpr7
1014 name: s_add_i32__fi_offset0__0
1015 tracksRegLiveness: true
1016 stack:
1017   - { id: 0, size: 32, alignment: 16 }
1018 machineFunctionInfo:
1019   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
1020   frameOffsetReg:  '$sgpr33'
1021   stackPtrOffsetReg: '$sgpr32'
1022 body:             |
1023   bb.0:
1024     ; MUBUFW64-LABEL: name: s_add_i32__fi_offset0__0
1025     ; MUBUFW64: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
1026     ; MUBUFW64-NEXT: renamable $sgpr7 = COPY $sgpr4
1027     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
1028     ;
1029     ; MUBUFW32-LABEL: name: s_add_i32__fi_offset0__0
1030     ; MUBUFW32: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
1031     ; MUBUFW32-NEXT: renamable $sgpr7 = COPY $sgpr4
1032     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
1033     ;
1034     ; FLATSCRW64-LABEL: name: s_add_i32__fi_offset0__0
1035     ; FLATSCRW64: renamable $sgpr7 = COPY $sgpr32
1036     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
1037     ;
1038     ; FLATSCRW32-LABEL: name: s_add_i32__fi_offset0__0
1039     ; FLATSCRW32: renamable $sgpr7 = COPY $sgpr32
1040     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
1041     renamable $sgpr7 = S_ADD_I32 %stack.0, 0, implicit-def dead $scc
1042     SI_RETURN implicit $sgpr7
1047 name: s_add_i32__same_sgpr__fi_offset0
1048 tracksRegLiveness: true
1049 stack:
1050   - { id: 0, size: 32, alignment: 16 }
1051 machineFunctionInfo:
1052   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
1053   frameOffsetReg:  '$sgpr33'
1054   stackPtrOffsetReg: '$sgpr32'
1055 body:             |
1056   bb.0:
1057     liveins: $sgpr7
1058     ; MUBUFW64-LABEL: name: s_add_i32__same_sgpr__fi_offset0
1059     ; MUBUFW64: liveins: $sgpr7
1060     ; MUBUFW64-NEXT: {{  $}}
1061     ; MUBUFW64-NEXT: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
1062     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, $sgpr7, implicit-def dead $scc
1063     ; MUBUFW64-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
1064     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
1065     ;
1066     ; MUBUFW32-LABEL: name: s_add_i32__same_sgpr__fi_offset0
1067     ; MUBUFW32: liveins: $sgpr7
1068     ; MUBUFW32-NEXT: {{  $}}
1069     ; MUBUFW32-NEXT: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
1070     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr4, $sgpr7, implicit-def dead $scc
1071     ; MUBUFW32-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
1072     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
1073     ;
1074     ; FLATSCRW64-LABEL: name: s_add_i32__same_sgpr__fi_offset0
1075     ; FLATSCRW64: liveins: $sgpr7
1076     ; FLATSCRW64-NEXT: {{  $}}
1077     ; FLATSCRW64-NEXT: renamable $sgpr4 = S_ADD_I32 killed $sgpr32, $sgpr7, implicit-def dead $scc
1078     ; FLATSCRW64-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr4
1079     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
1080     ;
1081     ; FLATSCRW32-LABEL: name: s_add_i32__same_sgpr__fi_offset0
1082     ; FLATSCRW32: liveins: $sgpr7
1083     ; FLATSCRW32-NEXT: {{  $}}
1084     ; FLATSCRW32-NEXT: renamable $sgpr4 = S_ADD_I32 killed $sgpr32, $sgpr7, implicit-def dead $scc
1085     ; FLATSCRW32-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr4
1086     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
1087     renamable $sgpr7 = S_ADD_I32 $sgpr7, %stack.0, implicit-def dead $scc
1088     SI_RETURN implicit $sgpr7
1093 name: s_add_i32__different_sgpr__fi_offset0
1094 tracksRegLiveness: true
1095 stack:
1096   - { id: 0, size: 32, alignment: 16 }
1097 machineFunctionInfo:
1098   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
1099   frameOffsetReg:  '$sgpr33'
1100   stackPtrOffsetReg: '$sgpr32'
1101 body:             |
1102   bb.0:
1103     liveins: $sgpr8
1104     ; MUBUFW64-LABEL: name: s_add_i32__different_sgpr__fi_offset0
1105     ; MUBUFW64: liveins: $sgpr8
1106     ; MUBUFW64-NEXT: {{  $}}
1107     ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
1108     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def dead $scc
1109     ; MUBUFW64-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
1110     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
1111     ;
1112     ; MUBUFW32-LABEL: name: s_add_i32__different_sgpr__fi_offset0
1113     ; MUBUFW32: liveins: $sgpr8
1114     ; MUBUFW32-NEXT: {{  $}}
1115     ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
1116     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def dead $scc
1117     ; MUBUFW32-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
1118     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
1119     ;
1120     ; FLATSCRW64-LABEL: name: s_add_i32__different_sgpr__fi_offset0
1121     ; FLATSCRW64: liveins: $sgpr8
1122     ; FLATSCRW64-NEXT: {{  $}}
1123     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
1124     ; FLATSCRW64-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
1125     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
1126     ;
1127     ; FLATSCRW32-LABEL: name: s_add_i32__different_sgpr__fi_offset0
1128     ; FLATSCRW32: liveins: $sgpr8
1129     ; FLATSCRW32-NEXT: {{  $}}
1130     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
1131     ; FLATSCRW32-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
1132     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
1133     renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
1134     SI_RETURN implicit $sgpr7
1139 name: s_add_i32__different_sgpr__fi_offset0_live_after
1140 tracksRegLiveness: true
1141 stack:
1142   - { id: 0, size: 32, alignment: 16 }
1143 machineFunctionInfo:
1144   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
1145   frameOffsetReg:  '$sgpr33'
1146   stackPtrOffsetReg: '$sgpr32'
1147 body:             |
1148   bb.0:
1149     liveins: $sgpr8
1150     ; MUBUFW64-LABEL: name: s_add_i32__different_sgpr__fi_offset0_live_after
1151     ; MUBUFW64: liveins: $sgpr8
1152     ; MUBUFW64-NEXT: {{  $}}
1153     ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
1154     ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def dead $scc
1155     ; MUBUFW64-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
1156     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $sgpr8
1157     ;
1158     ; MUBUFW32-LABEL: name: s_add_i32__different_sgpr__fi_offset0_live_after
1159     ; MUBUFW32: liveins: $sgpr8
1160     ; MUBUFW32-NEXT: {{  $}}
1161     ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
1162     ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr7, $sgpr8, implicit-def dead $scc
1163     ; MUBUFW32-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
1164     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $sgpr8
1165     ;
1166     ; FLATSCRW64-LABEL: name: s_add_i32__different_sgpr__fi_offset0_live_after
1167     ; FLATSCRW64: liveins: $sgpr8
1168     ; FLATSCRW64-NEXT: {{  $}}
1169     ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
1170     ; FLATSCRW64-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
1171     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $sgpr8
1172     ;
1173     ; FLATSCRW32-LABEL: name: s_add_i32__different_sgpr__fi_offset0_live_after
1174     ; FLATSCRW32: liveins: $sgpr8
1175     ; FLATSCRW32-NEXT: {{  $}}
1176     ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
1177     ; FLATSCRW32-NEXT: renamable $sgpr7 = COPY killed renamable $sgpr7
1178     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $sgpr8
1179     renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
1180     SI_RETURN implicit $sgpr7, implicit $sgpr8
1185 name: s_add_i32__identity_sgpr__fi_offset0__kernel
1186 tracksRegLiveness: true
1187 stack:
1188   - { id: 0, size: 32, alignment: 16 }
1189 machineFunctionInfo:
1190   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
1191   frameOffsetReg:  '$sgpr33'
1192   stackPtrOffsetReg: '$sgpr32'
1193   isEntryFunction: true
1194 body:             |
1195   bb.0:
1196     liveins: $sgpr8
1198     ; MUBUFW64-LABEL: name: s_add_i32__identity_sgpr__fi_offset0__kernel
1199     ; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1200     ; MUBUFW64-NEXT: {{  $}}
1201     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1202     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1203     ; MUBUFW64-NEXT: renamable $sgpr8 = COPY $sgpr8
1204     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr8
1205     ;
1206     ; MUBUFW32-LABEL: name: s_add_i32__identity_sgpr__fi_offset0__kernel
1207     ; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1208     ; MUBUFW32-NEXT: {{  $}}
1209     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1210     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1211     ; MUBUFW32-NEXT: renamable $sgpr8 = COPY $sgpr8
1212     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr8
1213     ;
1214     ; FLATSCRW64-LABEL: name: s_add_i32__identity_sgpr__fi_offset0__kernel
1215     ; FLATSCRW64: liveins: $sgpr8
1216     ; FLATSCRW64-NEXT: {{  $}}
1217     ; FLATSCRW64-NEXT: renamable $sgpr8 = COPY $sgpr8
1218     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr8
1219     ;
1220     ; FLATSCRW32-LABEL: name: s_add_i32__identity_sgpr__fi_offset0__kernel
1221     ; FLATSCRW32: liveins: $sgpr8
1222     ; FLATSCRW32-NEXT: {{  $}}
1223     ; FLATSCRW32-NEXT: renamable $sgpr8 = COPY $sgpr8
1224     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr8
1225     renamable $sgpr8 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
1226     SI_RETURN implicit $sgpr8
1231 name: s_add_i32__fi_offset0__identity_sgpr__kernel
1232 tracksRegLiveness: true
1233 stack:
1234   - { id: 0, size: 32, alignment: 16 }
1235 machineFunctionInfo:
1236   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
1237   frameOffsetReg:  '$sgpr33'
1238   stackPtrOffsetReg: '$sgpr32'
1239   isEntryFunction: true
1240 body:             |
1241   bb.0:
1242     liveins: $sgpr8
1244     ; MUBUFW64-LABEL: name: s_add_i32__fi_offset0__identity_sgpr__kernel
1245     ; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1246     ; MUBUFW64-NEXT: {{  $}}
1247     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1248     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1249     ; MUBUFW64-NEXT: renamable $sgpr8 = COPY $sgpr8
1250     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr8
1251     ;
1252     ; MUBUFW32-LABEL: name: s_add_i32__fi_offset0__identity_sgpr__kernel
1253     ; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1254     ; MUBUFW32-NEXT: {{  $}}
1255     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1256     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1257     ; MUBUFW32-NEXT: renamable $sgpr8 = COPY $sgpr8
1258     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr8
1259     ;
1260     ; FLATSCRW64-LABEL: name: s_add_i32__fi_offset0__identity_sgpr__kernel
1261     ; FLATSCRW64: liveins: $sgpr8
1262     ; FLATSCRW64-NEXT: {{  $}}
1263     ; FLATSCRW64-NEXT: renamable $sgpr8 = COPY $sgpr8
1264     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr8
1265     ;
1266     ; FLATSCRW32-LABEL: name: s_add_i32__fi_offset0__identity_sgpr__kernel
1267     ; FLATSCRW32: liveins: $sgpr8
1268     ; FLATSCRW32-NEXT: {{  $}}
1269     ; FLATSCRW32-NEXT: renamable $sgpr8 = COPY $sgpr8
1270     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr8
1271     renamable $sgpr8 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
1272     SI_RETURN implicit $sgpr8
1277 name: s_add_i32__identity_sgpr__fi_offset32__kernel
1278 tracksRegLiveness: true
1279 stack:
1280   - { id: 0, size: 32, alignment: 16 }
1281   - { id: 1, size: 64, alignment: 4 }
1282 machineFunctionInfo:
1283   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
1284   frameOffsetReg:  '$sgpr33'
1285   stackPtrOffsetReg: '$sgpr32'
1286   isEntryFunction: true
1287 body:             |
1288   bb.0:
1289     liveins: $sgpr8
1291     ; MUBUFW64-LABEL: name: s_add_i32__identity_sgpr__fi_offset32__kernel
1292     ; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1293     ; MUBUFW64-NEXT: {{  $}}
1294     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1295     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1296     ; MUBUFW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1297     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr8
1298     ;
1299     ; MUBUFW32-LABEL: name: s_add_i32__identity_sgpr__fi_offset32__kernel
1300     ; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1301     ; MUBUFW32-NEXT: {{  $}}
1302     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1303     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1304     ; MUBUFW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1305     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr8
1306     ;
1307     ; FLATSCRW64-LABEL: name: s_add_i32__identity_sgpr__fi_offset32__kernel
1308     ; FLATSCRW64: liveins: $sgpr8
1309     ; FLATSCRW64-NEXT: {{  $}}
1310     ; FLATSCRW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1311     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr8
1312     ;
1313     ; FLATSCRW32-LABEL: name: s_add_i32__identity_sgpr__fi_offset32__kernel
1314     ; FLATSCRW32: liveins: $sgpr8
1315     ; FLATSCRW32-NEXT: {{  $}}
1316     ; FLATSCRW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1317     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr8
1318     renamable $sgpr8 = S_ADD_I32 $sgpr8, %stack.1, implicit-def dead $scc
1319     SI_RETURN implicit $sgpr8
1324 name: s_add_i32__fi_offset32__identity_sgpr__kernel
1325 tracksRegLiveness: true
1326 stack:
1327   - { id: 0, size: 32, alignment: 16 }
1328   - { id: 1, size: 64, alignment: 4 }
1329 machineFunctionInfo:
1330   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
1331   frameOffsetReg:  '$sgpr33'
1332   stackPtrOffsetReg: '$sgpr32'
1333   isEntryFunction: true
1334 body:             |
1335   bb.0:
1336     liveins: $sgpr8
1338     ; MUBUFW64-LABEL: name: s_add_i32__fi_offset32__identity_sgpr__kernel
1339     ; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1340     ; MUBUFW64-NEXT: {{  $}}
1341     ; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1342     ; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1343     ; MUBUFW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1344     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr8
1345     ;
1346     ; MUBUFW32-LABEL: name: s_add_i32__fi_offset32__identity_sgpr__kernel
1347     ; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1348     ; MUBUFW32-NEXT: {{  $}}
1349     ; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1350     ; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1351     ; MUBUFW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1352     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr8
1353     ;
1354     ; FLATSCRW64-LABEL: name: s_add_i32__fi_offset32__identity_sgpr__kernel
1355     ; FLATSCRW64: liveins: $sgpr8
1356     ; FLATSCRW64-NEXT: {{  $}}
1357     ; FLATSCRW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1358     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr8
1359     ;
1360     ; FLATSCRW32-LABEL: name: s_add_i32__fi_offset32__identity_sgpr__kernel
1361     ; FLATSCRW32: liveins: $sgpr8
1362     ; FLATSCRW32-NEXT: {{  $}}
1363     ; FLATSCRW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1364     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr8
1365     renamable $sgpr8 = S_ADD_I32 $sgpr8, %stack.1, implicit-def dead $scc
1366     SI_RETURN implicit $sgpr8
1372 name: s_add_i32__identity_sgpr__fi_offset0
1373 tracksRegLiveness: true
1374 stack:
1375   - { id: 0, size: 32, alignment: 16 }
1376 machineFunctionInfo:
1377   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
1378   frameOffsetReg:  '$sgpr33'
1379   stackPtrOffsetReg: '$sgpr32'
1380 body:             |
1381   bb.0:
1382     liveins: $sgpr8
1384     ; MUBUFW64-LABEL: name: s_add_i32__identity_sgpr__fi_offset0
1385     ; MUBUFW64: liveins: $sgpr8
1386     ; MUBUFW64-NEXT: {{  $}}
1387     ; MUBUFW64-NEXT: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
1388     ; MUBUFW64-NEXT: renamable $sgpr8 = S_ADD_I32 killed $sgpr4, $sgpr8, implicit-def dead $scc
1389     ; MUBUFW64-NEXT: renamable $sgpr8 = COPY killed renamable $sgpr8
1390     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr8
1391     ;
1392     ; MUBUFW32-LABEL: name: s_add_i32__identity_sgpr__fi_offset0
1393     ; MUBUFW32: liveins: $sgpr8
1394     ; MUBUFW32-NEXT: {{  $}}
1395     ; MUBUFW32-NEXT: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
1396     ; MUBUFW32-NEXT: renamable $sgpr8 = S_ADD_I32 killed $sgpr4, $sgpr8, implicit-def dead $scc
1397     ; MUBUFW32-NEXT: renamable $sgpr8 = COPY killed renamable $sgpr8
1398     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr8
1399     ;
1400     ; FLATSCRW64-LABEL: name: s_add_i32__identity_sgpr__fi_offset0
1401     ; FLATSCRW64: liveins: $sgpr8
1402     ; FLATSCRW64-NEXT: {{  $}}
1403     ; FLATSCRW64-NEXT: renamable $sgpr4 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
1404     ; FLATSCRW64-NEXT: renamable $sgpr8 = COPY killed renamable $sgpr4
1405     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr8
1406     ;
1407     ; FLATSCRW32-LABEL: name: s_add_i32__identity_sgpr__fi_offset0
1408     ; FLATSCRW32: liveins: $sgpr8
1409     ; FLATSCRW32-NEXT: {{  $}}
1410     ; FLATSCRW32-NEXT: renamable $sgpr4 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
1411     ; FLATSCRW32-NEXT: renamable $sgpr8 = COPY killed renamable $sgpr4
1412     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr8
1413     renamable $sgpr8 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
1414     SI_RETURN implicit $sgpr8
1419 name: s_add_i32__fi_offset32__identity_sgpr
1420 tracksRegLiveness: true
1421 stack:
1422   - { id: 0, size: 32, alignment: 16 }
1423   - { id: 1, size: 64, alignment: 4 }
1424 machineFunctionInfo:
1425   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
1426   frameOffsetReg:  '$sgpr33'
1427   stackPtrOffsetReg: '$sgpr32'
1428 body:             |
1429   bb.0:
1430     liveins: $sgpr8
1432     ; MUBUFW64-LABEL: name: s_add_i32__fi_offset32__identity_sgpr
1433     ; MUBUFW64: liveins: $sgpr8
1434     ; MUBUFW64-NEXT: {{  $}}
1435     ; MUBUFW64-NEXT: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
1436     ; MUBUFW64-NEXT: renamable $sgpr8 = S_ADD_I32 killed $sgpr4, $sgpr8, implicit-def dead $scc
1437     ; MUBUFW64-NEXT: renamable $sgpr8 = S_ADD_I32 killed renamable $sgpr8, 32, implicit-def dead $scc
1438     ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr8
1439     ;
1440     ; MUBUFW32-LABEL: name: s_add_i32__fi_offset32__identity_sgpr
1441     ; MUBUFW32: liveins: $sgpr8
1442     ; MUBUFW32-NEXT: {{  $}}
1443     ; MUBUFW32-NEXT: renamable $sgpr4 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
1444     ; MUBUFW32-NEXT: renamable $sgpr8 = S_ADD_I32 killed $sgpr4, $sgpr8, implicit-def dead $scc
1445     ; MUBUFW32-NEXT: renamable $sgpr8 = S_ADD_I32 killed renamable $sgpr8, 32, implicit-def dead $scc
1446     ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr8
1447     ;
1448     ; FLATSCRW64-LABEL: name: s_add_i32__fi_offset32__identity_sgpr
1449     ; FLATSCRW64: liveins: $sgpr8
1450     ; FLATSCRW64-NEXT: {{  $}}
1451     ; FLATSCRW64-NEXT: renamable $sgpr4 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
1452     ; FLATSCRW64-NEXT: renamable $sgpr8 = S_ADD_I32 killed renamable $sgpr4, 32, implicit-def dead $scc
1453     ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr8
1454     ;
1455     ; FLATSCRW32-LABEL: name: s_add_i32__fi_offset32__identity_sgpr
1456     ; FLATSCRW32: liveins: $sgpr8
1457     ; FLATSCRW32-NEXT: {{  $}}
1458     ; FLATSCRW32-NEXT: renamable $sgpr4 = S_ADD_I32 killed $sgpr32, $sgpr8, implicit-def dead $scc
1459     ; FLATSCRW32-NEXT: renamable $sgpr8 = S_ADD_I32 killed renamable $sgpr4, 32, implicit-def dead $scc
1460     ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr8
1461     renamable $sgpr8 = S_ADD_I32 $sgpr8, %stack.1, implicit-def dead $scc
1462     SI_RETURN implicit $sgpr8
1466 # Must use the result register as scratch register.
1468 name: s_add_i32_use_dst_reg_as_temp_regression
1469 tracksRegLiveness: true
1470 stack:
1471   - { id: 0, size: 1, alignment: 4, local-offset: 0 }
1472 machineFunctionInfo:
1473   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
1474   frameOffsetReg:  '$sgpr33'
1475   stackPtrOffsetReg: '$sgpr32'
1476 body:             |
1477   bb.0:
1478   liveins: $vcc_lo, $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr18, $sgpr19, $sgpr20, $sgpr21, $sgpr22, $sgpr23, $sgpr24, $sgpr25, $sgpr26, $sgpr27, $sgpr28, $sgpr29
1479     ; MUBUFW64-LABEL: name: s_add_i32_use_dst_reg_as_temp_regression
1480     ; MUBUFW64: liveins: $vcc_lo, $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr18, $sgpr19, $sgpr20, $sgpr21, $sgpr22, $sgpr23, $sgpr24, $sgpr25, $sgpr26, $sgpr27, $sgpr28, $sgpr29
1481     ; MUBUFW64-NEXT: {{  $}}
1482     ; MUBUFW64-NEXT: renamable $vcc_hi = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
1483     ; MUBUFW64-NEXT: renamable $vcc_hi = S_ADD_I32 killed $vcc_hi, renamable $vcc_lo, implicit-def dead $scc
1484     ; MUBUFW64-NEXT: renamable $vcc_hi = COPY killed renamable $vcc_hi
1485     ; MUBUFW64-NEXT: SI_RETURN implicit $vcc_lo, implicit $vcc_hi, implicit $sgpr0, implicit $sgpr1, implicit $sgpr2, implicit $sgpr3, implicit $sgpr4, implicit $sgpr5, implicit $sgpr6, implicit $sgpr7, implicit $sgpr8, implicit $sgpr9, implicit $sgpr10, implicit $sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $sgpr16, implicit $sgpr17, implicit $sgpr18, implicit $sgpr19, implicit $sgpr20, implicit $sgpr21, implicit $sgpr22, implicit $sgpr23, implicit $sgpr24, implicit $sgpr25, implicit $sgpr26, implicit $sgpr27, implicit $sgpr28, implicit $sgpr29
1486     ;
1487     ; MUBUFW32-LABEL: name: s_add_i32_use_dst_reg_as_temp_regression
1488     ; MUBUFW32: liveins: $vcc_lo, $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr18, $sgpr19, $sgpr20, $sgpr21, $sgpr22, $sgpr23, $sgpr24, $sgpr25, $sgpr26, $sgpr27, $sgpr28, $sgpr29
1489     ; MUBUFW32-NEXT: {{  $}}
1490     ; MUBUFW32-NEXT: renamable $vcc_hi = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
1491     ; MUBUFW32-NEXT: renamable $vcc_hi = S_ADD_I32 killed $vcc_hi, renamable $vcc_lo, implicit-def dead $scc
1492     ; MUBUFW32-NEXT: renamable $vcc_hi = COPY killed renamable $vcc_hi
1493     ; MUBUFW32-NEXT: SI_RETURN implicit $vcc_lo, implicit $vcc_hi, implicit $sgpr0, implicit $sgpr1, implicit $sgpr2, implicit $sgpr3, implicit $sgpr4, implicit $sgpr5, implicit $sgpr6, implicit $sgpr7, implicit $sgpr8, implicit $sgpr9, implicit $sgpr10, implicit $sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $sgpr16, implicit $sgpr17, implicit $sgpr18, implicit $sgpr19, implicit $sgpr20, implicit $sgpr21, implicit $sgpr22, implicit $sgpr23, implicit $sgpr24, implicit $sgpr25, implicit $sgpr26, implicit $sgpr27, implicit $sgpr28, implicit $sgpr29
1494     ;
1495     ; FLATSCRW64-LABEL: name: s_add_i32_use_dst_reg_as_temp_regression
1496     ; FLATSCRW64: liveins: $vcc_lo, $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr18, $sgpr19, $sgpr20, $sgpr21, $sgpr22, $sgpr23, $sgpr24, $sgpr25, $sgpr26, $sgpr27, $sgpr28, $sgpr29
1497     ; FLATSCRW64-NEXT: {{  $}}
1498     ; FLATSCRW64-NEXT: renamable $vcc_hi = S_ADD_I32 killed $sgpr32, renamable $vcc_lo, implicit-def dead $scc
1499     ; FLATSCRW64-NEXT: renamable $vcc_hi = COPY killed renamable $vcc_hi
1500     ; FLATSCRW64-NEXT: SI_RETURN implicit $vcc_lo, implicit $vcc_hi, implicit $sgpr0, implicit $sgpr1, implicit $sgpr2, implicit $sgpr3, implicit $sgpr4, implicit $sgpr5, implicit $sgpr6, implicit $sgpr7, implicit $sgpr8, implicit $sgpr9, implicit $sgpr10, implicit $sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $sgpr16, implicit $sgpr17, implicit $sgpr18, implicit $sgpr19, implicit $sgpr20, implicit $sgpr21, implicit $sgpr22, implicit $sgpr23, implicit $sgpr24, implicit $sgpr25, implicit $sgpr26, implicit $sgpr27, implicit $sgpr28, implicit $sgpr29
1501     ;
1502     ; FLATSCRW32-LABEL: name: s_add_i32_use_dst_reg_as_temp_regression
1503     ; FLATSCRW32: liveins: $vcc_lo, $sgpr0, $sgpr1, $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $sgpr14, $sgpr15, $sgpr16, $sgpr17, $sgpr18, $sgpr19, $sgpr20, $sgpr21, $sgpr22, $sgpr23, $sgpr24, $sgpr25, $sgpr26, $sgpr27, $sgpr28, $sgpr29
1504     ; FLATSCRW32-NEXT: {{  $}}
1505     ; FLATSCRW32-NEXT: renamable $vcc_hi = S_ADD_I32 killed $sgpr32, renamable $vcc_lo, implicit-def dead $scc
1506     ; FLATSCRW32-NEXT: renamable $vcc_hi = COPY killed renamable $vcc_hi
1507     ; FLATSCRW32-NEXT: SI_RETURN implicit $vcc_lo, implicit $vcc_hi, implicit $sgpr0, implicit $sgpr1, implicit $sgpr2, implicit $sgpr3, implicit $sgpr4, implicit $sgpr5, implicit $sgpr6, implicit $sgpr7, implicit $sgpr8, implicit $sgpr9, implicit $sgpr10, implicit $sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $sgpr16, implicit $sgpr17, implicit $sgpr18, implicit $sgpr19, implicit $sgpr20, implicit $sgpr21, implicit $sgpr22, implicit $sgpr23, implicit $sgpr24, implicit $sgpr25, implicit $sgpr26, implicit $sgpr27, implicit $sgpr28, implicit $sgpr29
1508     renamable $vcc_hi = S_ADD_I32 renamable $vcc_lo, %stack.0, implicit-def dead $scc
1509     SI_RETURN implicit $vcc_lo, implicit $vcc_hi, implicit $sgpr0, implicit $sgpr1, implicit $sgpr2, implicit $sgpr3, implicit $sgpr4, implicit $sgpr5, implicit $sgpr6, implicit $sgpr7, implicit $sgpr8, implicit $sgpr9, implicit $sgpr10, implicit $sgpr11, implicit $sgpr12, implicit $sgpr13, implicit $sgpr14, implicit $sgpr15, implicit $sgpr16, implicit $sgpr17, implicit $sgpr18, implicit $sgpr19, implicit $sgpr20, implicit $sgpr21, implicit $sgpr22, implicit $sgpr23, implicit $sgpr24, implicit $sgpr25, implicit $sgpr26, implicit $sgpr27, implicit $sgpr28, implicit $sgpr29