1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -verify-regalloc --stress-regalloc=2 -start-before=greedy,0 -stop-after=virtregrewriter,1 -o - %s | FileCheck -check-prefix=GCN %s
3
4---
5name:            test_remat_v_mov_b32_e32
6tracksRegLiveness: true
7body:             |
8  bb.0:
9    ; GCN-LABEL: name: test_remat_v_mov_b32_e32
10    ; GCN: renamable $vgpr0 = V_MOV_B32_e32 1, implicit $exec
11    ; GCN-NEXT: renamable $vgpr1 = V_MOV_B32_e32 2, implicit $exec
12    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
13    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
14    ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e32 3, implicit $exec
15    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
16    ; GCN-NEXT: S_ENDPGM 0
17    %0:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
18    %1:vgpr_32 = V_MOV_B32_e32 2, implicit $exec
19    %2:vgpr_32 = V_MOV_B32_e32 3, implicit $exec
20    S_NOP 0, implicit %0
21    S_NOP 0, implicit %1
22    S_NOP 0, implicit %2
23    S_ENDPGM 0
24...
25---
26name:            test_no_remat_v_mov_b32_e32_impuse
27tracksRegLiveness: true
28machineFunctionInfo:
29  stackPtrOffsetReg:  $sgpr32
30body:             |
31  bb.0:
32    ; GCN-LABEL: name: test_no_remat_v_mov_b32_e32_impuse
33    ; GCN: $m0 = IMPLICIT_DEF
34    ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e32 1, implicit $exec, implicit $m0
35    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
36    ; GCN-NEXT: renamable $vgpr1 = V_MOV_B32_e32 2, implicit $exec, implicit $m0
37    ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e32 3, implicit $exec, implicit $m0
38    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
39    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
40    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
41    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
42    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
43    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
44    ; GCN-NEXT: S_ENDPGM 0
45    $m0 = IMPLICIT_DEF
46    %0:vgpr_32 = V_MOV_B32_e32 1, implicit $exec, implicit $m0
47    %1:vgpr_32 = V_MOV_B32_e32 2, implicit $exec, implicit $m0
48    %2:vgpr_32 = V_MOV_B32_e32 3, implicit $exec, implicit $m0
49    S_NOP 0, implicit %0
50    S_NOP 0, implicit %1
51    S_NOP 0, implicit %2
52    S_ENDPGM 0
53...
54---
55name:            test_remat_v_mov_b32_e32_exec_def
56tracksRegLiveness: true
57machineFunctionInfo:
58  stackPtrOffsetReg:  $sgpr32
59body:             |
60  bb.0:
61    ; GCN-LABEL: name: test_remat_v_mov_b32_e32_exec_def
62    ; GCN: renamable $vgpr0 = V_MOV_B32_e32 1, implicit $exec
63    ; GCN-NEXT: renamable $vgpr1 = V_MOV_B32_e32 2, implicit $exec
64    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
65    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
66    ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e32 3, implicit $exec
67    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
68    ; GCN-NEXT: $exec = S_ANDN2_B64_term $exec, undef renamable $sgpr0_sgpr1, implicit-def $scc
69    ; GCN-NEXT: S_ENDPGM 0
70    %0:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
71    %1:vgpr_32 = V_MOV_B32_e32 2, implicit $exec
72    %2:vgpr_32 = V_MOV_B32_e32 3, implicit $exec
73    S_NOP 0, implicit %0
74    S_NOP 0, implicit %1
75    S_NOP 0, implicit %2
76    $exec = S_ANDN2_B64_term $exec, undef %4:sreg_64, implicit-def $scc
77    S_ENDPGM 0
78...
79---
80name:            test_remat_v_mov_b32_e64
81tracksRegLiveness: true
82body:             |
83  bb.0:
84    ; GCN-LABEL: name: test_remat_v_mov_b32_e64
85    ; GCN: renamable $vgpr0 = V_MOV_B32_e64 1, implicit $exec
86    ; GCN-NEXT: renamable $vgpr1 = V_MOV_B32_e64 2, implicit $exec
87    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
88    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
89    ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e64 3, implicit $exec
90    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
91    ; GCN-NEXT: S_ENDPGM 0
92    %0:vgpr_32 = V_MOV_B32_e64 1, implicit $exec
93    %1:vgpr_32 = V_MOV_B32_e64 2, implicit $exec
94    %2:vgpr_32 = V_MOV_B32_e64 3, implicit $exec
95    S_NOP 0, implicit %0
96    S_NOP 0, implicit %1
97    S_NOP 0, implicit %2
98    S_ENDPGM 0
99...
100---
101name:            test_no_remat_v_mov_b32_dpp
102tracksRegLiveness: true
103machineFunctionInfo:
104  stackPtrOffsetReg:  $sgpr32
105body:             |
106  bb.0:
107    ; GCN-LABEL: name: test_no_remat_v_mov_b32_dpp
108    ; GCN: renamable $vgpr0 = V_MOV_B32_dpp undef $vgpr0, undef $vgpr0, 1, 15, 15, 1, implicit $exec
109    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
110    ; GCN-NEXT: renamable $vgpr1 = V_MOV_B32_dpp undef $vgpr1, undef $vgpr0, 1, 15, 15, 1, implicit $exec
111    ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_dpp undef $vgpr0, undef $vgpr0, 1, 15, 15, 1, implicit $exec
112    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
113    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
114    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
115    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
116    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
117    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
118    ; GCN-NEXT: S_ENDPGM 0
119    %1:vgpr_32 = V_MOV_B32_dpp undef %1:vgpr_32, undef %0:vgpr_32, 1, 15, 15, 1, implicit $exec
120    %2:vgpr_32 = V_MOV_B32_dpp undef %2:vgpr_32, undef %0:vgpr_32, 1, 15, 15, 1, implicit $exec
121    %3:vgpr_32 = V_MOV_B32_dpp undef %3:vgpr_32, undef %0:vgpr_32, 1, 15, 15, 1, implicit $exec
122    S_NOP 0, implicit %1
123    S_NOP 0, implicit %2
124    S_NOP 0, implicit %3
125    S_ENDPGM 0
126...
127---
128name:            test_remat_v_accvgpr_read_b32
129tracksRegLiveness: true
130body:             |
131  bb.0:
132    ; GCN-LABEL: name: test_remat_v_accvgpr_read_b32
133    ; GCN: renamable $vgpr0 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
134    ; GCN-NEXT: renamable $vgpr1 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
135    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
136    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
137    ; GCN-NEXT: renamable $vgpr0 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
138    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
139    ; GCN-NEXT: S_ENDPGM 0
140    %0:vgpr_32 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
141    %1:vgpr_32 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
142    %2:vgpr_32 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
143    S_NOP 0, implicit %0
144    S_NOP 0, implicit %1
145    S_NOP 0, implicit %2
146    S_ENDPGM 0
147...
148---
149name:            test_remat_v_accvgpr_write_b32
150tracksRegLiveness: true
151body:             |
152  bb.0:
153    ; GCN-LABEL: name: test_remat_v_accvgpr_write_b32
154    ; GCN: renamable $agpr0 = V_ACCVGPR_WRITE_B32_e64 1, implicit $exec
155    ; GCN-NEXT: renamable $agpr1 = V_ACCVGPR_WRITE_B32_e64 2, implicit $exec
156    ; GCN-NEXT: S_NOP 0, implicit killed renamable $agpr0
157    ; GCN-NEXT: S_NOP 0, implicit killed renamable $agpr1
158    ; GCN-NEXT: renamable $agpr0 = V_ACCVGPR_WRITE_B32_e64 3, implicit $exec
159    ; GCN-NEXT: S_NOP 0, implicit killed renamable $agpr0
160    ; GCN-NEXT: S_ENDPGM 0
161    %0:agpr_32 = V_ACCVGPR_WRITE_B32_e64 1, implicit $exec
162    %1:agpr_32 = V_ACCVGPR_WRITE_B32_e64 2, implicit $exec
163    %2:agpr_32 = V_ACCVGPR_WRITE_B32_e64 3, implicit $exec
164    S_NOP 0, implicit %0
165    S_NOP 0, implicit %1
166    S_NOP 0, implicit %2
167    S_ENDPGM 0
168...
169---
170name:            test_remat_v_mov_b64_pseudo
171tracksRegLiveness: true
172body:             |
173  bb.0:
174    ; GCN-LABEL: name: test_remat_v_mov_b64_pseudo
175    ; GCN: renamable $vgpr0_vgpr1 = V_MOV_B64_PSEUDO 1, implicit $exec
176    ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_MOV_B64_PSEUDO 2, implicit $exec
177    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
178    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
179    ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_MOV_B64_PSEUDO 3, implicit $exec
180    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
181    ; GCN-NEXT: S_ENDPGM 0
182    %0:vreg_64_align2 = V_MOV_B64_PSEUDO 1, implicit $exec
183    %1:vreg_64_align2 = V_MOV_B64_PSEUDO 2, implicit $exec
184    %2:vreg_64_align2 = V_MOV_B64_PSEUDO 3, implicit $exec
185    S_NOP 0, implicit %0
186    S_NOP 0, implicit %1
187    S_NOP 0, implicit %2
188    S_ENDPGM 0
189...
190---
191name:            test_remat_v_cvt_i32_f64_e32
192tracksRegLiveness: true
193body:             |
194  bb.0:
195    ; GCN-LABEL: name: test_remat_v_cvt_i32_f64_e32
196    ; GCN: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode
197    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
198    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
199    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
200    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
201    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
202    ; GCN-NEXT: S_ENDPGM 0
203    %0:vgpr_32 = nofpexcept V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode
204    %1:vgpr_32 = nofpexcept V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
205    %2:vgpr_32 = nofpexcept V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
206    S_NOP 0, implicit %0
207    S_NOP 0, implicit %1
208    S_NOP 0, implicit %2
209    S_ENDPGM 0
210...
211---
212machineFunctionInfo:
213  stackPtrOffsetReg:  $sgpr32
214name:            test_no_remat_v_cvt_i32_f64_e32_fp_except
215tracksRegLiveness: true
216body:             |
217  bb.0:
218    ; GCN-LABEL: name: test_no_remat_v_cvt_i32_f64_e32_fp_except
219    ; GCN: renamable $vgpr0 = V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode
220    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
221    ; GCN-NEXT: renamable $vgpr1 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
222    ; GCN-NEXT: renamable $vgpr0 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
223    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
224    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
225    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
226    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
227    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
228    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
229    ; GCN-NEXT: S_ENDPGM 0
230    %0:vgpr_32 = V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode
231    %1:vgpr_32 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
232    %2:vgpr_32 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
233    S_NOP 0, implicit %0
234    S_NOP 0, implicit %1
235    S_NOP 0, implicit %2
236    S_ENDPGM 0
237...
238---
239# Cannot rematerialize if MODE register is modified anywhere
240name:            test_no_remat_v_cvt_i32_f64_e32_mode_def
241tracksRegLiveness: true
242machineFunctionInfo:
243  stackPtrOffsetReg:  $sgpr32
244body:             |
245  bb.0:
246    ; GCN-LABEL: name: test_no_remat_v_cvt_i32_f64_e32_mode_def
247    ; GCN: $mode = IMPLICIT_DEF
248    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode
249    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
250    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
251    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
252    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
253    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
254    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
255    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
256    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
257    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
258    ; GCN-NEXT: S_ENDPGM 0
259    $mode = IMPLICIT_DEF
260    %0:vgpr_32 = nofpexcept V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode
261    %1:vgpr_32 = nofpexcept V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
262    %2:vgpr_32 = nofpexcept V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
263    S_NOP 0, implicit %0
264    S_NOP 0, implicit %1
265    S_NOP 0, implicit %2
266    S_ENDPGM 0
267...
268---
269name:            test_remat_v_cvt_i32_f64_e64
270tracksRegLiveness: true
271body:             |
272  bb.0:
273    ; GCN-LABEL: name: test_remat_v_cvt_i32_f64_e64
274    ; GCN: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e64 0, 1, 0, 0, implicit $exec, implicit $mode
275    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_I32_F64_e64 0, 2, 0, 0, implicit $exec, implicit $mode
276    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
277    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
278    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e64 0, 3, 0, 0, implicit $exec, implicit $mode
279    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
280    ; GCN-NEXT: S_ENDPGM 0
281    %0:vgpr_32 = nofpexcept V_CVT_I32_F64_e64 0, 1, 0, 0, implicit $exec, implicit $mode
282    %1:vgpr_32 = nofpexcept V_CVT_I32_F64_e64 0, 2, 0, 0, implicit $exec, implicit $mode
283    %2:vgpr_32 = nofpexcept V_CVT_I32_F64_e64 0, 3, 0, 0, implicit $exec, implicit $mode
284    S_NOP 0, implicit %0
285    S_NOP 0, implicit %1
286    S_NOP 0, implicit %2
287    S_ENDPGM 0
288...
289---
290name:            test_remat_v_cvt_i32_f64_e64_undef
291tracksRegLiveness: true
292machineFunctionInfo:
293  stackPtrOffsetReg:  $sgpr32
294body:             |
295  bb.0:
296    ; GCN-LABEL: name: test_remat_v_cvt_i32_f64_e64_undef
297    ; GCN: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e64 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
298    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_I32_F64_e64 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
299    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
300    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
301    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e64 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
302    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
303    ; GCN-NEXT: S_ENDPGM 0
304    %1:vgpr_32 = nofpexcept V_CVT_I32_F64_e64 0, undef %0:vreg_64, 0, 0, implicit $exec, implicit $mode
305    %2:vgpr_32 = nofpexcept V_CVT_I32_F64_e64 0, undef %0:vreg_64, 0, 0, implicit $exec, implicit $mode
306    %3:vgpr_32 = nofpexcept V_CVT_I32_F64_e64 0, undef %0:vreg_64, 0, 0, implicit $exec, implicit $mode
307    S_NOP 0, implicit %1
308    S_NOP 0, implicit %2
309    S_NOP 0, implicit %3
310    S_ENDPGM 0
311...
312---
313name:            test_no_remat_v_cvt_i32_f64_dpp
314tracksRegLiveness: true
315machineFunctionInfo:
316  stackPtrOffsetReg:  $sgpr32
317body:             |
318  bb.0:
319    ; GCN-LABEL: name: test_no_remat_v_cvt_i32_f64_dpp
320    ; GCN: renamable $vgpr0 = V_CVT_I32_F64_dpp undef $vgpr0, 0, undef $vgpr0_vgpr1, 336, 0, 0, 0, implicit $exec, implicit $mode
321    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
322    ; GCN-NEXT: renamable $vgpr1 = V_CVT_I32_F64_dpp undef $vgpr1, 0, undef $vgpr0_vgpr1, 336, 0, 0, 0, implicit $exec, implicit $mode
323    ; GCN-NEXT: renamable $vgpr0 = V_CVT_I32_F64_dpp undef $vgpr0, 0, undef $vgpr0_vgpr1, 336, 0, 0, 0, implicit $exec, implicit $mode
324    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
325    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
326    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
327    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
328    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
329    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
330    ; GCN-NEXT: S_ENDPGM 0
331    %1:vgpr_32 = V_CVT_I32_F64_dpp undef %1:vgpr_32, 0, undef %0:vreg_64_align2, 336, 0, 0, 0, implicit $exec, implicit $mode
332    %2:vgpr_32 = V_CVT_I32_F64_dpp undef %2:vgpr_32, 0, undef %0:vreg_64_align2, 336, 0, 0, 0, implicit $exec, implicit $mode
333    %3:vgpr_32 = V_CVT_I32_F64_dpp undef %3:vgpr_32, 0, undef %0:vreg_64_align2, 336, 0, 0, 0, implicit $exec, implicit $mode
334    S_NOP 0, implicit %1
335    S_NOP 0, implicit %2
336    S_NOP 0, implicit %3
337    S_ENDPGM 0
338...
339---
340name:            test_no_remat_v_cvt_i32_f64_e32_imp_def
341tracksRegLiveness: true
342machineFunctionInfo:
343  stackPtrOffsetReg:  $sgpr32
344body:             |
345  bb.0:
346    ; GCN-LABEL: name: test_no_remat_v_cvt_i32_f64_e32_imp_def
347    ; GCN: renamable $vgpr0 = V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode, implicit-def $m0
348    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
349    ; GCN-NEXT: renamable $vgpr1 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode, implicit-def $m0
350    ; GCN-NEXT: renamable $vgpr0 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode, implicit-def $m0
351    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
352    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
353    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
354    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
355    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
356    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
357    ; GCN-NEXT: S_ENDPGM 0
358    %0:vgpr_32 = V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode, implicit-def $m0
359    %1:vgpr_32 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode, implicit-def $m0
360    %2:vgpr_32 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode, implicit-def $m0
361    S_NOP 0, implicit %0
362    S_NOP 0, implicit %1
363    S_NOP 0, implicit %2
364    S_ENDPGM 0
365...
366---
367name:            test_no_remat_v_cvt_i32_f64_e32_imp_use
368tracksRegLiveness: true
369machineFunctionInfo:
370  stackPtrOffsetReg:  $sgpr32
371body:             |
372  bb.0:
373    ; GCN-LABEL: name: test_no_remat_v_cvt_i32_f64_e32_imp_use
374    ; GCN: renamable $vgpr0 = V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode, implicit $m0
375    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
376    ; GCN-NEXT: renamable $vgpr1 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode, implicit $m0
377    ; GCN-NEXT: renamable $vgpr0 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode, implicit $m0
378    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
379    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
380    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
381    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
382    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
383    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
384    ; GCN-NEXT: S_ENDPGM 0
385    %0:vgpr_32 = V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode, implicit $m0
386    %1:vgpr_32 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode, implicit $m0
387    %2:vgpr_32 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode, implicit $m0
388    S_NOP 0, implicit %0
389    S_NOP 0, implicit %1
390    S_NOP 0, implicit %2
391    S_ENDPGM 0
392...
393---
394name:            test_remat_v_cvt_f64_i32_e32
395tracksRegLiveness: true
396body:             |
397  bb.0:
398    ; GCN-LABEL: name: test_remat_v_cvt_f64_i32_e32
399    ; GCN: renamable $vgpr0_vgpr1 = V_CVT_F64_I32_e32 1, implicit $exec, implicit $mode
400    ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_CVT_F64_I32_e32 2, implicit $exec, implicit $mode
401    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
402    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
403    ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_CVT_F64_I32_e32 3, implicit $exec, implicit $mode
404    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
405    ; GCN-NEXT: S_ENDPGM 0
406    %0:vreg_64_align2 = V_CVT_F64_I32_e32 1, implicit $exec, implicit $mode
407    %1:vreg_64_align2 = V_CVT_F64_I32_e32 2, implicit $exec, implicit $mode
408    %2:vreg_64_align2 = V_CVT_F64_I32_e32 3, implicit $exec, implicit $mode
409    S_NOP 0, implicit %0
410    S_NOP 0, implicit %1
411    S_NOP 0, implicit %2
412    S_ENDPGM 0
413...
414---
415name:            test_remat_v_cvt_f32_f64_e32
416tracksRegLiveness: true
417body:             |
418  bb.0:
419    ; GCN-LABEL: name: test_remat_v_cvt_f32_f64_e32
420    ; GCN: renamable $vgpr0 = nofpexcept V_CVT_F32_F64_e32 1, implicit $exec, implicit $mode
421    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_F32_F64_e32 2, implicit $exec, implicit $mode
422    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
423    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
424    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_F32_F64_e32 3, implicit $exec, implicit $mode
425    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
426    ; GCN-NEXT: S_ENDPGM 0
427    %0:vgpr_32 = nofpexcept V_CVT_F32_F64_e32 1, implicit $exec, implicit $mode
428    %1:vgpr_32 = nofpexcept V_CVT_F32_F64_e32 2, implicit $exec, implicit $mode
429    %2:vgpr_32 = nofpexcept V_CVT_F32_F64_e32 3, implicit $exec, implicit $mode
430    S_NOP 0, implicit %0
431    S_NOP 0, implicit %1
432    S_NOP 0, implicit %2
433    S_ENDPGM 0
434...
435---
436name:            test_remat_v_cvt_f64_f32_e32
437tracksRegLiveness: true
438body:             |
439  bb.0:
440    ; GCN-LABEL: name: test_remat_v_cvt_f64_f32_e32
441    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_CVT_F64_F32_e32 1, implicit $exec, implicit $mode
442    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_CVT_F64_F32_e32 2, implicit $exec, implicit $mode
443    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
444    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
445    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_CVT_F64_F32_e32 3, implicit $exec, implicit $mode
446    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
447    ; GCN-NEXT: S_ENDPGM 0
448    %0:vreg_64_align2 = nofpexcept V_CVT_F64_F32_e32 1, implicit $exec, implicit $mode
449    %1:vreg_64_align2 = nofpexcept V_CVT_F64_F32_e32 2, implicit $exec, implicit $mode
450    %2:vreg_64_align2 = nofpexcept V_CVT_F64_F32_e32 3, implicit $exec, implicit $mode
451    S_NOP 0, implicit %0
452    S_NOP 0, implicit %1
453    S_NOP 0, implicit %2
454    S_ENDPGM 0
455...
456---
457name:            test_remat_v_cvt_u32_f64_e32
458tracksRegLiveness: true
459body:             |
460  bb.0:
461    ; GCN-LABEL: name: test_remat_v_cvt_u32_f64_e32
462    ; GCN: renamable $vgpr0 = nofpexcept V_CVT_U32_F64_e32 1, implicit $exec, implicit $mode
463    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_U32_F64_e32 2, implicit $exec, implicit $mode
464    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
465    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
466    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_U32_F64_e32 3, implicit $exec, implicit $mode
467    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
468    ; GCN-NEXT: S_ENDPGM 0
469    %0:vgpr_32 = nofpexcept V_CVT_U32_F64_e32 1, implicit $exec, implicit $mode
470    %1:vgpr_32 = nofpexcept V_CVT_U32_F64_e32 2, implicit $exec, implicit $mode
471    %2:vgpr_32 = nofpexcept V_CVT_U32_F64_e32 3, implicit $exec, implicit $mode
472    S_NOP 0, implicit %0
473    S_NOP 0, implicit %1
474    S_NOP 0, implicit %2
475    S_ENDPGM 0
476...
477---
478name:            test_remat_v_cvt_f64_u32_e32
479tracksRegLiveness: true
480body:             |
481  bb.0:
482    ; GCN-LABEL: name: test_remat_v_cvt_f64_u32_e32
483    ; GCN: renamable $vgpr0_vgpr1 = V_CVT_F64_U32_e32 1, implicit $exec, implicit $mode
484    ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_CVT_F64_U32_e32 2, implicit $exec, implicit $mode
485    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
486    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
487    ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_CVT_F64_U32_e32 3, implicit $exec, implicit $mode
488    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
489    ; GCN-NEXT: S_ENDPGM 0
490    %0:vreg_64_align2 = V_CVT_F64_U32_e32 1, implicit $exec, implicit $mode
491    %1:vreg_64_align2 = V_CVT_F64_U32_e32 2, implicit $exec, implicit $mode
492    %2:vreg_64_align2 = V_CVT_F64_U32_e32 3, implicit $exec, implicit $mode
493    S_NOP 0, implicit %0
494    S_NOP 0, implicit %1
495    S_NOP 0, implicit %2
496    S_ENDPGM 0
497...
498---
499name:            test_remat_v_cvt_f32_i32_e32
500tracksRegLiveness: true
501body:             |
502  bb.0:
503    ; GCN-LABEL: name: test_remat_v_cvt_f32_i32_e32
504    ; GCN: renamable $vgpr0 = V_CVT_F32_I32_e32 1, implicit $exec, implicit $mode
505    ; GCN-NEXT: renamable $vgpr1 = V_CVT_F32_I32_e32 2, implicit $exec, implicit $mode
506    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
507    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
508    ; GCN-NEXT: renamable $vgpr0 = V_CVT_F32_I32_e32 3, implicit $exec, implicit $mode
509    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
510    ; GCN-NEXT: S_ENDPGM 0
511    %0:vgpr_32 = V_CVT_F32_I32_e32 1, implicit $exec, implicit $mode
512    %1:vgpr_32 = V_CVT_F32_I32_e32 2, implicit $exec, implicit $mode
513    %2:vgpr_32 = V_CVT_F32_I32_e32 3, implicit $exec, implicit $mode
514    S_NOP 0, implicit %0
515    S_NOP 0, implicit %1
516    S_NOP 0, implicit %2
517    S_ENDPGM 0
518...
519---
520name:            test_remat_v_cvt_f32_i32_sdwa
521tracksRegLiveness: true
522body:             |
523  bb.0:
524    ; GCN-LABEL: name: test_remat_v_cvt_f32_i32_sdwa
525    ; GCN: renamable $vgpr0 = V_CVT_F32_I32_sdwa 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
526    ; GCN-NEXT: renamable $vgpr1 = V_CVT_F32_I32_sdwa 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
527    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
528    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
529    ; GCN-NEXT: renamable $vgpr0 = V_CVT_F32_I32_sdwa 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
530    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
531    ; GCN-NEXT: S_ENDPGM 0
532    %1:vgpr_32 = V_CVT_F32_I32_sdwa 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
533    %2:vgpr_32 = V_CVT_F32_I32_sdwa 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
534    %3:vgpr_32 = V_CVT_F32_I32_sdwa 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
535    S_NOP 0, implicit %1
536    S_NOP 0, implicit %2
537    S_NOP 0, implicit %3
538    S_ENDPGM 0
539...
540---
541# SDWA instruction with UNUSED_PRESERVE cannot be rematerialized due to partial
542# dst write. This is handled because it always has a tied-def implicit operand.
543name:            test_no_remat_v_cvt_f32_i32_sdwa_dst_unused_preserve
544tracksRegLiveness: true
545machineFunctionInfo:
546  stackPtrOffsetReg:  $sgpr32
547body:             |
548  bb.0:
549    ; GCN-LABEL: name: test_no_remat_v_cvt_f32_i32_sdwa_dst_unused_preserve
550    ; GCN: renamable $vgpr0 = V_CVT_F32_I32_sdwa 0, undef $vgpr0, 0, 0, 0, 2, 0, implicit $exec, implicit $mode, implicit undef $vgpr0(tied-def 0)
551    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
552    ; GCN-NEXT: renamable $vgpr1 = V_CVT_F32_I32_sdwa 0, undef $vgpr0, 0, 0, 0, 2, 0, implicit $exec, implicit $mode, implicit undef $vgpr1(tied-def 0)
553    ; GCN-NEXT: renamable $vgpr0 = V_CVT_F32_I32_sdwa 0, undef $vgpr0, 0, 0, 0, 2, 0, implicit $exec, implicit $mode, implicit undef $vgpr0(tied-def 0)
554    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
555    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
556    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
557    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
558    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
559    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
560    ; GCN-NEXT: S_ENDPGM 0
561    %1:vgpr_32 = V_CVT_F32_I32_sdwa 0, undef %0:vgpr_32, 0, 0, 0, 2, 0, implicit $exec, implicit $mode, implicit undef %1:vgpr_32(tied-def 0)
562    %2:vgpr_32 = V_CVT_F32_I32_sdwa 0, undef %0:vgpr_32, 0, 0, 0, 2, 0, implicit $exec, implicit $mode, implicit undef %2:vgpr_32(tied-def 0)
563    %3:vgpr_32 = V_CVT_F32_I32_sdwa 0, undef %0:vgpr_32, 0, 0, 0, 2, 0, implicit $exec, implicit $mode, implicit undef %3:vgpr_32(tied-def 0)
564    S_NOP 0, implicit %1
565    S_NOP 0, implicit %2
566    S_NOP 0, implicit %3
567    S_ENDPGM 0
568...
569---
570name:            test_remat_v_cvt_f32_u32_e32
571tracksRegLiveness: true
572body:             |
573  bb.0:
574    ; GCN-LABEL: name: test_remat_v_cvt_f32_u32_e32
575    ; GCN: renamable $vgpr0 = V_CVT_F32_U32_e32 1, implicit $exec, implicit $mode
576    ; GCN-NEXT: renamable $vgpr1 = V_CVT_F32_U32_e32 2, implicit $exec, implicit $mode
577    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
578    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
579    ; GCN-NEXT: renamable $vgpr0 = V_CVT_F32_U32_e32 3, implicit $exec, implicit $mode
580    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
581    ; GCN-NEXT: S_ENDPGM 0
582    %0:vgpr_32 = V_CVT_F32_U32_e32 1, implicit $exec, implicit $mode
583    %1:vgpr_32 = V_CVT_F32_U32_e32 2, implicit $exec, implicit $mode
584    %2:vgpr_32 = V_CVT_F32_U32_e32 3, implicit $exec, implicit $mode
585    S_NOP 0, implicit %0
586    S_NOP 0, implicit %1
587    S_NOP 0, implicit %2
588    S_ENDPGM 0
589...
590---
591name:            test_remat_v_cvt_u32_f32_e32
592tracksRegLiveness: true
593body:             |
594  bb.0:
595    ; GCN-LABEL: name: test_remat_v_cvt_u32_f32_e32
596    ; GCN: renamable $vgpr0 = nofpexcept V_CVT_U32_F32_e32 1, implicit $exec, implicit $mode
597    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_U32_F32_e32 2, implicit $exec, implicit $mode
598    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
599    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
600    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_U32_F32_e32 3, implicit $exec, implicit $mode
601    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
602    ; GCN-NEXT: S_ENDPGM 0
603    %0:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 1, implicit $exec, implicit $mode
604    %1:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 2, implicit $exec, implicit $mode
605    %2:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 3, implicit $exec, implicit $mode
606    S_NOP 0, implicit %0
607    S_NOP 0, implicit %1
608    S_NOP 0, implicit %2
609    S_ENDPGM 0
610...
611---
612name:            test_remat_v_cvt_i32_f32_e32
613tracksRegLiveness: true
614body:             |
615  bb.0:
616    ; GCN-LABEL: name: test_remat_v_cvt_i32_f32_e32
617    ; GCN: renamable $vgpr0 = nofpexcept V_CVT_I32_F32_e32 1, implicit $exec, implicit $mode
618    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_I32_F32_e32 2, implicit $exec, implicit $mode
619    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
620    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
621    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_I32_F32_e32 3, implicit $exec, implicit $mode
622    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
623    ; GCN-NEXT: S_ENDPGM 0
624    %0:vgpr_32 = nofpexcept V_CVT_I32_F32_e32 1, implicit $exec, implicit $mode
625    %1:vgpr_32 = nofpexcept V_CVT_I32_F32_e32 2, implicit $exec, implicit $mode
626    %2:vgpr_32 = nofpexcept V_CVT_I32_F32_e32 3, implicit $exec, implicit $mode
627    S_NOP 0, implicit %0
628    S_NOP 0, implicit %1
629    S_NOP 0, implicit %2
630    S_ENDPGM 0
631...
632---
633name:            test_remat_v_cvt_f32_f16_e32
634tracksRegLiveness: true
635body:             |
636  bb.0:
637    ; GCN-LABEL: name: test_remat_v_cvt_f32_f16_e32
638    ; GCN: renamable $vgpr0 = nofpexcept V_CVT_F32_F16_e32 1, implicit $exec, implicit $mode
639    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_F32_F16_e32 2, implicit $exec, implicit $mode
640    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
641    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
642    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_F32_F16_e32 3, implicit $exec, implicit $mode
643    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
644    ; GCN-NEXT: S_ENDPGM 0
645    %0:vgpr_32 = nofpexcept V_CVT_F32_F16_e32 1, implicit $exec, implicit $mode
646    %1:vgpr_32 = nofpexcept V_CVT_F32_F16_e32 2, implicit $exec, implicit $mode
647    %2:vgpr_32 = nofpexcept V_CVT_F32_F16_e32 3, implicit $exec, implicit $mode
648    S_NOP 0, implicit %0
649    S_NOP 0, implicit %1
650    S_NOP 0, implicit %2
651    S_ENDPGM 0
652...
653---
654name:            test_remat_v_cvt_rpi_i32_f32_e32
655tracksRegLiveness: true
656body:             |
657  bb.0:
658    ; GCN-LABEL: name: test_remat_v_cvt_rpi_i32_f32_e32
659    ; GCN: renamable $vgpr0 = V_CVT_RPI_I32_F32_e32 1, implicit $exec, implicit $mode
660    ; GCN-NEXT: renamable $vgpr1 = V_CVT_RPI_I32_F32_e32 2, implicit $exec, implicit $mode
661    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
662    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
663    ; GCN-NEXT: renamable $vgpr0 = V_CVT_RPI_I32_F32_e32 3, implicit $exec, implicit $mode
664    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
665    ; GCN-NEXT: S_ENDPGM 0
666    %0:vgpr_32 = V_CVT_RPI_I32_F32_e32 1, implicit $exec, implicit $mode
667    %1:vgpr_32 = V_CVT_RPI_I32_F32_e32 2, implicit $exec, implicit $mode
668    %2:vgpr_32 = V_CVT_RPI_I32_F32_e32 3, implicit $exec, implicit $mode
669    S_NOP 0, implicit %0
670    S_NOP 0, implicit %1
671    S_NOP 0, implicit %2
672    S_ENDPGM 0
673...
674---
675name:            test_remat_v_cvt_flr_i32_f32_e32
676tracksRegLiveness: true
677body:             |
678  bb.0:
679    ; GCN-LABEL: name: test_remat_v_cvt_flr_i32_f32_e32
680    ; GCN: renamable $vgpr0 = V_CVT_FLR_I32_F32_e32 1, implicit $exec, implicit $mode
681    ; GCN-NEXT: renamable $vgpr1 = V_CVT_FLR_I32_F32_e32 2, implicit $exec, implicit $mode
682    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
683    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
684    ; GCN-NEXT: renamable $vgpr0 = V_CVT_FLR_I32_F32_e32 3, implicit $exec, implicit $mode
685    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
686    ; GCN-NEXT: S_ENDPGM 0
687    %0:vgpr_32 = V_CVT_FLR_I32_F32_e32 1, implicit $exec, implicit $mode
688    %1:vgpr_32 = V_CVT_FLR_I32_F32_e32 2, implicit $exec, implicit $mode
689    %2:vgpr_32 = V_CVT_FLR_I32_F32_e32 3, implicit $exec, implicit $mode
690    S_NOP 0, implicit %0
691    S_NOP 0, implicit %1
692    S_NOP 0, implicit %2
693    S_ENDPGM 0
694...
695---
696name:            test_remat_v_cvt_off_f32_i4_e32
697tracksRegLiveness: true
698body:             |
699  bb.0:
700    ; GCN-LABEL: name: test_remat_v_cvt_off_f32_i4_e32
701    ; GCN: renamable $vgpr0 = V_CVT_OFF_F32_I4_e32 1, implicit $exec, implicit $mode
702    ; GCN-NEXT: renamable $vgpr1 = V_CVT_OFF_F32_I4_e32 2, implicit $exec, implicit $mode
703    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
704    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
705    ; GCN-NEXT: renamable $vgpr0 = V_CVT_OFF_F32_I4_e32 3, implicit $exec, implicit $mode
706    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
707    ; GCN-NEXT: S_ENDPGM 0
708    %0:vgpr_32 = V_CVT_OFF_F32_I4_e32 1, implicit $exec, implicit $mode
709    %1:vgpr_32 = V_CVT_OFF_F32_I4_e32 2, implicit $exec, implicit $mode
710    %2:vgpr_32 = V_CVT_OFF_F32_I4_e32 3, implicit $exec, implicit $mode
711    S_NOP 0, implicit %0
712    S_NOP 0, implicit %1
713    S_NOP 0, implicit %2
714    S_ENDPGM 0
715...
716---
717name:            test_remat_v_cvt_f32_ubyte0_e32
718tracksRegLiveness: true
719body:             |
720  bb.0:
721    ; GCN-LABEL: name: test_remat_v_cvt_f32_ubyte0_e32
722    ; GCN: renamable $vgpr0 = V_CVT_F32_UBYTE0_e32 1, implicit $exec, implicit $mode
723    ; GCN-NEXT: renamable $vgpr1 = V_CVT_F32_UBYTE0_e32 2, implicit $exec, implicit $mode
724    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
725    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
726    ; GCN-NEXT: renamable $vgpr0 = V_CVT_F32_UBYTE0_e32 3, implicit $exec, implicit $mode
727    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
728    ; GCN-NEXT: S_ENDPGM 0
729    %0:vgpr_32 = V_CVT_F32_UBYTE0_e32 1, implicit $exec, implicit $mode
730    %1:vgpr_32 = V_CVT_F32_UBYTE0_e32 2, implicit $exec, implicit $mode
731    %2:vgpr_32 = V_CVT_F32_UBYTE0_e32 3, implicit $exec, implicit $mode
732    S_NOP 0, implicit %0
733    S_NOP 0, implicit %1
734    S_NOP 0, implicit %2
735    S_ENDPGM 0
736...
737---
738name:            test_remat_v_fract_f32_e32
739tracksRegLiveness: true
740body:             |
741  bb.0:
742    ; GCN-LABEL: name: test_remat_v_fract_f32_e32
743    ; GCN: renamable $vgpr0 = nofpexcept V_FRACT_F32_e32 1, implicit $exec, implicit $mode
744    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FRACT_F32_e32 2, implicit $exec, implicit $mode
745    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
746    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
747    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FRACT_F32_e32 3, implicit $exec, implicit $mode
748    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
749    ; GCN-NEXT: S_ENDPGM 0
750    %0:vgpr_32 = nofpexcept V_FRACT_F32_e32 1, implicit $exec, implicit $mode
751    %1:vgpr_32 = nofpexcept V_FRACT_F32_e32 2, implicit $exec, implicit $mode
752    %2:vgpr_32 = nofpexcept V_FRACT_F32_e32 3, implicit $exec, implicit $mode
753    S_NOP 0, implicit %0
754    S_NOP 0, implicit %1
755    S_NOP 0, implicit %2
756    S_ENDPGM 0
757...
758---
759name:            test_remat_v_trunc_f32_e32
760tracksRegLiveness: true
761body:             |
762  bb.0:
763    ; GCN-LABEL: name: test_remat_v_trunc_f32_e32
764    ; GCN: renamable $vgpr0 = nofpexcept V_TRUNC_F32_e32 1, implicit $exec, implicit $mode
765    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_TRUNC_F32_e32 2, implicit $exec, implicit $mode
766    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
767    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
768    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_TRUNC_F32_e32 3, implicit $exec, implicit $mode
769    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
770    ; GCN-NEXT: S_ENDPGM 0
771    %0:vgpr_32 = nofpexcept V_TRUNC_F32_e32 1, implicit $exec, implicit $mode
772    %1:vgpr_32 = nofpexcept V_TRUNC_F32_e32 2, implicit $exec, implicit $mode
773    %2:vgpr_32 = nofpexcept V_TRUNC_F32_e32 3, implicit $exec, implicit $mode
774    S_NOP 0, implicit %0
775    S_NOP 0, implicit %1
776    S_NOP 0, implicit %2
777    S_ENDPGM 0
778...
779---
780name:            test_remat_v_ceil_f32_e32
781tracksRegLiveness: true
782body:             |
783  bb.0:
784    ; GCN-LABEL: name: test_remat_v_ceil_f32_e32
785    ; GCN: renamable $vgpr0 = nofpexcept V_CEIL_F32_e32 1, implicit $exec, implicit $mode
786    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CEIL_F32_e32 2, implicit $exec, implicit $mode
787    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
788    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
789    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CEIL_F32_e32 3, implicit $exec, implicit $mode
790    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
791    ; GCN-NEXT: S_ENDPGM 0
792    %0:vgpr_32 = nofpexcept V_CEIL_F32_e32 1, implicit $exec, implicit $mode
793    %1:vgpr_32 = nofpexcept V_CEIL_F32_e32 2, implicit $exec, implicit $mode
794    %2:vgpr_32 = nofpexcept V_CEIL_F32_e32 3, implicit $exec, implicit $mode
795    S_NOP 0, implicit %0
796    S_NOP 0, implicit %1
797    S_NOP 0, implicit %2
798    S_ENDPGM 0
799...
800---
801name:            test_remat_v_rndne_f32_e32
802tracksRegLiveness: true
803body:             |
804  bb.0:
805    ; GCN-LABEL: name: test_remat_v_rndne_f32_e32
806    ; GCN: renamable $vgpr0 = nofpexcept V_RNDNE_F32_e32 1, implicit $exec, implicit $mode
807    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_RNDNE_F32_e32 2, implicit $exec, implicit $mode
808    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
809    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
810    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_RNDNE_F32_e32 3, implicit $exec, implicit $mode
811    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
812    ; GCN-NEXT: S_ENDPGM 0
813    %0:vgpr_32 = nofpexcept V_RNDNE_F32_e32 1, implicit $exec, implicit $mode
814    %1:vgpr_32 = nofpexcept V_RNDNE_F32_e32 2, implicit $exec, implicit $mode
815    %2:vgpr_32 = nofpexcept V_RNDNE_F32_e32 3, implicit $exec, implicit $mode
816    S_NOP 0, implicit %0
817    S_NOP 0, implicit %1
818    S_NOP 0, implicit %2
819    S_ENDPGM 0
820...
821---
822name:            test_remat_v_floor_f32_e32
823tracksRegLiveness: true
824body:             |
825  bb.0:
826    ; GCN-LABEL: name: test_remat_v_floor_f32_e32
827    ; GCN: renamable $vgpr0 = nofpexcept V_FLOOR_F32_e32 1, implicit $exec, implicit $mode
828    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FLOOR_F32_e32 2, implicit $exec, implicit $mode
829    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
830    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
831    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FLOOR_F32_e32 3, implicit $exec, implicit $mode
832    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
833    ; GCN-NEXT: S_ENDPGM 0
834    %0:vgpr_32 = nofpexcept V_FLOOR_F32_e32 1, implicit $exec, implicit $mode
835    %1:vgpr_32 = nofpexcept V_FLOOR_F32_e32 2, implicit $exec, implicit $mode
836    %2:vgpr_32 = nofpexcept V_FLOOR_F32_e32 3, implicit $exec, implicit $mode
837    S_NOP 0, implicit %0
838    S_NOP 0, implicit %1
839    S_NOP 0, implicit %2
840    S_ENDPGM 0
841...
842---
843name:            test_remat_v_exp_f32_e32
844tracksRegLiveness: true
845body:             |
846  bb.0:
847    ; GCN-LABEL: name: test_remat_v_exp_f32_e32
848    ; GCN: renamable $vgpr0 = nofpexcept V_EXP_F32_e32 1, implicit $exec, implicit $mode
849    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_EXP_F32_e32 2, implicit $exec, implicit $mode
850    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
851    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
852    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_EXP_F32_e32 3, implicit $exec, implicit $mode
853    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
854    ; GCN-NEXT: S_ENDPGM 0
855    %0:vgpr_32 = nofpexcept V_EXP_F32_e32 1, implicit $exec, implicit $mode
856    %1:vgpr_32 = nofpexcept V_EXP_F32_e32 2, implicit $exec, implicit $mode
857    %2:vgpr_32 = nofpexcept V_EXP_F32_e32 3, implicit $exec, implicit $mode
858    S_NOP 0, implicit %0
859    S_NOP 0, implicit %1
860    S_NOP 0, implicit %2
861    S_ENDPGM 0
862...
863---
864name:            test_remat_v_log_f32_e32
865tracksRegLiveness: true
866body:             |
867  bb.0:
868    ; GCN-LABEL: name: test_remat_v_log_f32_e32
869    ; GCN: renamable $vgpr0 = nofpexcept V_LOG_F32_e32 1, implicit $exec, implicit $mode
870    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LOG_F32_e32 2, implicit $exec, implicit $mode
871    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
872    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
873    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_LOG_F32_e32 3, implicit $exec, implicit $mode
874    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
875    ; GCN-NEXT: S_ENDPGM 0
876    %0:vgpr_32 = nofpexcept V_LOG_F32_e32 1, implicit $exec, implicit $mode
877    %1:vgpr_32 = nofpexcept V_LOG_F32_e32 2, implicit $exec, implicit $mode
878    %2:vgpr_32 = nofpexcept V_LOG_F32_e32 3, implicit $exec, implicit $mode
879    S_NOP 0, implicit %0
880    S_NOP 0, implicit %1
881    S_NOP 0, implicit %2
882    S_ENDPGM 0
883...
884---
885name:            test_remat_v_rcp_f32_e32
886tracksRegLiveness: true
887body:             |
888  bb.0:
889    ; GCN-LABEL: name: test_remat_v_rcp_f32_e32
890    ; GCN: renamable $vgpr0 = nofpexcept V_RCP_F32_e32 1, implicit $exec, implicit $mode
891    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_RCP_F32_e32 2, implicit $exec, implicit $mode
892    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
893    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
894    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_RCP_F32_e32 3, implicit $exec, implicit $mode
895    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
896    ; GCN-NEXT: S_ENDPGM 0
897    %0:vgpr_32 = nofpexcept V_RCP_F32_e32 1, implicit $exec, implicit $mode
898    %1:vgpr_32 = nofpexcept V_RCP_F32_e32 2, implicit $exec, implicit $mode
899    %2:vgpr_32 = nofpexcept V_RCP_F32_e32 3, implicit $exec, implicit $mode
900    S_NOP 0, implicit %0
901    S_NOP 0, implicit %1
902    S_NOP 0, implicit %2
903    S_ENDPGM 0
904...
905---
906name:            test_remat_v_rcp_iflag_f32_e32
907tracksRegLiveness: true
908body:             |
909  bb.0:
910    ; GCN-LABEL: name: test_remat_v_rcp_iflag_f32_e32
911    ; GCN: renamable $vgpr0 = nofpexcept V_RCP_IFLAG_F32_e32 1, implicit $exec, implicit $mode
912    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_RCP_IFLAG_F32_e32 2, implicit $exec, implicit $mode
913    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
914    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
915    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_RCP_IFLAG_F32_e32 3, implicit $exec, implicit $mode
916    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
917    ; GCN-NEXT: S_ENDPGM 0
918    %0:vgpr_32 = nofpexcept V_RCP_IFLAG_F32_e32 1, implicit $exec, implicit $mode
919    %1:vgpr_32 = nofpexcept V_RCP_IFLAG_F32_e32 2, implicit $exec, implicit $mode
920    %2:vgpr_32 = nofpexcept V_RCP_IFLAG_F32_e32 3, implicit $exec, implicit $mode
921    S_NOP 0, implicit %0
922    S_NOP 0, implicit %1
923    S_NOP 0, implicit %2
924    S_ENDPGM 0
925...
926---
927name:            test_remat_v_rsq_f32_e32
928tracksRegLiveness: true
929body:             |
930  bb.0:
931    ; GCN-LABEL: name: test_remat_v_rsq_f32_e32
932    ; GCN: renamable $vgpr0 = nofpexcept V_RSQ_F32_e32 1, implicit $exec, implicit $mode
933    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_RSQ_F32_e32 2, implicit $exec, implicit $mode
934    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
935    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
936    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_RSQ_F32_e32 3, implicit $exec, implicit $mode
937    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
938    ; GCN-NEXT: S_ENDPGM 0
939    %0:vgpr_32 = nofpexcept V_RSQ_F32_e32 1, implicit $exec, implicit $mode
940    %1:vgpr_32 = nofpexcept V_RSQ_F32_e32 2, implicit $exec, implicit $mode
941    %2:vgpr_32 = nofpexcept V_RSQ_F32_e32 3, implicit $exec, implicit $mode
942    S_NOP 0, implicit %0
943    S_NOP 0, implicit %1
944    S_NOP 0, implicit %2
945    S_ENDPGM 0
946...
947---
948name:            test_remat_v_sqrt_f32_e32
949tracksRegLiveness: true
950body:             |
951  bb.0:
952    ; GCN-LABEL: name: test_remat_v_sqrt_f32_e32
953    ; GCN: renamable $vgpr0 = nofpexcept V_SQRT_F32_e32 1, implicit $exec, implicit $mode
954    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SQRT_F32_e32 2, implicit $exec, implicit $mode
955    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
956    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
957    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_SQRT_F32_e32 3, implicit $exec, implicit $mode
958    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
959    ; GCN-NEXT: S_ENDPGM 0
960    %0:vgpr_32 = nofpexcept V_SQRT_F32_e32 1, implicit $exec, implicit $mode
961    %1:vgpr_32 = nofpexcept V_SQRT_F32_e32 2, implicit $exec, implicit $mode
962    %2:vgpr_32 = nofpexcept V_SQRT_F32_e32 3, implicit $exec, implicit $mode
963    S_NOP 0, implicit %0
964    S_NOP 0, implicit %1
965    S_NOP 0, implicit %2
966    S_ENDPGM 0
967...
968---
969name:            test_remat_v_rcp_f64_e32
970tracksRegLiveness: true
971body:             |
972  bb.0:
973    ; GCN-LABEL: name: test_remat_v_rcp_f64_e32
974    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_RCP_F64_e32 1, implicit $exec, implicit $mode
975    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_RCP_F64_e32 2, implicit $exec, implicit $mode
976    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
977    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
978    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_RCP_F64_e32 3, implicit $exec, implicit $mode
979    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
980    ; GCN-NEXT: S_ENDPGM 0
981    %0:vreg_64_align2 = nofpexcept V_RCP_F64_e32 1, implicit $exec, implicit $mode
982    %1:vreg_64_align2 = nofpexcept V_RCP_F64_e32 2, implicit $exec, implicit $mode
983    %2:vreg_64_align2 = nofpexcept V_RCP_F64_e32 3, implicit $exec, implicit $mode
984    S_NOP 0, implicit %0
985    S_NOP 0, implicit %1
986    S_NOP 0, implicit %2
987    S_ENDPGM 0
988...
989---
990name:            test_remat_v_rsq_f64_e32
991tracksRegLiveness: true
992body:             |
993  bb.0:
994    ; GCN-LABEL: name: test_remat_v_rsq_f64_e32
995    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_RSQ_F64_e32 1, implicit $exec, implicit $mode
996    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_RSQ_F64_e32 2, implicit $exec, implicit $mode
997    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
998    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
999    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_RSQ_F64_e32 3, implicit $exec, implicit $mode
1000    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1001    ; GCN-NEXT: S_ENDPGM 0
1002    %0:vreg_64_align2 = nofpexcept V_RSQ_F64_e32 1, implicit $exec, implicit $mode
1003    %1:vreg_64_align2 = nofpexcept V_RSQ_F64_e32 2, implicit $exec, implicit $mode
1004    %2:vreg_64_align2 = nofpexcept V_RSQ_F64_e32 3, implicit $exec, implicit $mode
1005    S_NOP 0, implicit %0
1006    S_NOP 0, implicit %1
1007    S_NOP 0, implicit %2
1008    S_ENDPGM 0
1009...
1010---
1011name:            test_remat_v_sqrt_f64_e32
1012tracksRegLiveness: true
1013body:             |
1014  bb.0:
1015    ; GCN-LABEL: name: test_remat_v_sqrt_f64_e32
1016    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_SQRT_F64_e32 1, implicit $exec, implicit $mode
1017    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_SQRT_F64_e32 2, implicit $exec, implicit $mode
1018    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1019    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
1020    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_SQRT_F64_e32 3, implicit $exec, implicit $mode
1021    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1022    ; GCN-NEXT: S_ENDPGM 0
1023    %0:vreg_64_align2 = nofpexcept V_SQRT_F64_e32 1, implicit $exec, implicit $mode
1024    %1:vreg_64_align2 = nofpexcept V_SQRT_F64_e32 2, implicit $exec, implicit $mode
1025    %2:vreg_64_align2 = nofpexcept V_SQRT_F64_e32 3, implicit $exec, implicit $mode
1026    S_NOP 0, implicit %0
1027    S_NOP 0, implicit %1
1028    S_NOP 0, implicit %2
1029    S_ENDPGM 0
1030...
1031---
1032name:            test_remat_v_sin_f32_e32
1033tracksRegLiveness: true
1034body:             |
1035  bb.0:
1036    ; GCN-LABEL: name: test_remat_v_sin_f32_e32
1037    ; GCN: renamable $vgpr0 = nofpexcept V_SIN_F32_e32 1, implicit $exec, implicit $mode
1038    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SIN_F32_e32 2, implicit $exec, implicit $mode
1039    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1040    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1041    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_SIN_F32_e32 3, implicit $exec, implicit $mode
1042    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1043    ; GCN-NEXT: S_ENDPGM 0
1044    %0:vgpr_32 = nofpexcept V_SIN_F32_e32 1, implicit $exec, implicit $mode
1045    %1:vgpr_32 = nofpexcept V_SIN_F32_e32 2, implicit $exec, implicit $mode
1046    %2:vgpr_32 = nofpexcept V_SIN_F32_e32 3, implicit $exec, implicit $mode
1047    S_NOP 0, implicit %0
1048    S_NOP 0, implicit %1
1049    S_NOP 0, implicit %2
1050    S_ENDPGM 0
1051...
1052---
1053name:            test_remat_v_cos_f32_e32
1054tracksRegLiveness: true
1055body:             |
1056  bb.0:
1057    ; GCN-LABEL: name: test_remat_v_cos_f32_e32
1058    ; GCN: renamable $vgpr0 = nofpexcept V_COS_F32_e32 1, implicit $exec, implicit $mode
1059    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_COS_F32_e32 2, implicit $exec, implicit $mode
1060    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1061    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1062    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_COS_F32_e32 3, implicit $exec, implicit $mode
1063    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1064    ; GCN-NEXT: S_ENDPGM 0
1065    %0:vgpr_32 = nofpexcept V_COS_F32_e32 1, implicit $exec, implicit $mode
1066    %1:vgpr_32 = nofpexcept V_COS_F32_e32 2, implicit $exec, implicit $mode
1067    %2:vgpr_32 = nofpexcept V_COS_F32_e32 3, implicit $exec, implicit $mode
1068    S_NOP 0, implicit %0
1069    S_NOP 0, implicit %1
1070    S_NOP 0, implicit %2
1071    S_ENDPGM 0
1072...
1073---
1074name:            test_remat_v_not_b32_e32
1075tracksRegLiveness: true
1076body:             |
1077  bb.0:
1078    ; GCN-LABEL: name: test_remat_v_not_b32_e32
1079    ; GCN: renamable $vgpr0 = V_NOT_B32_e32 1, implicit $exec, implicit $mode
1080    ; GCN-NEXT: renamable $vgpr1 = V_NOT_B32_e32 2, implicit $exec, implicit $mode
1081    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1082    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1083    ; GCN-NEXT: renamable $vgpr0 = V_NOT_B32_e32 3, implicit $exec, implicit $mode
1084    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1085    ; GCN-NEXT: S_ENDPGM 0
1086    %0:vgpr_32 = V_NOT_B32_e32 1, implicit $exec, implicit $mode
1087    %1:vgpr_32 = V_NOT_B32_e32 2, implicit $exec, implicit $mode
1088    %2:vgpr_32 = V_NOT_B32_e32 3, implicit $exec, implicit $mode
1089    S_NOP 0, implicit %0
1090    S_NOP 0, implicit %1
1091    S_NOP 0, implicit %2
1092    S_ENDPGM 0
1093...
1094---
1095name:            test_remat_v_bfrev_b32_e32
1096tracksRegLiveness: true
1097body:             |
1098  bb.0:
1099    ; GCN-LABEL: name: test_remat_v_bfrev_b32_e32
1100    ; GCN: renamable $vgpr0 = V_BFREV_B32_e32 1, implicit $exec, implicit $mode
1101    ; GCN-NEXT: renamable $vgpr1 = V_BFREV_B32_e32 2, implicit $exec, implicit $mode
1102    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1103    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1104    ; GCN-NEXT: renamable $vgpr0 = V_BFREV_B32_e32 3, implicit $exec, implicit $mode
1105    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1106    ; GCN-NEXT: S_ENDPGM 0
1107    %0:vgpr_32 = V_BFREV_B32_e32 1, implicit $exec, implicit $mode
1108    %1:vgpr_32 = V_BFREV_B32_e32 2, implicit $exec, implicit $mode
1109    %2:vgpr_32 = V_BFREV_B32_e32 3, implicit $exec, implicit $mode
1110    S_NOP 0, implicit %0
1111    S_NOP 0, implicit %1
1112    S_NOP 0, implicit %2
1113    S_ENDPGM 0
1114...
1115---
1116name:            test_remat_v_ffbh_u32_e32
1117tracksRegLiveness: true
1118body:             |
1119  bb.0:
1120    ; GCN-LABEL: name: test_remat_v_ffbh_u32_e32
1121    ; GCN: renamable $vgpr0 = V_FFBH_U32_e32 1, implicit $exec, implicit $mode
1122    ; GCN-NEXT: renamable $vgpr1 = V_FFBH_U32_e32 2, implicit $exec, implicit $mode
1123    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1124    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1125    ; GCN-NEXT: renamable $vgpr0 = V_FFBH_U32_e32 3, implicit $exec, implicit $mode
1126    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1127    ; GCN-NEXT: S_ENDPGM 0
1128    %0:vgpr_32 = V_FFBH_U32_e32 1, implicit $exec, implicit $mode
1129    %1:vgpr_32 = V_FFBH_U32_e32 2, implicit $exec, implicit $mode
1130    %2:vgpr_32 = V_FFBH_U32_e32 3, implicit $exec, implicit $mode
1131    S_NOP 0, implicit %0
1132    S_NOP 0, implicit %1
1133    S_NOP 0, implicit %2
1134    S_ENDPGM 0
1135...
1136---
1137name:            test_remat_v_ffbl_b32_e32
1138tracksRegLiveness: true
1139body:             |
1140  bb.0:
1141    ; GCN-LABEL: name: test_remat_v_ffbl_b32_e32
1142    ; GCN: renamable $vgpr0 = V_FFBL_B32_e32 1, implicit $exec, implicit $mode
1143    ; GCN-NEXT: renamable $vgpr1 = V_FFBL_B32_e32 2, implicit $exec, implicit $mode
1144    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1145    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1146    ; GCN-NEXT: renamable $vgpr0 = V_FFBL_B32_e32 3, implicit $exec, implicit $mode
1147    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1148    ; GCN-NEXT: S_ENDPGM 0
1149    %0:vgpr_32 = V_FFBL_B32_e32 1, implicit $exec, implicit $mode
1150    %1:vgpr_32 = V_FFBL_B32_e32 2, implicit $exec, implicit $mode
1151    %2:vgpr_32 = V_FFBL_B32_e32 3, implicit $exec, implicit $mode
1152    S_NOP 0, implicit %0
1153    S_NOP 0, implicit %1
1154    S_NOP 0, implicit %2
1155    S_ENDPGM 0
1156...
1157---
1158name:            test_remat_v_ffbh_i32_e32
1159tracksRegLiveness: true
1160body:             |
1161  bb.0:
1162    ; GCN-LABEL: name: test_remat_v_ffbh_i32_e32
1163    ; GCN: renamable $vgpr0 = V_FFBH_I32_e32 1, implicit $exec, implicit $mode
1164    ; GCN-NEXT: renamable $vgpr1 = V_FFBH_I32_e32 2, implicit $exec, implicit $mode
1165    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1166    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1167    ; GCN-NEXT: renamable $vgpr0 = V_FFBH_I32_e32 3, implicit $exec, implicit $mode
1168    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1169    ; GCN-NEXT: S_ENDPGM 0
1170    %0:vgpr_32 = V_FFBH_I32_e32 1, implicit $exec, implicit $mode
1171    %1:vgpr_32 = V_FFBH_I32_e32 2, implicit $exec, implicit $mode
1172    %2:vgpr_32 = V_FFBH_I32_e32 3, implicit $exec, implicit $mode
1173    S_NOP 0, implicit %0
1174    S_NOP 0, implicit %1
1175    S_NOP 0, implicit %2
1176    S_ENDPGM 0
1177...
1178---
1179name:            test_remat_v_frexp_exp_i32_f64_e32
1180tracksRegLiveness: true
1181body:             |
1182  bb.0:
1183    ; GCN-LABEL: name: test_remat_v_frexp_exp_i32_f64_e32
1184    ; GCN: renamable $vgpr0 = nofpexcept V_FREXP_EXP_I32_F64_e32 1, implicit $exec, implicit $mode
1185    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FREXP_EXP_I32_F64_e32 2, implicit $exec, implicit $mode
1186    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1187    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1188    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FREXP_EXP_I32_F64_e32 3, implicit $exec, implicit $mode
1189    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1190    ; GCN-NEXT: S_ENDPGM 0
1191    %0:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F64_e32 1, implicit $exec, implicit $mode
1192    %1:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F64_e32 2, implicit $exec, implicit $mode
1193    %2:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F64_e32 3, implicit $exec, implicit $mode
1194    S_NOP 0, implicit %0
1195    S_NOP 0, implicit %1
1196    S_NOP 0, implicit %2
1197    S_ENDPGM 0
1198...
1199---
1200name:            test_remat_v_frexp_mant_f64_e32
1201tracksRegLiveness: true
1202body:             |
1203  bb.0:
1204    ; GCN-LABEL: name: test_remat_v_frexp_mant_f64_e32
1205    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_FREXP_MANT_F64_e32 1, implicit $exec, implicit $mode
1206    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_FREXP_MANT_F64_e32 2, implicit $exec, implicit $mode
1207    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1208    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
1209    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_FREXP_MANT_F64_e32 3, implicit $exec, implicit $mode
1210    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1211    ; GCN-NEXT: S_ENDPGM 0
1212    %0:vreg_64_align2 = nofpexcept V_FREXP_MANT_F64_e32 1, implicit $exec, implicit $mode
1213    %1:vreg_64_align2 = nofpexcept V_FREXP_MANT_F64_e32 2, implicit $exec, implicit $mode
1214    %2:vreg_64_align2 = nofpexcept V_FREXP_MANT_F64_e32 3, implicit $exec, implicit $mode
1215    S_NOP 0, implicit %0
1216    S_NOP 0, implicit %1
1217    S_NOP 0, implicit %2
1218    S_ENDPGM 0
1219...
1220---
1221name:            test_remat_v_fract_f64_e32
1222tracksRegLiveness: true
1223body:             |
1224  bb.0:
1225    ; GCN-LABEL: name: test_remat_v_fract_f64_e32
1226    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_FRACT_F64_e32 1, implicit $exec, implicit $mode
1227    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_FRACT_F64_e32 2, implicit $exec, implicit $mode
1228    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1229    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
1230    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_FRACT_F64_e32 3, implicit $exec, implicit $mode
1231    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1232    ; GCN-NEXT: S_ENDPGM 0
1233    %0:vreg_64_align2 = nofpexcept V_FRACT_F64_e32 1, implicit $exec, implicit $mode
1234    %1:vreg_64_align2 = nofpexcept V_FRACT_F64_e32 2, implicit $exec, implicit $mode
1235    %2:vreg_64_align2 = nofpexcept V_FRACT_F64_e32 3, implicit $exec, implicit $mode
1236    S_NOP 0, implicit %0
1237    S_NOP 0, implicit %1
1238    S_NOP 0, implicit %2
1239    S_ENDPGM 0
1240...
1241---
1242name:            test_remat_v_frexp_exp_i32_f32_e32
1243tracksRegLiveness: true
1244body:             |
1245  bb.0:
1246    ; GCN-LABEL: name: test_remat_v_frexp_exp_i32_f32_e32
1247    ; GCN: renamable $vgpr0 = nofpexcept V_FREXP_EXP_I32_F32_e32 1, implicit $exec, implicit $mode
1248    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FREXP_EXP_I32_F32_e32 2, implicit $exec, implicit $mode
1249    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1250    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1251    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FREXP_EXP_I32_F32_e32 3, implicit $exec, implicit $mode
1252    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1253    ; GCN-NEXT: S_ENDPGM 0
1254    %0:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F32_e32 1, implicit $exec, implicit $mode
1255    %1:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F32_e32 2, implicit $exec, implicit $mode
1256    %2:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F32_e32 3, implicit $exec, implicit $mode
1257    S_NOP 0, implicit %0
1258    S_NOP 0, implicit %1
1259    S_NOP 0, implicit %2
1260    S_ENDPGM 0
1261...
1262---
1263name:            test_remat_v_frexp_mant_f32_e32
1264tracksRegLiveness: true
1265body:             |
1266  bb.0:
1267    ; GCN-LABEL: name: test_remat_v_frexp_mant_f32_e32
1268    ; GCN: renamable $vgpr0 = nofpexcept V_FREXP_MANT_F32_e32 1, implicit $exec, implicit $mode
1269    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FREXP_MANT_F32_e32 2, implicit $exec, implicit $mode
1270    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1271    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1272    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FREXP_MANT_F32_e32 3, implicit $exec, implicit $mode
1273    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1274    ; GCN-NEXT: S_ENDPGM 0
1275    %0:vgpr_32 = nofpexcept V_FREXP_MANT_F32_e32 1, implicit $exec, implicit $mode
1276    %1:vgpr_32 = nofpexcept V_FREXP_MANT_F32_e32 2, implicit $exec, implicit $mode
1277    %2:vgpr_32 = nofpexcept V_FREXP_MANT_F32_e32 3, implicit $exec, implicit $mode
1278    S_NOP 0, implicit %0
1279    S_NOP 0, implicit %1
1280    S_NOP 0, implicit %2
1281    S_ENDPGM 0
1282...
1283---
1284name:            test_remat_v_exp_legacy_f32_e32
1285tracksRegLiveness: true
1286body:             |
1287  bb.0:
1288    ; GCN-LABEL: name: test_remat_v_exp_legacy_f32_e32
1289    ; GCN: renamable $vgpr0 = nofpexcept V_EXP_LEGACY_F32_e32 1, implicit $exec, implicit $mode
1290    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_EXP_LEGACY_F32_e32 2, implicit $exec, implicit $mode
1291    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1292    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1293    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_EXP_LEGACY_F32_e32 3, implicit $exec, implicit $mode
1294    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1295    ; GCN-NEXT: S_ENDPGM 0
1296    %0:vgpr_32 = nofpexcept V_EXP_LEGACY_F32_e32 1, implicit $exec, implicit $mode
1297    %1:vgpr_32 = nofpexcept V_EXP_LEGACY_F32_e32 2, implicit $exec, implicit $mode
1298    %2:vgpr_32 = nofpexcept V_EXP_LEGACY_F32_e32 3, implicit $exec, implicit $mode
1299    S_NOP 0, implicit %0
1300    S_NOP 0, implicit %1
1301    S_NOP 0, implicit %2
1302    S_ENDPGM 0
1303...
1304---
1305name:            test_remat_v_log_legacy_f32_e32
1306tracksRegLiveness: true
1307body:             |
1308  bb.0:
1309    ; GCN-LABEL: name: test_remat_v_log_legacy_f32_e32
1310    ; GCN: renamable $vgpr0 = nofpexcept V_LOG_LEGACY_F32_e32 1, implicit $exec, implicit $mode
1311    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LOG_LEGACY_F32_e32 2, implicit $exec, implicit $mode
1312    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1313    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1314    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_LOG_LEGACY_F32_e32 3, implicit $exec, implicit $mode
1315    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1316    ; GCN-NEXT: S_ENDPGM 0
1317    %0:vgpr_32 = nofpexcept V_LOG_LEGACY_F32_e32 1, implicit $exec, implicit $mode
1318    %1:vgpr_32 = nofpexcept V_LOG_LEGACY_F32_e32 2, implicit $exec, implicit $mode
1319    %2:vgpr_32 = nofpexcept V_LOG_LEGACY_F32_e32 3, implicit $exec, implicit $mode
1320    S_NOP 0, implicit %0
1321    S_NOP 0, implicit %1
1322    S_NOP 0, implicit %2
1323    S_ENDPGM 0
1324...
1325---
1326name:            test_remat_v_sat_pk_u8_i16_e32
1327tracksRegLiveness: true
1328body:             |
1329  bb.0:
1330    ; GCN-LABEL: name: test_remat_v_sat_pk_u8_i16_e32
1331    ; GCN: renamable $vgpr0 = V_SAT_PK_U8_I16_e32 1, implicit $exec, implicit $mode
1332    ; GCN-NEXT: renamable $vgpr1 = V_SAT_PK_U8_I16_e32 2, implicit $exec, implicit $mode
1333    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1334    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1335    ; GCN-NEXT: renamable $vgpr0 = V_SAT_PK_U8_I16_e32 3, implicit $exec, implicit $mode
1336    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1337    ; GCN-NEXT: S_ENDPGM 0
1338    %0:vgpr_32 = V_SAT_PK_U8_I16_e32 1, implicit $exec, implicit $mode
1339    %1:vgpr_32 = V_SAT_PK_U8_I16_e32 2, implicit $exec, implicit $mode
1340    %2:vgpr_32 = V_SAT_PK_U8_I16_e32 3, implicit $exec, implicit $mode
1341    S_NOP 0, implicit %0
1342    S_NOP 0, implicit %1
1343    S_NOP 0, implicit %2
1344    S_ENDPGM 0
1345...
1346---
1347name:            test_remat_v_accvgpr_mov_b32
1348tracksRegLiveness: true
1349body:             |
1350  bb.0:
1351    ; GCN-LABEL: name: test_remat_v_accvgpr_mov_b32
1352    ; GCN: renamable $agpr0 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1353    ; GCN-NEXT: renamable $agpr1 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1354    ; GCN-NEXT: S_NOP 0, implicit killed renamable $agpr0
1355    ; GCN-NEXT: S_NOP 0, implicit killed renamable $agpr1
1356    ; GCN-NEXT: renamable $agpr0 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1357    ; GCN-NEXT: S_NOP 0, implicit killed renamable $agpr0
1358    ; GCN-NEXT: S_ENDPGM 0
1359    %0:agpr_32 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1360    %1:agpr_32 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1361    %2:agpr_32 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1362    S_NOP 0, implicit %0
1363    S_NOP 0, implicit %1
1364    S_NOP 0, implicit %2
1365    S_ENDPGM 0
1366...
1367---
1368name:            test_no_remat_v_cndmask_b32_e32
1369tracksRegLiveness: true
1370machineFunctionInfo:
1371  stackPtrOffsetReg:  $sgpr32
1372body:             |
1373  bb.0:
1374    ; GCN-LABEL: name: test_no_remat_v_cndmask_b32_e32
1375    ; GCN: renamable $vgpr0 = V_CNDMASK_B32_e32 1, undef $vgpr0, implicit $exec, implicit undef $vcc
1376    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
1377    ; GCN-NEXT: renamable $vgpr1 = V_CNDMASK_B32_e32 1, undef $vgpr0, implicit $exec, implicit undef $vcc
1378    ; GCN-NEXT: renamable $vgpr0 = V_CNDMASK_B32_e32 1, undef $vgpr0, implicit $exec, implicit undef $vcc
1379    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
1380    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
1381    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1382    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1383    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
1384    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1385    ; GCN-NEXT: S_ENDPGM 0
1386    %1:vgpr_32 = V_CNDMASK_B32_e32 1, undef %0:vgpr_32, implicit $exec, implicit undef $vcc
1387    %2:vgpr_32 = V_CNDMASK_B32_e32 1, undef %0:vgpr_32, implicit $exec, implicit undef $vcc
1388    %3:vgpr_32 = V_CNDMASK_B32_e32 1, undef %0:vgpr_32, implicit $exec, implicit undef $vcc
1389    S_NOP 0, implicit %1
1390    S_NOP 0, implicit %2
1391    S_NOP 0, implicit %3
1392    S_ENDPGM 0
1393...
1394---
1395name:            test_no_remat_v_cndmask_b32_sdwa
1396tracksRegLiveness: true
1397machineFunctionInfo:
1398  stackPtrOffsetReg:  $sgpr32
1399body:             |
1400  bb.0:
1401    ; GCN-LABEL: name: test_no_remat_v_cndmask_b32_sdwa
1402    ; GCN: renamable $vgpr0 = V_CNDMASK_B32_sdwa 0, undef $vgpr0, 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1403    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
1404    ; GCN-NEXT: renamable $vgpr1 = V_CNDMASK_B32_sdwa 0, undef $vgpr0, 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1405    ; GCN-NEXT: renamable $vgpr0 = V_CNDMASK_B32_sdwa 0, undef $vgpr0, 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1406    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
1407    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
1408    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1409    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1410    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
1411    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1412    ; GCN-NEXT: S_ENDPGM 0
1413    %1:vgpr_32 = V_CNDMASK_B32_sdwa 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1414    %2:vgpr_32 = V_CNDMASK_B32_sdwa 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1415    %3:vgpr_32 = V_CNDMASK_B32_sdwa 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1416    S_NOP 0, implicit %1
1417    S_NOP 0, implicit %2
1418    S_NOP 0, implicit %3
1419    S_ENDPGM 0
1420...
1421---
1422name:            test_no_remat_v_cndmask_b32_dpp
1423tracksRegLiveness: true
1424machineFunctionInfo:
1425  stackPtrOffsetReg:  $sgpr32
1426body:             |
1427  bb.0:
1428    ; GCN-LABEL: name: test_no_remat_v_cndmask_b32_dpp
1429    ; GCN: renamable $vgpr0 = V_CNDMASK_B32_dpp undef $vgpr0, 0, undef $vgpr0, 0, undef $vgpr0, 1, 15, 15, 10, implicit $exec, implicit undef $vcc
1430    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
1431    ; GCN-NEXT: renamable $vgpr1 = V_CNDMASK_B32_dpp undef $vgpr1, 0, undef $vgpr0, 0, undef $vgpr0, 1, 15, 15, 10, implicit $exec, implicit undef $vcc
1432    ; GCN-NEXT: renamable $vgpr0 = V_CNDMASK_B32_dpp undef $vgpr0, 0, undef $vgpr0, 0, undef $vgpr0, 1, 15, 15, 10, implicit $exec, implicit undef $vcc
1433    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
1434    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
1435    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1436    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1437    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
1438    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1439    ; GCN-NEXT: S_ENDPGM 0
1440    %1:vgpr_32 = V_CNDMASK_B32_dpp undef %1:vgpr_32, 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 1, 15, 15, 10, implicit $exec, implicit undef $vcc
1441    %2:vgpr_32 = V_CNDMASK_B32_dpp undef %2:vgpr_32, 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 1, 15, 15, 10, implicit $exec, implicit undef $vcc
1442    %3:vgpr_32 = V_CNDMASK_B32_dpp undef %3:vgpr_32, 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 1, 15, 15, 10, implicit $exec, implicit undef $vcc
1443    S_NOP 0, implicit %1
1444    S_NOP 0, implicit %2
1445    S_NOP 0, implicit %3
1446    S_ENDPGM 0
1447...
1448---
1449name:            test_remat_v_cndmask_b32_e64
1450tracksRegLiveness: true
1451body:             |
1452  bb.0:
1453    ; GCN-LABEL: name: test_remat_v_cndmask_b32_e64
1454    ; GCN: renamable $vgpr0 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef $sgpr0_sgpr1, implicit $exec
1455    ; GCN-NEXT: renamable $vgpr1 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef $sgpr0_sgpr1, implicit $exec
1456    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1457    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1458    ; GCN-NEXT: renamable $vgpr0 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef $sgpr0_sgpr1, implicit $exec
1459    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1460    ; GCN-NEXT: S_ENDPGM 0
1461    %1:vgpr_32 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef %0:sreg_64_xexec, implicit $exec
1462    %2:vgpr_32 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef %0:sreg_64_xexec, implicit $exec
1463    %3:vgpr_32 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef %0:sreg_64_xexec, implicit $exec
1464    S_NOP 0, implicit %1
1465    S_NOP 0, implicit %2
1466    S_NOP 0, implicit %3
1467    S_ENDPGM 0
1468...
1469---
1470name:            test_remat_v_madmk_f32
1471tracksRegLiveness: true
1472body:             |
1473  bb.0:
1474    ; GCN-LABEL: name: test_remat_v_madmk_f32
1475    ; GCN: renamable $vgpr0 = nofpexcept V_MADMK_F32 1, 1, undef $vgpr0, implicit $exec, implicit $mode
1476    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADMK_F32 2, 2, undef $vgpr0, implicit $exec, implicit $mode
1477    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1478    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1479    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MADMK_F32 3, 3, undef $vgpr0, implicit $exec, implicit $mode
1480    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1481    ; GCN-NEXT: S_ENDPGM 0
1482    %1:vgpr_32 = nofpexcept V_MADMK_F32 1, 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1483    %2:vgpr_32 = nofpexcept V_MADMK_F32 2, 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1484    %3:vgpr_32 = nofpexcept V_MADMK_F32 3, 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1485    S_NOP 0, implicit %1
1486    S_NOP 0, implicit %2
1487    S_NOP 0, implicit %3
1488    S_ENDPGM 0
1489...
1490---
1491name:            test_remat_v_add_f32_e32
1492tracksRegLiveness: true
1493body:             |
1494  bb.0:
1495    ; GCN-LABEL: name: test_remat_v_add_f32_e32
1496    ; GCN: renamable $vgpr0 = nofpexcept V_ADD_F32_e32 1, undef $vgpr0, implicit $exec, implicit $mode
1497    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1498    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1499    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1500    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_ADD_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1501    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1502    ; GCN-NEXT: S_ENDPGM 0
1503    %1:vgpr_32 = nofpexcept V_ADD_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1504    %2:vgpr_32 = nofpexcept V_ADD_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1505    %3:vgpr_32 = nofpexcept V_ADD_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1506    S_NOP 0, implicit %1
1507    S_NOP 0, implicit %2
1508    S_NOP 0, implicit %3
1509    S_ENDPGM 0
1510...
1511---
1512name:            test_remat_v_add_f32_e64
1513tracksRegLiveness: true
1514body:             |
1515  bb.0:
1516    ; GCN-LABEL: name: test_remat_v_add_f32_e64
1517    ; GCN: renamable $vgpr0 = nofpexcept V_ADD_F32_e64 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
1518    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F32_e64 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
1519    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1520    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1521    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_ADD_F32_e64 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
1522    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1523    ; GCN-NEXT: S_ENDPGM 0
1524    %1:vgpr_32 = nofpexcept V_ADD_F32_e64 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
1525    %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
1526    %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
1527    S_NOP 0, implicit %1
1528    S_NOP 0, implicit %2
1529    S_NOP 0, implicit %3
1530    S_ENDPGM 0
1531...
1532---
1533name:            test_remat_v_add_f32_sdwa
1534tracksRegLiveness: true
1535body:             |
1536  bb.0:
1537    ; GCN-LABEL: name: test_remat_v_add_f32_sdwa
1538    ; GCN: renamable $vgpr0 = nofpexcept V_ADD_F32_sdwa 0, undef $vgpr0, 0, undef $vgpr0, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
1539    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F32_sdwa 0, undef $vgpr0, 0, undef $vgpr0, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
1540    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1541    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1542    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_ADD_F32_sdwa 0, undef $vgpr0, 0, undef $vgpr0, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
1543    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1544    ; GCN-NEXT: S_ENDPGM 0
1545    %1:vgpr_32 = nofpexcept V_ADD_F32_sdwa 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
1546    %2:vgpr_32 = nofpexcept V_ADD_F32_sdwa 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
1547    %3:vgpr_32 = nofpexcept V_ADD_F32_sdwa 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
1548    S_NOP 0, implicit %1
1549    S_NOP 0, implicit %2
1550    S_NOP 0, implicit %3
1551    S_ENDPGM 0
1552...
1553---
1554name:            test_no_remat_v_add_f32_dpp
1555tracksRegLiveness: true
1556machineFunctionInfo:
1557  stackPtrOffsetReg:  $sgpr32
1558body:             |
1559  bb.0:
1560    ; GCN-LABEL: name: test_no_remat_v_add_f32_dpp
1561    ; GCN: renamable $vgpr0 = nofpexcept V_ADD_F32_dpp undef $vgpr0, 0, undef $vgpr0, 0, undef $vgpr0, 1, 15, 15, 10, implicit $exec, implicit $mode
1562    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
1563    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F32_dpp undef $vgpr1, 0, undef $vgpr0, 0, undef $vgpr0, 1, 15, 15, 10, implicit $exec, implicit $mode
1564    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_ADD_F32_dpp undef $vgpr0, 0, undef $vgpr0, 0, undef $vgpr0, 1, 15, 15, 10, implicit $exec, implicit $mode
1565    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
1566    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
1567    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1568    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1569    ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
1570    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1571    ; GCN-NEXT: S_ENDPGM 0
1572    %1:vgpr_32 = nofpexcept V_ADD_F32_dpp undef %1:vgpr_32, 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 1, 15, 15, 10, implicit $exec, implicit $mode
1573    %2:vgpr_32 = nofpexcept V_ADD_F32_dpp undef %2:vgpr_32, 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 1, 15, 15, 10, implicit $exec, implicit $mode
1574    %3:vgpr_32 = nofpexcept V_ADD_F32_dpp undef %3:vgpr_32, 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 1, 15, 15, 10, implicit $exec, implicit $mode
1575    S_NOP 0, implicit %1
1576    S_NOP 0, implicit %2
1577    S_NOP 0, implicit %3
1578    S_ENDPGM 0
1579...
1580---
1581name:            test_remat_v_sub_f32_e32
1582tracksRegLiveness: true
1583body:             |
1584  bb.0:
1585    ; GCN-LABEL: name: test_remat_v_sub_f32_e32
1586    ; GCN: renamable $vgpr0 = nofpexcept V_SUB_F32_e32 1, undef $vgpr0, implicit $exec, implicit $mode
1587    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1588    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1589    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1590    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_SUB_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1591    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1592    ; GCN-NEXT: S_ENDPGM 0
1593    %1:vgpr_32 = nofpexcept V_SUB_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1594    %2:vgpr_32 = nofpexcept V_SUB_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1595    %3:vgpr_32 = nofpexcept V_SUB_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1596    S_NOP 0, implicit %1
1597    S_NOP 0, implicit %2
1598    S_NOP 0, implicit %3
1599    S_ENDPGM 0
1600...
1601---
1602name:            test_remat_v_subrev_f32_e32
1603tracksRegLiveness: true
1604body:             |
1605  bb.0:
1606    ; GCN-LABEL: name: test_remat_v_subrev_f32_e32
1607    ; GCN: renamable $vgpr0 = nofpexcept V_SUBREV_F32_e32 1, undef $vgpr0, implicit $exec, implicit $mode
1608    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1609    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1610    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1611    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_SUBREV_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1612    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1613    ; GCN-NEXT: S_ENDPGM 0
1614    %1:vgpr_32 = nofpexcept V_SUBREV_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1615    %2:vgpr_32 = nofpexcept V_SUBREV_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1616    %3:vgpr_32 = nofpexcept V_SUBREV_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1617    S_NOP 0, implicit %1
1618    S_NOP 0, implicit %2
1619    S_NOP 0, implicit %3
1620    S_ENDPGM 0
1621...
1622---
1623name:            test_remat_v_mul_legacy_f32_e32
1624tracksRegLiveness: true
1625body:             |
1626  bb.0:
1627    ; GCN-LABEL: name: test_remat_v_mul_legacy_f32_e32
1628    ; GCN: renamable $vgpr0 = nofpexcept V_MUL_LEGACY_F32_e32 1, undef $vgpr0, implicit $exec, implicit $mode
1629    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_LEGACY_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1630    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1631    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1632    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MUL_LEGACY_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1633    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1634    ; GCN-NEXT: S_ENDPGM 0
1635    %1:vgpr_32 = nofpexcept V_MUL_LEGACY_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1636    %2:vgpr_32 = nofpexcept V_MUL_LEGACY_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1637    %3:vgpr_32 = nofpexcept V_MUL_LEGACY_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1638    S_NOP 0, implicit %1
1639    S_NOP 0, implicit %2
1640    S_NOP 0, implicit %3
1641    S_ENDPGM 0
1642...
1643---
1644name:            test_remat_v_mul_f32_e32
1645tracksRegLiveness: true
1646body:             |
1647  bb.0:
1648    ; GCN-LABEL: name: test_remat_v_mul_f32_e32
1649    ; GCN: renamable $vgpr0 = nofpexcept V_MUL_F32_e32 1, undef $vgpr0, implicit $exec, implicit $mode
1650    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1651    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1652    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1653    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MUL_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1654    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1655    ; GCN-NEXT: S_ENDPGM 0
1656    %1:vgpr_32 = nofpexcept V_MUL_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1657    %2:vgpr_32 = nofpexcept V_MUL_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1658    %3:vgpr_32 = nofpexcept V_MUL_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1659    S_NOP 0, implicit %1
1660    S_NOP 0, implicit %2
1661    S_NOP 0, implicit %3
1662    S_ENDPGM 0
1663...
1664---
1665name:            test_remat_v_mul_i32_i24_e32
1666tracksRegLiveness: true
1667body:             |
1668  bb.0:
1669    ; GCN-LABEL: name: test_remat_v_mul_i32_i24_e32
1670    ; GCN: renamable $vgpr0 = V_MUL_I32_I24_e32 1, undef $vgpr0, implicit $exec
1671    ; GCN-NEXT: renamable $vgpr1 = V_MUL_I32_I24_e32 2, undef $vgpr0, implicit $exec
1672    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1673    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1674    ; GCN-NEXT: renamable $vgpr0 = V_MUL_I32_I24_e32 3, undef $vgpr0, implicit $exec
1675    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1676    ; GCN-NEXT: S_ENDPGM 0
1677    %1:vgpr_32 = V_MUL_I32_I24_e32 1, undef %0:vgpr_32, implicit $exec
1678    %2:vgpr_32 = V_MUL_I32_I24_e32 2, undef %0:vgpr_32, implicit $exec
1679    %3:vgpr_32 = V_MUL_I32_I24_e32 3, undef %0:vgpr_32, implicit $exec
1680    S_NOP 0, implicit %1
1681    S_NOP 0, implicit %2
1682    S_NOP 0, implicit %3
1683    S_ENDPGM 0
1684...
1685---
1686name:            test_remat_v_mul_hi_i32_i24_e32
1687tracksRegLiveness: true
1688body:             |
1689  bb.0:
1690    ; GCN-LABEL: name: test_remat_v_mul_hi_i32_i24_e32
1691    ; GCN: renamable $vgpr0 = V_MUL_HI_I32_I24_e32 1, undef $vgpr0, implicit $exec
1692    ; GCN-NEXT: renamable $vgpr1 = V_MUL_HI_I32_I24_e32 2, undef $vgpr0, implicit $exec
1693    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1694    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1695    ; GCN-NEXT: renamable $vgpr0 = V_MUL_HI_I32_I24_e32 3, undef $vgpr0, implicit $exec
1696    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1697    ; GCN-NEXT: S_ENDPGM 0
1698    %1:vgpr_32 = V_MUL_HI_I32_I24_e32 1, undef %0:vgpr_32, implicit $exec
1699    %2:vgpr_32 = V_MUL_HI_I32_I24_e32 2, undef %0:vgpr_32, implicit $exec
1700    %3:vgpr_32 = V_MUL_HI_I32_I24_e32 3, undef %0:vgpr_32, implicit $exec
1701    S_NOP 0, implicit %1
1702    S_NOP 0, implicit %2
1703    S_NOP 0, implicit %3
1704    S_ENDPGM 0
1705...
1706---
1707name:            test_remat_v_mul_u32_u24_e32
1708tracksRegLiveness: true
1709body:             |
1710  bb.0:
1711    ; GCN-LABEL: name: test_remat_v_mul_u32_u24_e32
1712    ; GCN: renamable $vgpr0 = V_MUL_U32_U24_e32 1, undef $vgpr0, implicit $exec
1713    ; GCN-NEXT: renamable $vgpr1 = V_MUL_U32_U24_e32 2, undef $vgpr0, implicit $exec
1714    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1715    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1716    ; GCN-NEXT: renamable $vgpr0 = V_MUL_U32_U24_e32 3, undef $vgpr0, implicit $exec
1717    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1718    ; GCN-NEXT: S_ENDPGM 0
1719    %1:vgpr_32 = V_MUL_U32_U24_e32 1, undef %0:vgpr_32, implicit $exec
1720    %2:vgpr_32 = V_MUL_U32_U24_e32 2, undef %0:vgpr_32, implicit $exec
1721    %3:vgpr_32 = V_MUL_U32_U24_e32 3, undef %0:vgpr_32, implicit $exec
1722    S_NOP 0, implicit %1
1723    S_NOP 0, implicit %2
1724    S_NOP 0, implicit %3
1725    S_ENDPGM 0
1726...
1727---
1728name:            test_remat_v_mul_hi_u32_u24_e32
1729tracksRegLiveness: true
1730body:             |
1731  bb.0:
1732    ; GCN-LABEL: name: test_remat_v_mul_hi_u32_u24_e32
1733    ; GCN: renamable $vgpr0 = V_MUL_HI_U32_U24_e32 1, undef $vgpr0, implicit $exec
1734    ; GCN-NEXT: renamable $vgpr1 = V_MUL_HI_U32_U24_e32 2, undef $vgpr0, implicit $exec
1735    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1736    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1737    ; GCN-NEXT: renamable $vgpr0 = V_MUL_HI_U32_U24_e32 3, undef $vgpr0, implicit $exec
1738    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1739    ; GCN-NEXT: S_ENDPGM 0
1740    %1:vgpr_32 = V_MUL_HI_U32_U24_e32 1, undef %0:vgpr_32, implicit $exec
1741    %2:vgpr_32 = V_MUL_HI_U32_U24_e32 2, undef %0:vgpr_32, implicit $exec
1742    %3:vgpr_32 = V_MUL_HI_U32_U24_e32 3, undef %0:vgpr_32, implicit $exec
1743    S_NOP 0, implicit %1
1744    S_NOP 0, implicit %2
1745    S_NOP 0, implicit %3
1746    S_ENDPGM 0
1747...
1748---
1749name:            test_remat_v_min_f32_e32
1750tracksRegLiveness: true
1751body:             |
1752  bb.0:
1753    ; GCN-LABEL: name: test_remat_v_min_f32_e32
1754    ; GCN: renamable $vgpr0 = nofpexcept V_MIN_F32_e32 1, undef $vgpr0, implicit $exec, implicit $mode
1755    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1756    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1757    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1758    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MIN_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1759    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1760    ; GCN-NEXT: S_ENDPGM 0
1761    %1:vgpr_32 = nofpexcept V_MIN_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1762    %2:vgpr_32 = nofpexcept V_MIN_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1763    %3:vgpr_32 = nofpexcept V_MIN_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1764    S_NOP 0, implicit %1
1765    S_NOP 0, implicit %2
1766    S_NOP 0, implicit %3
1767    S_ENDPGM 0
1768...
1769---
1770name:            test_remat_v_max_f32_e32
1771tracksRegLiveness: true
1772body:             |
1773  bb.0:
1774    ; GCN-LABEL: name: test_remat_v_max_f32_e32
1775    ; GCN: renamable $vgpr0 = nofpexcept V_MAX_F32_e32 1, undef $vgpr0, implicit $exec, implicit $mode
1776    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1777    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1778    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1779    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MAX_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1780    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1781    ; GCN-NEXT: S_ENDPGM 0
1782    %1:vgpr_32 = nofpexcept V_MAX_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1783    %2:vgpr_32 = nofpexcept V_MAX_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1784    %3:vgpr_32 = nofpexcept V_MAX_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1785    S_NOP 0, implicit %1
1786    S_NOP 0, implicit %2
1787    S_NOP 0, implicit %3
1788    S_ENDPGM 0
1789...
1790---
1791name:            test_remat_v_min_i32_e32
1792tracksRegLiveness: true
1793body:             |
1794  bb.0:
1795    ; GCN-LABEL: name: test_remat_v_min_i32_e32
1796    ; GCN: renamable $vgpr0 = V_MIN_I32_e32 1, undef $vgpr0, implicit $exec
1797    ; GCN-NEXT: renamable $vgpr1 = V_MIN_I32_e32 2, undef $vgpr0, implicit $exec
1798    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1799    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1800    ; GCN-NEXT: renamable $vgpr0 = V_MIN_I32_e32 3, undef $vgpr0, implicit $exec
1801    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1802    ; GCN-NEXT: S_ENDPGM 0
1803    %1:vgpr_32 = V_MIN_I32_e32 1, undef %0:vgpr_32, implicit $exec
1804    %2:vgpr_32 = V_MIN_I32_e32 2, undef %0:vgpr_32, implicit $exec
1805    %3:vgpr_32 = V_MIN_I32_e32 3, undef %0:vgpr_32, implicit $exec
1806    S_NOP 0, implicit %1
1807    S_NOP 0, implicit %2
1808    S_NOP 0, implicit %3
1809    S_ENDPGM 0
1810...
1811---
1812name:            test_remat_v_max_i32_e32
1813tracksRegLiveness: true
1814body:             |
1815  bb.0:
1816    ; GCN-LABEL: name: test_remat_v_max_i32_e32
1817    ; GCN: renamable $vgpr0 = V_MAX_I32_e32 1, undef $vgpr0, implicit $exec
1818    ; GCN-NEXT: renamable $vgpr1 = V_MAX_I32_e32 2, undef $vgpr0, implicit $exec
1819    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1820    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1821    ; GCN-NEXT: renamable $vgpr0 = V_MAX_I32_e32 3, undef $vgpr0, implicit $exec
1822    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1823    ; GCN-NEXT: S_ENDPGM 0
1824    %1:vgpr_32 = V_MAX_I32_e32 1, undef %0:vgpr_32, implicit $exec
1825    %2:vgpr_32 = V_MAX_I32_e32 2, undef %0:vgpr_32, implicit $exec
1826    %3:vgpr_32 = V_MAX_I32_e32 3, undef %0:vgpr_32, implicit $exec
1827    S_NOP 0, implicit %1
1828    S_NOP 0, implicit %2
1829    S_NOP 0, implicit %3
1830    S_ENDPGM 0
1831...
1832---
1833name:            test_remat_v_min_u32_e32
1834tracksRegLiveness: true
1835body:             |
1836  bb.0:
1837    ; GCN-LABEL: name: test_remat_v_min_u32_e32
1838    ; GCN: renamable $vgpr0 = V_MIN_U32_e32 1, undef $vgpr0, implicit $exec
1839    ; GCN-NEXT: renamable $vgpr1 = V_MIN_U32_e32 2, undef $vgpr0, implicit $exec
1840    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1841    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1842    ; GCN-NEXT: renamable $vgpr0 = V_MIN_U32_e32 3, undef $vgpr0, implicit $exec
1843    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1844    ; GCN-NEXT: S_ENDPGM 0
1845    %1:vgpr_32 = V_MIN_U32_e32 1, undef %0:vgpr_32, implicit $exec
1846    %2:vgpr_32 = V_MIN_U32_e32 2, undef %0:vgpr_32, implicit $exec
1847    %3:vgpr_32 = V_MIN_U32_e32 3, undef %0:vgpr_32, implicit $exec
1848    S_NOP 0, implicit %1
1849    S_NOP 0, implicit %2
1850    S_NOP 0, implicit %3
1851    S_ENDPGM 0
1852...
1853---
1854name:            test_remat_v_max_u32_e32
1855tracksRegLiveness: true
1856body:             |
1857  bb.0:
1858    ; GCN-LABEL: name: test_remat_v_max_u32_e32
1859    ; GCN: renamable $vgpr0 = V_MAX_U32_e32 1, undef $vgpr0, implicit $exec
1860    ; GCN-NEXT: renamable $vgpr1 = V_MAX_U32_e32 2, undef $vgpr0, implicit $exec
1861    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1862    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1863    ; GCN-NEXT: renamable $vgpr0 = V_MAX_U32_e32 3, undef $vgpr0, implicit $exec
1864    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1865    ; GCN-NEXT: S_ENDPGM 0
1866    %1:vgpr_32 = V_MAX_U32_e32 1, undef %0:vgpr_32, implicit $exec
1867    %2:vgpr_32 = V_MAX_U32_e32 2, undef %0:vgpr_32, implicit $exec
1868    %3:vgpr_32 = V_MAX_U32_e32 3, undef %0:vgpr_32, implicit $exec
1869    S_NOP 0, implicit %1
1870    S_NOP 0, implicit %2
1871    S_NOP 0, implicit %3
1872    S_ENDPGM 0
1873...
1874---
1875name:            test_remat_v_lshrrev_b32_e32
1876tracksRegLiveness: true
1877body:             |
1878  bb.0:
1879    ; GCN-LABEL: name: test_remat_v_lshrrev_b32_e32
1880    ; GCN: renamable $vgpr0 = V_LSHRREV_B32_e32 1, undef $vgpr0, implicit $exec
1881    ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B32_e32 2, undef $vgpr0, implicit $exec
1882    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1883    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1884    ; GCN-NEXT: renamable $vgpr0 = V_LSHRREV_B32_e32 3, undef $vgpr0, implicit $exec
1885    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1886    ; GCN-NEXT: S_ENDPGM 0
1887    %1:vgpr_32 = V_LSHRREV_B32_e32 1, undef %0:vgpr_32, implicit $exec
1888    %2:vgpr_32 = V_LSHRREV_B32_e32 2, undef %0:vgpr_32, implicit $exec
1889    %3:vgpr_32 = V_LSHRREV_B32_e32 3, undef %0:vgpr_32, implicit $exec
1890    S_NOP 0, implicit %1
1891    S_NOP 0, implicit %2
1892    S_NOP 0, implicit %3
1893    S_ENDPGM 0
1894...
1895---
1896name:            test_remat_v_lshlrev_b32_e32
1897tracksRegLiveness: true
1898body:             |
1899  bb.0:
1900    ; GCN-LABEL: name: test_remat_v_lshlrev_b32_e32
1901    ; GCN: renamable $vgpr0 = V_LSHLREV_B32_e32 1, undef $vgpr0, implicit $exec
1902    ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B32_e32 2, undef $vgpr0, implicit $exec
1903    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1904    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1905    ; GCN-NEXT: renamable $vgpr0 = V_LSHLREV_B32_e32 3, undef $vgpr0, implicit $exec
1906    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1907    ; GCN-NEXT: S_ENDPGM 0
1908    %1:vgpr_32 = V_LSHLREV_B32_e32 1, undef %0:vgpr_32, implicit $exec
1909    %2:vgpr_32 = V_LSHLREV_B32_e32 2, undef %0:vgpr_32, implicit $exec
1910    %3:vgpr_32 = V_LSHLREV_B32_e32 3, undef %0:vgpr_32, implicit $exec
1911    S_NOP 0, implicit %1
1912    S_NOP 0, implicit %2
1913    S_NOP 0, implicit %3
1914    S_ENDPGM 0
1915...
1916---
1917name:            test_remat_v_ashrrev_i32_e32
1918tracksRegLiveness: true
1919body:             |
1920  bb.0:
1921    ; GCN-LABEL: name: test_remat_v_ashrrev_i32_e32
1922    ; GCN: renamable $vgpr0 = V_ASHRREV_I32_e32 1, undef $vgpr0, implicit $exec
1923    ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I32_e32 2, undef $vgpr0, implicit $exec
1924    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1925    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1926    ; GCN-NEXT: renamable $vgpr0 = V_ASHRREV_I32_e32 3, undef $vgpr0, implicit $exec
1927    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1928    ; GCN-NEXT: S_ENDPGM 0
1929    %1:vgpr_32 = V_ASHRREV_I32_e32 1, undef %0:vgpr_32, implicit $exec
1930    %2:vgpr_32 = V_ASHRREV_I32_e32 2, undef %0:vgpr_32, implicit $exec
1931    %3:vgpr_32 = V_ASHRREV_I32_e32 3, undef %0:vgpr_32, implicit $exec
1932    S_NOP 0, implicit %1
1933    S_NOP 0, implicit %2
1934    S_NOP 0, implicit %3
1935    S_ENDPGM 0
1936...
1937---
1938name:            test_remat_v_and_b32_e32
1939tracksRegLiveness: true
1940body:             |
1941  bb.0:
1942    ; GCN-LABEL: name: test_remat_v_and_b32_e32
1943    ; GCN: renamable $vgpr0 = V_AND_B32_e32 1, undef $vgpr0, implicit $exec
1944    ; GCN-NEXT: renamable $vgpr1 = V_AND_B32_e32 2, undef $vgpr0, implicit $exec
1945    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1946    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1947    ; GCN-NEXT: renamable $vgpr0 = V_AND_B32_e32 3, undef $vgpr0, implicit $exec
1948    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1949    ; GCN-NEXT: S_ENDPGM 0
1950    %1:vgpr_32 = V_AND_B32_e32 1, undef %0:vgpr_32, implicit $exec
1951    %2:vgpr_32 = V_AND_B32_e32 2, undef %0:vgpr_32, implicit $exec
1952    %3:vgpr_32 = V_AND_B32_e32 3, undef %0:vgpr_32, implicit $exec
1953    S_NOP 0, implicit %1
1954    S_NOP 0, implicit %2
1955    S_NOP 0, implicit %3
1956    S_ENDPGM 0
1957...
1958---
1959name:            test_remat_v_or_b32_e32
1960tracksRegLiveness: true
1961body:             |
1962  bb.0:
1963    ; GCN-LABEL: name: test_remat_v_or_b32_e32
1964    ; GCN: renamable $vgpr0 = V_OR_B32_e32 1, undef $vgpr0, implicit $exec
1965    ; GCN-NEXT: renamable $vgpr1 = V_OR_B32_e32 2, undef $vgpr0, implicit $exec
1966    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1967    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1968    ; GCN-NEXT: renamable $vgpr0 = V_OR_B32_e32 3, undef $vgpr0, implicit $exec
1969    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1970    ; GCN-NEXT: S_ENDPGM 0
1971    %1:vgpr_32 = V_OR_B32_e32 1, undef %0:vgpr_32, implicit $exec
1972    %2:vgpr_32 = V_OR_B32_e32 2, undef %0:vgpr_32, implicit $exec
1973    %3:vgpr_32 = V_OR_B32_e32 3, undef %0:vgpr_32, implicit $exec
1974    S_NOP 0, implicit %1
1975    S_NOP 0, implicit %2
1976    S_NOP 0, implicit %3
1977    S_ENDPGM 0
1978...
1979---
1980name:            test_remat_v_xor_b32_e32
1981tracksRegLiveness: true
1982body:             |
1983  bb.0:
1984    ; GCN-LABEL: name: test_remat_v_xor_b32_e32
1985    ; GCN: renamable $vgpr0 = V_XOR_B32_e32 1, undef $vgpr0, implicit $exec
1986    ; GCN-NEXT: renamable $vgpr1 = V_XOR_B32_e32 2, undef $vgpr0, implicit $exec
1987    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1988    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1989    ; GCN-NEXT: renamable $vgpr0 = V_XOR_B32_e32 3, undef $vgpr0, implicit $exec
1990    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1991    ; GCN-NEXT: S_ENDPGM 0
1992    %1:vgpr_32 = V_XOR_B32_e32 1, undef %0:vgpr_32, implicit $exec
1993    %2:vgpr_32 = V_XOR_B32_e32 2, undef %0:vgpr_32, implicit $exec
1994    %3:vgpr_32 = V_XOR_B32_e32 3, undef %0:vgpr_32, implicit $exec
1995    S_NOP 0, implicit %1
1996    S_NOP 0, implicit %2
1997    S_NOP 0, implicit %3
1998    S_ENDPGM 0
1999...
2000---
2001name:            test_remat_v_madak_f32
2002tracksRegLiveness: true
2003body:             |
2004  bb.0:
2005    ; GCN-LABEL: name: test_remat_v_madak_f32
2006    ; GCN: renamable $vgpr0 = nofpexcept V_MADAK_F32 1, undef $vgpr0, 1, implicit $exec, implicit $mode
2007    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADAK_F32 2, undef $vgpr0, 2, implicit $exec, implicit $mode
2008    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2009    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2010    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MADAK_F32 3, undef $vgpr0, 3, implicit $exec, implicit $mode
2011    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2012    ; GCN-NEXT: S_ENDPGM 0
2013    %1:vgpr_32 = nofpexcept V_MADAK_F32 1, undef %0:vgpr_32, 1, implicit $exec, implicit $mode
2014    %2:vgpr_32 = nofpexcept V_MADAK_F32 2, undef %0:vgpr_32, 2, implicit $exec, implicit $mode
2015    %3:vgpr_32 = nofpexcept V_MADAK_F32 3, undef %0:vgpr_32, 3, implicit $exec, implicit $mode
2016    S_NOP 0, implicit %1
2017    S_NOP 0, implicit %2
2018    S_NOP 0, implicit %3
2019    S_ENDPGM 0
2020...
2021---
2022name:            test_remat_v_add_u32_e32
2023tracksRegLiveness: true
2024body:             |
2025  bb.0:
2026    ; GCN-LABEL: name: test_remat_v_add_u32_e32
2027    ; GCN: renamable $vgpr0 = V_ADD_U32_e32 1, undef $vgpr0, implicit $exec
2028    ; GCN-NEXT: renamable $vgpr1 = V_ADD_U32_e32 2, undef $vgpr0, implicit $exec
2029    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2030    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2031    ; GCN-NEXT: renamable $vgpr0 = V_ADD_U32_e32 3, undef $vgpr0, implicit $exec
2032    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2033    ; GCN-NEXT: S_ENDPGM 0
2034    %1:vgpr_32 = V_ADD_U32_e32 1, undef %0:vgpr_32, implicit $exec
2035    %2:vgpr_32 = V_ADD_U32_e32 2, undef %0:vgpr_32, implicit $exec
2036    %3:vgpr_32 = V_ADD_U32_e32 3, undef %0:vgpr_32, implicit $exec
2037    S_NOP 0, implicit %1
2038    S_NOP 0, implicit %2
2039    S_NOP 0, implicit %3
2040    S_ENDPGM 0
2041...
2042---
2043name:            test_remat_v_sub_u32_e32
2044tracksRegLiveness: true
2045body:             |
2046  bb.0:
2047    ; GCN-LABEL: name: test_remat_v_sub_u32_e32
2048    ; GCN: renamable $vgpr0 = V_SUB_U32_e32 1, undef $vgpr0, implicit $exec
2049    ; GCN-NEXT: renamable $vgpr1 = V_SUB_U32_e32 2, undef $vgpr0, implicit $exec
2050    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2051    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2052    ; GCN-NEXT: renamable $vgpr0 = V_SUB_U32_e32 3, undef $vgpr0, implicit $exec
2053    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2054    ; GCN-NEXT: S_ENDPGM 0
2055    %1:vgpr_32 = V_SUB_U32_e32 1, undef %0:vgpr_32, implicit $exec
2056    %2:vgpr_32 = V_SUB_U32_e32 2, undef %0:vgpr_32, implicit $exec
2057    %3:vgpr_32 = V_SUB_U32_e32 3, undef %0:vgpr_32, implicit $exec
2058    S_NOP 0, implicit %1
2059    S_NOP 0, implicit %2
2060    S_NOP 0, implicit %3
2061    S_ENDPGM 0
2062...
2063---
2064name:            test_remat_v_subrev_u32_e32
2065tracksRegLiveness: true
2066body:             |
2067  bb.0:
2068    ; GCN-LABEL: name: test_remat_v_subrev_u32_e32
2069    ; GCN: renamable $vgpr0 = V_SUBREV_U32_e32 1, undef $vgpr0, implicit $exec
2070    ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U32_e32 2, undef $vgpr0, implicit $exec
2071    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2072    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2073    ; GCN-NEXT: renamable $vgpr0 = V_SUBREV_U32_e32 3, undef $vgpr0, implicit $exec
2074    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2075    ; GCN-NEXT: S_ENDPGM 0
2076    %1:vgpr_32 = V_SUBREV_U32_e32 1, undef %0:vgpr_32, implicit $exec
2077    %2:vgpr_32 = V_SUBREV_U32_e32 2, undef %0:vgpr_32, implicit $exec
2078    %3:vgpr_32 = V_SUBREV_U32_e32 3, undef %0:vgpr_32, implicit $exec
2079    S_NOP 0, implicit %1
2080    S_NOP 0, implicit %2
2081    S_NOP 0, implicit %3
2082    S_ENDPGM 0
2083...
2084---
2085name:            test_remat_v_bfm_b32_e32
2086tracksRegLiveness: true
2087body:             |
2088  bb.0:
2089    ; GCN-LABEL: name: test_remat_v_bfm_b32_e32
2090    ; GCN: renamable $vgpr0 = V_BFM_B32_e32 1, undef $vgpr0, implicit $exec
2091    ; GCN-NEXT: renamable $vgpr1 = V_BFM_B32_e32 2, undef $vgpr0, implicit $exec
2092    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2093    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2094    ; GCN-NEXT: renamable $vgpr0 = V_BFM_B32_e32 3, undef $vgpr0, implicit $exec
2095    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2096    ; GCN-NEXT: S_ENDPGM 0
2097    %1:vgpr_32 = V_BFM_B32_e32 1, undef %0:vgpr_32, implicit $exec
2098    %2:vgpr_32 = V_BFM_B32_e32 2, undef %0:vgpr_32, implicit $exec
2099    %3:vgpr_32 = V_BFM_B32_e32 3, undef %0:vgpr_32, implicit $exec
2100    S_NOP 0, implicit %1
2101    S_NOP 0, implicit %2
2102    S_NOP 0, implicit %3
2103    S_ENDPGM 0
2104...
2105---
2106name:            test_remat_v_bcnt_u32_b32_e32
2107tracksRegLiveness: true
2108body:             |
2109  bb.0:
2110    ; GCN-LABEL: name: test_remat_v_bcnt_u32_b32_e32
2111    ; GCN: renamable $vgpr0 = V_BCNT_U32_B32_e32 1, undef $vgpr0, implicit $exec
2112    ; GCN-NEXT: renamable $vgpr1 = V_BCNT_U32_B32_e32 2, undef $vgpr0, implicit $exec
2113    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2114    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2115    ; GCN-NEXT: renamable $vgpr0 = V_BCNT_U32_B32_e32 3, undef $vgpr0, implicit $exec
2116    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2117    ; GCN-NEXT: S_ENDPGM 0
2118    %1:vgpr_32 = V_BCNT_U32_B32_e32 1, undef %0:vgpr_32, implicit $exec
2119    %2:vgpr_32 = V_BCNT_U32_B32_e32 2, undef %0:vgpr_32, implicit $exec
2120    %3:vgpr_32 = V_BCNT_U32_B32_e32 3, undef %0:vgpr_32, implicit $exec
2121    S_NOP 0, implicit %1
2122    S_NOP 0, implicit %2
2123    S_NOP 0, implicit %3
2124    S_ENDPGM 0
2125...
2126---
2127name:            test_remat_v_mbcnt_lo_u32_b32_e32
2128tracksRegLiveness: true
2129body:             |
2130  bb.0:
2131    ; GCN-LABEL: name: test_remat_v_mbcnt_lo_u32_b32_e32
2132    ; GCN: renamable $vgpr0 = V_MBCNT_LO_U32_B32_e32 1, undef $vgpr0, implicit $exec
2133    ; GCN-NEXT: renamable $vgpr1 = V_MBCNT_LO_U32_B32_e32 2, undef $vgpr0, implicit $exec
2134    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2135    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2136    ; GCN-NEXT: renamable $vgpr0 = V_MBCNT_LO_U32_B32_e32 3, undef $vgpr0, implicit $exec
2137    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2138    ; GCN-NEXT: S_ENDPGM 0
2139    %1:vgpr_32 = V_MBCNT_LO_U32_B32_e32 1, undef %0:vgpr_32, implicit $exec
2140    %2:vgpr_32 = V_MBCNT_LO_U32_B32_e32 2, undef %0:vgpr_32, implicit $exec
2141    %3:vgpr_32 = V_MBCNT_LO_U32_B32_e32 3, undef %0:vgpr_32, implicit $exec
2142    S_NOP 0, implicit %1
2143    S_NOP 0, implicit %2
2144    S_NOP 0, implicit %3
2145    S_ENDPGM 0
2146...
2147---
2148name:            test_remat_v_mbcnt_hi_u32_b32_e32
2149tracksRegLiveness: true
2150body:             |
2151  bb.0:
2152    ; GCN-LABEL: name: test_remat_v_mbcnt_hi_u32_b32_e32
2153    ; GCN: renamable $vgpr0 = V_MBCNT_HI_U32_B32_e32 1, undef $vgpr0, implicit $exec
2154    ; GCN-NEXT: renamable $vgpr1 = V_MBCNT_HI_U32_B32_e32 2, undef $vgpr0, implicit $exec
2155    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2156    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2157    ; GCN-NEXT: renamable $vgpr0 = V_MBCNT_HI_U32_B32_e32 3, undef $vgpr0, implicit $exec
2158    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2159    ; GCN-NEXT: S_ENDPGM 0
2160    %1:vgpr_32 = V_MBCNT_HI_U32_B32_e32 1, undef %0:vgpr_32, implicit $exec
2161    %2:vgpr_32 = V_MBCNT_HI_U32_B32_e32 2, undef %0:vgpr_32, implicit $exec
2162    %3:vgpr_32 = V_MBCNT_HI_U32_B32_e32 3, undef %0:vgpr_32, implicit $exec
2163    S_NOP 0, implicit %1
2164    S_NOP 0, implicit %2
2165    S_NOP 0, implicit %3
2166    S_ENDPGM 0
2167...
2168---
2169name:            test_remat_v_ldexp_f32_e32
2170tracksRegLiveness: true
2171body:             |
2172  bb.0:
2173    ; GCN-LABEL: name: test_remat_v_ldexp_f32_e32
2174    ; GCN: renamable $vgpr0 = nofpexcept V_LDEXP_F32_e32 1, undef $vgpr0, implicit $exec, implicit $mode
2175    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2176    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2177    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2178    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_LDEXP_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2179    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2180    ; GCN-NEXT: S_ENDPGM 0
2181    %1:vgpr_32 = nofpexcept V_LDEXP_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
2182    %2:vgpr_32 = nofpexcept V_LDEXP_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
2183    %3:vgpr_32 = nofpexcept V_LDEXP_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
2184    S_NOP 0, implicit %1
2185    S_NOP 0, implicit %2
2186    S_NOP 0, implicit %3
2187    S_ENDPGM 0
2188...
2189---
2190name:            test_remat_v_cvt_pknorm_i16_f32_e32
2191tracksRegLiveness: true
2192body:             |
2193  bb.0:
2194    ; GCN-LABEL: name: test_remat_v_cvt_pknorm_i16_f32_e32
2195    ; GCN: renamable $vgpr0 = V_CVT_PKNORM_I16_F32_e32 1, undef $vgpr0, implicit $exec
2196    ; GCN-NEXT: renamable $vgpr1 = V_CVT_PKNORM_I16_F32_e32 2, undef $vgpr0, implicit $exec
2197    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2198    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2199    ; GCN-NEXT: renamable $vgpr0 = V_CVT_PKNORM_I16_F32_e32 3, undef $vgpr0, implicit $exec
2200    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2201    ; GCN-NEXT: S_ENDPGM 0
2202    %1:vgpr_32 = V_CVT_PKNORM_I16_F32_e32 1, undef %0:vgpr_32, implicit $exec
2203    %2:vgpr_32 = V_CVT_PKNORM_I16_F32_e32 2, undef %0:vgpr_32, implicit $exec
2204    %3:vgpr_32 = V_CVT_PKNORM_I16_F32_e32 3, undef %0:vgpr_32, implicit $exec
2205    S_NOP 0, implicit %1
2206    S_NOP 0, implicit %2
2207    S_NOP 0, implicit %3
2208    S_ENDPGM 0
2209...
2210---
2211name:            test_remat_v_cvt_pknorm_u16_f32_e32
2212tracksRegLiveness: true
2213body:             |
2214  bb.0:
2215    ; GCN-LABEL: name: test_remat_v_cvt_pknorm_u16_f32_e32
2216    ; GCN: renamable $vgpr0 = V_CVT_PKNORM_U16_F32_e32 1, undef $vgpr0, implicit $exec
2217    ; GCN-NEXT: renamable $vgpr1 = V_CVT_PKNORM_U16_F32_e32 2, undef $vgpr0, implicit $exec
2218    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2219    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2220    ; GCN-NEXT: renamable $vgpr0 = V_CVT_PKNORM_U16_F32_e32 3, undef $vgpr0, implicit $exec
2221    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2222    ; GCN-NEXT: S_ENDPGM 0
2223    %1:vgpr_32 = V_CVT_PKNORM_U16_F32_e32 1, undef %0:vgpr_32, implicit $exec
2224    %2:vgpr_32 = V_CVT_PKNORM_U16_F32_e32 2, undef %0:vgpr_32, implicit $exec
2225    %3:vgpr_32 = V_CVT_PKNORM_U16_F32_e32 3, undef %0:vgpr_32, implicit $exec
2226    S_NOP 0, implicit %1
2227    S_NOP 0, implicit %2
2228    S_NOP 0, implicit %3
2229    S_ENDPGM 0
2230...
2231---
2232name:            test_remat_v_cvt_pkrtz_f16_f32_e32
2233tracksRegLiveness: true
2234body:             |
2235  bb.0:
2236    ; GCN-LABEL: name: test_remat_v_cvt_pkrtz_f16_f32_e32
2237    ; GCN: renamable $vgpr0 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 1, undef $vgpr0, implicit $exec, implicit $mode
2238    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2239    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2240    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2241    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2242    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2243    ; GCN-NEXT: S_ENDPGM 0
2244    %1:vgpr_32 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
2245    %2:vgpr_32 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
2246    %3:vgpr_32 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
2247    S_NOP 0, implicit %1
2248    S_NOP 0, implicit %2
2249    S_NOP 0, implicit %3
2250    S_ENDPGM 0
2251...
2252---
2253name:            test_remat_v_cvt_pk_u16_u32_e32
2254tracksRegLiveness: true
2255body:             |
2256  bb.0:
2257    ; GCN-LABEL: name: test_remat_v_cvt_pk_u16_u32_e32
2258    ; GCN: renamable $vgpr0 = V_CVT_PK_U16_U32_e32 1, undef $vgpr0, implicit $exec
2259    ; GCN-NEXT: renamable $vgpr1 = V_CVT_PK_U16_U32_e32 2, undef $vgpr0, implicit $exec
2260    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2261    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2262    ; GCN-NEXT: renamable $vgpr0 = V_CVT_PK_U16_U32_e32 3, undef $vgpr0, implicit $exec
2263    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2264    ; GCN-NEXT: S_ENDPGM 0
2265    %1:vgpr_32 = V_CVT_PK_U16_U32_e32 1, undef %0:vgpr_32, implicit $exec
2266    %2:vgpr_32 = V_CVT_PK_U16_U32_e32 2, undef %0:vgpr_32, implicit $exec
2267    %3:vgpr_32 = V_CVT_PK_U16_U32_e32 3, undef %0:vgpr_32, implicit $exec
2268    S_NOP 0, implicit %1
2269    S_NOP 0, implicit %2
2270    S_NOP 0, implicit %3
2271    S_ENDPGM 0
2272...
2273---
2274name:            test_remat_v_cvt_pk_i16_i32_e32
2275tracksRegLiveness: true
2276body:             |
2277  bb.0:
2278    ; GCN-LABEL: name: test_remat_v_cvt_pk_i16_i32_e32
2279    ; GCN: renamable $vgpr0 = V_CVT_PK_I16_I32_e32 1, undef $vgpr0, implicit $exec
2280    ; GCN-NEXT: renamable $vgpr1 = V_CVT_PK_I16_I32_e32 2, undef $vgpr0, implicit $exec
2281    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2282    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2283    ; GCN-NEXT: renamable $vgpr0 = V_CVT_PK_I16_I32_e32 3, undef $vgpr0, implicit $exec
2284    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2285    ; GCN-NEXT: S_ENDPGM 0
2286    %1:vgpr_32 = V_CVT_PK_I16_I32_e32 1, undef %0:vgpr_32, implicit $exec
2287    %2:vgpr_32 = V_CVT_PK_I16_I32_e32 2, undef %0:vgpr_32, implicit $exec
2288    %3:vgpr_32 = V_CVT_PK_I16_I32_e32 3, undef %0:vgpr_32, implicit $exec
2289    S_NOP 0, implicit %1
2290    S_NOP 0, implicit %2
2291    S_NOP 0, implicit %3
2292    S_ENDPGM 0
2293...
2294---
2295name:            test_remat_v_min_legacy_f32_e32
2296tracksRegLiveness: true
2297body:             |
2298  bb.0:
2299    ; GCN-LABEL: name: test_remat_v_min_legacy_f32_e32
2300    ; GCN: renamable $vgpr0 = nofpexcept V_MIN_LEGACY_F32_e32 1, undef $vgpr0, implicit $exec, implicit $mode
2301    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_LEGACY_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2302    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2303    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2304    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MIN_LEGACY_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2305    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2306    ; GCN-NEXT: S_ENDPGM 0
2307    %1:vgpr_32 = nofpexcept V_MIN_LEGACY_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
2308    %2:vgpr_32 = nofpexcept V_MIN_LEGACY_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
2309    %3:vgpr_32 = nofpexcept V_MIN_LEGACY_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
2310    S_NOP 0, implicit %1
2311    S_NOP 0, implicit %2
2312    S_NOP 0, implicit %3
2313    S_ENDPGM 0
2314...
2315---
2316name:            test_remat_v_max_legacy_f32_e32
2317tracksRegLiveness: true
2318body:             |
2319  bb.0:
2320    ; GCN-LABEL: name: test_remat_v_max_legacy_f32_e32
2321    ; GCN: renamable $vgpr0 = nofpexcept V_MAX_LEGACY_F32_e32 1, undef $vgpr0, implicit $exec, implicit $mode
2322    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_LEGACY_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2323    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2324    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2325    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MAX_LEGACY_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2326    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2327    ; GCN-NEXT: S_ENDPGM 0
2328    %1:vgpr_32 = nofpexcept V_MAX_LEGACY_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
2329    %2:vgpr_32 = nofpexcept V_MAX_LEGACY_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
2330    %3:vgpr_32 = nofpexcept V_MAX_LEGACY_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
2331    S_NOP 0, implicit %1
2332    S_NOP 0, implicit %2
2333    S_NOP 0, implicit %3
2334    S_ENDPGM 0
2335...
2336---
2337name:            test_remat_v_lshr_b32_e32
2338tracksRegLiveness: true
2339body:             |
2340  bb.0:
2341    ; GCN-LABEL: name: test_remat_v_lshr_b32_e32
2342    ; GCN: renamable $vgpr0 = V_LSHR_B32_e32 1, undef $vgpr0, implicit $exec
2343    ; GCN-NEXT: renamable $vgpr1 = V_LSHR_B32_e32 2, undef $vgpr0, implicit $exec
2344    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2345    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2346    ; GCN-NEXT: renamable $vgpr0 = V_LSHR_B32_e32 3, undef $vgpr0, implicit $exec
2347    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2348    ; GCN-NEXT: S_ENDPGM 0
2349    %1:vgpr_32 = V_LSHR_B32_e32 1, undef %0:vgpr_32, implicit $exec
2350    %2:vgpr_32 = V_LSHR_B32_e32 2, undef %0:vgpr_32, implicit $exec
2351    %3:vgpr_32 = V_LSHR_B32_e32 3, undef %0:vgpr_32, implicit $exec
2352    S_NOP 0, implicit %1
2353    S_NOP 0, implicit %2
2354    S_NOP 0, implicit %3
2355    S_ENDPGM 0
2356...
2357---
2358name:            test_remat_v_lshl_b32_e32
2359tracksRegLiveness: true
2360body:             |
2361  bb.0:
2362    ; GCN-LABEL: name: test_remat_v_lshl_b32_e32
2363    ; GCN: renamable $vgpr0 = V_LSHL_B32_e32 1, undef $vgpr0, implicit $exec
2364    ; GCN-NEXT: renamable $vgpr1 = V_LSHL_B32_e32 2, undef $vgpr0, implicit $exec
2365    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2366    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2367    ; GCN-NEXT: renamable $vgpr0 = V_LSHL_B32_e32 3, undef $vgpr0, implicit $exec
2368    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2369    ; GCN-NEXT: S_ENDPGM 0
2370    %1:vgpr_32 = V_LSHL_B32_e32 1, undef %0:vgpr_32, implicit $exec
2371    %2:vgpr_32 = V_LSHL_B32_e32 2, undef %0:vgpr_32, implicit $exec
2372    %3:vgpr_32 = V_LSHL_B32_e32 3, undef %0:vgpr_32, implicit $exec
2373    S_NOP 0, implicit %1
2374    S_NOP 0, implicit %2
2375    S_NOP 0, implicit %3
2376    S_ENDPGM 0
2377...
2378---
2379name:            test_remat_v_ashr_i32_e32
2380tracksRegLiveness: true
2381body:             |
2382  bb.0:
2383    ; GCN-LABEL: name: test_remat_v_ashr_i32_e32
2384    ; GCN: renamable $vgpr0 = V_ASHR_I32_e32 1, undef $vgpr0, implicit $exec
2385    ; GCN-NEXT: renamable $vgpr1 = V_ASHR_I32_e32 2, undef $vgpr0, implicit $exec
2386    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2387    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2388    ; GCN-NEXT: renamable $vgpr0 = V_ASHR_I32_e32 3, undef $vgpr0, implicit $exec
2389    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2390    ; GCN-NEXT: S_ENDPGM 0
2391    %1:vgpr_32 = V_ASHR_I32_e32 1, undef %0:vgpr_32, implicit $exec
2392    %2:vgpr_32 = V_ASHR_I32_e32 2, undef %0:vgpr_32, implicit $exec
2393    %3:vgpr_32 = V_ASHR_I32_e32 3, undef %0:vgpr_32, implicit $exec
2394    S_NOP 0, implicit %1
2395    S_NOP 0, implicit %2
2396    S_NOP 0, implicit %3
2397    S_ENDPGM 0
2398...
2399---
2400name:            test_remat_v_xnor_b32_e32
2401tracksRegLiveness: true
2402body:             |
2403  bb.0:
2404    ; GCN-LABEL: name: test_remat_v_xnor_b32_e32
2405    ; GCN: renamable $vgpr0 = V_XNOR_B32_e32 1, undef $vgpr0, implicit $exec
2406    ; GCN-NEXT: renamable $vgpr1 = V_XNOR_B32_e32 2, undef $vgpr0, implicit $exec
2407    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2408    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2409    ; GCN-NEXT: renamable $vgpr0 = V_XNOR_B32_e32 3, undef $vgpr0, implicit $exec
2410    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2411    ; GCN-NEXT: S_ENDPGM 0
2412    %1:vgpr_32 = V_XNOR_B32_e32 1, undef %0:vgpr_32, implicit $exec
2413    %2:vgpr_32 = V_XNOR_B32_e32 2, undef %0:vgpr_32, implicit $exec
2414    %3:vgpr_32 = V_XNOR_B32_e32 3, undef %0:vgpr_32, implicit $exec
2415    S_NOP 0, implicit %1
2416    S_NOP 0, implicit %2
2417    S_NOP 0, implicit %3
2418    S_ENDPGM 0
2419...
2420---
2421name:            test_remat_v_fmamk_f32
2422tracksRegLiveness: true
2423body:             |
2424  bb.0:
2425    ; GCN-LABEL: name: test_remat_v_fmamk_f32
2426    ; GCN: renamable $vgpr0 = nofpexcept V_FMAMK_F32 1, 1, undef $vgpr0, implicit $exec, implicit $mode
2427    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMAMK_F32 2, 2, undef $vgpr0, implicit $exec, implicit $mode
2428    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2429    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2430    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FMAMK_F32 3, 3, undef $vgpr0, implicit $exec, implicit $mode
2431    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2432    ; GCN-NEXT: S_ENDPGM 0
2433    %1:vgpr_32 = nofpexcept V_FMAMK_F32 1, 1, undef %0:vgpr_32, implicit $exec, implicit $mode
2434    %2:vgpr_32 = nofpexcept V_FMAMK_F32 2, 2, undef %0:vgpr_32, implicit $exec, implicit $mode
2435    %3:vgpr_32 = nofpexcept V_FMAMK_F32 3, 3, undef %0:vgpr_32, implicit $exec, implicit $mode
2436    S_NOP 0, implicit %1
2437    S_NOP 0, implicit %2
2438    S_NOP 0, implicit %3
2439    S_ENDPGM 0
2440...
2441---
2442name:            test_remat_v_fmaak_f32
2443tracksRegLiveness: true
2444body:             |
2445  bb.0:
2446    ; GCN-LABEL: name: test_remat_v_fmaak_f32
2447    ; GCN: renamable $vgpr0 = nofpexcept V_FMAAK_F32 1, undef $vgpr0, 1, implicit $exec, implicit $mode
2448    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMAAK_F32 2, undef $vgpr0, 2, implicit $exec, implicit $mode
2449    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2450    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2451    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FMAAK_F32 3, undef $vgpr0, 3, implicit $exec, implicit $mode
2452    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2453    ; GCN-NEXT: S_ENDPGM 0
2454    %1:vgpr_32 = nofpexcept V_FMAAK_F32 1, undef %0:vgpr_32, 1, implicit $exec, implicit $mode
2455    %2:vgpr_32 = nofpexcept V_FMAAK_F32 2, undef %0:vgpr_32, 2, implicit $exec, implicit $mode
2456    %3:vgpr_32 = nofpexcept V_FMAAK_F32 3, undef %0:vgpr_32, 3, implicit $exec, implicit $mode
2457    S_NOP 0, implicit %1
2458    S_NOP 0, implicit %2
2459    S_NOP 0, implicit %3
2460    S_ENDPGM 0
2461...
2462---
2463name:            test_remat_v_mad_legacy_f32_e64
2464tracksRegLiveness: true
2465body:             |
2466  bb.0:
2467    ; GCN-LABEL: name: test_remat_v_mad_legacy_f32_e64
2468    ; GCN: renamable $vgpr0 = nofpexcept V_MAD_LEGACY_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2469    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAD_LEGACY_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2470    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2471    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2472    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MAD_LEGACY_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2473    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2474    ; GCN-NEXT: S_ENDPGM 0
2475    %1:vgpr_32 = nofpexcept V_MAD_LEGACY_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2476    %2:vgpr_32 = nofpexcept V_MAD_LEGACY_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2477    %3:vgpr_32 = nofpexcept V_MAD_LEGACY_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2478    S_NOP 0, implicit %1
2479    S_NOP 0, implicit %2
2480    S_NOP 0, implicit %3
2481    S_ENDPGM 0
2482...
2483---
2484name:            test_remat_v_mad_f32_e64
2485tracksRegLiveness: true
2486body:             |
2487  bb.0:
2488    ; GCN-LABEL: name: test_remat_v_mad_f32_e64
2489    ; GCN: renamable $vgpr0 = nofpexcept V_MAD_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2490    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAD_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2491    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2492    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2493    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MAD_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2494    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2495    ; GCN-NEXT: S_ENDPGM 0
2496    %1:vgpr_32 = nofpexcept V_MAD_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2497    %2:vgpr_32 = nofpexcept V_MAD_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2498    %3:vgpr_32 = nofpexcept V_MAD_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2499    S_NOP 0, implicit %1
2500    S_NOP 0, implicit %2
2501    S_NOP 0, implicit %3
2502    S_ENDPGM 0
2503...
2504---
2505name:            test_remat_v_fma_legacy_f32_e64
2506tracksRegLiveness: true
2507body:             |
2508  bb.0:
2509    ; GCN-LABEL: name: test_remat_v_fma_legacy_f32_e64
2510    ; GCN: renamable $vgpr0 = nofpexcept V_FMA_LEGACY_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2511    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMA_LEGACY_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2512    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2513    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2514    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FMA_LEGACY_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2515    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2516    ; GCN-NEXT: S_ENDPGM 0
2517    %1:vgpr_32 = nofpexcept V_FMA_LEGACY_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2518    %2:vgpr_32 = nofpexcept V_FMA_LEGACY_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2519    %3:vgpr_32 = nofpexcept V_FMA_LEGACY_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2520    S_NOP 0, implicit %1
2521    S_NOP 0, implicit %2
2522    S_NOP 0, implicit %3
2523    S_ENDPGM 0
2524...
2525---
2526name:            test_remat_v_fma_f32_e64
2527tracksRegLiveness: true
2528body:             |
2529  bb.0:
2530    ; GCN-LABEL: name: test_remat_v_fma_f32_e64
2531    ; GCN: renamable $vgpr0 = nofpexcept V_FMA_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2532    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMA_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2533    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2534    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2535    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FMA_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2536    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2537    ; GCN-NEXT: S_ENDPGM 0
2538    %1:vgpr_32 = nofpexcept V_FMA_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2539    %2:vgpr_32 = nofpexcept V_FMA_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2540    %3:vgpr_32 = nofpexcept V_FMA_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2541    S_NOP 0, implicit %1
2542    S_NOP 0, implicit %2
2543    S_NOP 0, implicit %3
2544    S_ENDPGM 0
2545...
2546---
2547name:            test_remat_v_mad_i32_i24_e64
2548tracksRegLiveness: true
2549body:             |
2550  bb.0:
2551    ; GCN-LABEL: name: test_remat_v_mad_i32_i24_e64
2552    ; GCN: renamable $vgpr0 = V_MAD_I32_I24_e64 1, 1, undef $vgpr0, 0, implicit $exec
2553    ; GCN-NEXT: renamable $vgpr1 = V_MAD_I32_I24_e64 2, 2, undef $vgpr0, 0, implicit $exec
2554    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2555    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2556    ; GCN-NEXT: renamable $vgpr0 = V_MAD_I32_I24_e64 3, 3, undef $vgpr0, 0, implicit $exec
2557    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2558    ; GCN-NEXT: S_ENDPGM 0
2559    %1:vgpr_32 = V_MAD_I32_I24_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
2560    %2:vgpr_32 = V_MAD_I32_I24_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
2561    %3:vgpr_32 = V_MAD_I32_I24_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
2562    S_NOP 0, implicit %1
2563    S_NOP 0, implicit %2
2564    S_NOP 0, implicit %3
2565    S_ENDPGM 0
2566...
2567---
2568name:            test_remat_v_mad_u32_u24_e64
2569tracksRegLiveness: true
2570body:             |
2571  bb.0:
2572    ; GCN-LABEL: name: test_remat_v_mad_u32_u24_e64
2573    ; GCN: renamable $vgpr0 = V_MAD_U32_U24_e64 1, 1, undef $vgpr0, 0, implicit $exec
2574    ; GCN-NEXT: renamable $vgpr1 = V_MAD_U32_U24_e64 2, 2, undef $vgpr0, 0, implicit $exec
2575    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2576    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2577    ; GCN-NEXT: renamable $vgpr0 = V_MAD_U32_U24_e64 3, 3, undef $vgpr0, 0, implicit $exec
2578    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2579    ; GCN-NEXT: S_ENDPGM 0
2580    %1:vgpr_32 = V_MAD_U32_U24_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
2581    %2:vgpr_32 = V_MAD_U32_U24_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
2582    %3:vgpr_32 = V_MAD_U32_U24_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
2583    S_NOP 0, implicit %1
2584    S_NOP 0, implicit %2
2585    S_NOP 0, implicit %3
2586    S_ENDPGM 0
2587...
2588---
2589name:            test_remat_v_lerp_u8_e64
2590tracksRegLiveness: true
2591body:             |
2592  bb.0:
2593    ; GCN-LABEL: name: test_remat_v_lerp_u8_e64
2594    ; GCN: renamable $vgpr0 = V_LERP_U8_e64 1, 1, undef $vgpr0, implicit $exec
2595    ; GCN-NEXT: renamable $vgpr1 = V_LERP_U8_e64 2, 2, undef $vgpr0, implicit $exec
2596    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2597    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2598    ; GCN-NEXT: renamable $vgpr0 = V_LERP_U8_e64 3, 3, undef $vgpr0, implicit $exec
2599    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2600    ; GCN-NEXT: S_ENDPGM 0
2601    %1:vgpr_32 = V_LERP_U8_e64 1, 1, undef %0:vgpr_32, implicit $exec
2602    %2:vgpr_32 = V_LERP_U8_e64 2, 2, undef %0:vgpr_32, implicit $exec
2603    %3:vgpr_32 = V_LERP_U8_e64 3, 3, undef %0:vgpr_32, implicit $exec
2604    S_NOP 0, implicit %1
2605    S_NOP 0, implicit %2
2606    S_NOP 0, implicit %3
2607    S_ENDPGM 0
2608...
2609---
2610name:            test_remat_v_fma_f64_e64
2611tracksRegLiveness: true
2612body:             |
2613  bb.0:
2614    ; GCN-LABEL: name: test_remat_v_fma_f64_e64
2615    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_FMA_F64_e64 0, 1, 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2616    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_FMA_F64_e64 0, 2, 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2617    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2618    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2619    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_FMA_F64_e64 0, 3, 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2620    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2621    ; GCN-NEXT: S_ENDPGM 0
2622    %1:vreg_64_align2 = nofpexcept V_FMA_F64_e64 0, 1, 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2623    %2:vreg_64_align2 = nofpexcept V_FMA_F64_e64 0, 2, 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2624    %3:vreg_64_align2 = nofpexcept V_FMA_F64_e64 0, 3, 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2625    S_NOP 0, implicit %1
2626    S_NOP 0, implicit %2
2627    S_NOP 0, implicit %3
2628    S_ENDPGM 0
2629...
2630---
2631name:            test_remat_v_add_f64_e64
2632tracksRegLiveness: true
2633body:             |
2634  bb.0:
2635    ; GCN-LABEL: name: test_remat_v_add_f64_e64
2636    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_ADD_F64_e64 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2637    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_ADD_F64_e64 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2638    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2639    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2640    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_ADD_F64_e64 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2641    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2642    ; GCN-NEXT: S_ENDPGM 0
2643    %1:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2644    %2:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2645    %3:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2646    S_NOP 0, implicit %1
2647    S_NOP 0, implicit %2
2648    S_NOP 0, implicit %3
2649    S_ENDPGM 0
2650...
2651---
2652name:            test_remat_v_mul_f64_e64
2653tracksRegLiveness: true
2654body:             |
2655  bb.0:
2656    ; GCN-LABEL: name: test_remat_v_mul_f64_e64
2657    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_MUL_F64_e64 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2658    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_MUL_F64_e64 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2659    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2660    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2661    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_MUL_F64_e64 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2662    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2663    ; GCN-NEXT: S_ENDPGM 0
2664    %1:vreg_64_align2 = nofpexcept V_MUL_F64_e64 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2665    %2:vreg_64_align2 = nofpexcept V_MUL_F64_e64 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2666    %3:vreg_64_align2 = nofpexcept V_MUL_F64_e64 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2667    S_NOP 0, implicit %1
2668    S_NOP 0, implicit %2
2669    S_NOP 0, implicit %3
2670    S_ENDPGM 0
2671...
2672---
2673name:            test_remat_v_min_f64_e64
2674tracksRegLiveness: true
2675body:             |
2676  bb.0:
2677    ; GCN-LABEL: name: test_remat_v_min_f64_e64
2678    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_MIN_F64_e64 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2679    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_MIN_F64_e64 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2680    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2681    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2682    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_MIN_F64_e64 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2683    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2684    ; GCN-NEXT: S_ENDPGM 0
2685    %1:vreg_64_align2 = nofpexcept V_MIN_F64_e64 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2686    %2:vreg_64_align2 = nofpexcept V_MIN_F64_e64 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2687    %3:vreg_64_align2 = nofpexcept V_MIN_F64_e64 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2688    S_NOP 0, implicit %1
2689    S_NOP 0, implicit %2
2690    S_NOP 0, implicit %3
2691    S_ENDPGM 0
2692...
2693---
2694name:            test_remat_v_max_f64_e64
2695tracksRegLiveness: true
2696body:             |
2697  bb.0:
2698    ; GCN-LABEL: name: test_remat_v_max_f64_e64
2699    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_MAX_F64_e64 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2700    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_MAX_F64_e64 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2701    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2702    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2703    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_MAX_F64_e64 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2704    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2705    ; GCN-NEXT: S_ENDPGM 0
2706    %1:vreg_64_align2 = nofpexcept V_MAX_F64_e64 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2707    %2:vreg_64_align2 = nofpexcept V_MAX_F64_e64 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2708    %3:vreg_64_align2 = nofpexcept V_MAX_F64_e64 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2709    S_NOP 0, implicit %1
2710    S_NOP 0, implicit %2
2711    S_NOP 0, implicit %3
2712    S_ENDPGM 0
2713...
2714---
2715name:            test_remat_v_mul_lo_u32_e64
2716tracksRegLiveness: true
2717body:             |
2718  bb.0:
2719    ; GCN-LABEL: name: test_remat_v_mul_lo_u32_e64
2720    ; GCN: renamable $vgpr0 = V_MUL_LO_U32_e64 1, undef $vgpr0, implicit $exec
2721    ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U32_e64 2, undef $vgpr0, implicit $exec
2722    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2723    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2724    ; GCN-NEXT: renamable $vgpr0 = V_MUL_LO_U32_e64 3, undef $vgpr0, implicit $exec
2725    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2726    ; GCN-NEXT: S_ENDPGM 0
2727    %1:vgpr_32 = V_MUL_LO_U32_e64 1, undef %0:vgpr_32, implicit $exec
2728    %2:vgpr_32 = V_MUL_LO_U32_e64 2, undef %0:vgpr_32, implicit $exec
2729    %3:vgpr_32 = V_MUL_LO_U32_e64 3, undef %0:vgpr_32, implicit $exec
2730    S_NOP 0, implicit %1
2731    S_NOP 0, implicit %2
2732    S_NOP 0, implicit %3
2733    S_ENDPGM 0
2734...
2735---
2736name:            test_remat_v_mul_hi_u32_e64
2737tracksRegLiveness: true
2738body:             |
2739  bb.0:
2740    ; GCN-LABEL: name: test_remat_v_mul_hi_u32_e64
2741    ; GCN: renamable $vgpr0 = V_MUL_HI_U32_e64 1, undef $vgpr0, implicit $exec
2742    ; GCN-NEXT: renamable $vgpr1 = V_MUL_HI_U32_e64 2, undef $vgpr0, implicit $exec
2743    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2744    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2745    ; GCN-NEXT: renamable $vgpr0 = V_MUL_HI_U32_e64 3, undef $vgpr0, implicit $exec
2746    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2747    ; GCN-NEXT: S_ENDPGM 0
2748    %1:vgpr_32 = V_MUL_HI_U32_e64 1, undef %0:vgpr_32, implicit $exec
2749    %2:vgpr_32 = V_MUL_HI_U32_e64 2, undef %0:vgpr_32, implicit $exec
2750    %3:vgpr_32 = V_MUL_HI_U32_e64 3, undef %0:vgpr_32, implicit $exec
2751    S_NOP 0, implicit %1
2752    S_NOP 0, implicit %2
2753    S_NOP 0, implicit %3
2754    S_ENDPGM 0
2755...
2756---
2757name:            test_remat_v_mul_lo_i32_e64
2758tracksRegLiveness: true
2759body:             |
2760  bb.0:
2761    ; GCN-LABEL: name: test_remat_v_mul_lo_i32_e64
2762    ; GCN: renamable $vgpr0 = V_MUL_LO_I32_e64 1, undef $vgpr0, implicit $exec
2763    ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_I32_e64 2, undef $vgpr0, implicit $exec
2764    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2765    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2766    ; GCN-NEXT: renamable $vgpr0 = V_MUL_LO_I32_e64 3, undef $vgpr0, implicit $exec
2767    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2768    ; GCN-NEXT: S_ENDPGM 0
2769    %1:vgpr_32 = V_MUL_LO_I32_e64 1, undef %0:vgpr_32, implicit $exec
2770    %2:vgpr_32 = V_MUL_LO_I32_e64 2, undef %0:vgpr_32, implicit $exec
2771    %3:vgpr_32 = V_MUL_LO_I32_e64 3, undef %0:vgpr_32, implicit $exec
2772    S_NOP 0, implicit %1
2773    S_NOP 0, implicit %2
2774    S_NOP 0, implicit %3
2775    S_ENDPGM 0
2776...
2777---
2778name:            test_remat_v_mul_hi_i32_e64
2779tracksRegLiveness: true
2780body:             |
2781  bb.0:
2782    ; GCN-LABEL: name: test_remat_v_mul_hi_i32_e64
2783    ; GCN: renamable $vgpr0 = V_MUL_HI_I32_e64 1, undef $vgpr0, implicit $exec
2784    ; GCN-NEXT: renamable $vgpr1 = V_MUL_HI_I32_e64 2, undef $vgpr0, implicit $exec
2785    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2786    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2787    ; GCN-NEXT: renamable $vgpr0 = V_MUL_HI_I32_e64 3, undef $vgpr0, implicit $exec
2788    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2789    ; GCN-NEXT: S_ENDPGM 0
2790    %1:vgpr_32 = V_MUL_HI_I32_e64 1, undef %0:vgpr_32, implicit $exec
2791    %2:vgpr_32 = V_MUL_HI_I32_e64 2, undef %0:vgpr_32, implicit $exec
2792    %3:vgpr_32 = V_MUL_HI_I32_e64 3, undef %0:vgpr_32, implicit $exec
2793    S_NOP 0, implicit %1
2794    S_NOP 0, implicit %2
2795    S_NOP 0, implicit %3
2796    S_ENDPGM 0
2797...
2798---
2799name:            test_remat_v_cubeid_f32_e64
2800tracksRegLiveness: true
2801body:             |
2802  bb.0:
2803    ; GCN-LABEL: name: test_remat_v_cubeid_f32_e64
2804    ; GCN: renamable $vgpr0 = V_CUBEID_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2805    ; GCN-NEXT: renamable $vgpr1 = V_CUBEID_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2806    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2807    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2808    ; GCN-NEXT: renamable $vgpr0 = V_CUBEID_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2809    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2810    ; GCN-NEXT: S_ENDPGM 0
2811    %1:vgpr_32 = V_CUBEID_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2812    %2:vgpr_32 = V_CUBEID_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2813    %3:vgpr_32 = V_CUBEID_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2814    S_NOP 0, implicit %1
2815    S_NOP 0, implicit %2
2816    S_NOP 0, implicit %3
2817    S_ENDPGM 0
2818...
2819---
2820name:            test_remat_v_cubesc_f32_e64
2821tracksRegLiveness: true
2822body:             |
2823  bb.0:
2824    ; GCN-LABEL: name: test_remat_v_cubesc_f32_e64
2825    ; GCN: renamable $vgpr0 = V_CUBESC_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2826    ; GCN-NEXT: renamable $vgpr1 = V_CUBESC_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2827    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2828    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2829    ; GCN-NEXT: renamable $vgpr0 = V_CUBESC_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2830    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2831    ; GCN-NEXT: S_ENDPGM 0
2832    %1:vgpr_32 = V_CUBESC_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2833    %2:vgpr_32 = V_CUBESC_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2834    %3:vgpr_32 = V_CUBESC_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2835    S_NOP 0, implicit %1
2836    S_NOP 0, implicit %2
2837    S_NOP 0, implicit %3
2838    S_ENDPGM 0
2839...
2840---
2841name:            test_remat_v_cubetc_f32_e64
2842tracksRegLiveness: true
2843body:             |
2844  bb.0:
2845    ; GCN-LABEL: name: test_remat_v_cubetc_f32_e64
2846    ; GCN: renamable $vgpr0 = V_CUBETC_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2847    ; GCN-NEXT: renamable $vgpr1 = V_CUBETC_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2848    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2849    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2850    ; GCN-NEXT: renamable $vgpr0 = V_CUBETC_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2851    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2852    ; GCN-NEXT: S_ENDPGM 0
2853    %1:vgpr_32 = V_CUBETC_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2854    %2:vgpr_32 = V_CUBETC_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2855    %3:vgpr_32 = V_CUBETC_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2856    S_NOP 0, implicit %1
2857    S_NOP 0, implicit %2
2858    S_NOP 0, implicit %3
2859    S_ENDPGM 0
2860...
2861---
2862name:            test_remat_v_cubema_f32_e64
2863tracksRegLiveness: true
2864body:             |
2865  bb.0:
2866    ; GCN-LABEL: name: test_remat_v_cubema_f32_e64
2867    ; GCN: renamable $vgpr0 = V_CUBEMA_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2868    ; GCN-NEXT: renamable $vgpr1 = V_CUBEMA_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2869    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2870    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2871    ; GCN-NEXT: renamable $vgpr0 = V_CUBEMA_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2872    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2873    ; GCN-NEXT: S_ENDPGM 0
2874    %1:vgpr_32 = V_CUBEMA_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2875    %2:vgpr_32 = V_CUBEMA_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2876    %3:vgpr_32 = V_CUBEMA_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2877    S_NOP 0, implicit %1
2878    S_NOP 0, implicit %2
2879    S_NOP 0, implicit %3
2880    S_ENDPGM 0
2881...
2882---
2883name:            test_remat_v_bfe_u32_e64
2884tracksRegLiveness: true
2885body:             |
2886  bb.0:
2887    ; GCN-LABEL: name: test_remat_v_bfe_u32_e64
2888    ; GCN: renamable $vgpr0 = V_BFE_U32_e64 1, 1, undef $vgpr0, implicit $exec
2889    ; GCN-NEXT: renamable $vgpr1 = V_BFE_U32_e64 2, 2, undef $vgpr0, implicit $exec
2890    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2891    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2892    ; GCN-NEXT: renamable $vgpr0 = V_BFE_U32_e64 3, 3, undef $vgpr0, implicit $exec
2893    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2894    ; GCN-NEXT: S_ENDPGM 0
2895    %1:vgpr_32 = V_BFE_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
2896    %2:vgpr_32 = V_BFE_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
2897    %3:vgpr_32 = V_BFE_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
2898    S_NOP 0, implicit %1
2899    S_NOP 0, implicit %2
2900    S_NOP 0, implicit %3
2901    S_ENDPGM 0
2902...
2903---
2904name:            test_remat_v_bfe_i32_e64
2905tracksRegLiveness: true
2906body:             |
2907  bb.0:
2908    ; GCN-LABEL: name: test_remat_v_bfe_i32_e64
2909    ; GCN: renamable $vgpr0 = V_BFE_I32_e64 1, 1, undef $vgpr0, implicit $exec
2910    ; GCN-NEXT: renamable $vgpr1 = V_BFE_I32_e64 2, 2, undef $vgpr0, implicit $exec
2911    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2912    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2913    ; GCN-NEXT: renamable $vgpr0 = V_BFE_I32_e64 3, 3, undef $vgpr0, implicit $exec
2914    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2915    ; GCN-NEXT: S_ENDPGM 0
2916    %1:vgpr_32 = V_BFE_I32_e64 1, 1, undef %0:vgpr_32, implicit $exec
2917    %2:vgpr_32 = V_BFE_I32_e64 2, 2, undef %0:vgpr_32, implicit $exec
2918    %3:vgpr_32 = V_BFE_I32_e64 3, 3, undef %0:vgpr_32, implicit $exec
2919    S_NOP 0, implicit %1
2920    S_NOP 0, implicit %2
2921    S_NOP 0, implicit %3
2922    S_ENDPGM 0
2923...
2924---
2925name:            test_remat_v_bfi_b32_e64
2926tracksRegLiveness: true
2927body:             |
2928  bb.0:
2929    ; GCN-LABEL: name: test_remat_v_bfi_b32_e64
2930    ; GCN: renamable $vgpr0 = V_BFI_B32_e64 1, 1, undef $vgpr0, implicit $exec
2931    ; GCN-NEXT: renamable $vgpr1 = V_BFI_B32_e64 2, 2, undef $vgpr0, implicit $exec
2932    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2933    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2934    ; GCN-NEXT: renamable $vgpr0 = V_BFI_B32_e64 3, 3, undef $vgpr0, implicit $exec
2935    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2936    ; GCN-NEXT: S_ENDPGM 0
2937    %1:vgpr_32 = V_BFI_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
2938    %2:vgpr_32 = V_BFI_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
2939    %3:vgpr_32 = V_BFI_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
2940    S_NOP 0, implicit %1
2941    S_NOP 0, implicit %2
2942    S_NOP 0, implicit %3
2943    S_ENDPGM 0
2944...
2945---
2946name:            test_remat_v_alignbit_b32_e64
2947tracksRegLiveness: true
2948body:             |
2949  bb.0:
2950    ; GCN-LABEL: name: test_remat_v_alignbit_b32_e64
2951    ; GCN: renamable $vgpr0 = V_ALIGNBIT_B32_e64 1, 1, undef $vgpr0, implicit $exec
2952    ; GCN-NEXT: renamable $vgpr1 = V_ALIGNBIT_B32_e64 2, 2, undef $vgpr0, implicit $exec
2953    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2954    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2955    ; GCN-NEXT: renamable $vgpr0 = V_ALIGNBIT_B32_e64 3, 3, undef $vgpr0, implicit $exec
2956    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2957    ; GCN-NEXT: S_ENDPGM 0
2958    %1:vgpr_32 = V_ALIGNBIT_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
2959    %2:vgpr_32 = V_ALIGNBIT_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
2960    %3:vgpr_32 = V_ALIGNBIT_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
2961    S_NOP 0, implicit %1
2962    S_NOP 0, implicit %2
2963    S_NOP 0, implicit %3
2964    S_ENDPGM 0
2965...
2966---
2967name:            test_remat_v_alignbyte_b32_e64
2968tracksRegLiveness: true
2969body:             |
2970  bb.0:
2971    ; GCN-LABEL: name: test_remat_v_alignbyte_b32_e64
2972    ; GCN: renamable $vgpr0 = V_ALIGNBYTE_B32_e64 1, 1, undef $vgpr0, implicit $exec
2973    ; GCN-NEXT: renamable $vgpr1 = V_ALIGNBYTE_B32_e64 2, 2, undef $vgpr0, implicit $exec
2974    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2975    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2976    ; GCN-NEXT: renamable $vgpr0 = V_ALIGNBYTE_B32_e64 3, 3, undef $vgpr0, implicit $exec
2977    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2978    ; GCN-NEXT: S_ENDPGM 0
2979    %1:vgpr_32 = V_ALIGNBYTE_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
2980    %2:vgpr_32 = V_ALIGNBYTE_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
2981    %3:vgpr_32 = V_ALIGNBYTE_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
2982    S_NOP 0, implicit %1
2983    S_NOP 0, implicit %2
2984    S_NOP 0, implicit %3
2985    S_ENDPGM 0
2986...
2987---
2988name:            test_remat_v_min3_i32_e64
2989tracksRegLiveness: true
2990body:             |
2991  bb.0:
2992    ; GCN-LABEL: name: test_remat_v_min3_i32_e64
2993    ; GCN: renamable $vgpr0 = V_MIN3_I32_e64 1, 1, undef $vgpr0, implicit $exec
2994    ; GCN-NEXT: renamable $vgpr1 = V_MIN3_I32_e64 2, 2, undef $vgpr0, implicit $exec
2995    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2996    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2997    ; GCN-NEXT: renamable $vgpr0 = V_MIN3_I32_e64 3, 3, undef $vgpr0, implicit $exec
2998    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2999    ; GCN-NEXT: S_ENDPGM 0
3000    %1:vgpr_32 = V_MIN3_I32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3001    %2:vgpr_32 = V_MIN3_I32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3002    %3:vgpr_32 = V_MIN3_I32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3003    S_NOP 0, implicit %1
3004    S_NOP 0, implicit %2
3005    S_NOP 0, implicit %3
3006    S_ENDPGM 0
3007...
3008---
3009name:            test_remat_v_min3_u32_e64
3010tracksRegLiveness: true
3011body:             |
3012  bb.0:
3013    ; GCN-LABEL: name: test_remat_v_min3_u32_e64
3014    ; GCN: renamable $vgpr0 = V_MIN3_U32_e64 1, 1, undef $vgpr0, implicit $exec
3015    ; GCN-NEXT: renamable $vgpr1 = V_MIN3_U32_e64 2, 2, undef $vgpr0, implicit $exec
3016    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3017    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3018    ; GCN-NEXT: renamable $vgpr0 = V_MIN3_U32_e64 3, 3, undef $vgpr0, implicit $exec
3019    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3020    ; GCN-NEXT: S_ENDPGM 0
3021    %1:vgpr_32 = V_MIN3_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3022    %2:vgpr_32 = V_MIN3_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3023    %3:vgpr_32 = V_MIN3_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3024    S_NOP 0, implicit %1
3025    S_NOP 0, implicit %2
3026    S_NOP 0, implicit %3
3027    S_ENDPGM 0
3028...
3029---
3030name:            test_remat_v_max3_i32_e64
3031tracksRegLiveness: true
3032body:             |
3033  bb.0:
3034    ; GCN-LABEL: name: test_remat_v_max3_i32_e64
3035    ; GCN: renamable $vgpr0 = V_MAX3_I32_e64 1, 1, undef $vgpr0, implicit $exec
3036    ; GCN-NEXT: renamable $vgpr1 = V_MAX3_I32_e64 2, 2, undef $vgpr0, implicit $exec
3037    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3038    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3039    ; GCN-NEXT: renamable $vgpr0 = V_MAX3_I32_e64 3, 3, undef $vgpr0, implicit $exec
3040    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3041    ; GCN-NEXT: S_ENDPGM 0
3042    %1:vgpr_32 = V_MAX3_I32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3043    %2:vgpr_32 = V_MAX3_I32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3044    %3:vgpr_32 = V_MAX3_I32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3045    S_NOP 0, implicit %1
3046    S_NOP 0, implicit %2
3047    S_NOP 0, implicit %3
3048    S_ENDPGM 0
3049...
3050---
3051name:            test_remat_v_max3_u32_e64
3052tracksRegLiveness: true
3053body:             |
3054  bb.0:
3055    ; GCN-LABEL: name: test_remat_v_max3_u32_e64
3056    ; GCN: renamable $vgpr0 = V_MAX3_U32_e64 1, 1, undef $vgpr0, implicit $exec
3057    ; GCN-NEXT: renamable $vgpr1 = V_MAX3_U32_e64 2, 2, undef $vgpr0, implicit $exec
3058    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3059    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3060    ; GCN-NEXT: renamable $vgpr0 = V_MAX3_U32_e64 3, 3, undef $vgpr0, implicit $exec
3061    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3062    ; GCN-NEXT: S_ENDPGM 0
3063    %1:vgpr_32 = V_MAX3_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3064    %2:vgpr_32 = V_MAX3_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3065    %3:vgpr_32 = V_MAX3_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3066    S_NOP 0, implicit %1
3067    S_NOP 0, implicit %2
3068    S_NOP 0, implicit %3
3069    S_ENDPGM 0
3070...
3071---
3072name:            test_remat_v_med3_i32_e64
3073tracksRegLiveness: true
3074body:             |
3075  bb.0:
3076    ; GCN-LABEL: name: test_remat_v_med3_i32_e64
3077    ; GCN: renamable $vgpr0 = V_MED3_I32_e64 1, 1, undef $vgpr0, implicit $exec
3078    ; GCN-NEXT: renamable $vgpr1 = V_MED3_I32_e64 2, 2, undef $vgpr0, implicit $exec
3079    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3080    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3081    ; GCN-NEXT: renamable $vgpr0 = V_MED3_I32_e64 3, 3, undef $vgpr0, implicit $exec
3082    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3083    ; GCN-NEXT: S_ENDPGM 0
3084    %1:vgpr_32 = V_MED3_I32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3085    %2:vgpr_32 = V_MED3_I32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3086    %3:vgpr_32 = V_MED3_I32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3087    S_NOP 0, implicit %1
3088    S_NOP 0, implicit %2
3089    S_NOP 0, implicit %3
3090    S_ENDPGM 0
3091...
3092---
3093name:            test_remat_v_med3_u32_e64
3094tracksRegLiveness: true
3095body:             |
3096  bb.0:
3097    ; GCN-LABEL: name: test_remat_v_med3_u32_e64
3098    ; GCN: renamable $vgpr0 = V_MED3_U32_e64 1, 1, undef $vgpr0, implicit $exec
3099    ; GCN-NEXT: renamable $vgpr1 = V_MED3_U32_e64 2, 2, undef $vgpr0, implicit $exec
3100    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3101    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3102    ; GCN-NEXT: renamable $vgpr0 = V_MED3_U32_e64 3, 3, undef $vgpr0, implicit $exec
3103    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3104    ; GCN-NEXT: S_ENDPGM 0
3105    %1:vgpr_32 = V_MED3_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3106    %2:vgpr_32 = V_MED3_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3107    %3:vgpr_32 = V_MED3_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3108    S_NOP 0, implicit %1
3109    S_NOP 0, implicit %2
3110    S_NOP 0, implicit %3
3111    S_ENDPGM 0
3112...
3113---
3114name:            test_remat_v_min3_f32_e64
3115tracksRegLiveness: true
3116body:             |
3117  bb.0:
3118    ; GCN-LABEL: name: test_remat_v_min3_f32_e64
3119    ; GCN: renamable $vgpr0 = V_MIN3_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3120    ; GCN-NEXT: renamable $vgpr1 = V_MIN3_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3121    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3122    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3123    ; GCN-NEXT: renamable $vgpr0 = V_MIN3_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3124    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3125    ; GCN-NEXT: S_ENDPGM 0
3126    %1:vgpr_32 = V_MIN3_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3127    %2:vgpr_32 = V_MIN3_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3128    %3:vgpr_32 = V_MIN3_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3129    S_NOP 0, implicit %1
3130    S_NOP 0, implicit %2
3131    S_NOP 0, implicit %3
3132    S_ENDPGM 0
3133...
3134---
3135name:            test_remat_v_max3_f32_e64
3136tracksRegLiveness: true
3137body:             |
3138  bb.0:
3139    ; GCN-LABEL: name: test_remat_v_max3_f32_e64
3140    ; GCN: renamable $vgpr0 = V_MAX3_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3141    ; GCN-NEXT: renamable $vgpr1 = V_MAX3_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3142    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3143    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3144    ; GCN-NEXT: renamable $vgpr0 = V_MAX3_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3145    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3146    ; GCN-NEXT: S_ENDPGM 0
3147    %1:vgpr_32 = V_MAX3_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3148    %2:vgpr_32 = V_MAX3_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3149    %3:vgpr_32 = V_MAX3_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3150    S_NOP 0, implicit %1
3151    S_NOP 0, implicit %2
3152    S_NOP 0, implicit %3
3153    S_ENDPGM 0
3154...
3155---
3156name:            test_remat_v_med3_f32_e64
3157tracksRegLiveness: true
3158body:             |
3159  bb.0:
3160    ; GCN-LABEL: name: test_remat_v_med3_f32_e64
3161    ; GCN: renamable $vgpr0 = V_MED3_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3162    ; GCN-NEXT: renamable $vgpr1 = V_MED3_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3163    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3164    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3165    ; GCN-NEXT: renamable $vgpr0 = V_MED3_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3166    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3167    ; GCN-NEXT: S_ENDPGM 0
3168    %1:vgpr_32 = V_MED3_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3169    %2:vgpr_32 = V_MED3_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3170    %3:vgpr_32 = V_MED3_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3171    S_NOP 0, implicit %1
3172    S_NOP 0, implicit %2
3173    S_NOP 0, implicit %3
3174    S_ENDPGM 0
3175...
3176---
3177name:            test_remat_v_sad_u8_e64
3178tracksRegLiveness: true
3179body:             |
3180  bb.0:
3181    ; GCN-LABEL: name: test_remat_v_sad_u8_e64
3182    ; GCN: renamable $vgpr0 = V_SAD_U8_e64 1, 1, undef $vgpr0, 0, implicit $exec
3183    ; GCN-NEXT: renamable $vgpr1 = V_SAD_U8_e64 2, 2, undef $vgpr0, 0, implicit $exec
3184    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3185    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3186    ; GCN-NEXT: renamable $vgpr0 = V_SAD_U8_e64 3, 3, undef $vgpr0, 0, implicit $exec
3187    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3188    ; GCN-NEXT: S_ENDPGM 0
3189    %1:vgpr_32 = V_SAD_U8_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3190    %2:vgpr_32 = V_SAD_U8_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3191    %3:vgpr_32 = V_SAD_U8_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3192    S_NOP 0, implicit %1
3193    S_NOP 0, implicit %2
3194    S_NOP 0, implicit %3
3195    S_ENDPGM 0
3196...
3197---
3198name:            test_remat_v_sad_hi_u8_e64
3199tracksRegLiveness: true
3200body:             |
3201  bb.0:
3202    ; GCN-LABEL: name: test_remat_v_sad_hi_u8_e64
3203    ; GCN: renamable $vgpr0 = V_SAD_HI_U8_e64 1, 1, undef $vgpr0, 0, implicit $exec
3204    ; GCN-NEXT: renamable $vgpr1 = V_SAD_HI_U8_e64 2, 2, undef $vgpr0, 0, implicit $exec
3205    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3206    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3207    ; GCN-NEXT: renamable $vgpr0 = V_SAD_HI_U8_e64 3, 3, undef $vgpr0, 0, implicit $exec
3208    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3209    ; GCN-NEXT: S_ENDPGM 0
3210    %1:vgpr_32 = V_SAD_HI_U8_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3211    %2:vgpr_32 = V_SAD_HI_U8_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3212    %3:vgpr_32 = V_SAD_HI_U8_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3213    S_NOP 0, implicit %1
3214    S_NOP 0, implicit %2
3215    S_NOP 0, implicit %3
3216    S_ENDPGM 0
3217...
3218---
3219name:            test_remat_v_sad_u16_e64
3220tracksRegLiveness: true
3221body:             |
3222  bb.0:
3223    ; GCN-LABEL: name: test_remat_v_sad_u16_e64
3224    ; GCN: renamable $vgpr0 = V_SAD_U16_e64 1, 1, undef $vgpr0, 0, implicit $exec
3225    ; GCN-NEXT: renamable $vgpr1 = V_SAD_U16_e64 2, 2, undef $vgpr0, 0, implicit $exec
3226    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3227    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3228    ; GCN-NEXT: renamable $vgpr0 = V_SAD_U16_e64 3, 3, undef $vgpr0, 0, implicit $exec
3229    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3230    ; GCN-NEXT: S_ENDPGM 0
3231    %1:vgpr_32 = V_SAD_U16_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3232    %2:vgpr_32 = V_SAD_U16_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3233    %3:vgpr_32 = V_SAD_U16_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3234    S_NOP 0, implicit %1
3235    S_NOP 0, implicit %2
3236    S_NOP 0, implicit %3
3237    S_ENDPGM 0
3238...
3239---
3240name:            test_remat_v_sad_u32_e64
3241tracksRegLiveness: true
3242body:             |
3243  bb.0:
3244    ; GCN-LABEL: name: test_remat_v_sad_u32_e64
3245    ; GCN: renamable $vgpr0 = V_SAD_U32_e64 1, 1, undef $vgpr0, 0, implicit $exec
3246    ; GCN-NEXT: renamable $vgpr1 = V_SAD_U32_e64 2, 2, undef $vgpr0, 0, implicit $exec
3247    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3248    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3249    ; GCN-NEXT: renamable $vgpr0 = V_SAD_U32_e64 3, 3, undef $vgpr0, 0, implicit $exec
3250    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3251    ; GCN-NEXT: S_ENDPGM 0
3252    %1:vgpr_32 = V_SAD_U32_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3253    %2:vgpr_32 = V_SAD_U32_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3254    %3:vgpr_32 = V_SAD_U32_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3255    S_NOP 0, implicit %1
3256    S_NOP 0, implicit %2
3257    S_NOP 0, implicit %3
3258    S_ENDPGM 0
3259...
3260---
3261name:            test_remat_v_cvt_pk_u8_f32_e64
3262tracksRegLiveness: true
3263body:             |
3264  bb.0:
3265    ; GCN-LABEL: name: test_remat_v_cvt_pk_u8_f32_e64
3266    ; GCN: renamable $vgpr0 = nofpexcept V_CVT_PK_U8_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, implicit $exec, implicit $mode
3267    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_PK_U8_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, implicit $exec, implicit $mode
3268    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3269    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3270    ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_PK_U8_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, implicit $exec, implicit $mode
3271    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3272    ; GCN-NEXT: S_ENDPGM 0
3273    %1:vgpr_32 = nofpexcept V_CVT_PK_U8_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, implicit $exec, implicit $mode
3274    %2:vgpr_32 = nofpexcept V_CVT_PK_U8_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, implicit $exec, implicit $mode
3275    %3:vgpr_32 = nofpexcept V_CVT_PK_U8_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, implicit $exec, implicit $mode
3276    S_NOP 0, implicit %1
3277    S_NOP 0, implicit %2
3278    S_NOP 0, implicit %3
3279    S_ENDPGM 0
3280...
3281---
3282name:            test_remat_v_div_fixup_f64_e64
3283tracksRegLiveness: true
3284body:             |
3285  bb.0:
3286    ; GCN-LABEL: name: test_remat_v_div_fixup_f64_e64
3287    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_DIV_FIXUP_F64_e64 0, 1, 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
3288    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_DIV_FIXUP_F64_e64 0, 2, 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
3289    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3290    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3291    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_DIV_FIXUP_F64_e64 0, 3, 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
3292    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3293    ; GCN-NEXT: S_ENDPGM 0
3294    %1:vreg_64_align2 = nofpexcept V_DIV_FIXUP_F64_e64 0, 1, 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
3295    %2:vreg_64_align2 = nofpexcept V_DIV_FIXUP_F64_e64 0, 2, 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
3296    %3:vreg_64_align2 = nofpexcept V_DIV_FIXUP_F64_e64 0, 3, 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
3297    S_NOP 0, implicit %1
3298    S_NOP 0, implicit %2
3299    S_NOP 0, implicit %3
3300    S_ENDPGM 0
3301...
3302---
3303name:            test_remat_v_ldexp_f64_e64
3304tracksRegLiveness: true
3305body:             |
3306  bb.0:
3307    ; GCN-LABEL: name: test_remat_v_ldexp_f64_e64
3308    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_LDEXP_F64_e64 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3309    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_LDEXP_F64_e64 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3310    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3311    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3312    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_LDEXP_F64_e64 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3313    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3314    ; GCN-NEXT: S_ENDPGM 0
3315    %1:vreg_64_align2 = nofpexcept V_LDEXP_F64_e64 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3316    %2:vreg_64_align2 = nofpexcept V_LDEXP_F64_e64 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3317    %3:vreg_64_align2 = nofpexcept V_LDEXP_F64_e64 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3318    S_NOP 0, implicit %1
3319    S_NOP 0, implicit %2
3320    S_NOP 0, implicit %3
3321    S_ENDPGM 0
3322...
3323---
3324name:            test_remat_v_msad_u8_e64
3325tracksRegLiveness: true
3326body:             |
3327  bb.0:
3328    ; GCN-LABEL: name: test_remat_v_msad_u8_e64
3329    ; GCN: renamable $vgpr0 = V_MSAD_U8_e64 1, 1, undef $vgpr0, 0, implicit $exec
3330    ; GCN-NEXT: renamable $vgpr1 = V_MSAD_U8_e64 2, 2, undef $vgpr0, 0, implicit $exec
3331    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3332    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3333    ; GCN-NEXT: renamable $vgpr0 = V_MSAD_U8_e64 3, 3, undef $vgpr0, 0, implicit $exec
3334    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3335    ; GCN-NEXT: S_ENDPGM 0
3336    %1:vgpr_32 = V_MSAD_U8_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3337    %2:vgpr_32 = V_MSAD_U8_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3338    %3:vgpr_32 = V_MSAD_U8_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3339    S_NOP 0, implicit %1
3340    S_NOP 0, implicit %2
3341    S_NOP 0, implicit %3
3342    S_ENDPGM 0
3343...
3344---
3345name:            test_remat_v_trig_preop_f64_e64
3346tracksRegLiveness: true
3347body:             |
3348  bb.0:
3349    ; GCN-LABEL: name: test_remat_v_trig_preop_f64_e64
3350    ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_TRIG_PREOP_F64_e64 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3351    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_TRIG_PREOP_F64_e64 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3352    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3353    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3354    ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_TRIG_PREOP_F64_e64 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3355    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3356    ; GCN-NEXT: S_ENDPGM 0
3357    %1:vreg_64_align2 = nofpexcept V_TRIG_PREOP_F64_e64 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3358    %2:vreg_64_align2 = nofpexcept V_TRIG_PREOP_F64_e64 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3359    %3:vreg_64_align2 = nofpexcept V_TRIG_PREOP_F64_e64 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3360    S_NOP 0, implicit %1
3361    S_NOP 0, implicit %2
3362    S_NOP 0, implicit %3
3363    S_ENDPGM 0
3364...
3365---
3366name:            test_remat_v_lshlrev_b64_e64
3367tracksRegLiveness: true
3368body:             |
3369  bb.0:
3370    ; GCN-LABEL: name: test_remat_v_lshlrev_b64_e64
3371    ; GCN: renamable $vgpr0_vgpr1 = V_LSHLREV_B64_e64 1, undef $vgpr0_vgpr1, implicit $exec
3372    ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_LSHLREV_B64_e64 2, undef $vgpr0_vgpr1, implicit $exec
3373    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3374    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3375    ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_LSHLREV_B64_e64 3, undef $vgpr0_vgpr1, implicit $exec
3376    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3377    ; GCN-NEXT: S_ENDPGM 0
3378    %1:vreg_64_align2 = V_LSHLREV_B64_e64 1, undef %0:vreg_64_align2, implicit $exec
3379    %2:vreg_64_align2 = V_LSHLREV_B64_e64 2, undef %0:vreg_64_align2, implicit $exec
3380    %3:vreg_64_align2 = V_LSHLREV_B64_e64 3, undef %0:vreg_64_align2, implicit $exec
3381    S_NOP 0, implicit %1
3382    S_NOP 0, implicit %2
3383    S_NOP 0, implicit %3
3384    S_ENDPGM 0
3385...
3386---
3387name:            test_remat_v_lshrrev_b64_e64
3388tracksRegLiveness: true
3389body:             |
3390  bb.0:
3391    ; GCN-LABEL: name: test_remat_v_lshrrev_b64_e64
3392    ; GCN: renamable $vgpr0_vgpr1 = V_LSHRREV_B64_e64 1, undef $vgpr0_vgpr1, implicit $exec
3393    ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 2, undef $vgpr0_vgpr1, implicit $exec
3394    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3395    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3396    ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_LSHRREV_B64_e64 3, undef $vgpr0_vgpr1, implicit $exec
3397    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3398    ; GCN-NEXT: S_ENDPGM 0
3399    %1:vreg_64_align2 = V_LSHRREV_B64_e64 1, undef %0:vreg_64_align2, implicit $exec
3400    %2:vreg_64_align2 = V_LSHRREV_B64_e64 2, undef %0:vreg_64_align2, implicit $exec
3401    %3:vreg_64_align2 = V_LSHRREV_B64_e64 3, undef %0:vreg_64_align2, implicit $exec
3402    S_NOP 0, implicit %1
3403    S_NOP 0, implicit %2
3404    S_NOP 0, implicit %3
3405    S_ENDPGM 0
3406...
3407---
3408name:            test_remat_v_ashrrev_i64_e64
3409tracksRegLiveness: true
3410body:             |
3411  bb.0:
3412    ; GCN-LABEL: name: test_remat_v_ashrrev_i64_e64
3413    ; GCN: renamable $vgpr0_vgpr1 = V_ASHRREV_I64_e64 1, undef $vgpr0_vgpr1, implicit $exec
3414    ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_ASHRREV_I64_e64 2, undef $vgpr0_vgpr1, implicit $exec
3415    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3416    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3417    ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_ASHRREV_I64_e64 3, undef $vgpr0_vgpr1, implicit $exec
3418    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3419    ; GCN-NEXT: S_ENDPGM 0
3420    %1:vreg_64_align2 = V_ASHRREV_I64_e64 1, undef %0:vreg_64_align2, implicit $exec
3421    %2:vreg_64_align2 = V_ASHRREV_I64_e64 2, undef %0:vreg_64_align2, implicit $exec
3422    %3:vreg_64_align2 = V_ASHRREV_I64_e64 3, undef %0:vreg_64_align2, implicit $exec
3423    S_NOP 0, implicit %1
3424    S_NOP 0, implicit %2
3425    S_NOP 0, implicit %3
3426    S_ENDPGM 0
3427...
3428---
3429name:            test_remat_v_perm_b32_e64
3430tracksRegLiveness: true
3431body:             |
3432  bb.0:
3433    ; GCN-LABEL: name: test_remat_v_perm_b32_e64
3434    ; GCN: renamable $vgpr0 = V_PERM_B32_e64 1, 1, undef $vgpr0, implicit $exec
3435    ; GCN-NEXT: renamable $vgpr1 = V_PERM_B32_e64 2, 2, undef $vgpr0, implicit $exec
3436    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3437    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3438    ; GCN-NEXT: renamable $vgpr0 = V_PERM_B32_e64 3, 3, undef $vgpr0, implicit $exec
3439    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3440    ; GCN-NEXT: S_ENDPGM 0
3441    %1:vgpr_32 = V_PERM_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3442    %2:vgpr_32 = V_PERM_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3443    %3:vgpr_32 = V_PERM_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3444    S_NOP 0, implicit %1
3445    S_NOP 0, implicit %2
3446    S_NOP 0, implicit %3
3447    S_ENDPGM 0
3448...
3449---
3450name:            test_remat_v_add3_u32_e64
3451tracksRegLiveness: true
3452body:             |
3453  bb.0:
3454    ; GCN-LABEL: name: test_remat_v_add3_u32_e64
3455    ; GCN: renamable $vgpr0 = V_ADD3_U32_e64 1, 1, undef $vgpr0, implicit $exec
3456    ; GCN-NEXT: renamable $vgpr1 = V_ADD3_U32_e64 2, 2, undef $vgpr0, implicit $exec
3457    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3458    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3459    ; GCN-NEXT: renamable $vgpr0 = V_ADD3_U32_e64 3, 3, undef $vgpr0, implicit $exec
3460    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3461    ; GCN-NEXT: S_ENDPGM 0
3462    %1:vgpr_32 = V_ADD3_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3463    %2:vgpr_32 = V_ADD3_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3464    %3:vgpr_32 = V_ADD3_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3465    S_NOP 0, implicit %1
3466    S_NOP 0, implicit %2
3467    S_NOP 0, implicit %3
3468    S_ENDPGM 0
3469...
3470---
3471name:            test_remat_v_and_or_b32_e64
3472tracksRegLiveness: true
3473body:             |
3474  bb.0:
3475    ; GCN-LABEL: name: test_remat_v_and_or_b32_e64
3476    ; GCN: renamable $vgpr0 = V_AND_OR_B32_e64 1, 1, undef $vgpr0, implicit $exec
3477    ; GCN-NEXT: renamable $vgpr1 = V_AND_OR_B32_e64 2, 2, undef $vgpr0, implicit $exec
3478    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3479    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3480    ; GCN-NEXT: renamable $vgpr0 = V_AND_OR_B32_e64 3, 3, undef $vgpr0, implicit $exec
3481    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3482    ; GCN-NEXT: S_ENDPGM 0
3483    %1:vgpr_32 = V_AND_OR_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3484    %2:vgpr_32 = V_AND_OR_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3485    %3:vgpr_32 = V_AND_OR_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3486    S_NOP 0, implicit %1
3487    S_NOP 0, implicit %2
3488    S_NOP 0, implicit %3
3489    S_ENDPGM 0
3490...
3491---
3492name:            test_remat_v_or3_b32_e64
3493tracksRegLiveness: true
3494body:             |
3495  bb.0:
3496    ; GCN-LABEL: name: test_remat_v_or3_b32_e64
3497    ; GCN: renamable $vgpr0 = V_OR3_B32_e64 1, 1, undef $vgpr0, implicit $exec
3498    ; GCN-NEXT: renamable $vgpr1 = V_OR3_B32_e64 2, 2, undef $vgpr0, implicit $exec
3499    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3500    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3501    ; GCN-NEXT: renamable $vgpr0 = V_OR3_B32_e64 3, 3, undef $vgpr0, implicit $exec
3502    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3503    ; GCN-NEXT: S_ENDPGM 0
3504    %1:vgpr_32 = V_OR3_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3505    %2:vgpr_32 = V_OR3_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3506    %3:vgpr_32 = V_OR3_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3507    S_NOP 0, implicit %1
3508    S_NOP 0, implicit %2
3509    S_NOP 0, implicit %3
3510    S_ENDPGM 0
3511...
3512---
3513name:            test_remat_v_xad_u32_e64
3514tracksRegLiveness: true
3515body:             |
3516  bb.0:
3517    ; GCN-LABEL: name: test_remat_v_xad_u32_e64
3518    ; GCN: renamable $vgpr0 = V_XAD_U32_e64 1, 1, undef $vgpr0, implicit $exec
3519    ; GCN-NEXT: renamable $vgpr1 = V_XAD_U32_e64 2, 2, undef $vgpr0, implicit $exec
3520    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3521    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3522    ; GCN-NEXT: renamable $vgpr0 = V_XAD_U32_e64 3, 3, undef $vgpr0, implicit $exec
3523    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3524    ; GCN-NEXT: S_ENDPGM 0
3525    %1:vgpr_32 = V_XAD_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3526    %2:vgpr_32 = V_XAD_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3527    %3:vgpr_32 = V_XAD_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3528    S_NOP 0, implicit %1
3529    S_NOP 0, implicit %2
3530    S_NOP 0, implicit %3
3531    S_ENDPGM 0
3532...
3533---
3534name:            test_remat_v_add_i32_e64
3535tracksRegLiveness: true
3536body:             |
3537  bb.0:
3538    ; GCN-LABEL: name: test_remat_v_add_i32_e64
3539    ; GCN: renamable $vgpr0 = V_ADD_I32_e64 1, undef $vgpr0, 0, implicit $exec
3540    ; GCN-NEXT: renamable $vgpr1 = V_ADD_I32_e64 2, undef $vgpr0, 0, implicit $exec
3541    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3542    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3543    ; GCN-NEXT: renamable $vgpr0 = V_ADD_I32_e64 3, undef $vgpr0, 0, implicit $exec
3544    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3545    ; GCN-NEXT: S_ENDPGM 0
3546    %1:vgpr_32 = V_ADD_I32_e64 1, undef %0:vgpr_32, 0, implicit $exec
3547    %2:vgpr_32 = V_ADD_I32_e64 2, undef %0:vgpr_32, 0, implicit $exec
3548    %3:vgpr_32 = V_ADD_I32_e64 3, undef %0:vgpr_32, 0, implicit $exec
3549    S_NOP 0, implicit %1
3550    S_NOP 0, implicit %2
3551    S_NOP 0, implicit %3
3552    S_ENDPGM 0
3553...
3554---
3555name:            test_remat_v_add_lshl_u32_e64
3556tracksRegLiveness: true
3557body:             |
3558  bb.0:
3559    ; GCN-LABEL: name: test_remat_v_add_lshl_u32_e64
3560    ; GCN: renamable $vgpr0 = V_ADD_LSHL_U32_e64 1, 1, undef $vgpr0, implicit $exec
3561    ; GCN-NEXT: renamable $vgpr1 = V_ADD_LSHL_U32_e64 2, 2, undef $vgpr0, implicit $exec
3562    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3563    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3564    ; GCN-NEXT: renamable $vgpr0 = V_ADD_LSHL_U32_e64 3, 3, undef $vgpr0, implicit $exec
3565    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3566    ; GCN-NEXT: S_ENDPGM 0
3567    %1:vgpr_32 = V_ADD_LSHL_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3568    %2:vgpr_32 = V_ADD_LSHL_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3569    %3:vgpr_32 = V_ADD_LSHL_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3570    S_NOP 0, implicit %1
3571    S_NOP 0, implicit %2
3572    S_NOP 0, implicit %3
3573    S_ENDPGM 0
3574...
3575---
3576name:            test_remat_v_sub_i32_e64
3577tracksRegLiveness: true
3578body:             |
3579  bb.0:
3580    ; GCN-LABEL: name: test_remat_v_sub_i32_e64
3581    ; GCN: renamable $vgpr0 = V_SUB_I32_e64 1, undef $vgpr0, 0, implicit $exec
3582    ; GCN-NEXT: renamable $vgpr1 = V_SUB_I32_e64 2, undef $vgpr0, 0, implicit $exec
3583    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3584    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3585    ; GCN-NEXT: renamable $vgpr0 = V_SUB_I32_e64 3, undef $vgpr0, 0, implicit $exec
3586    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3587    ; GCN-NEXT: S_ENDPGM 0
3588    %1:vgpr_32 = V_SUB_I32_e64 1, undef %0:vgpr_32, 0, implicit $exec
3589    %2:vgpr_32 = V_SUB_I32_e64 2, undef %0:vgpr_32, 0, implicit $exec
3590    %3:vgpr_32 = V_SUB_I32_e64 3, undef %0:vgpr_32, 0, implicit $exec
3591    S_NOP 0, implicit %1
3592    S_NOP 0, implicit %2
3593    S_NOP 0, implicit %3
3594    S_ENDPGM 0
3595...
3596---
3597name:            test_remat_v_lshl_add_u32_e64
3598tracksRegLiveness: true
3599body:             |
3600  bb.0:
3601    ; GCN-LABEL: name: test_remat_v_lshl_add_u32_e64
3602    ; GCN: renamable $vgpr0 = V_LSHL_ADD_U32_e64 1, 1, undef $vgpr0, implicit $exec
3603    ; GCN-NEXT: renamable $vgpr1 = V_LSHL_ADD_U32_e64 2, 2, undef $vgpr0, implicit $exec
3604    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3605    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3606    ; GCN-NEXT: renamable $vgpr0 = V_LSHL_ADD_U32_e64 3, 3, undef $vgpr0, implicit $exec
3607    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3608    ; GCN-NEXT: S_ENDPGM 0
3609    %1:vgpr_32 = V_LSHL_ADD_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3610    %2:vgpr_32 = V_LSHL_ADD_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3611    %3:vgpr_32 = V_LSHL_ADD_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3612    S_NOP 0, implicit %1
3613    S_NOP 0, implicit %2
3614    S_NOP 0, implicit %3
3615    S_ENDPGM 0
3616...
3617---
3618name:            test_remat_v_lshl_or_b32_e64
3619tracksRegLiveness: true
3620body:             |
3621  bb.0:
3622    ; GCN-LABEL: name: test_remat_v_lshl_or_b32_e64
3623    ; GCN: renamable $vgpr0 = V_LSHL_OR_B32_e64 1, 1, undef $vgpr0, implicit $exec
3624    ; GCN-NEXT: renamable $vgpr1 = V_LSHL_OR_B32_e64 2, 2, undef $vgpr0, implicit $exec
3625    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3626    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3627    ; GCN-NEXT: renamable $vgpr0 = V_LSHL_OR_B32_e64 3, 3, undef $vgpr0, implicit $exec
3628    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3629    ; GCN-NEXT: S_ENDPGM 0
3630    %1:vgpr_32 = V_LSHL_OR_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3631    %2:vgpr_32 = V_LSHL_OR_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3632    %3:vgpr_32 = V_LSHL_OR_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3633    S_NOP 0, implicit %1
3634    S_NOP 0, implicit %2
3635    S_NOP 0, implicit %3
3636    S_ENDPGM 0
3637...
3638
3639---
3640name:            test_remat_v_lshlrev_b16_e32
3641tracksRegLiveness: true
3642body:             |
3643  bb.0:
3644    liveins: $vgpr0
3645    ; GCN-LABEL: name: test_remat_v_lshlrev_b16_e32
3646    ; GCN: liveins: $vgpr0
3647    ; GCN-NEXT: {{  $}}
3648    ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B16_e32 1, $vgpr0, implicit $exec
3649    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3650    ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B16_e32 2, $vgpr0, implicit $exec
3651    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3652    ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B16_e32 3, $vgpr0, implicit $exec
3653    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3654    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3655    %0:vgpr_32 = COPY $vgpr0
3656    %1:vgpr_32 = V_LSHLREV_B16_e32 1, %0:vgpr_32, implicit $exec
3657    %2:vgpr_32 = V_LSHLREV_B16_e32 2, %0:vgpr_32, implicit $exec
3658    %3:vgpr_32 = V_LSHLREV_B16_e32 3, %0:vgpr_32, implicit $exec
3659    S_NOP 0, implicit %1
3660    S_NOP 0, implicit %2
3661    S_NOP 0, implicit %3
3662    S_ENDPGM 0, implicit %0
3663...
3664---
3665name:            test_remat_v_lshlrev_b16_e64
3666tracksRegLiveness: true
3667body:             |
3668  bb.0:
3669    liveins: $vgpr0
3670    ; GCN-LABEL: name: test_remat_v_lshlrev_b16_e64
3671    ; GCN: liveins: $vgpr0
3672    ; GCN-NEXT: {{  $}}
3673    ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B16_e64 1, $vgpr0, implicit $exec
3674    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3675    ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B16_e64 2, $vgpr0, implicit $exec
3676    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3677    ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B16_e64 3, $vgpr0, implicit $exec
3678    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3679    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3680    %0:vgpr_32 = COPY $vgpr0
3681    %1:vgpr_32 = V_LSHLREV_B16_e64 1, %0:vgpr_32, implicit $exec
3682    %2:vgpr_32 = V_LSHLREV_B16_e64 2, %0:vgpr_32, implicit $exec
3683    %3:vgpr_32 = V_LSHLREV_B16_e64 3, %0:vgpr_32, implicit $exec
3684    S_NOP 0, implicit %1
3685    S_NOP 0, implicit %2
3686    S_NOP 0, implicit %3
3687    S_ENDPGM 0, implicit %0
3688...
3689
3690---
3691name:            test_remat_v_lshrrev_b16_e32
3692tracksRegLiveness: true
3693body:             |
3694  bb.0:
3695    liveins: $vgpr0
3696    ; GCN-LABEL: name: test_remat_v_lshrrev_b16_e32
3697    ; GCN: liveins: $vgpr0
3698    ; GCN-NEXT: {{  $}}
3699    ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B16_e32 1, $vgpr0, implicit $exec
3700    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3701    ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B16_e32 2, $vgpr0, implicit $exec
3702    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3703    ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B16_e32 3, $vgpr0, implicit $exec
3704    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3705    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3706    %0:vgpr_32 = COPY $vgpr0
3707    %1:vgpr_32 = V_LSHRREV_B16_e32 1, %0:vgpr_32, implicit $exec
3708    %2:vgpr_32 = V_LSHRREV_B16_e32 2, %0:vgpr_32, implicit $exec
3709    %3:vgpr_32 = V_LSHRREV_B16_e32 3, %0:vgpr_32, implicit $exec
3710    S_NOP 0, implicit %1
3711    S_NOP 0, implicit %2
3712    S_NOP 0, implicit %3
3713    S_ENDPGM 0, implicit %0
3714...
3715---
3716name:            test_remat_v_lshrrev_b16_e64
3717tracksRegLiveness: true
3718body:             |
3719  bb.0:
3720    liveins: $vgpr0
3721    ; GCN-LABEL: name: test_remat_v_lshrrev_b16_e64
3722    ; GCN: liveins: $vgpr0
3723    ; GCN-NEXT: {{  $}}
3724    ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B16_e64 1, $vgpr0, implicit $exec
3725    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3726    ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B16_e64 2, $vgpr0, implicit $exec
3727    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3728    ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B16_e64 3, $vgpr0, implicit $exec
3729    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3730    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3731    %0:vgpr_32 = COPY $vgpr0
3732    %1:vgpr_32 = V_LSHRREV_B16_e64 1, %0:vgpr_32, implicit $exec
3733    %2:vgpr_32 = V_LSHRREV_B16_e64 2, %0:vgpr_32, implicit $exec
3734    %3:vgpr_32 = V_LSHRREV_B16_e64 3, %0:vgpr_32, implicit $exec
3735    S_NOP 0, implicit %1
3736    S_NOP 0, implicit %2
3737    S_NOP 0, implicit %3
3738    S_ENDPGM 0, implicit %0
3739...
3740
3741---
3742name:            test_remat_v_ashrrev_i16_e32
3743tracksRegLiveness: true
3744body:             |
3745  bb.0:
3746    liveins: $vgpr0
3747    ; GCN-LABEL: name: test_remat_v_ashrrev_i16_e32
3748    ; GCN: liveins: $vgpr0
3749    ; GCN-NEXT: {{  $}}
3750    ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I16_e32 1, $vgpr0, implicit $exec
3751    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3752    ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I16_e32 2, $vgpr0, implicit $exec
3753    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3754    ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I16_e32 3, $vgpr0, implicit $exec
3755    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3756    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3757    %0:vgpr_32 = COPY $vgpr0
3758    %1:vgpr_32 = V_ASHRREV_I16_e32 1, %0:vgpr_32, implicit $exec
3759    %2:vgpr_32 = V_ASHRREV_I16_e32 2, %0:vgpr_32, implicit $exec
3760    %3:vgpr_32 = V_ASHRREV_I16_e32 3, %0:vgpr_32, implicit $exec
3761    S_NOP 0, implicit %1
3762    S_NOP 0, implicit %2
3763    S_NOP 0, implicit %3
3764    S_ENDPGM 0, implicit %0
3765...
3766---
3767name:            test_remat_v_ashrrev_i16_e64
3768tracksRegLiveness: true
3769body:             |
3770  bb.0:
3771    liveins: $vgpr0
3772    ; GCN-LABEL: name: test_remat_v_ashrrev_i16_e64
3773    ; GCN: liveins: $vgpr0
3774    ; GCN-NEXT: {{  $}}
3775    ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I16_e64 1, $vgpr0, implicit $exec
3776    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3777    ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I16_e64 2, $vgpr0, implicit $exec
3778    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3779    ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I16_e64 3, $vgpr0, implicit $exec
3780    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3781    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3782    %0:vgpr_32 = COPY $vgpr0
3783    %1:vgpr_32 = V_ASHRREV_I16_e64 1, %0:vgpr_32, implicit $exec
3784    %2:vgpr_32 = V_ASHRREV_I16_e64 2, %0:vgpr_32, implicit $exec
3785    %3:vgpr_32 = V_ASHRREV_I16_e64 3, %0:vgpr_32, implicit $exec
3786    S_NOP 0, implicit %1
3787    S_NOP 0, implicit %2
3788    S_NOP 0, implicit %3
3789    S_ENDPGM 0, implicit %0
3790...
3791
3792---
3793name:            test_remat_v_add_u16_e32
3794tracksRegLiveness: true
3795body:             |
3796  bb.0:
3797    liveins: $vgpr0
3798    ; GCN-LABEL: name: test_remat_v_add_u16_e32
3799    ; GCN: liveins: $vgpr0
3800    ; GCN-NEXT: {{  $}}
3801    ; GCN-NEXT: renamable $vgpr1 = V_ADD_U16_e32 1, $vgpr0, implicit $exec
3802    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3803    ; GCN-NEXT: renamable $vgpr1 = V_ADD_U16_e32 2, $vgpr0, implicit $exec
3804    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3805    ; GCN-NEXT: renamable $vgpr1 = V_ADD_U16_e32 3, $vgpr0, implicit $exec
3806    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3807    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3808    %0:vgpr_32 = COPY $vgpr0
3809    %1:vgpr_32 = V_ADD_U16_e32 1, %0:vgpr_32, implicit $exec
3810    %2:vgpr_32 = V_ADD_U16_e32 2, %0:vgpr_32, implicit $exec
3811    %3:vgpr_32 = V_ADD_U16_e32 3, %0:vgpr_32, implicit $exec
3812    S_NOP 0, implicit %1
3813    S_NOP 0, implicit %2
3814    S_NOP 0, implicit %3
3815    S_ENDPGM 0, implicit %0
3816...
3817
3818---
3819name:            test_remat_v_add_u16_e64
3820tracksRegLiveness: true
3821body:             |
3822  bb.0:
3823    liveins: $vgpr0
3824    ; GCN-LABEL: name: test_remat_v_add_u16_e64
3825    ; GCN: liveins: $vgpr0
3826    ; GCN-NEXT: {{  $}}
3827    ; GCN-NEXT: renamable $vgpr1 = V_ADD_U16_e64 1, $vgpr0, 0, implicit $exec
3828    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3829    ; GCN-NEXT: renamable $vgpr1 = V_ADD_U16_e64 2, $vgpr0, 0, implicit $exec
3830    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3831    ; GCN-NEXT: renamable $vgpr1 = V_ADD_U16_e64 3, $vgpr0, 0, implicit $exec
3832    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3833    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3834    %0:vgpr_32 = COPY $vgpr0
3835    %1:vgpr_32 = V_ADD_U16_e64 1, %0:vgpr_32, 0, implicit $exec
3836    %2:vgpr_32 = V_ADD_U16_e64 2, %0:vgpr_32, 0, implicit $exec
3837    %3:vgpr_32 = V_ADD_U16_e64 3, %0:vgpr_32, 0, implicit $exec
3838    S_NOP 0, implicit %1
3839    S_NOP 0, implicit %2
3840    S_NOP 0, implicit %3
3841    S_ENDPGM 0, implicit %0
3842...
3843
3844---
3845name:            test_remat_v_sub_u16_e32
3846tracksRegLiveness: true
3847body:             |
3848  bb.0:
3849    liveins: $vgpr0
3850    ; GCN-LABEL: name: test_remat_v_sub_u16_e32
3851    ; GCN: liveins: $vgpr0
3852    ; GCN-NEXT: {{  $}}
3853    ; GCN-NEXT: renamable $vgpr1 = V_SUB_U16_e32 1, $vgpr0, implicit $exec
3854    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3855    ; GCN-NEXT: renamable $vgpr1 = V_SUB_U16_e32 2, $vgpr0, implicit $exec
3856    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3857    ; GCN-NEXT: renamable $vgpr1 = V_SUB_U16_e32 3, $vgpr0, implicit $exec
3858    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3859    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3860    %0:vgpr_32 = COPY $vgpr0
3861    %1:vgpr_32 = V_SUB_U16_e32 1, %0:vgpr_32, implicit $exec
3862    %2:vgpr_32 = V_SUB_U16_e32 2, %0:vgpr_32, implicit $exec
3863    %3:vgpr_32 = V_SUB_U16_e32 3, %0:vgpr_32, implicit $exec
3864    S_NOP 0, implicit %1
3865    S_NOP 0, implicit %2
3866    S_NOP 0, implicit %3
3867    S_ENDPGM 0, implicit %0
3868...
3869
3870---
3871name:            test_remat_v_sub_u16_e64
3872tracksRegLiveness: true
3873body:             |
3874  bb.0:
3875    liveins: $vgpr0
3876    ; GCN-LABEL: name: test_remat_v_sub_u16_e64
3877    ; GCN: liveins: $vgpr0
3878    ; GCN-NEXT: {{  $}}
3879    ; GCN-NEXT: renamable $vgpr1 = V_SUB_U16_e64 1, $vgpr0, 0, implicit $exec
3880    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3881    ; GCN-NEXT: renamable $vgpr1 = V_SUB_U16_e64 2, $vgpr0, 0, implicit $exec
3882    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3883    ; GCN-NEXT: renamable $vgpr1 = V_SUB_U16_e64 3, $vgpr0, 0, implicit $exec
3884    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3885    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3886    %0:vgpr_32 = COPY $vgpr0
3887    %1:vgpr_32 = V_SUB_U16_e64 1, %0:vgpr_32, 0, implicit $exec
3888    %2:vgpr_32 = V_SUB_U16_e64 2, %0:vgpr_32, 0, implicit $exec
3889    %3:vgpr_32 = V_SUB_U16_e64 3, %0:vgpr_32, 0, implicit $exec
3890    S_NOP 0, implicit %1
3891    S_NOP 0, implicit %2
3892    S_NOP 0, implicit %3
3893    S_ENDPGM 0, implicit %0
3894...
3895
3896---
3897name:            test_remat_v_subrev_u16_e32
3898tracksRegLiveness: true
3899body:             |
3900  bb.0:
3901    liveins: $vgpr0
3902    ; GCN-LABEL: name: test_remat_v_subrev_u16_e32
3903    ; GCN: liveins: $vgpr0
3904    ; GCN-NEXT: {{  $}}
3905    ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U16_e32 1, $vgpr0, implicit $exec
3906    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3907    ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U16_e32 2, $vgpr0, implicit $exec
3908    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3909    ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U16_e32 3, $vgpr0, implicit $exec
3910    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3911    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3912    %0:vgpr_32 = COPY $vgpr0
3913    %1:vgpr_32 = V_SUBREV_U16_e32 1, %0:vgpr_32, implicit $exec
3914    %2:vgpr_32 = V_SUBREV_U16_e32 2, %0:vgpr_32, implicit $exec
3915    %3:vgpr_32 = V_SUBREV_U16_e32 3, %0:vgpr_32, implicit $exec
3916    S_NOP 0, implicit %1
3917    S_NOP 0, implicit %2
3918    S_NOP 0, implicit %3
3919    S_ENDPGM 0, implicit %0
3920...
3921
3922---
3923name:            test_remat_v_subrev_u16_e64
3924tracksRegLiveness: true
3925body:             |
3926  bb.0:
3927    liveins: $vgpr0
3928    ; GCN-LABEL: name: test_remat_v_subrev_u16_e64
3929    ; GCN: liveins: $vgpr0
3930    ; GCN-NEXT: {{  $}}
3931    ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U16_e64 1, $vgpr0, 0, implicit $exec
3932    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3933    ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U16_e64 2, $vgpr0, 0, implicit $exec
3934    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3935    ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U16_e64 3, $vgpr0, 0, implicit $exec
3936    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3937    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3938    %0:vgpr_32 = COPY $vgpr0
3939    %1:vgpr_32 = V_SUBREV_U16_e64 1, %0:vgpr_32, 0, implicit $exec
3940    %2:vgpr_32 = V_SUBREV_U16_e64 2, %0:vgpr_32, 0, implicit $exec
3941    %3:vgpr_32 = V_SUBREV_U16_e64 3, %0:vgpr_32, 0, implicit $exec
3942    S_NOP 0, implicit %1
3943    S_NOP 0, implicit %2
3944    S_NOP 0, implicit %3
3945    S_ENDPGM 0, implicit %0
3946...
3947
3948---
3949name:            test_remat_v_min_u16_e32
3950tracksRegLiveness: true
3951body:             |
3952  bb.0:
3953    liveins: $vgpr0
3954    ; GCN-LABEL: name: test_remat_v_min_u16_e32
3955    ; GCN: liveins: $vgpr0
3956    ; GCN-NEXT: {{  $}}
3957    ; GCN-NEXT: renamable $vgpr1 = V_MIN_U16_e32 1, $vgpr0, implicit $exec
3958    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3959    ; GCN-NEXT: renamable $vgpr1 = V_MIN_U16_e32 2, $vgpr0, implicit $exec
3960    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3961    ; GCN-NEXT: renamable $vgpr1 = V_MIN_U16_e32 3, $vgpr0, implicit $exec
3962    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3963    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3964    %0:vgpr_32 = COPY $vgpr0
3965    %1:vgpr_32 = V_MIN_U16_e32 1, %0:vgpr_32, implicit $exec
3966    %2:vgpr_32 = V_MIN_U16_e32 2, %0:vgpr_32, implicit $exec
3967    %3:vgpr_32 = V_MIN_U16_e32 3, %0:vgpr_32, implicit $exec
3968    S_NOP 0, implicit %1
3969    S_NOP 0, implicit %2
3970    S_NOP 0, implicit %3
3971    S_ENDPGM 0, implicit %0
3972...
3973
3974---
3975name:            test_remat_v_min_u16_e64
3976tracksRegLiveness: true
3977body:             |
3978  bb.0:
3979    liveins: $vgpr0
3980    ; GCN-LABEL: name: test_remat_v_min_u16_e64
3981    ; GCN: liveins: $vgpr0
3982    ; GCN-NEXT: {{  $}}
3983    ; GCN-NEXT: renamable $vgpr1 = V_MIN_U16_e64 1, $vgpr0, implicit $exec
3984    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3985    ; GCN-NEXT: renamable $vgpr1 = V_MIN_U16_e64 2, $vgpr0, implicit $exec
3986    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3987    ; GCN-NEXT: renamable $vgpr1 = V_MIN_U16_e64 3, $vgpr0, implicit $exec
3988    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3989    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3990    %0:vgpr_32 = COPY $vgpr0
3991    %1:vgpr_32 = V_MIN_U16_e64 1, %0:vgpr_32, implicit $exec
3992    %2:vgpr_32 = V_MIN_U16_e64 2, %0:vgpr_32, implicit $exec
3993    %3:vgpr_32 = V_MIN_U16_e64 3, %0:vgpr_32, implicit $exec
3994    S_NOP 0, implicit %1
3995    S_NOP 0, implicit %2
3996    S_NOP 0, implicit %3
3997    S_ENDPGM 0, implicit %0
3998...
3999
4000---
4001name:            test_remat_v_max_u16_e32
4002tracksRegLiveness: true
4003body:             |
4004  bb.0:
4005    liveins: $vgpr0
4006    ; GCN-LABEL: name: test_remat_v_max_u16_e32
4007    ; GCN: liveins: $vgpr0
4008    ; GCN-NEXT: {{  $}}
4009    ; GCN-NEXT: renamable $vgpr1 = V_MAX_U16_e32 1, $vgpr0, implicit $exec
4010    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4011    ; GCN-NEXT: renamable $vgpr1 = V_MAX_U16_e32 2, $vgpr0, implicit $exec
4012    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4013    ; GCN-NEXT: renamable $vgpr1 = V_MAX_U16_e32 3, $vgpr0, implicit $exec
4014    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4015    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4016    %0:vgpr_32 = COPY $vgpr0
4017    %1:vgpr_32 = V_MAX_U16_e32 1, %0:vgpr_32, implicit $exec
4018    %2:vgpr_32 = V_MAX_U16_e32 2, %0:vgpr_32, implicit $exec
4019    %3:vgpr_32 = V_MAX_U16_e32 3, %0:vgpr_32, implicit $exec
4020    S_NOP 0, implicit %1
4021    S_NOP 0, implicit %2
4022    S_NOP 0, implicit %3
4023    S_ENDPGM 0, implicit %0
4024...
4025
4026---
4027name:            test_remat_v_max_u16_e64
4028tracksRegLiveness: true
4029body:             |
4030  bb.0:
4031    liveins: $vgpr0
4032    ; GCN-LABEL: name: test_remat_v_max_u16_e64
4033    ; GCN: liveins: $vgpr0
4034    ; GCN-NEXT: {{  $}}
4035    ; GCN-NEXT: renamable $vgpr1 = V_MAX_U16_e64 1, $vgpr0, implicit $exec
4036    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4037    ; GCN-NEXT: renamable $vgpr1 = V_MAX_U16_e64 2, $vgpr0, implicit $exec
4038    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4039    ; GCN-NEXT: renamable $vgpr1 = V_MAX_U16_e64 3, $vgpr0, implicit $exec
4040    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4041    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4042    %0:vgpr_32 = COPY $vgpr0
4043    %1:vgpr_32 = V_MAX_U16_e64 1, %0:vgpr_32, implicit $exec
4044    %2:vgpr_32 = V_MAX_U16_e64 2, %0:vgpr_32, implicit $exec
4045    %3:vgpr_32 = V_MAX_U16_e64 3, %0:vgpr_32, implicit $exec
4046    S_NOP 0, implicit %1
4047    S_NOP 0, implicit %2
4048    S_NOP 0, implicit %3
4049    S_ENDPGM 0, implicit %0
4050...
4051
4052---
4053name:            test_remat_v_min_i16_e32
4054tracksRegLiveness: true
4055body:             |
4056  bb.0:
4057    liveins: $vgpr0
4058    ; GCN-LABEL: name: test_remat_v_min_i16_e32
4059    ; GCN: liveins: $vgpr0
4060    ; GCN-NEXT: {{  $}}
4061    ; GCN-NEXT: renamable $vgpr1 = V_MIN_I16_e32 1, $vgpr0, implicit $exec
4062    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4063    ; GCN-NEXT: renamable $vgpr1 = V_MIN_I16_e32 2, $vgpr0, implicit $exec
4064    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4065    ; GCN-NEXT: renamable $vgpr1 = V_MIN_I16_e32 3, $vgpr0, implicit $exec
4066    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4067    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4068    %0:vgpr_32 = COPY $vgpr0
4069    %1:vgpr_32 = V_MIN_I16_e32 1, %0:vgpr_32, implicit $exec
4070    %2:vgpr_32 = V_MIN_I16_e32 2, %0:vgpr_32, implicit $exec
4071    %3:vgpr_32 = V_MIN_I16_e32 3, %0:vgpr_32, implicit $exec
4072    S_NOP 0, implicit %1
4073    S_NOP 0, implicit %2
4074    S_NOP 0, implicit %3
4075    S_ENDPGM 0, implicit %0
4076...
4077
4078---
4079name:            test_remat_v_min_i16_e64
4080tracksRegLiveness: true
4081body:             |
4082  bb.0:
4083    liveins: $vgpr0
4084    ; GCN-LABEL: name: test_remat_v_min_i16_e64
4085    ; GCN: liveins: $vgpr0
4086    ; GCN-NEXT: {{  $}}
4087    ; GCN-NEXT: renamable $vgpr1 = V_MIN_I16_e64 1, $vgpr0, implicit $exec
4088    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4089    ; GCN-NEXT: renamable $vgpr1 = V_MIN_I16_e64 2, $vgpr0, implicit $exec
4090    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4091    ; GCN-NEXT: renamable $vgpr1 = V_MIN_I16_e64 3, $vgpr0, implicit $exec
4092    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4093    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4094    %0:vgpr_32 = COPY $vgpr0
4095    %1:vgpr_32 = V_MIN_I16_e64 1, %0:vgpr_32, implicit $exec
4096    %2:vgpr_32 = V_MIN_I16_e64 2, %0:vgpr_32, implicit $exec
4097    %3:vgpr_32 = V_MIN_I16_e64 3, %0:vgpr_32, implicit $exec
4098    S_NOP 0, implicit %1
4099    S_NOP 0, implicit %2
4100    S_NOP 0, implicit %3
4101    S_ENDPGM 0, implicit %0
4102...
4103
4104---
4105name:            test_remat_v_max_i16_e32
4106tracksRegLiveness: true
4107body:             |
4108  bb.0:
4109    liveins: $vgpr0
4110    ; GCN-LABEL: name: test_remat_v_max_i16_e32
4111    ; GCN: liveins: $vgpr0
4112    ; GCN-NEXT: {{  $}}
4113    ; GCN-NEXT: renamable $vgpr1 = V_MAX_I16_e32 1, $vgpr0, implicit $exec
4114    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4115    ; GCN-NEXT: renamable $vgpr1 = V_MAX_I16_e32 2, $vgpr0, implicit $exec
4116    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4117    ; GCN-NEXT: renamable $vgpr1 = V_MAX_I16_e32 3, $vgpr0, implicit $exec
4118    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4119    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4120    %0:vgpr_32 = COPY $vgpr0
4121    %1:vgpr_32 = V_MAX_I16_e32 1, %0:vgpr_32, implicit $exec
4122    %2:vgpr_32 = V_MAX_I16_e32 2, %0:vgpr_32, implicit $exec
4123    %3:vgpr_32 = V_MAX_I16_e32 3, %0:vgpr_32, implicit $exec
4124    S_NOP 0, implicit %1
4125    S_NOP 0, implicit %2
4126    S_NOP 0, implicit %3
4127    S_ENDPGM 0, implicit %0
4128...
4129
4130---
4131name:            test_remat_v_max_i16_e64
4132tracksRegLiveness: true
4133body:             |
4134  bb.0:
4135    liveins: $vgpr0
4136    ; GCN-LABEL: name: test_remat_v_max_i16_e64
4137    ; GCN: liveins: $vgpr0
4138    ; GCN-NEXT: {{  $}}
4139    ; GCN-NEXT: renamable $vgpr1 = V_MAX_I16_e64 1, $vgpr0, implicit $exec
4140    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4141    ; GCN-NEXT: renamable $vgpr1 = V_MAX_I16_e64 2, $vgpr0, implicit $exec
4142    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4143    ; GCN-NEXT: renamable $vgpr1 = V_MAX_I16_e64 3, $vgpr0, implicit $exec
4144    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4145    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4146    %0:vgpr_32 = COPY $vgpr0
4147    %1:vgpr_32 = V_MAX_I16_e64 1, %0:vgpr_32, implicit $exec
4148    %2:vgpr_32 = V_MAX_I16_e64 2, %0:vgpr_32, implicit $exec
4149    %3:vgpr_32 = V_MAX_I16_e64 3, %0:vgpr_32, implicit $exec
4150    S_NOP 0, implicit %1
4151    S_NOP 0, implicit %2
4152    S_NOP 0, implicit %3
4153    S_ENDPGM 0, implicit %0
4154...
4155
4156---
4157name:            test_remat_v_mul_lo_u16_e32
4158tracksRegLiveness: true
4159body:             |
4160  bb.0:
4161    liveins: $vgpr0
4162    ; GCN-LABEL: name: test_remat_v_mul_lo_u16_e32
4163    ; GCN: liveins: $vgpr0
4164    ; GCN-NEXT: {{  $}}
4165    ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U16_e32 1, $vgpr0, implicit $exec
4166    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4167    ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U16_e32 2, $vgpr0, implicit $exec
4168    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4169    ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U16_e32 3, $vgpr0, implicit $exec
4170    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4171    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4172    %0:vgpr_32 = COPY $vgpr0
4173    %1:vgpr_32 = V_MUL_LO_U16_e32 1, %0:vgpr_32, implicit $exec
4174    %2:vgpr_32 = V_MUL_LO_U16_e32 2, %0:vgpr_32, implicit $exec
4175    %3:vgpr_32 = V_MUL_LO_U16_e32 3, %0:vgpr_32, implicit $exec
4176    S_NOP 0, implicit %1
4177    S_NOP 0, implicit %2
4178    S_NOP 0, implicit %3
4179    S_ENDPGM 0, implicit %0
4180...
4181
4182---
4183name:            test_remat_v_mul_lo_u16_e64
4184tracksRegLiveness: true
4185body:             |
4186  bb.0:
4187    liveins: $vgpr0
4188    ; GCN-LABEL: name: test_remat_v_mul_lo_u16_e64
4189    ; GCN: liveins: $vgpr0
4190    ; GCN-NEXT: {{  $}}
4191    ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U16_e64 1, $vgpr0, implicit $exec
4192    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4193    ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U16_e64 2, $vgpr0, implicit $exec
4194    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4195    ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U16_e64 3, $vgpr0, implicit $exec
4196    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4197    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4198    %0:vgpr_32 = COPY $vgpr0
4199    %1:vgpr_32 = V_MUL_LO_U16_e64 1, %0:vgpr_32, implicit $exec
4200    %2:vgpr_32 = V_MUL_LO_U16_e64 2, %0:vgpr_32, implicit $exec
4201    %3:vgpr_32 = V_MUL_LO_U16_e64 3, %0:vgpr_32, implicit $exec
4202    S_NOP 0, implicit %1
4203    S_NOP 0, implicit %2
4204    S_NOP 0, implicit %3
4205    S_ENDPGM 0, implicit %0
4206...
4207
4208---
4209name:            test_remat_v_add_f16_e32
4210tracksRegLiveness: true
4211body:             |
4212  bb.0:
4213    liveins: $vgpr0
4214    ; GCN-LABEL: name: test_remat_v_add_f16_e32
4215    ; GCN: liveins: $vgpr0
4216    ; GCN-NEXT: {{  $}}
4217    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4218    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4219    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F16_e32 2, $vgpr0, implicit $mode, implicit $exec
4220    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4221    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F16_e32 3, $vgpr0, implicit $mode, implicit $exec
4222    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4223    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4224    %0:vgpr_32 = COPY $vgpr0
4225    %1:vgpr_32 = nofpexcept V_ADD_F16_e32 1, %0:vgpr_32, implicit $mode, implicit $exec
4226    %2:vgpr_32 = nofpexcept V_ADD_F16_e32 2, %0:vgpr_32, implicit $mode, implicit $exec
4227    %3:vgpr_32 = nofpexcept V_ADD_F16_e32 3, %0:vgpr_32, implicit $mode, implicit $exec
4228    S_NOP 0, implicit %1
4229    S_NOP 0, implicit %2
4230    S_NOP 0, implicit %3
4231    S_ENDPGM 0, implicit %0
4232...
4233
4234---
4235name:            test_remat_v_add_f16_e64
4236tracksRegLiveness: true
4237body:             |
4238  bb.0:
4239    liveins: $vgpr0
4240    ; GCN-LABEL: name: test_remat_v_add_f16_e64
4241    ; GCN: liveins: $vgpr0
4242    ; GCN-NEXT: {{  $}}
4243    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F16_e64 0, 1, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4244    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4245    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F16_e64 0, 2, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4246    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4247    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F16_e64 0, 3, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4248    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4249    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4250    %0:vgpr_32 = COPY $vgpr0
4251    %1:vgpr_32 = nofpexcept V_ADD_F16_e64 0, 1, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4252    %2:vgpr_32 = nofpexcept V_ADD_F16_e64 0, 2, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4253    %3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, 3, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4254    S_NOP 0, implicit %1
4255    S_NOP 0, implicit %2
4256    S_NOP 0, implicit %3
4257    S_ENDPGM 0, implicit %0
4258...
4259
4260---
4261name:            test_remat_v_sub_f16_e32
4262tracksRegLiveness: true
4263body:             |
4264  bb.0:
4265    liveins: $vgpr0
4266    ; GCN-LABEL: name: test_remat_v_sub_f16_e32
4267    ; GCN: liveins: $vgpr0
4268    ; GCN-NEXT: {{  $}}
4269    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4270    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4271    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F16_e32 2, $vgpr0, implicit $mode, implicit $exec
4272    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4273    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F16_e32 3, $vgpr0, implicit $mode, implicit $exec
4274    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4275    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4276    %0:vgpr_32 = COPY $vgpr0
4277    %1:vgpr_32 = nofpexcept V_SUB_F16_e32 1, %0:vgpr_32, implicit $mode, implicit $exec
4278    %2:vgpr_32 = nofpexcept V_SUB_F16_e32 2, %0:vgpr_32, implicit $mode, implicit $exec
4279    %3:vgpr_32 = nofpexcept V_SUB_F16_e32 3, %0:vgpr_32, implicit $mode, implicit $exec
4280    S_NOP 0, implicit %1
4281    S_NOP 0, implicit %2
4282    S_NOP 0, implicit %3
4283    S_ENDPGM 0, implicit %0
4284...
4285
4286---
4287name:            test_remat_v_sub_f16_e64
4288tracksRegLiveness: true
4289body:             |
4290  bb.0:
4291    liveins: $vgpr0
4292    ; GCN-LABEL: name: test_remat_v_sub_f16_e64
4293    ; GCN: liveins: $vgpr0
4294    ; GCN-NEXT: {{  $}}
4295    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F16_e64 0, 1, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4296    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4297    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F16_e64 0, 2, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4298    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4299    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F16_e64 0, 3, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4300    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4301    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4302    %0:vgpr_32 = COPY $vgpr0
4303    %1:vgpr_32 = nofpexcept V_SUB_F16_e64 0, 1, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4304    %2:vgpr_32 = nofpexcept V_SUB_F16_e64 0, 2, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4305    %3:vgpr_32 = nofpexcept V_SUB_F16_e64 0, 3, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4306    S_NOP 0, implicit %1
4307    S_NOP 0, implicit %2
4308    S_NOP 0, implicit %3
4309    S_ENDPGM 0, implicit %0
4310...
4311
4312---
4313name:            test_remat_v_subrev_f16_e32
4314tracksRegLiveness: true
4315body:             |
4316  bb.0:
4317    liveins: $vgpr0
4318    ; GCN-LABEL: name: test_remat_v_subrev_f16_e32
4319    ; GCN: liveins: $vgpr0
4320    ; GCN-NEXT: {{  $}}
4321    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4322    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4323    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F16_e32 2, $vgpr0, implicit $mode, implicit $exec
4324    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4325    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F16_e32 3, $vgpr0, implicit $mode, implicit $exec
4326    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4327    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4328    %0:vgpr_32 = COPY $vgpr0
4329    %1:vgpr_32 = nofpexcept V_SUBREV_F16_e32 1, %0:vgpr_32, implicit $mode, implicit $exec
4330    %2:vgpr_32 = nofpexcept V_SUBREV_F16_e32 2, %0:vgpr_32, implicit $mode, implicit $exec
4331    %3:vgpr_32 = nofpexcept V_SUBREV_F16_e32 3, %0:vgpr_32, implicit $mode, implicit $exec
4332    S_NOP 0, implicit %1
4333    S_NOP 0, implicit %2
4334    S_NOP 0, implicit %3
4335    S_ENDPGM 0, implicit %0
4336...
4337
4338---
4339name:            test_remat_v_subrev_f16_e64
4340tracksRegLiveness: true
4341body:             |
4342  bb.0:
4343    liveins: $vgpr0
4344    ; GCN-LABEL: name: test_remat_v_subrev_f16_e64
4345    ; GCN: liveins: $vgpr0
4346    ; GCN-NEXT: {{  $}}
4347    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F16_e64 0, 1, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4348    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4349    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F16_e64 0, 2, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4350    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4351    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F16_e64 0, 3, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4352    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4353    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4354    %0:vgpr_32 = COPY $vgpr0
4355    %1:vgpr_32 = nofpexcept V_SUBREV_F16_e64 0, 1, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4356    %2:vgpr_32 = nofpexcept V_SUBREV_F16_e64 0, 2, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4357    %3:vgpr_32 = nofpexcept V_SUBREV_F16_e64 0, 3, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4358    S_NOP 0, implicit %1
4359    S_NOP 0, implicit %2
4360    S_NOP 0, implicit %3
4361    S_ENDPGM 0, implicit %0
4362...
4363
4364---
4365name:            test_remat_v_mul_f16_e32
4366tracksRegLiveness: true
4367body:             |
4368  bb.0:
4369    liveins: $vgpr0
4370    ; GCN-LABEL: name: test_remat_v_mul_f16_e32
4371    ; GCN: liveins: $vgpr0
4372    ; GCN-NEXT: {{  $}}
4373    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4374    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4375    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F16_e32 2, $vgpr0, implicit $mode, implicit $exec
4376    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4377    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F16_e32 3, $vgpr0, implicit $mode, implicit $exec
4378    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4379    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4380    %0:vgpr_32 = COPY $vgpr0
4381    %1:vgpr_32 = nofpexcept V_MUL_F16_e32 1, %0:vgpr_32, implicit $mode, implicit $exec
4382    %2:vgpr_32 = nofpexcept V_MUL_F16_e32 2, %0:vgpr_32, implicit $mode, implicit $exec
4383    %3:vgpr_32 = nofpexcept V_MUL_F16_e32 3, %0:vgpr_32, implicit $mode, implicit $exec
4384    S_NOP 0, implicit %1
4385    S_NOP 0, implicit %2
4386    S_NOP 0, implicit %3
4387    S_ENDPGM 0, implicit %0
4388...
4389
4390---
4391name:            test_remat_v_mul_f16_e64
4392tracksRegLiveness: true
4393body:             |
4394  bb.0:
4395    liveins: $vgpr0
4396    ; GCN-LABEL: name: test_remat_v_mul_f16_e64
4397    ; GCN: liveins: $vgpr0
4398    ; GCN-NEXT: {{  $}}
4399    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F16_e64 0, 1, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4400    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4401    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F16_e64 0, 2, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4402    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4403    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F16_e64 0, 3, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4404    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4405    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4406    %0:vgpr_32 = COPY $vgpr0
4407    %1:vgpr_32 = nofpexcept V_MUL_F16_e64 0, 1, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4408    %2:vgpr_32 = nofpexcept V_MUL_F16_e64 0, 2, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4409    %3:vgpr_32 = nofpexcept V_MUL_F16_e64 0, 3, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4410    S_NOP 0, implicit %1
4411    S_NOP 0, implicit %2
4412    S_NOP 0, implicit %3
4413    S_ENDPGM 0, implicit %0
4414...
4415
4416---
4417name:            test_remat_v_ldexp_f16_e32
4418tracksRegLiveness: true
4419body:             |
4420  bb.0:
4421    liveins: $vgpr0, $vgpr1
4422    ; GCN-LABEL: name: test_remat_v_ldexp_f16_e32
4423    ; GCN: liveins: $vgpr0, $vgpr1
4424    ; GCN-NEXT: {{  $}}
4425    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4426    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4427    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4428    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4429    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4430    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4431    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4432    %0:vgpr_32 = COPY $vgpr0
4433    %1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 1, %0, implicit $mode, implicit $exec
4434    %2:vgpr_32 = nofpexcept V_LDEXP_F16_e32 1, %0, implicit $mode, implicit $exec
4435    %3:vgpr_32 = nofpexcept V_LDEXP_F16_e32 1, %0, implicit $mode, implicit $exec
4436    S_NOP 0, implicit %1
4437    S_NOP 0, implicit %2
4438    S_NOP 0, implicit %3
4439    S_ENDPGM 0, implicit %0
4440...
4441
4442---
4443name:            test_remat_v_ldexp_f16_e64
4444tracksRegLiveness: true
4445body:             |
4446  bb.0:
4447    liveins: $vgpr0, $vgpr1
4448    ; GCN-LABEL: name: test_remat_v_ldexp_f16_e64
4449    ; GCN: liveins: $vgpr0, $vgpr1
4450    ; GCN-NEXT: {{  $}}
4451    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e64 0, $vgpr0, 0, 1, 0, 0, implicit $mode, implicit $exec
4452    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4453    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e64 0, $vgpr0, 0, 1, 0, 0, implicit $mode, implicit $exec
4454    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4455    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e64 0, $vgpr0, 0, 1, 0, 0, implicit $mode, implicit $exec
4456    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4457    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4458    %0:vgpr_32 = COPY $vgpr0
4459    %1:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, %0, 0, 1, 0, 0, implicit $mode, implicit $exec
4460    %2:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, %0, 0, 1, 0, 0, implicit $mode, implicit $exec
4461    %3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, %0, 0, 1, 0, 0, implicit $mode, implicit $exec
4462    S_NOP 0, implicit %1
4463    S_NOP 0, implicit %2
4464    S_NOP 0, implicit %3
4465    S_ENDPGM 0, implicit %0
4466...
4467
4468---
4469name:            test_remat_v_min_f16_e32
4470tracksRegLiveness: true
4471body:             |
4472  bb.0:
4473    liveins: $vgpr0
4474    ; GCN-LABEL: name: test_remat_v_min_f16_e32
4475    ; GCN: liveins: $vgpr0
4476    ; GCN-NEXT: {{  $}}
4477    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4478    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4479    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F16_e32 2, $vgpr0, implicit $mode, implicit $exec
4480    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4481    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F16_e32 3, $vgpr0, implicit $mode, implicit $exec
4482    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4483    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4484    %0:vgpr_32 = COPY $vgpr0
4485    %1:vgpr_32 = nofpexcept V_MIN_F16_e32 1, %0:vgpr_32, implicit $mode, implicit $exec
4486    %2:vgpr_32 = nofpexcept V_MIN_F16_e32 2, %0:vgpr_32, implicit $mode, implicit $exec
4487    %3:vgpr_32 = nofpexcept V_MIN_F16_e32 3, %0:vgpr_32, implicit $mode, implicit $exec
4488    S_NOP 0, implicit %1
4489    S_NOP 0, implicit %2
4490    S_NOP 0, implicit %3
4491    S_ENDPGM 0, implicit %0
4492...
4493
4494---
4495name:            test_remat_v_min_f16_e64
4496tracksRegLiveness: true
4497body:             |
4498  bb.0:
4499    liveins: $vgpr0
4500    ; GCN-LABEL: name: test_remat_v_min_f16_e64
4501    ; GCN: liveins: $vgpr0
4502    ; GCN-NEXT: {{  $}}
4503    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F16_e64 0, 1, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4504    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4505    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F16_e64 0, 2, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4506    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4507    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F16_e64 0, 3, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4508    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4509    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4510    %0:vgpr_32 = COPY $vgpr0
4511    %1:vgpr_32 = nofpexcept V_MIN_F16_e64 0, 1, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4512    %2:vgpr_32 = nofpexcept V_MIN_F16_e64 0, 2, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4513    %3:vgpr_32 = nofpexcept V_MIN_F16_e64 0, 3, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4514    S_NOP 0, implicit %1
4515    S_NOP 0, implicit %2
4516    S_NOP 0, implicit %3
4517    S_ENDPGM 0, implicit %0
4518...
4519
4520---
4521name:            test_remat_v_max_f16_e32
4522tracksRegLiveness: true
4523body:             |
4524  bb.0:
4525    liveins: $vgpr0
4526    ; GCN-LABEL: name: test_remat_v_max_f16_e32
4527    ; GCN: liveins: $vgpr0
4528    ; GCN-NEXT: {{  $}}
4529    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4530    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4531    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F16_e32 2, $vgpr0, implicit $mode, implicit $exec
4532    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4533    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F16_e32 3, $vgpr0, implicit $mode, implicit $exec
4534    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4535    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4536    %0:vgpr_32 = COPY $vgpr0
4537    %1:vgpr_32 = nofpexcept V_MAX_F16_e32 1, %0:vgpr_32, implicit $mode, implicit $exec
4538    %2:vgpr_32 = nofpexcept V_MAX_F16_e32 2, %0:vgpr_32, implicit $mode, implicit $exec
4539    %3:vgpr_32 = nofpexcept V_MAX_F16_e32 3, %0:vgpr_32, implicit $mode, implicit $exec
4540    S_NOP 0, implicit %1
4541    S_NOP 0, implicit %2
4542    S_NOP 0, implicit %3
4543    S_ENDPGM 0, implicit %0
4544...
4545
4546---
4547name:            test_remat_v_max_f16_e64
4548tracksRegLiveness: true
4549body:             |
4550  bb.0:
4551    liveins: $vgpr0
4552    ; GCN-LABEL: name: test_remat_v_max_f16_e64
4553    ; GCN: liveins: $vgpr0
4554    ; GCN-NEXT: {{  $}}
4555    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F16_e64 0, 1, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4556    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4557    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F16_e64 0, 2, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4558    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4559    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F16_e64 0, 3, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4560    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4561    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4562    %0:vgpr_32 = COPY $vgpr0
4563    %1:vgpr_32 = nofpexcept V_MAX_F16_e64 0, 1, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4564    %2:vgpr_32 = nofpexcept V_MAX_F16_e64 0, 2, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4565    %3:vgpr_32 = nofpexcept V_MAX_F16_e64 0, 3, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4566    S_NOP 0, implicit %1
4567    S_NOP 0, implicit %2
4568    S_NOP 0, implicit %3
4569    S_ENDPGM 0, implicit %0
4570...
4571
4572---
4573name:            test_remat_v_madak_f16
4574tracksRegLiveness: true
4575body:             |
4576  bb.0:
4577    liveins: $vgpr0
4578    ; GCN-LABEL: name: test_remat_v_madak_f16
4579    ; GCN: liveins: $vgpr0
4580    ; GCN-NEXT: {{  $}}
4581    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADAK_F16 1, $vgpr0, 1, implicit $exec, implicit $mode
4582    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4583    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADAK_F16 2, $vgpr0, 2, implicit $exec, implicit $mode
4584    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4585    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADAK_F16 3, $vgpr0, 3, implicit $exec, implicit $mode
4586    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4587    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4588    %0:vgpr_32 = COPY $vgpr0
4589    %1:vgpr_32 = nofpexcept V_MADAK_F16 1, %0, 1, implicit $exec, implicit $mode
4590    %2:vgpr_32 = nofpexcept V_MADAK_F16 2, %0, 2, implicit $exec, implicit $mode
4591    %3:vgpr_32 = nofpexcept V_MADAK_F16 3, %0, 3, implicit $exec, implicit $mode
4592    S_NOP 0, implicit %1
4593    S_NOP 0, implicit %2
4594    S_NOP 0, implicit %3
4595    S_ENDPGM 0, implicit %0
4596...
4597
4598---
4599name:            test_remat_v_madmk_f16
4600tracksRegLiveness: true
4601body:             |
4602  bb.0:
4603    liveins: $vgpr0, $vgpr1
4604    ; GCN-LABEL: name: test_remat_v_madmk_f16
4605    ; GCN: liveins: $vgpr0, $vgpr1
4606    ; GCN-NEXT: {{  $}}
4607    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADMK_F16 1, 1, $vgpr0, implicit $exec, implicit $mode
4608    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4609    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADMK_F16 2, 2, $vgpr0, implicit $exec, implicit $mode
4610    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4611    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADMK_F16 3, 3, $vgpr0, implicit $exec, implicit $mode
4612    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4613    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4614    %0:vgpr_32 = COPY $vgpr0
4615    %1:vgpr_32 = nofpexcept V_MADMK_F16 1, 1, %0, implicit $exec, implicit $mode
4616    %2:vgpr_32 = nofpexcept V_MADMK_F16 2, 2, %0, implicit $exec, implicit $mode
4617    %3:vgpr_32 = nofpexcept V_MADMK_F16 3, 3, %0, implicit $exec, implicit $mode
4618    S_NOP 0, implicit %1
4619    S_NOP 0, implicit %2
4620    S_NOP 0, implicit %3
4621    S_ENDPGM 0, implicit %0
4622...
4623
4624---
4625name:            test_remat_v_fmamk_f16
4626tracksRegLiveness: true
4627body:             |
4628  bb.0:
4629    liveins: $vgpr0, $vgpr1
4630    ; GCN-LABEL: name: test_remat_v_fmamk_f16
4631    ; GCN: liveins: $vgpr0, $vgpr1
4632    ; GCN-NEXT: {{  $}}
4633    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMAMK_F16 1, 1, $vgpr0, implicit $exec, implicit $mode
4634    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4635    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMAMK_F16 2, 2, $vgpr0, implicit $exec, implicit $mode
4636    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4637    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMAMK_F16 3, 3, $vgpr0, implicit $exec, implicit $mode
4638    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4639    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4640    %0:vgpr_32 = COPY $vgpr0
4641    %1:vgpr_32 = nofpexcept V_FMAMK_F16 1, 1, %0, implicit $exec, implicit $mode
4642    %2:vgpr_32 = nofpexcept V_FMAMK_F16 2, 2, %0, implicit $exec, implicit $mode
4643    %3:vgpr_32 = nofpexcept V_FMAMK_F16 3, 3, %0, implicit $exec, implicit $mode
4644    S_NOP 0, implicit %1
4645    S_NOP 0, implicit %2
4646    S_NOP 0, implicit %3
4647    S_ENDPGM 0, implicit %0
4648...
4649
4650---
4651name:            test_remat_v_pk_mad_i16
4652tracksRegLiveness: true
4653body:             |
4654  bb.0:
4655    liveins: $vgpr0
4656    ; GCN-LABEL: name: test_remat_v_pk_mad_i16
4657    ; GCN: liveins: $vgpr0
4658    ; GCN-NEXT: {{  $}}
4659    ; GCN-NEXT: renamable $vgpr1 = V_PK_MAD_I16 8, $vgpr0, 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4660    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4661    ; GCN-NEXT: renamable $vgpr1 = V_PK_MAD_I16 9, $vgpr0, 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4662    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4663    ; GCN-NEXT: renamable $vgpr1 = V_PK_MAD_I16 10, $vgpr0, 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4664    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4665    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4666    %0:vgpr_32 = COPY $vgpr0
4667
4668    %1:vgpr_32 = V_PK_MAD_I16 8, %0, 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4669    %2:vgpr_32 = V_PK_MAD_I16 9, %0, 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4670    %3:vgpr_32 = V_PK_MAD_I16 10, %0, 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4671    S_NOP 0, implicit %1
4672    S_NOP 0, implicit %2
4673    S_NOP 0, implicit %3
4674    S_ENDPGM 0, implicit %0
4675...
4676
4677---
4678name:            test_remat_v_pk_mad_u16
4679tracksRegLiveness: true
4680body:             |
4681  bb.0:
4682    liveins: $vgpr0
4683    ; GCN-LABEL: name: test_remat_v_pk_mad_u16
4684    ; GCN: liveins: $vgpr0
4685    ; GCN-NEXT: {{  $}}
4686    ; GCN-NEXT: renamable $vgpr1 = V_PK_MAD_U16 8, $vgpr0, 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4687    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4688    ; GCN-NEXT: renamable $vgpr1 = V_PK_MAD_U16 9, $vgpr0, 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4689    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4690    ; GCN-NEXT: renamable $vgpr1 = V_PK_MAD_U16 10, $vgpr0, 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4691    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4692    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4693    %0:vgpr_32 = COPY $vgpr0
4694
4695    %1:vgpr_32 = V_PK_MAD_U16 8, %0, 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4696    %2:vgpr_32 = V_PK_MAD_U16 9, %0, 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4697    %3:vgpr_32 = V_PK_MAD_U16 10, %0, 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4698    S_NOP 0, implicit %1
4699    S_NOP 0, implicit %2
4700    S_NOP 0, implicit %3
4701    S_ENDPGM 0, implicit %0
4702...
4703
4704---
4705name:            test_remat_v_pk_add_u16
4706tracksRegLiveness: true
4707body:             |
4708  bb.0:
4709    liveins: $vgpr0
4710    ; GCN-LABEL: name: test_remat_v_pk_add_u16
4711    ; GCN: liveins: $vgpr0
4712    ; GCN-NEXT: {{  $}}
4713    ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_U16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4714    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4715    ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_U16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4716    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4717    ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_U16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4718    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4719    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4720    %0:vgpr_32 = COPY $vgpr0
4721
4722    %1:vgpr_32 = V_PK_ADD_U16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4723    %2:vgpr_32 = V_PK_ADD_U16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4724    %3:vgpr_32 = V_PK_ADD_U16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4725    S_NOP 0, implicit %1
4726    S_NOP 0, implicit %2
4727    S_NOP 0, implicit %3
4728    S_ENDPGM 0, implicit %0
4729...
4730
4731---
4732name:            test_remat_v_pk_add_i16
4733tracksRegLiveness: true
4734body:             |
4735  bb.0:
4736    liveins: $vgpr0
4737    ; GCN-LABEL: name: test_remat_v_pk_add_i16
4738    ; GCN: liveins: $vgpr0
4739    ; GCN-NEXT: {{  $}}
4740    ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_I16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4741    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4742    ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_I16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4743    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4744    ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_I16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4745    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4746    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4747    %0:vgpr_32 = COPY $vgpr0
4748
4749    %1:vgpr_32 = V_PK_ADD_I16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4750    %2:vgpr_32 = V_PK_ADD_I16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4751    %3:vgpr_32 = V_PK_ADD_I16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4752    S_NOP 0, implicit %1
4753    S_NOP 0, implicit %2
4754    S_NOP 0, implicit %3
4755    S_ENDPGM 0, implicit %0
4756...
4757
4758---
4759name:            test_remat_v_pk_mul_lo_u16
4760tracksRegLiveness: true
4761body:             |
4762  bb.0:
4763    liveins: $vgpr0
4764    ; GCN-LABEL: name: test_remat_v_pk_mul_lo_u16
4765    ; GCN: liveins: $vgpr0
4766    ; GCN-NEXT: {{  $}}
4767    ; GCN-NEXT: renamable $vgpr1 = V_PK_MUL_LO_U16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4768    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4769    ; GCN-NEXT: renamable $vgpr1 = V_PK_MUL_LO_U16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4770    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4771    ; GCN-NEXT: renamable $vgpr1 = V_PK_MUL_LO_U16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4772    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4773    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4774    %0:vgpr_32 = COPY $vgpr0
4775
4776    %1:vgpr_32 = V_PK_MUL_LO_U16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4777    %2:vgpr_32 = V_PK_MUL_LO_U16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4778    %3:vgpr_32 = V_PK_MUL_LO_U16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4779    S_NOP 0, implicit %1
4780    S_NOP 0, implicit %2
4781    S_NOP 0, implicit %3
4782    S_ENDPGM 0, implicit %0
4783...
4784
4785---
4786name:            test_remat_v_pk_min_i16
4787tracksRegLiveness: true
4788body:             |
4789  bb.0:
4790    liveins: $vgpr0
4791    ; GCN-LABEL: name: test_remat_v_pk_min_i16
4792    ; GCN: liveins: $vgpr0
4793    ; GCN-NEXT: {{  $}}
4794    ; GCN-NEXT: renamable $vgpr1 = V_PK_MIN_I16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4795    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4796    ; GCN-NEXT: renamable $vgpr1 = V_PK_MIN_I16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4797    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4798    ; GCN-NEXT: renamable $vgpr1 = V_PK_MIN_I16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4799    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4800    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4801    %0:vgpr_32 = COPY $vgpr0
4802
4803    %1:vgpr_32 = V_PK_MIN_I16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4804    %2:vgpr_32 = V_PK_MIN_I16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4805    %3:vgpr_32 = V_PK_MIN_I16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4806    S_NOP 0, implicit %1
4807    S_NOP 0, implicit %2
4808    S_NOP 0, implicit %3
4809    S_ENDPGM 0, implicit %0
4810...
4811
4812---
4813name:            test_remat_v_pk_max_i16
4814tracksRegLiveness: true
4815body:             |
4816  bb.0:
4817    liveins: $vgpr0
4818    ; GCN-LABEL: name: test_remat_v_pk_max_i16
4819    ; GCN: liveins: $vgpr0
4820    ; GCN-NEXT: {{  $}}
4821    ; GCN-NEXT: renamable $vgpr1 = V_PK_MAX_I16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4822    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4823    ; GCN-NEXT: renamable $vgpr1 = V_PK_MAX_I16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4824    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4825    ; GCN-NEXT: renamable $vgpr1 = V_PK_MAX_I16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4826    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4827    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4828    %0:vgpr_32 = COPY $vgpr0
4829
4830    %1:vgpr_32 = V_PK_MAX_I16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4831    %2:vgpr_32 = V_PK_MAX_I16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4832    %3:vgpr_32 = V_PK_MAX_I16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4833    S_NOP 0, implicit %1
4834    S_NOP 0, implicit %2
4835    S_NOP 0, implicit %3
4836    S_ENDPGM 0, implicit %0
4837...
4838
4839---
4840name:            test_remat_v_pk_min_u16
4841tracksRegLiveness: true
4842body:             |
4843  bb.0:
4844    liveins: $vgpr0
4845    ; GCN-LABEL: name: test_remat_v_pk_min_u16
4846    ; GCN: liveins: $vgpr0
4847    ; GCN-NEXT: {{  $}}
4848    ; GCN-NEXT: renamable $vgpr1 = V_PK_MIN_U16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4849    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4850    ; GCN-NEXT: renamable $vgpr1 = V_PK_MIN_U16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4851    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4852    ; GCN-NEXT: renamable $vgpr1 = V_PK_MIN_U16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4853    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4854    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4855    %0:vgpr_32 = COPY $vgpr0
4856
4857    %1:vgpr_32 = V_PK_MIN_U16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4858    %2:vgpr_32 = V_PK_MIN_U16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4859    %3:vgpr_32 = V_PK_MIN_U16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4860    S_NOP 0, implicit %1
4861    S_NOP 0, implicit %2
4862    S_NOP 0, implicit %3
4863    S_ENDPGM 0, implicit %0
4864...
4865
4866---
4867name:            test_remat_v_pk_max_u16
4868tracksRegLiveness: true
4869body:             |
4870  bb.0:
4871    liveins: $vgpr0
4872    ; GCN-LABEL: name: test_remat_v_pk_max_u16
4873    ; GCN: liveins: $vgpr0
4874    ; GCN-NEXT: {{  $}}
4875    ; GCN-NEXT: renamable $vgpr1 = V_PK_MAX_U16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4876    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4877    ; GCN-NEXT: renamable $vgpr1 = V_PK_MAX_U16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4878    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4879    ; GCN-NEXT: renamable $vgpr1 = V_PK_MAX_U16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4880    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4881    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4882    %0:vgpr_32 = COPY $vgpr0
4883
4884    %1:vgpr_32 = V_PK_MAX_U16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4885    %2:vgpr_32 = V_PK_MAX_U16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4886    %3:vgpr_32 = V_PK_MAX_U16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4887    S_NOP 0, implicit %1
4888    S_NOP 0, implicit %2
4889    S_NOP 0, implicit %3
4890    S_ENDPGM 0, implicit %0
4891...
4892
4893---
4894name:            test_remat_v_pk_sub_u16
4895tracksRegLiveness: true
4896body:             |
4897  bb.0:
4898    liveins: $vgpr0
4899    ; GCN-LABEL: name: test_remat_v_pk_sub_u16
4900    ; GCN: liveins: $vgpr0
4901    ; GCN-NEXT: {{  $}}
4902    ; GCN-NEXT: renamable $vgpr1 = V_PK_SUB_U16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4903    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4904    ; GCN-NEXT: renamable $vgpr1 = V_PK_SUB_U16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4905    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4906    ; GCN-NEXT: renamable $vgpr1 = V_PK_SUB_U16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4907    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4908    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4909    %0:vgpr_32 = COPY $vgpr0
4910
4911    %1:vgpr_32 = V_PK_SUB_U16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4912    %2:vgpr_32 = V_PK_SUB_U16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4913    %3:vgpr_32 = V_PK_SUB_U16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4914    S_NOP 0, implicit %1
4915    S_NOP 0, implicit %2
4916    S_NOP 0, implicit %3
4917    S_ENDPGM 0, implicit %0
4918...
4919
4920---
4921name:            test_remat_v_pk_sub_i16
4922tracksRegLiveness: true
4923body:             |
4924  bb.0:
4925    liveins: $vgpr0
4926    ; GCN-LABEL: name: test_remat_v_pk_sub_i16
4927    ; GCN: liveins: $vgpr0
4928    ; GCN-NEXT: {{  $}}
4929    ; GCN-NEXT: renamable $vgpr1 = V_PK_SUB_I16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4930    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4931    ; GCN-NEXT: renamable $vgpr1 = V_PK_SUB_I16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4932    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4933    ; GCN-NEXT: renamable $vgpr1 = V_PK_SUB_I16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4934    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4935    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4936    %0:vgpr_32 = COPY $vgpr0
4937
4938    %1:vgpr_32 = V_PK_SUB_I16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4939    %2:vgpr_32 = V_PK_SUB_I16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4940    %3:vgpr_32 = V_PK_SUB_I16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4941    S_NOP 0, implicit %1
4942    S_NOP 0, implicit %2
4943    S_NOP 0, implicit %3
4944    S_ENDPGM 0, implicit %0
4945...
4946
4947---
4948name:            test_remat_v_pk_lshlrev_b16
4949tracksRegLiveness: true
4950body:             |
4951  bb.0:
4952    liveins: $vgpr0
4953    ; GCN-LABEL: name: test_remat_v_pk_lshlrev_b16
4954    ; GCN: liveins: $vgpr0
4955    ; GCN-NEXT: {{  $}}
4956    ; GCN-NEXT: renamable $vgpr1 = V_PK_LSHLREV_B16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4957    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4958    ; GCN-NEXT: renamable $vgpr1 = V_PK_LSHLREV_B16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4959    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4960    ; GCN-NEXT: renamable $vgpr1 = V_PK_LSHLREV_B16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4961    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4962    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4963    %0:vgpr_32 = COPY $vgpr0
4964
4965    %1:vgpr_32 = V_PK_LSHLREV_B16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4966    %2:vgpr_32 = V_PK_LSHLREV_B16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4967    %3:vgpr_32 = V_PK_LSHLREV_B16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4968    S_NOP 0, implicit %1
4969    S_NOP 0, implicit %2
4970    S_NOP 0, implicit %3
4971    S_ENDPGM 0, implicit %0
4972...
4973
4974---
4975name:            test_remat_v_pk_ashrrev_i16
4976tracksRegLiveness: true
4977body:             |
4978  bb.0:
4979    liveins: $vgpr0
4980    ; GCN-LABEL: name: test_remat_v_pk_ashrrev_i16
4981    ; GCN: liveins: $vgpr0
4982    ; GCN-NEXT: {{  $}}
4983    ; GCN-NEXT: renamable $vgpr1 = V_PK_ASHRREV_I16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4984    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4985    ; GCN-NEXT: renamable $vgpr1 = V_PK_ASHRREV_I16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4986    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4987    ; GCN-NEXT: renamable $vgpr1 = V_PK_ASHRREV_I16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4988    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4989    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4990    %0:vgpr_32 = COPY $vgpr0
4991
4992    %1:vgpr_32 = V_PK_ASHRREV_I16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4993    %2:vgpr_32 = V_PK_ASHRREV_I16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4994    %3:vgpr_32 = V_PK_ASHRREV_I16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4995    S_NOP 0, implicit %1
4996    S_NOP 0, implicit %2
4997    S_NOP 0, implicit %3
4998    S_ENDPGM 0, implicit %0
4999...
5000
5001---
5002name:            test_remat_v_pk_lshrrev_b16
5003tracksRegLiveness: true
5004body:             |
5005  bb.0:
5006    liveins: $vgpr0
5007    ; GCN-LABEL: name: test_remat_v_pk_lshrrev_b16
5008    ; GCN: liveins: $vgpr0
5009    ; GCN-NEXT: {{  $}}
5010    ; GCN-NEXT: renamable $vgpr1 = V_PK_LSHRREV_B16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
5011    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5012    ; GCN-NEXT: renamable $vgpr1 = V_PK_LSHRREV_B16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
5013    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5014    ; GCN-NEXT: renamable $vgpr1 = V_PK_LSHRREV_B16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
5015    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5016    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5017    %0:vgpr_32 = COPY $vgpr0
5018
5019    %1:vgpr_32 = V_PK_LSHRREV_B16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
5020    %2:vgpr_32 = V_PK_LSHRREV_B16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
5021    %3:vgpr_32 = V_PK_LSHRREV_B16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
5022    S_NOP 0, implicit %1
5023    S_NOP 0, implicit %2
5024    S_NOP 0, implicit %3
5025    S_ENDPGM 0, implicit %0
5026...
5027
5028---
5029name:            test_remat_v_pk_add_f16
5030tracksRegLiveness: true
5031body:             |
5032  bb.0:
5033    liveins: $vgpr0
5034    ; GCN-LABEL: name: test_remat_v_pk_add_f16
5035    ; GCN: liveins: $vgpr0
5036    ; GCN-NEXT: {{  $}}
5037    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_ADD_F16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5038    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5039    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_ADD_F16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5040    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5041    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_ADD_F16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5042    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5043    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5044    %0:vgpr_32 = COPY $vgpr0
5045
5046    %1:vgpr_32 = nofpexcept V_PK_ADD_F16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5047    %2:vgpr_32 = nofpexcept V_PK_ADD_F16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5048    %3:vgpr_32 = nofpexcept V_PK_ADD_F16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5049    S_NOP 0, implicit %1
5050    S_NOP 0, implicit %2
5051    S_NOP 0, implicit %3
5052    S_ENDPGM 0, implicit %0
5053...
5054
5055# Missing nofpexcept
5056---
5057name:            test_no_remat_v_pk_add_f16
5058tracksRegLiveness: true
5059machineFunctionInfo:
5060  stackPtrOffsetReg:  $sgpr32
5061body:             |
5062  bb.0:
5063    liveins: $vgpr0
5064    ; GCN-LABEL: name: test_no_remat_v_pk_add_f16
5065    ; GCN: liveins: $vgpr0
5066    ; GCN-NEXT: {{  $}}
5067    ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_F16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5068    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr1, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
5069    ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_F16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5070    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr1, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
5071    ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_F16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5072    ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr1, %stack.2, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.2, addrspace 5)
5073    ; GCN-NEXT: renamable $vgpr1 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
5074    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5075    ; GCN-NEXT: renamable $vgpr1 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
5076    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5077    ; GCN-NEXT: renamable $vgpr1 = SI_SPILL_V32_RESTORE %stack.2, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.2, addrspace 5)
5078    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5079    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5080    %0:vgpr_32 = COPY $vgpr0
5081
5082    %1:vgpr_32 = V_PK_ADD_F16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5083    %2:vgpr_32 = V_PK_ADD_F16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5084    %3:vgpr_32 = V_PK_ADD_F16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5085    S_NOP 0, implicit %1
5086    S_NOP 0, implicit %2
5087    S_NOP 0, implicit %3
5088    S_ENDPGM 0, implicit %0
5089...
5090
5091---
5092name:            test_remat_v_pk_mul_f16
5093tracksRegLiveness: true
5094body:             |
5095  bb.0:
5096    liveins: $vgpr0
5097    ; GCN-LABEL: name: test_remat_v_pk_mul_f16
5098    ; GCN: liveins: $vgpr0
5099    ; GCN-NEXT: {{  $}}
5100    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MUL_F16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5101    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5102    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MUL_F16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5103    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5104    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MUL_F16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5105    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5106    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5107    %0:vgpr_32 = COPY $vgpr0
5108
5109    %1:vgpr_32 = nofpexcept V_PK_MUL_F16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5110    %2:vgpr_32 = nofpexcept V_PK_MUL_F16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5111    %3:vgpr_32 = nofpexcept V_PK_MUL_F16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5112    S_NOP 0, implicit %1
5113    S_NOP 0, implicit %2
5114    S_NOP 0, implicit %3
5115    S_ENDPGM 0, implicit %0
5116...
5117
5118---
5119name:            test_remat_v_pk_min_f16
5120tracksRegLiveness: true
5121body:             |
5122  bb.0:
5123    liveins: $vgpr0
5124    ; GCN-LABEL: name: test_remat_v_pk_min_f16
5125    ; GCN: liveins: $vgpr0
5126    ; GCN-NEXT: {{  $}}
5127    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MIN_F16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5128    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5129    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MIN_F16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5130    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5131    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MIN_F16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5132    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5133    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5134    %0:vgpr_32 = COPY $vgpr0
5135
5136    %1:vgpr_32 = nofpexcept V_PK_MIN_F16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5137    %2:vgpr_32 = nofpexcept V_PK_MIN_F16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5138    %3:vgpr_32 = nofpexcept V_PK_MIN_F16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5139    S_NOP 0, implicit %1
5140    S_NOP 0, implicit %2
5141    S_NOP 0, implicit %3
5142    S_ENDPGM 0, implicit %0
5143...
5144
5145---
5146name:            test_remat_v_pk_max_f16
5147tracksRegLiveness: true
5148body:             |
5149  bb.0:
5150    liveins: $vgpr0
5151    ; GCN-LABEL: name: test_remat_v_pk_max_f16
5152    ; GCN: liveins: $vgpr0
5153    ; GCN-NEXT: {{  $}}
5154    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MAX_F16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5155    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5156    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MAX_F16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5157    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5158    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MAX_F16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5159    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5160    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5161    %0:vgpr_32 = COPY $vgpr0
5162
5163    %1:vgpr_32 = nofpexcept V_PK_MAX_F16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5164    %2:vgpr_32 = nofpexcept V_PK_MAX_F16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5165    %3:vgpr_32 = nofpexcept V_PK_MAX_F16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5166    S_NOP 0, implicit %1
5167    S_NOP 0, implicit %2
5168    S_NOP 0, implicit %3
5169    S_ENDPGM 0, implicit %0
5170...
5171
5172---
5173name:            test_remat_v_pk_fma_f16
5174tracksRegLiveness: true
5175body:             |
5176  bb.0:
5177    liveins: $vgpr0
5178    ; GCN-LABEL: name: test_remat_v_pk_fma_f16
5179    ; GCN: liveins: $vgpr0
5180    ; GCN-NEXT: {{  $}}
5181    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_FMA_F16 8, $vgpr0, 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5182    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5183    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_FMA_F16 9, $vgpr0, 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5184    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5185    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_FMA_F16 10, $vgpr0, 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5186    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5187    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5188    %0:vgpr_32 = COPY $vgpr0
5189    %1:vgpr_32 = nofpexcept V_PK_FMA_F16 8, %0, 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5190    %2:vgpr_32 = nofpexcept V_PK_FMA_F16 9, %0, 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5191    %3:vgpr_32 = nofpexcept V_PK_FMA_F16 10, %0, 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5192
5193    S_NOP 0, implicit %1
5194    S_NOP 0, implicit %2
5195    S_NOP 0, implicit %3
5196    S_ENDPGM 0, implicit %0
5197...
5198
5199---
5200name:            test_remat_v_mad_mix_f32
5201tracksRegLiveness: true
5202body:             |
5203  bb.0:
5204    liveins: $vgpr0
5205    ; GCN-LABEL: name: test_remat_v_mad_mix_f32
5206    ; GCN: liveins: $vgpr0
5207    ; GCN-NEXT: {{  $}}
5208    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAD_MIX_F32 8, $vgpr0, 8, $vgpr0, 8, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
5209    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5210    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAD_MIX_F32 9, $vgpr0, 9, $vgpr0, 9, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
5211    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5212    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAD_MIX_F32 10, $vgpr0, 10, $vgpr0, 10, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
5213    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5214    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5215    %0:vgpr_32 = COPY $vgpr0
5216    %1:vgpr_32 = nofpexcept V_MAD_MIX_F32 8, %0, 8, %0, 8, %0, 0, 0, 0, implicit $mode, implicit $exec
5217    %2:vgpr_32 = nofpexcept V_MAD_MIX_F32 9, %0, 9, %0, 9, %0, 0, 0, 0, implicit $mode, implicit $exec
5218    %3:vgpr_32 = nofpexcept V_MAD_MIX_F32 10, %0, 10, %0, 10, %0, 0, 0, 0, implicit $mode, implicit $exec
5219    S_NOP 0, implicit %1
5220    S_NOP 0, implicit %2
5221    S_NOP 0, implicit %3
5222    S_ENDPGM 0, implicit %0
5223...
5224
5225---
5226name:            test_remat_v_fma_mix_f32
5227tracksRegLiveness: true
5228body:             |
5229  bb.0:
5230    liveins: $vgpr0
5231    ; GCN-LABEL: name: test_remat_v_fma_mix_f32
5232    ; GCN: liveins: $vgpr0
5233    ; GCN-NEXT: {{  $}}
5234    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMA_MIX_F32 8, $vgpr0, 8, $vgpr0, 8, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
5235    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5236    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMA_MIX_F32 9, $vgpr0, 9, $vgpr0, 9, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
5237    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5238    ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMA_MIX_F32 10, $vgpr0, 10, $vgpr0, 10, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
5239    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5240    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5241    %0:vgpr_32 = COPY $vgpr0
5242    %1:vgpr_32 = nofpexcept V_FMA_MIX_F32 8, %0, 8, %0, 8, %0, 0, 0, 0, implicit $mode, implicit $exec
5243    %2:vgpr_32 = nofpexcept V_FMA_MIX_F32 9, %0, 9, %0, 9, %0, 0, 0, 0, implicit $mode, implicit $exec
5244    %3:vgpr_32 = nofpexcept V_FMA_MIX_F32 10, %0, 10, %0, 10, %0, 0, 0, 0, implicit $mode, implicit $exec
5245    S_NOP 0, implicit %1
5246    S_NOP 0, implicit %2
5247    S_NOP 0, implicit %3
5248    S_ENDPGM 0, implicit %0
5249...
5250
5251---
5252name:            test_remat_v_pk_fma_f32
5253tracksRegLiveness: true
5254body:             |
5255  bb.0:
5256    liveins: $vgpr0_vgpr1
5257    ; GCN-LABEL: name: test_remat_v_pk_fma_f32
5258    ; GCN: liveins: $vgpr0_vgpr1
5259    ; GCN-NEXT: {{  $}}
5260    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_FMA_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5261    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5262    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_FMA_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5263    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5264    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_FMA_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5265    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5266    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0_vgpr1
5267    %0:vreg_64_align2 = COPY $vgpr0_vgpr1
5268    %1:vreg_64_align2 = nofpexcept V_PK_FMA_F32 8, %0, 8, %0, 11, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5269    %2:vreg_64_align2 = nofpexcept V_PK_FMA_F32 8, %0, 8, %0, 11, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5270    %3:vreg_64_align2 = nofpexcept V_PK_FMA_F32 8, %0, 8, %0, 11, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5271    S_NOP 0, implicit %1
5272    S_NOP 0, implicit %2
5273    S_NOP 0, implicit %3
5274    S_ENDPGM 0, implicit %0
5275...
5276
5277---
5278name:            test_no_remat_v_pk_fma_f32
5279tracksRegLiveness: true
5280machineFunctionInfo:
5281  stackPtrOffsetReg:  $sgpr32
5282body:             |
5283  bb.0:
5284    liveins: $vgpr0_vgpr1
5285    ; GCN-LABEL: name: test_no_remat_v_pk_fma_f32
5286    ; GCN: liveins: $vgpr0_vgpr1
5287    ; GCN-NEXT: {{  $}}
5288    ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_PK_FMA_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5289    ; GCN-NEXT: SI_SPILL_V64_SAVE killed $vgpr2_vgpr3, %stack.1, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.1, align 4, addrspace 5)
5290    ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_PK_FMA_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5291    ; GCN-NEXT: SI_SPILL_V64_SAVE killed $vgpr2_vgpr3, %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, align 4, addrspace 5)
5292    ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_PK_FMA_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5293    ; GCN-NEXT: SI_SPILL_V64_SAVE killed $vgpr2_vgpr3, %stack.2, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.2, align 4, addrspace 5)
5294    ; GCN-NEXT: renamable $vgpr2_vgpr3 = SI_SPILL_V64_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.1, align 4, addrspace 5)
5295    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5296    ; GCN-NEXT: renamable $vgpr2_vgpr3 = SI_SPILL_V64_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.0, align 4, addrspace 5)
5297    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5298    ; GCN-NEXT: renamable $vgpr2_vgpr3 = SI_SPILL_V64_RESTORE %stack.2, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.2, align 4, addrspace 5)
5299    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5300    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0_vgpr1
5301    %0:vreg_64_align2 = COPY $vgpr0_vgpr1
5302    %1:vreg_64_align2 = V_PK_FMA_F32 8, %0, 8, %0, 11, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5303    %2:vreg_64_align2 = V_PK_FMA_F32 8, %0, 8, %0, 11, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5304    %3:vreg_64_align2 = V_PK_FMA_F32 8, %0, 8, %0, 11, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5305    S_NOP 0, implicit %1
5306    S_NOP 0, implicit %2
5307    S_NOP 0, implicit %3
5308    S_ENDPGM 0, implicit %0
5309...
5310
5311---
5312name:            test_remat_v_pk_mul_f32
5313tracksRegLiveness: true
5314body:             |
5315  bb.0:
5316    liveins: $vgpr0_vgpr1
5317    ; GCN-LABEL: name: test_remat_v_pk_mul_f32
5318    ; GCN: liveins: $vgpr0_vgpr1
5319    ; GCN-NEXT: {{  $}}
5320    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_MUL_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5321    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5322    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_MUL_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5323    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5324    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_MUL_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5325    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5326    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0_vgpr1
5327    %0:vreg_64_align2 = COPY $vgpr0_vgpr1
5328    %1:vreg_64_align2 = nofpexcept V_PK_MUL_F32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5329    %2:vreg_64_align2 = nofpexcept V_PK_MUL_F32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5330    %3:vreg_64_align2 = nofpexcept V_PK_MUL_F32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5331    S_NOP 0, implicit %1
5332    S_NOP 0, implicit %2
5333    S_NOP 0, implicit %3
5334    S_ENDPGM 0, implicit %0
5335...
5336
5337---
5338name:            test_remat_v_pk_add_f32
5339tracksRegLiveness: true
5340body:             |
5341  bb.0:
5342    liveins: $vgpr0_vgpr1
5343    ; GCN-LABEL: name: test_remat_v_pk_add_f32
5344    ; GCN: liveins: $vgpr0_vgpr1
5345    ; GCN-NEXT: {{  $}}
5346    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_ADD_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5347    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5348    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_ADD_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5349    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5350    ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_ADD_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5351    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5352    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0_vgpr1
5353    %0:vreg_64_align2 = COPY $vgpr0_vgpr1
5354    %1:vreg_64_align2 = nofpexcept V_PK_ADD_F32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5355    %2:vreg_64_align2 = nofpexcept V_PK_ADD_F32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5356    %3:vreg_64_align2 = nofpexcept V_PK_ADD_F32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5357    S_NOP 0, implicit %1
5358    S_NOP 0, implicit %2
5359    S_NOP 0, implicit %3
5360    S_ENDPGM 0, implicit %0
5361...
5362
5363---
5364name:            test_remat_v_pk_mov_b32
5365tracksRegLiveness: true
5366body:             |
5367  bb.0:
5368    liveins: $vgpr0_vgpr1
5369    ; GCN-LABEL: name: test_remat_v_pk_mov_b32
5370    ; GCN: liveins: $vgpr0_vgpr1
5371    ; GCN-NEXT: {{  $}}
5372    ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_PK_MOV_B32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $exec
5373    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5374    ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_PK_MOV_B32 9, $vgpr0_vgpr1, 9, $vgpr0_vgpr1, 12, 0, 0, 0, 0, implicit $exec
5375    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5376    ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_PK_MOV_B32 10, $vgpr0_vgpr1, 10, $vgpr0_vgpr1, 13, 0, 0, 0, 0, implicit $exec
5377    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5378    ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0_vgpr1
5379    %0:vreg_64_align2 = COPY $vgpr0_vgpr1
5380    %1:vreg_64_align2 = V_PK_MOV_B32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $exec
5381    %2:vreg_64_align2 = V_PK_MOV_B32 9, %0, 9, %0, 12, 0, 0, 0, 0, implicit $exec
5382    %3:vreg_64_align2 = V_PK_MOV_B32 10, %0, 10, %0, 13, 0, 0, 0, 0, implicit $exec
5383    S_NOP 0, implicit %1
5384    S_NOP 0, implicit %2
5385    S_NOP 0, implicit %3
5386    S_ENDPGM 0, implicit %0
5387...
5388
5389# Make sure there's no verifier error after making a subregister def dead. The
5390# dead interval still needs a subrange.
5391
5392---
5393name:            test_remat_subreg_def
5394tracksRegLiveness: true
5395body:             |
5396  bb.0:
5397    ; GCN-LABEL: name: test_remat_subreg_def
5398    ; GCN: renamable $vgpr1 = V_MOV_B32_e32 1, implicit $exec
5399    ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e32 3, implicit $exec
5400    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5401    ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
5402    ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e32 2, implicit $exec
5403    ; GCN-NEXT: S_NOP 0, implicit renamable $vgpr0_vgpr1
5404    ; GCN-NEXT: S_ENDPGM 0
5405    %0:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
5406    undef %1.sub0:vreg_64 = V_MOV_B32_e32 2, implicit $exec
5407    %2:vgpr_32 = V_MOV_B32_e32 3, implicit $exec
5408    S_NOP 0, implicit %0
5409    S_NOP 0, implicit %2
5410    S_NOP 0, implicit %1
5411    S_ENDPGM 0
5412...
5413