Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / remat-vop.mir
blob248a9e2ddb63601af26913500545932227b44e4c
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
4 ---
5 name:            test_remat_v_mov_b32_e32
6 tracksRegLiveness: true
7 body:             |
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 ---
26 name:            test_no_remat_v_mov_b32_e32_impuse
27 tracksRegLiveness: true
28 machineFunctionInfo:
29   stackPtrOffsetReg:  $sgpr32
30 body:             |
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 ---
55 name:            test_remat_v_mov_b32_e32_exec_def
56 tracksRegLiveness: true
57 machineFunctionInfo:
58   stackPtrOffsetReg:  $sgpr32
59 body:             |
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 ---
80 name:            test_remat_v_mov_b32_e64
81 tracksRegLiveness: true
82 body:             |
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 ...
101 name:            test_no_remat_v_mov_b32_dpp
102 tracksRegLiveness: true
103 machineFunctionInfo:
104   stackPtrOffsetReg:  $sgpr32
105 body:             |
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
128 name:            test_remat_v_accvgpr_read_b32
129 tracksRegLiveness: true
130 body:             |
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
149 name:            test_remat_v_accvgpr_write_b32
150 tracksRegLiveness: true
151 body:             |
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
170 name:            test_remat_v_mov_b64_pseudo
171 tracksRegLiveness: true
172 body:             |
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
191 name:            test_remat_v_cvt_i32_f64_e32
192 tracksRegLiveness: true
193 body:             |
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
212 machineFunctionInfo:
213   stackPtrOffsetReg:  $sgpr32
214 name:            test_no_remat_v_cvt_i32_f64_e32_fp_except
215 tracksRegLiveness: true
216 body:             |
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
239 # Cannot rematerialize if MODE register is modified anywhere
240 name:            test_no_remat_v_cvt_i32_f64_e32_mode_def
241 tracksRegLiveness: true
242 machineFunctionInfo:
243   stackPtrOffsetReg:  $sgpr32
244 body:             |
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
269 name:            test_remat_v_cvt_i32_f64_e64
270 tracksRegLiveness: true
271 body:             |
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
290 name:            test_remat_v_cvt_i32_f64_e64_undef
291 tracksRegLiveness: true
292 machineFunctionInfo:
293   stackPtrOffsetReg:  $sgpr32
294 body:             |
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
313 name:            test_no_remat_v_cvt_i32_f64_dpp
314 tracksRegLiveness: true
315 machineFunctionInfo:
316   stackPtrOffsetReg:  $sgpr32
317 body:             |
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
340 name:            test_no_remat_v_cvt_i32_f64_e32_imp_def
341 tracksRegLiveness: true
342 machineFunctionInfo:
343   stackPtrOffsetReg:  $sgpr32
344 body:             |
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
367 name:            test_no_remat_v_cvt_i32_f64_e32_imp_use
368 tracksRegLiveness: true
369 machineFunctionInfo:
370   stackPtrOffsetReg:  $sgpr32
371 body:             |
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
394 name:            test_remat_v_cvt_f64_i32_e32
395 tracksRegLiveness: true
396 body:             |
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
415 name:            test_remat_v_cvt_f32_f64_e32
416 tracksRegLiveness: true
417 body:             |
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
436 name:            test_remat_v_cvt_f64_f32_e32
437 tracksRegLiveness: true
438 body:             |
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
457 name:            test_remat_v_cvt_u32_f64_e32
458 tracksRegLiveness: true
459 body:             |
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
478 name:            test_remat_v_cvt_f64_u32_e32
479 tracksRegLiveness: true
480 body:             |
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
499 name:            test_remat_v_cvt_f32_i32_e32
500 tracksRegLiveness: true
501 body:             |
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
520 name:            test_remat_v_cvt_f32_i32_sdwa
521 tracksRegLiveness: true
522 body:             |
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
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.
543 name:            test_no_remat_v_cvt_f32_i32_sdwa_dst_unused_preserve
544 tracksRegLiveness: true
545 machineFunctionInfo:
546   stackPtrOffsetReg:  $sgpr32
547 body:             |
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
570 name:            test_remat_v_cvt_f32_u32_e32
571 tracksRegLiveness: true
572 body:             |
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
591 name:            test_remat_v_cvt_u32_f32_e32
592 tracksRegLiveness: true
593 body:             |
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
612 name:            test_remat_v_cvt_i32_f32_e32
613 tracksRegLiveness: true
614 body:             |
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
633 name:            test_remat_v_cvt_f32_f16_e32
634 tracksRegLiveness: true
635 body:             |
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
654 name:            test_remat_v_cvt_rpi_i32_f32_e32
655 tracksRegLiveness: true
656 body:             |
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
675 name:            test_remat_v_cvt_flr_i32_f32_e32
676 tracksRegLiveness: true
677 body:             |
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
696 name:            test_remat_v_cvt_off_f32_i4_e32
697 tracksRegLiveness: true
698 body:             |
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
717 name:            test_remat_v_cvt_f32_ubyte0_e32
718 tracksRegLiveness: true
719 body:             |
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
738 name:            test_remat_v_fract_f32_e32
739 tracksRegLiveness: true
740 body:             |
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
759 name:            test_remat_v_trunc_f32_e32
760 tracksRegLiveness: true
761 body:             |
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
780 name:            test_remat_v_ceil_f32_e32
781 tracksRegLiveness: true
782 body:             |
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
801 name:            test_remat_v_rndne_f32_e32
802 tracksRegLiveness: true
803 body:             |
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
822 name:            test_remat_v_floor_f32_e32
823 tracksRegLiveness: true
824 body:             |
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
843 name:            test_remat_v_exp_f32_e32
844 tracksRegLiveness: true
845 body:             |
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
864 name:            test_remat_v_log_f32_e32
865 tracksRegLiveness: true
866 body:             |
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
885 name:            test_remat_v_rcp_f32_e32
886 tracksRegLiveness: true
887 body:             |
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
906 name:            test_remat_v_rcp_iflag_f32_e32
907 tracksRegLiveness: true
908 body:             |
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
927 name:            test_remat_v_rsq_f32_e32
928 tracksRegLiveness: true
929 body:             |
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
948 name:            test_remat_v_sqrt_f32_e32
949 tracksRegLiveness: true
950 body:             |
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
969 name:            test_remat_v_rcp_f64_e32
970 tracksRegLiveness: true
971 body:             |
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
990 name:            test_remat_v_rsq_f64_e32
991 tracksRegLiveness: true
992 body:             |
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
1011 name:            test_remat_v_sqrt_f64_e32
1012 tracksRegLiveness: true
1013 body:             |
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
1032 name:            test_remat_v_sin_f32_e32
1033 tracksRegLiveness: true
1034 body:             |
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
1053 name:            test_remat_v_cos_f32_e32
1054 tracksRegLiveness: true
1055 body:             |
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
1074 name:            test_remat_v_not_b32_e32
1075 tracksRegLiveness: true
1076 body:             |
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
1095 name:            test_remat_v_bfrev_b32_e32
1096 tracksRegLiveness: true
1097 body:             |
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
1116 name:            test_remat_v_ffbh_u32_e32
1117 tracksRegLiveness: true
1118 body:             |
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
1137 name:            test_remat_v_ffbl_b32_e32
1138 tracksRegLiveness: true
1139 body:             |
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
1158 name:            test_remat_v_ffbh_i32_e32
1159 tracksRegLiveness: true
1160 body:             |
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
1179 name:            test_remat_v_frexp_exp_i32_f64_e32
1180 tracksRegLiveness: true
1181 body:             |
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
1200 name:            test_remat_v_frexp_mant_f64_e32
1201 tracksRegLiveness: true
1202 body:             |
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
1221 name:            test_remat_v_fract_f64_e32
1222 tracksRegLiveness: true
1223 body:             |
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
1242 name:            test_remat_v_frexp_exp_i32_f32_e32
1243 tracksRegLiveness: true
1244 body:             |
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
1263 name:            test_remat_v_frexp_mant_f32_e32
1264 tracksRegLiveness: true
1265 body:             |
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
1284 name:            test_remat_v_exp_legacy_f32_e32
1285 tracksRegLiveness: true
1286 body:             |
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
1305 name:            test_remat_v_log_legacy_f32_e32
1306 tracksRegLiveness: true
1307 body:             |
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
1326 name:            test_remat_v_sat_pk_u8_i16_e32
1327 tracksRegLiveness: true
1328 body:             |
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
1347 name:            test_remat_v_accvgpr_mov_b32
1348 tracksRegLiveness: true
1349 body:             |
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
1368 name:            test_no_remat_v_cndmask_b32_e32
1369 tracksRegLiveness: true
1370 machineFunctionInfo:
1371   stackPtrOffsetReg:  $sgpr32
1372 body:             |
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
1395 name:            test_no_remat_v_cndmask_b32_sdwa
1396 tracksRegLiveness: true
1397 machineFunctionInfo:
1398   stackPtrOffsetReg:  $sgpr32
1399 body:             |
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
1422 name:            test_no_remat_v_cndmask_b32_dpp
1423 tracksRegLiveness: true
1424 machineFunctionInfo:
1425   stackPtrOffsetReg:  $sgpr32
1426 body:             |
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
1449 name:            test_remat_v_cndmask_b32_e64
1450 tracksRegLiveness: true
1451 body:             |
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
1470 name:            test_remat_v_madmk_f32
1471 tracksRegLiveness: true
1472 body:             |
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
1491 name:            test_remat_v_add_f32_e32
1492 tracksRegLiveness: true
1493 body:             |
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
1512 name:            test_remat_v_add_f32_e64
1513 tracksRegLiveness: true
1514 body:             |
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
1533 name:            test_remat_v_add_f32_sdwa
1534 tracksRegLiveness: true
1535 body:             |
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
1554 name:            test_no_remat_v_add_f32_dpp
1555 tracksRegLiveness: true
1556 machineFunctionInfo:
1557   stackPtrOffsetReg:  $sgpr32
1558 body:             |
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
1581 name:            test_remat_v_sub_f32_e32
1582 tracksRegLiveness: true
1583 body:             |
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
1602 name:            test_remat_v_subrev_f32_e32
1603 tracksRegLiveness: true
1604 body:             |
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
1623 name:            test_remat_v_mul_legacy_f32_e32
1624 tracksRegLiveness: true
1625 body:             |
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
1644 name:            test_remat_v_mul_f32_e32
1645 tracksRegLiveness: true
1646 body:             |
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
1665 name:            test_remat_v_mul_i32_i24_e32
1666 tracksRegLiveness: true
1667 body:             |
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
1686 name:            test_remat_v_mul_hi_i32_i24_e32
1687 tracksRegLiveness: true
1688 body:             |
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
1707 name:            test_remat_v_mul_u32_u24_e32
1708 tracksRegLiveness: true
1709 body:             |
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
1728 name:            test_remat_v_mul_hi_u32_u24_e32
1729 tracksRegLiveness: true
1730 body:             |
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
1749 name:            test_remat_v_min_f32_e32
1750 tracksRegLiveness: true
1751 body:             |
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
1770 name:            test_remat_v_max_f32_e32
1771 tracksRegLiveness: true
1772 body:             |
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
1791 name:            test_remat_v_min_i32_e32
1792 tracksRegLiveness: true
1793 body:             |
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
1812 name:            test_remat_v_max_i32_e32
1813 tracksRegLiveness: true
1814 body:             |
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
1833 name:            test_remat_v_min_u32_e32
1834 tracksRegLiveness: true
1835 body:             |
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
1854 name:            test_remat_v_max_u32_e32
1855 tracksRegLiveness: true
1856 body:             |
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
1875 name:            test_remat_v_lshrrev_b32_e32
1876 tracksRegLiveness: true
1877 body:             |
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
1896 name:            test_remat_v_lshlrev_b32_e32
1897 tracksRegLiveness: true
1898 body:             |
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
1917 name:            test_remat_v_ashrrev_i32_e32
1918 tracksRegLiveness: true
1919 body:             |
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
1938 name:            test_remat_v_and_b32_e32
1939 tracksRegLiveness: true
1940 body:             |
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
1959 name:            test_remat_v_or_b32_e32
1960 tracksRegLiveness: true
1961 body:             |
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
1980 name:            test_remat_v_xor_b32_e32
1981 tracksRegLiveness: true
1982 body:             |
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
2001 name:            test_remat_v_madak_f32
2002 tracksRegLiveness: true
2003 body:             |
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
2022 name:            test_remat_v_add_u32_e32
2023 tracksRegLiveness: true
2024 body:             |
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
2043 name:            test_remat_v_sub_u32_e32
2044 tracksRegLiveness: true
2045 body:             |
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
2064 name:            test_remat_v_subrev_u32_e32
2065 tracksRegLiveness: true
2066 body:             |
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
2085 name:            test_remat_v_bfm_b32_e32
2086 tracksRegLiveness: true
2087 body:             |
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
2106 name:            test_remat_v_bcnt_u32_b32_e32
2107 tracksRegLiveness: true
2108 body:             |
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
2127 name:            test_remat_v_mbcnt_lo_u32_b32_e32
2128 tracksRegLiveness: true
2129 body:             |
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
2148 name:            test_remat_v_mbcnt_hi_u32_b32_e32
2149 tracksRegLiveness: true
2150 body:             |
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
2169 name:            test_remat_v_ldexp_f32_e32
2170 tracksRegLiveness: true
2171 body:             |
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
2190 name:            test_remat_v_cvt_pknorm_i16_f32_e32
2191 tracksRegLiveness: true
2192 body:             |
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
2211 name:            test_remat_v_cvt_pknorm_u16_f32_e32
2212 tracksRegLiveness: true
2213 body:             |
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
2232 name:            test_remat_v_cvt_pkrtz_f16_f32_e32
2233 tracksRegLiveness: true
2234 body:             |
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
2253 name:            test_remat_v_cvt_pk_u16_u32_e32
2254 tracksRegLiveness: true
2255 body:             |
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
2274 name:            test_remat_v_cvt_pk_i16_i32_e32
2275 tracksRegLiveness: true
2276 body:             |
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
2295 name:            test_remat_v_min_legacy_f32_e32
2296 tracksRegLiveness: true
2297 body:             |
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
2316 name:            test_remat_v_max_legacy_f32_e32
2317 tracksRegLiveness: true
2318 body:             |
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
2337 name:            test_remat_v_lshr_b32_e32
2338 tracksRegLiveness: true
2339 body:             |
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
2358 name:            test_remat_v_lshl_b32_e32
2359 tracksRegLiveness: true
2360 body:             |
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
2379 name:            test_remat_v_ashr_i32_e32
2380 tracksRegLiveness: true
2381 body:             |
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
2400 name:            test_remat_v_xnor_b32_e32
2401 tracksRegLiveness: true
2402 body:             |
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
2421 name:            test_remat_v_fmamk_f32
2422 tracksRegLiveness: true
2423 body:             |
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
2442 name:            test_remat_v_fmaak_f32
2443 tracksRegLiveness: true
2444 body:             |
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
2463 name:            test_remat_v_mad_legacy_f32_e64
2464 tracksRegLiveness: true
2465 body:             |
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
2484 name:            test_remat_v_mad_f32_e64
2485 tracksRegLiveness: true
2486 body:             |
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
2505 name:            test_remat_v_fma_legacy_f32_e64
2506 tracksRegLiveness: true
2507 body:             |
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
2526 name:            test_remat_v_fma_f32_e64
2527 tracksRegLiveness: true
2528 body:             |
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
2547 name:            test_remat_v_mad_i32_i24_e64
2548 tracksRegLiveness: true
2549 body:             |
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
2568 name:            test_remat_v_mad_u32_u24_e64
2569 tracksRegLiveness: true
2570 body:             |
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
2589 name:            test_remat_v_lerp_u8_e64
2590 tracksRegLiveness: true
2591 body:             |
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
2610 name:            test_remat_v_fma_f64_e64
2611 tracksRegLiveness: true
2612 body:             |
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
2631 name:            test_remat_v_add_f64_e64
2632 tracksRegLiveness: true
2633 body:             |
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
2652 name:            test_remat_v_mul_f64_e64
2653 tracksRegLiveness: true
2654 body:             |
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
2673 name:            test_remat_v_min_f64_e64
2674 tracksRegLiveness: true
2675 body:             |
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
2694 name:            test_remat_v_max_f64_e64
2695 tracksRegLiveness: true
2696 body:             |
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
2715 name:            test_remat_v_mul_lo_u32_e64
2716 tracksRegLiveness: true
2717 body:             |
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
2736 name:            test_remat_v_mul_hi_u32_e64
2737 tracksRegLiveness: true
2738 body:             |
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
2757 name:            test_remat_v_mul_lo_i32_e64
2758 tracksRegLiveness: true
2759 body:             |
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
2778 name:            test_remat_v_mul_hi_i32_e64
2779 tracksRegLiveness: true
2780 body:             |
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
2799 name:            test_remat_v_cubeid_f32_e64
2800 tracksRegLiveness: true
2801 body:             |
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
2820 name:            test_remat_v_cubesc_f32_e64
2821 tracksRegLiveness: true
2822 body:             |
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
2841 name:            test_remat_v_cubetc_f32_e64
2842 tracksRegLiveness: true
2843 body:             |
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
2862 name:            test_remat_v_cubema_f32_e64
2863 tracksRegLiveness: true
2864 body:             |
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
2883 name:            test_remat_v_bfe_u32_e64
2884 tracksRegLiveness: true
2885 body:             |
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
2904 name:            test_remat_v_bfe_i32_e64
2905 tracksRegLiveness: true
2906 body:             |
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
2925 name:            test_remat_v_bfi_b32_e64
2926 tracksRegLiveness: true
2927 body:             |
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
2946 name:            test_remat_v_alignbit_b32_e64
2947 tracksRegLiveness: true
2948 body:             |
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
2967 name:            test_remat_v_alignbyte_b32_e64
2968 tracksRegLiveness: true
2969 body:             |
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
2988 name:            test_remat_v_min3_i32_e64
2989 tracksRegLiveness: true
2990 body:             |
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
3009 name:            test_remat_v_min3_u32_e64
3010 tracksRegLiveness: true
3011 body:             |
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
3030 name:            test_remat_v_max3_i32_e64
3031 tracksRegLiveness: true
3032 body:             |
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
3051 name:            test_remat_v_max3_u32_e64
3052 tracksRegLiveness: true
3053 body:             |
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
3072 name:            test_remat_v_med3_i32_e64
3073 tracksRegLiveness: true
3074 body:             |
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
3093 name:            test_remat_v_med3_u32_e64
3094 tracksRegLiveness: true
3095 body:             |
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
3114 name:            test_remat_v_min3_f32_e64
3115 tracksRegLiveness: true
3116 body:             |
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
3135 name:            test_remat_v_max3_f32_e64
3136 tracksRegLiveness: true
3137 body:             |
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
3156 name:            test_remat_v_med3_f32_e64
3157 tracksRegLiveness: true
3158 body:             |
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
3177 name:            test_remat_v_sad_u8_e64
3178 tracksRegLiveness: true
3179 body:             |
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
3198 name:            test_remat_v_sad_hi_u8_e64
3199 tracksRegLiveness: true
3200 body:             |
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
3219 name:            test_remat_v_sad_u16_e64
3220 tracksRegLiveness: true
3221 body:             |
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
3240 name:            test_remat_v_sad_u32_e64
3241 tracksRegLiveness: true
3242 body:             |
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
3261 name:            test_remat_v_cvt_pk_u8_f32_e64
3262 tracksRegLiveness: true
3263 body:             |
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
3282 name:            test_remat_v_div_fixup_f64_e64
3283 tracksRegLiveness: true
3284 body:             |
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
3303 name:            test_remat_v_ldexp_f64_e64
3304 tracksRegLiveness: true
3305 body:             |
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
3324 name:            test_remat_v_msad_u8_e64
3325 tracksRegLiveness: true
3326 body:             |
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
3345 name:            test_remat_v_trig_preop_f64_e64
3346 tracksRegLiveness: true
3347 body:             |
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
3366 name:            test_remat_v_lshlrev_b64_e64
3367 tracksRegLiveness: true
3368 body:             |
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
3387 name:            test_remat_v_lshrrev_b64_e64
3388 tracksRegLiveness: true
3389 body:             |
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
3408 name:            test_remat_v_ashrrev_i64_e64
3409 tracksRegLiveness: true
3410 body:             |
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
3429 name:            test_remat_v_perm_b32_e64
3430 tracksRegLiveness: true
3431 body:             |
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
3450 name:            test_remat_v_add3_u32_e64
3451 tracksRegLiveness: true
3452 body:             |
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
3471 name:            test_remat_v_and_or_b32_e64
3472 tracksRegLiveness: true
3473 body:             |
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
3492 name:            test_remat_v_or3_b32_e64
3493 tracksRegLiveness: true
3494 body:             |
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
3513 name:            test_remat_v_xad_u32_e64
3514 tracksRegLiveness: true
3515 body:             |
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
3534 name:            test_remat_v_add_i32_e64
3535 tracksRegLiveness: true
3536 body:             |
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
3555 name:            test_remat_v_add_lshl_u32_e64
3556 tracksRegLiveness: true
3557 body:             |
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
3576 name:            test_remat_v_sub_i32_e64
3577 tracksRegLiveness: true
3578 body:             |
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
3597 name:            test_remat_v_lshl_add_u32_e64
3598 tracksRegLiveness: true
3599 body:             |
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
3618 name:            test_remat_v_lshl_or_b32_e64
3619 tracksRegLiveness: true
3620 body:             |
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
3640 name:            test_remat_v_lshlrev_b16_e32
3641 tracksRegLiveness: true
3642 body:             |
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
3665 name:            test_remat_v_lshlrev_b16_e64
3666 tracksRegLiveness: true
3667 body:             |
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
3691 name:            test_remat_v_lshrrev_b16_e32
3692 tracksRegLiveness: true
3693 body:             |
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
3716 name:            test_remat_v_lshrrev_b16_e64
3717 tracksRegLiveness: true
3718 body:             |
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
3742 name:            test_remat_v_ashrrev_i16_e32
3743 tracksRegLiveness: true
3744 body:             |
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
3767 name:            test_remat_v_ashrrev_i16_e64
3768 tracksRegLiveness: true
3769 body:             |
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
3793 name:            test_remat_v_add_u16_e32
3794 tracksRegLiveness: true
3795 body:             |
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
3819 name:            test_remat_v_add_u16_e64
3820 tracksRegLiveness: true
3821 body:             |
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
3845 name:            test_remat_v_sub_u16_e32
3846 tracksRegLiveness: true
3847 body:             |
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
3871 name:            test_remat_v_sub_u16_e64
3872 tracksRegLiveness: true
3873 body:             |
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
3897 name:            test_remat_v_subrev_u16_e32
3898 tracksRegLiveness: true
3899 body:             |
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
3923 name:            test_remat_v_subrev_u16_e64
3924 tracksRegLiveness: true
3925 body:             |
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
3949 name:            test_remat_v_min_u16_e32
3950 tracksRegLiveness: true
3951 body:             |
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
3975 name:            test_remat_v_min_u16_e64
3976 tracksRegLiveness: true
3977 body:             |
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
4001 name:            test_remat_v_max_u16_e32
4002 tracksRegLiveness: true
4003 body:             |
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
4027 name:            test_remat_v_max_u16_e64
4028 tracksRegLiveness: true
4029 body:             |
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
4053 name:            test_remat_v_min_i16_e32
4054 tracksRegLiveness: true
4055 body:             |
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
4079 name:            test_remat_v_min_i16_e64
4080 tracksRegLiveness: true
4081 body:             |
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
4105 name:            test_remat_v_max_i16_e32
4106 tracksRegLiveness: true
4107 body:             |
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
4131 name:            test_remat_v_max_i16_e64
4132 tracksRegLiveness: true
4133 body:             |
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
4157 name:            test_remat_v_mul_lo_u16_e32
4158 tracksRegLiveness: true
4159 body:             |
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
4183 name:            test_remat_v_mul_lo_u16_e64
4184 tracksRegLiveness: true
4185 body:             |
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
4209 name:            test_remat_v_add_f16_e32
4210 tracksRegLiveness: true
4211 body:             |
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
4235 name:            test_remat_v_add_f16_e64
4236 tracksRegLiveness: true
4237 body:             |
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
4261 name:            test_remat_v_sub_f16_e32
4262 tracksRegLiveness: true
4263 body:             |
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
4287 name:            test_remat_v_sub_f16_e64
4288 tracksRegLiveness: true
4289 body:             |
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
4313 name:            test_remat_v_subrev_f16_e32
4314 tracksRegLiveness: true
4315 body:             |
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
4339 name:            test_remat_v_subrev_f16_e64
4340 tracksRegLiveness: true
4341 body:             |
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
4365 name:            test_remat_v_mul_f16_e32
4366 tracksRegLiveness: true
4367 body:             |
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
4391 name:            test_remat_v_mul_f16_e64
4392 tracksRegLiveness: true
4393 body:             |
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
4417 name:            test_remat_v_ldexp_f16_e32
4418 tracksRegLiveness: true
4419 body:             |
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
4443 name:            test_remat_v_ldexp_f16_e64
4444 tracksRegLiveness: true
4445 body:             |
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
4469 name:            test_remat_v_min_f16_e32
4470 tracksRegLiveness: true
4471 body:             |
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
4495 name:            test_remat_v_min_f16_e64
4496 tracksRegLiveness: true
4497 body:             |
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
4521 name:            test_remat_v_max_f16_e32
4522 tracksRegLiveness: true
4523 body:             |
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
4547 name:            test_remat_v_max_f16_e64
4548 tracksRegLiveness: true
4549 body:             |
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
4573 name:            test_remat_v_madak_f16
4574 tracksRegLiveness: true
4575 body:             |
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
4599 name:            test_remat_v_madmk_f16
4600 tracksRegLiveness: true
4601 body:             |
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
4625 name:            test_remat_v_fmamk_f16
4626 tracksRegLiveness: true
4627 body:             |
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
4651 name:            test_remat_v_pk_mad_i16
4652 tracksRegLiveness: true
4653 body:             |
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
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
4678 name:            test_remat_v_pk_mad_u16
4679 tracksRegLiveness: true
4680 body:             |
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
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
4705 name:            test_remat_v_pk_add_u16
4706 tracksRegLiveness: true
4707 body:             |
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
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
4732 name:            test_remat_v_pk_add_i16
4733 tracksRegLiveness: true
4734 body:             |
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
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
4759 name:            test_remat_v_pk_mul_lo_u16
4760 tracksRegLiveness: true
4761 body:             |
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
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
4786 name:            test_remat_v_pk_min_i16
4787 tracksRegLiveness: true
4788 body:             |
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
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
4813 name:            test_remat_v_pk_max_i16
4814 tracksRegLiveness: true
4815 body:             |
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
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
4840 name:            test_remat_v_pk_min_u16
4841 tracksRegLiveness: true
4842 body:             |
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
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
4867 name:            test_remat_v_pk_max_u16
4868 tracksRegLiveness: true
4869 body:             |
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
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
4894 name:            test_remat_v_pk_sub_u16
4895 tracksRegLiveness: true
4896 body:             |
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
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
4921 name:            test_remat_v_pk_sub_i16
4922 tracksRegLiveness: true
4923 body:             |
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
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
4948 name:            test_remat_v_pk_lshlrev_b16
4949 tracksRegLiveness: true
4950 body:             |
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
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
4975 name:            test_remat_v_pk_ashrrev_i16
4976 tracksRegLiveness: true
4977 body:             |
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
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
5002 name:            test_remat_v_pk_lshrrev_b16
5003 tracksRegLiveness: true
5004 body:             |
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
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
5029 name:            test_remat_v_pk_add_f16
5030 tracksRegLiveness: true
5031 body:             |
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
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
5055 # Missing nofpexcept
5057 name:            test_no_remat_v_pk_add_f16
5058 tracksRegLiveness: true
5059 machineFunctionInfo:
5060   stackPtrOffsetReg:  $sgpr32
5061 body:             |
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
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
5092 name:            test_remat_v_pk_mul_f16
5093 tracksRegLiveness: true
5094 body:             |
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
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
5119 name:            test_remat_v_pk_min_f16
5120 tracksRegLiveness: true
5121 body:             |
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
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
5146 name:            test_remat_v_pk_max_f16
5147 tracksRegLiveness: true
5148 body:             |
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
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
5173 name:            test_remat_v_pk_fma_f16
5174 tracksRegLiveness: true
5175 body:             |
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
5193     S_NOP 0, implicit %1
5194     S_NOP 0, implicit %2
5195     S_NOP 0, implicit %3
5196     S_ENDPGM 0, implicit %0
5200 name:            test_remat_v_mad_mix_f32
5201 tracksRegLiveness: true
5202 body:             |
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
5226 name:            test_remat_v_fma_mix_f32
5227 tracksRegLiveness: true
5228 body:             |
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
5252 name:            test_remat_v_pk_fma_f32
5253 tracksRegLiveness: true
5254 body:             |
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
5278 name:            test_no_remat_v_pk_fma_f32
5279 tracksRegLiveness: true
5280 machineFunctionInfo:
5281   stackPtrOffsetReg:  $sgpr32
5282 body:             |
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
5312 name:            test_remat_v_pk_mul_f32
5313 tracksRegLiveness: true
5314 body:             |
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
5338 name:            test_remat_v_pk_add_f32
5339 tracksRegLiveness: true
5340 body:             |
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
5364 name:            test_remat_v_pk_mov_b32
5365 tracksRegLiveness: true
5366 body:             |
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
5389 # Make sure there's no verifier error after making a subregister def dead. The
5390 # dead interval still needs a subrange.
5393 name:            test_remat_subreg_def
5394 tracksRegLiveness: true
5395 body:             |
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