[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / remat-vop.mir
blob2eb2e1b7c399ba9377be75884898e53ce2b65f1b
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -verify-machineinstrs --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: renamable $vgpr1 = V_MOV_B32_e32 2, implicit $exec
12     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
13     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
14     ; GCN: renamable $vgpr0 = V_MOV_B32_e32 3, implicit $exec
15     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
16     ; GCN: 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: renamable $vgpr0 = V_MOV_B32_e32 1, implicit $exec, implicit $m0
35     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
36     ; GCN: renamable $vgpr1 = V_MOV_B32_e32 2, implicit $exec, implicit $m0
37     ; GCN: renamable $vgpr0 = V_MOV_B32_e32 3, implicit $exec, implicit $m0
38     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
39     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
40     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
41     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
42     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
43     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
44     ; GCN: 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: renamable $vgpr1 = V_MOV_B32_e32 2, implicit $exec
64     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
65     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
66     ; GCN: renamable $vgpr0 = V_MOV_B32_e32 3, implicit $exec
67     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
68     ; GCN: $exec = S_ANDN2_B64_term $exec, undef renamable $sgpr0_sgpr1, implicit-def $scc
69     ; GCN: 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: renamable $vgpr1 = V_MOV_B32_e64 2, implicit $exec
87     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
88     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
89     ; GCN: renamable $vgpr0 = V_MOV_B32_e64 3, implicit $exec
90     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
91     ; GCN: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
110     ; GCN: renamable $vgpr1 = V_MOV_B32_dpp undef $vgpr1, undef $vgpr0, 1, 15, 15, 1, implicit $exec
111     ; GCN: renamable $vgpr0 = V_MOV_B32_dpp undef $vgpr0, undef $vgpr0, 1, 15, 15, 1, implicit $exec
112     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
113     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
114     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
115     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
116     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
117     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
118     ; GCN: 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: renamable $vgpr1 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
135     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
136     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
137     ; GCN: renamable $vgpr0 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
138     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
139     ; GCN: 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: renamable $agpr1 = V_ACCVGPR_WRITE_B32_e64 2, implicit $exec
156     ; GCN: S_NOP 0, implicit killed renamable $agpr0
157     ; GCN: S_NOP 0, implicit killed renamable $agpr1
158     ; GCN: renamable $agpr0 = V_ACCVGPR_WRITE_B32_e64 3, implicit $exec
159     ; GCN: S_NOP 0, implicit killed renamable $agpr0
160     ; GCN: 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: renamable $vgpr2_vgpr3 = V_MOV_B64_PSEUDO 2, implicit $exec
177     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
178     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
179     ; GCN: renamable $vgpr0_vgpr1 = V_MOV_B64_PSEUDO 3, implicit $exec
180     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
181     ; GCN: 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: renamable $vgpr1 = nofpexcept V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
198     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
199     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
200     ; GCN: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
201     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
202     ; GCN: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
221     ; GCN: renamable $vgpr1 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
222     ; GCN: renamable $vgpr0 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
223     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
224     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
225     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
226     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
227     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
228     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
229     ; GCN: 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: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode
249     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
250     ; GCN: renamable $vgpr1 = nofpexcept V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
251     ; GCN: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
252     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
253     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
254     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
255     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
256     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
257     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
258     ; GCN: 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: renamable $vgpr1 = nofpexcept V_CVT_I32_F64_e64 0, 2, 0, 0, implicit $exec, implicit $mode
276     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
277     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
278     ; GCN: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e64 0, 3, 0, 0, implicit $exec, implicit $mode
279     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
280     ; GCN: 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: renamable $vgpr1 = nofpexcept V_CVT_I32_F64_e64 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
299     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
300     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
301     ; GCN: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e64 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
302     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
303     ; GCN: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
322     ; GCN: renamable $vgpr1 = V_CVT_I32_F64_dpp undef $vgpr1, 0, undef $vgpr0_vgpr1, 336, 0, 0, 0, implicit $exec, implicit $mode
323     ; GCN: renamable $vgpr0 = V_CVT_I32_F64_dpp undef $vgpr0, 0, undef $vgpr0_vgpr1, 336, 0, 0, 0, implicit $exec, implicit $mode
324     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
325     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
326     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
327     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
328     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
329     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
330     ; GCN: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
349     ; GCN: renamable $vgpr1 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode, implicit-def $m0
350     ; GCN: renamable $vgpr0 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode, implicit-def $m0
351     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
352     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
353     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
354     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
355     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
356     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
357     ; GCN: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
376     ; GCN: renamable $vgpr1 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode, implicit $m0
377     ; GCN: renamable $vgpr0 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode, implicit $m0
378     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
379     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
380     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
381     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
382     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
383     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
384     ; GCN: 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: renamable $vgpr2_vgpr3 = V_CVT_F64_I32_e32 2, implicit $exec, implicit $mode
401     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
402     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
403     ; GCN: renamable $vgpr0_vgpr1 = V_CVT_F64_I32_e32 3, implicit $exec, implicit $mode
404     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
405     ; GCN: 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: renamable $vgpr1 = nofpexcept V_CVT_F32_F64_e32 2, implicit $exec, implicit $mode
422     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
423     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
424     ; GCN: renamable $vgpr0 = nofpexcept V_CVT_F32_F64_e32 3, implicit $exec, implicit $mode
425     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
426     ; GCN: 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: renamable $vgpr2_vgpr3 = nofpexcept V_CVT_F64_F32_e32 2, implicit $exec, implicit $mode
443     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
444     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
445     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_CVT_F64_F32_e32 3, implicit $exec, implicit $mode
446     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
447     ; GCN: 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: renamable $vgpr1 = nofpexcept V_CVT_U32_F64_e32 2, implicit $exec, implicit $mode
464     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
465     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
466     ; GCN: renamable $vgpr0 = nofpexcept V_CVT_U32_F64_e32 3, implicit $exec, implicit $mode
467     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
468     ; GCN: 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: renamable $vgpr2_vgpr3 = V_CVT_F64_U32_e32 2, implicit $exec, implicit $mode
485     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
486     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
487     ; GCN: renamable $vgpr0_vgpr1 = V_CVT_F64_U32_e32 3, implicit $exec, implicit $mode
488     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
489     ; GCN: 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: renamable $vgpr1 = V_CVT_F32_I32_e32 2, implicit $exec, implicit $mode
506     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
507     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
508     ; GCN: renamable $vgpr0 = V_CVT_F32_I32_e32 3, implicit $exec, implicit $mode
509     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
510     ; GCN: 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: renamable $vgpr1 = V_CVT_F32_I32_sdwa 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
527     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
528     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
529     ; GCN: renamable $vgpr0 = V_CVT_F32_I32_sdwa 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
530     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
531     ; GCN: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
552     ; GCN: 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: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
555     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
556     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
557     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
558     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
559     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
560     ; GCN: 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: renamable $vgpr1 = V_CVT_F32_U32_e32 2, implicit $exec, implicit $mode
577     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
578     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
579     ; GCN: renamable $vgpr0 = V_CVT_F32_U32_e32 3, implicit $exec, implicit $mode
580     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
581     ; GCN: 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: renamable $vgpr1 = nofpexcept V_CVT_U32_F32_e32 2, implicit $exec, implicit $mode
598     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
599     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
600     ; GCN: renamable $vgpr0 = nofpexcept V_CVT_U32_F32_e32 3, implicit $exec, implicit $mode
601     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
602     ; GCN: 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: renamable $vgpr1 = nofpexcept V_CVT_I32_F32_e32 2, implicit $exec, implicit $mode
619     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
620     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
621     ; GCN: renamable $vgpr0 = nofpexcept V_CVT_I32_F32_e32 3, implicit $exec, implicit $mode
622     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
623     ; GCN: 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: renamable $vgpr1 = nofpexcept V_CVT_F32_F16_e32 2, implicit $exec, implicit $mode
640     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
641     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
642     ; GCN: renamable $vgpr0 = nofpexcept V_CVT_F32_F16_e32 3, implicit $exec, implicit $mode
643     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
644     ; GCN: 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: renamable $vgpr1 = V_CVT_RPI_I32_F32_e32 2, implicit $exec, implicit $mode
661     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
662     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
663     ; GCN: renamable $vgpr0 = V_CVT_RPI_I32_F32_e32 3, implicit $exec, implicit $mode
664     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
665     ; GCN: 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: renamable $vgpr1 = V_CVT_FLR_I32_F32_e32 2, implicit $exec, implicit $mode
682     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
683     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
684     ; GCN: renamable $vgpr0 = V_CVT_FLR_I32_F32_e32 3, implicit $exec, implicit $mode
685     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
686     ; GCN: 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: renamable $vgpr1 = V_CVT_OFF_F32_I4_e32 2, implicit $exec, implicit $mode
703     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
704     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
705     ; GCN: renamable $vgpr0 = V_CVT_OFF_F32_I4_e32 3, implicit $exec, implicit $mode
706     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
707     ; GCN: 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: renamable $vgpr1 = V_CVT_F32_UBYTE0_e32 2, implicit $exec, implicit $mode
724     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
725     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
726     ; GCN: renamable $vgpr0 = V_CVT_F32_UBYTE0_e32 3, implicit $exec, implicit $mode
727     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
728     ; GCN: 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: renamable $vgpr1 = nofpexcept V_FRACT_F32_e32 2, implicit $exec, implicit $mode
745     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
746     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
747     ; GCN: renamable $vgpr0 = nofpexcept V_FRACT_F32_e32 3, implicit $exec, implicit $mode
748     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
749     ; GCN: 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: renamable $vgpr1 = nofpexcept V_TRUNC_F32_e32 2, implicit $exec, implicit $mode
766     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
767     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
768     ; GCN: renamable $vgpr0 = nofpexcept V_TRUNC_F32_e32 3, implicit $exec, implicit $mode
769     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
770     ; GCN: 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: renamable $vgpr1 = nofpexcept V_CEIL_F32_e32 2, implicit $exec, implicit $mode
787     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
788     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
789     ; GCN: renamable $vgpr0 = nofpexcept V_CEIL_F32_e32 3, implicit $exec, implicit $mode
790     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
791     ; GCN: 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: renamable $vgpr1 = nofpexcept V_RNDNE_F32_e32 2, implicit $exec, implicit $mode
808     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
809     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
810     ; GCN: renamable $vgpr0 = nofpexcept V_RNDNE_F32_e32 3, implicit $exec, implicit $mode
811     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
812     ; GCN: 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: renamable $vgpr1 = nofpexcept V_FLOOR_F32_e32 2, implicit $exec, implicit $mode
829     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
830     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
831     ; GCN: renamable $vgpr0 = nofpexcept V_FLOOR_F32_e32 3, implicit $exec, implicit $mode
832     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
833     ; GCN: 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: renamable $vgpr1 = nofpexcept V_EXP_F32_e32 2, implicit $exec, implicit $mode
850     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
851     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
852     ; GCN: renamable $vgpr0 = nofpexcept V_EXP_F32_e32 3, implicit $exec, implicit $mode
853     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
854     ; GCN: 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: renamable $vgpr1 = nofpexcept V_LOG_F32_e32 2, implicit $exec, implicit $mode
871     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
872     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
873     ; GCN: renamable $vgpr0 = nofpexcept V_LOG_F32_e32 3, implicit $exec, implicit $mode
874     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
875     ; GCN: 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: renamable $vgpr1 = nofpexcept V_RCP_F32_e32 2, implicit $exec, implicit $mode
892     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
893     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
894     ; GCN: renamable $vgpr0 = nofpexcept V_RCP_F32_e32 3, implicit $exec, implicit $mode
895     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
896     ; GCN: 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: renamable $vgpr1 = nofpexcept V_RCP_IFLAG_F32_e32 2, implicit $exec, implicit $mode
913     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
914     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
915     ; GCN: renamable $vgpr0 = nofpexcept V_RCP_IFLAG_F32_e32 3, implicit $exec, implicit $mode
916     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
917     ; GCN: 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: renamable $vgpr1 = nofpexcept V_RSQ_F32_e32 2, implicit $exec, implicit $mode
934     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
935     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
936     ; GCN: renamable $vgpr0 = nofpexcept V_RSQ_F32_e32 3, implicit $exec, implicit $mode
937     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
938     ; GCN: 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: renamable $vgpr1 = nofpexcept V_SQRT_F32_e32 2, implicit $exec, implicit $mode
955     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
956     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
957     ; GCN: renamable $vgpr0 = nofpexcept V_SQRT_F32_e32 3, implicit $exec, implicit $mode
958     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
959     ; GCN: 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: renamable $vgpr2_vgpr3 = nofpexcept V_RCP_F64_e32 2, implicit $exec, implicit $mode
976     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
977     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
978     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_RCP_F64_e32 3, implicit $exec, implicit $mode
979     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
980     ; GCN: 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: renamable $vgpr2_vgpr3 = nofpexcept V_RSQ_F64_e32 2, implicit $exec, implicit $mode
997     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
998     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
999     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_RSQ_F64_e32 3, implicit $exec, implicit $mode
1000     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1001     ; GCN: 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: renamable $vgpr2_vgpr3 = nofpexcept V_SQRT_F64_e32 2, implicit $exec, implicit $mode
1018     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1019     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
1020     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_SQRT_F64_e32 3, implicit $exec, implicit $mode
1021     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1022     ; GCN: 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: renamable $vgpr1 = nofpexcept V_SIN_F32_e32 2, implicit $exec, implicit $mode
1039     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1040     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1041     ; GCN: renamable $vgpr0 = nofpexcept V_SIN_F32_e32 3, implicit $exec, implicit $mode
1042     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1043     ; GCN: 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: renamable $vgpr1 = nofpexcept V_COS_F32_e32 2, implicit $exec, implicit $mode
1060     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1061     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1062     ; GCN: renamable $vgpr0 = nofpexcept V_COS_F32_e32 3, implicit $exec, implicit $mode
1063     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1064     ; GCN: 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: renamable $vgpr1 = V_NOT_B32_e32 2, implicit $exec, implicit $mode
1081     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1082     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1083     ; GCN: renamable $vgpr0 = V_NOT_B32_e32 3, implicit $exec, implicit $mode
1084     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1085     ; GCN: 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: renamable $vgpr1 = V_BFREV_B32_e32 2, implicit $exec, implicit $mode
1102     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1103     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1104     ; GCN: renamable $vgpr0 = V_BFREV_B32_e32 3, implicit $exec, implicit $mode
1105     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1106     ; GCN: 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: renamable $vgpr1 = V_FFBH_U32_e32 2, implicit $exec, implicit $mode
1123     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1124     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1125     ; GCN: renamable $vgpr0 = V_FFBH_U32_e32 3, implicit $exec, implicit $mode
1126     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1127     ; GCN: 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: renamable $vgpr1 = V_FFBL_B32_e32 2, implicit $exec, implicit $mode
1144     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1145     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1146     ; GCN: renamable $vgpr0 = V_FFBL_B32_e32 3, implicit $exec, implicit $mode
1147     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1148     ; GCN: 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: renamable $vgpr1 = V_FFBH_I32_e32 2, implicit $exec, implicit $mode
1165     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1166     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1167     ; GCN: renamable $vgpr0 = V_FFBH_I32_e32 3, implicit $exec, implicit $mode
1168     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1169     ; GCN: 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: renamable $vgpr1 = nofpexcept V_FREXP_EXP_I32_F64_e32 2, implicit $exec, implicit $mode
1186     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1187     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1188     ; GCN: renamable $vgpr0 = nofpexcept V_FREXP_EXP_I32_F64_e32 3, implicit $exec, implicit $mode
1189     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1190     ; GCN: 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: renamable $vgpr2_vgpr3 = nofpexcept V_FREXP_MANT_F64_e32 2, implicit $exec, implicit $mode
1207     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1208     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
1209     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_FREXP_MANT_F64_e32 3, implicit $exec, implicit $mode
1210     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1211     ; GCN: 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: renamable $vgpr2_vgpr3 = nofpexcept V_FRACT_F64_e32 2, implicit $exec, implicit $mode
1228     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1229     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
1230     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_FRACT_F64_e32 3, implicit $exec, implicit $mode
1231     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1232     ; GCN: 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: renamable $vgpr1 = nofpexcept V_FREXP_EXP_I32_F32_e32 2, implicit $exec, implicit $mode
1249     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1250     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1251     ; GCN: renamable $vgpr0 = nofpexcept V_FREXP_EXP_I32_F32_e32 3, implicit $exec, implicit $mode
1252     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1253     ; GCN: 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: renamable $vgpr1 = nofpexcept V_FREXP_MANT_F32_e32 2, implicit $exec, implicit $mode
1270     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1271     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1272     ; GCN: renamable $vgpr0 = nofpexcept V_FREXP_MANT_F32_e32 3, implicit $exec, implicit $mode
1273     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1274     ; GCN: 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: renamable $vgpr1 = nofpexcept V_EXP_LEGACY_F32_e32 2, implicit $exec, implicit $mode
1291     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1292     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1293     ; GCN: renamable $vgpr0 = nofpexcept V_EXP_LEGACY_F32_e32 3, implicit $exec, implicit $mode
1294     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1295     ; GCN: 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: renamable $vgpr1 = nofpexcept V_LOG_LEGACY_F32_e32 2, implicit $exec, implicit $mode
1312     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1313     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1314     ; GCN: renamable $vgpr0 = nofpexcept V_LOG_LEGACY_F32_e32 3, implicit $exec, implicit $mode
1315     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1316     ; GCN: 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: renamable $vgpr1 = V_SAT_PK_U8_I16_e32 2, implicit $exec, implicit $mode
1333     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1334     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1335     ; GCN: renamable $vgpr0 = V_SAT_PK_U8_I16_e32 3, implicit $exec, implicit $mode
1336     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1337     ; GCN: 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: renamable $agpr1 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1354     ; GCN: S_NOP 0, implicit killed renamable $agpr0
1355     ; GCN: S_NOP 0, implicit killed renamable $agpr1
1356     ; GCN: renamable $agpr0 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1357     ; GCN: S_NOP 0, implicit killed renamable $agpr0
1358     ; GCN: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
1377     ; GCN: renamable $vgpr1 = V_CNDMASK_B32_e32 1, undef $vgpr0, implicit $exec, implicit undef $vcc
1378     ; GCN: renamable $vgpr0 = V_CNDMASK_B32_e32 1, undef $vgpr0, implicit $exec, implicit undef $vcc
1379     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
1380     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
1381     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1382     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1383     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
1384     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1385     ; GCN: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
1404     ; GCN: renamable $vgpr1 = V_CNDMASK_B32_sdwa 0, undef $vgpr0, 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1405     ; GCN: renamable $vgpr0 = V_CNDMASK_B32_sdwa 0, undef $vgpr0, 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1406     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
1407     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
1408     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1409     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1410     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
1411     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1412     ; GCN: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
1431     ; GCN: 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: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
1434     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
1435     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1436     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1437     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
1438     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1439     ; GCN: 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: renamable $vgpr1 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef $sgpr0_sgpr1, implicit $exec
1456     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1457     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1458     ; GCN: renamable $vgpr0 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef $sgpr0_sgpr1, implicit $exec
1459     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1460     ; GCN: 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: renamable $vgpr1 = nofpexcept V_MADMK_F32 2, 2, undef $vgpr0, implicit $exec, implicit $mode
1477     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1478     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1479     ; GCN: renamable $vgpr0 = nofpexcept V_MADMK_F32 3, 3, undef $vgpr0, implicit $exec, implicit $mode
1480     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1481     ; GCN: 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: renamable $vgpr1 = nofpexcept V_ADD_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1498     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1499     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1500     ; GCN: renamable $vgpr0 = nofpexcept V_ADD_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1501     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1502     ; GCN: 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: renamable $vgpr1 = nofpexcept V_ADD_F32_e64 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
1519     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1520     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1521     ; GCN: renamable $vgpr0 = nofpexcept V_ADD_F32_e64 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
1522     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1523     ; GCN: 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: 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: S_NOP 0, implicit killed renamable $vgpr0
1541     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1542     ; GCN: 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: S_NOP 0, implicit killed renamable $vgpr0
1544     ; GCN: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
1563     ; GCN: 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: 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: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
1566     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
1567     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1568     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1569     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
1570     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1571     ; GCN: 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: renamable $vgpr1 = nofpexcept V_SUB_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1588     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1589     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1590     ; GCN: renamable $vgpr0 = nofpexcept V_SUB_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1591     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1592     ; GCN: 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: renamable $vgpr1 = nofpexcept V_SUBREV_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1609     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1610     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1611     ; GCN: renamable $vgpr0 = nofpexcept V_SUBREV_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1612     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1613     ; GCN: 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: renamable $vgpr1 = nofpexcept V_MUL_LEGACY_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1630     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1631     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1632     ; GCN: renamable $vgpr0 = nofpexcept V_MUL_LEGACY_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1633     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1634     ; GCN: 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: renamable $vgpr1 = nofpexcept V_MUL_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1651     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1652     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1653     ; GCN: renamable $vgpr0 = nofpexcept V_MUL_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1654     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1655     ; GCN: 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: renamable $vgpr1 = V_MUL_I32_I24_e32 2, undef $vgpr0, implicit $exec
1672     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1673     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1674     ; GCN: renamable $vgpr0 = V_MUL_I32_I24_e32 3, undef $vgpr0, implicit $exec
1675     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1676     ; GCN: 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: renamable $vgpr1 = V_MUL_HI_I32_I24_e32 2, undef $vgpr0, implicit $exec
1693     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1694     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1695     ; GCN: renamable $vgpr0 = V_MUL_HI_I32_I24_e32 3, undef $vgpr0, implicit $exec
1696     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1697     ; GCN: 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: renamable $vgpr1 = V_MUL_U32_U24_e32 2, undef $vgpr0, implicit $exec
1714     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1715     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1716     ; GCN: renamable $vgpr0 = V_MUL_U32_U24_e32 3, undef $vgpr0, implicit $exec
1717     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1718     ; GCN: 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: renamable $vgpr1 = V_MUL_HI_U32_U24_e32 2, undef $vgpr0, implicit $exec
1735     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1736     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1737     ; GCN: renamable $vgpr0 = V_MUL_HI_U32_U24_e32 3, undef $vgpr0, implicit $exec
1738     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1739     ; GCN: 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: renamable $vgpr1 = nofpexcept V_MIN_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1756     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1757     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1758     ; GCN: renamable $vgpr0 = nofpexcept V_MIN_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1759     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1760     ; GCN: 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: renamable $vgpr1 = nofpexcept V_MAX_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1777     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1778     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1779     ; GCN: renamable $vgpr0 = nofpexcept V_MAX_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1780     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1781     ; GCN: 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: renamable $vgpr1 = V_MIN_I32_e32 2, undef $vgpr0, implicit $exec
1798     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1799     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1800     ; GCN: renamable $vgpr0 = V_MIN_I32_e32 3, undef $vgpr0, implicit $exec
1801     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1802     ; GCN: 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: renamable $vgpr1 = V_MAX_I32_e32 2, undef $vgpr0, implicit $exec
1819     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1820     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1821     ; GCN: renamable $vgpr0 = V_MAX_I32_e32 3, undef $vgpr0, implicit $exec
1822     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1823     ; GCN: 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: renamable $vgpr1 = V_MIN_U32_e32 2, undef $vgpr0, implicit $exec
1840     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1841     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1842     ; GCN: renamable $vgpr0 = V_MIN_U32_e32 3, undef $vgpr0, implicit $exec
1843     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1844     ; GCN: 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: renamable $vgpr1 = V_MAX_U32_e32 2, undef $vgpr0, implicit $exec
1861     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1862     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1863     ; GCN: renamable $vgpr0 = V_MAX_U32_e32 3, undef $vgpr0, implicit $exec
1864     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1865     ; GCN: 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: renamable $vgpr1 = V_LSHRREV_B32_e32 2, undef $vgpr0, implicit $exec
1882     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1883     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1884     ; GCN: renamable $vgpr0 = V_LSHRREV_B32_e32 3, undef $vgpr0, implicit $exec
1885     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1886     ; GCN: 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: renamable $vgpr1 = V_LSHLREV_B32_e32 2, undef $vgpr0, implicit $exec
1903     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1904     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1905     ; GCN: renamable $vgpr0 = V_LSHLREV_B32_e32 3, undef $vgpr0, implicit $exec
1906     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1907     ; GCN: 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: renamable $vgpr1 = V_ASHRREV_I32_e32 2, undef $vgpr0, implicit $exec
1924     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1925     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1926     ; GCN: renamable $vgpr0 = V_ASHRREV_I32_e32 3, undef $vgpr0, implicit $exec
1927     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1928     ; GCN: 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: renamable $vgpr1 = V_AND_B32_e32 2, undef $vgpr0, implicit $exec
1945     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1946     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1947     ; GCN: renamable $vgpr0 = V_AND_B32_e32 3, undef $vgpr0, implicit $exec
1948     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1949     ; GCN: 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: renamable $vgpr1 = V_OR_B32_e32 2, undef $vgpr0, implicit $exec
1966     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1967     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1968     ; GCN: renamable $vgpr0 = V_OR_B32_e32 3, undef $vgpr0, implicit $exec
1969     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1970     ; GCN: 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: renamable $vgpr1 = V_XOR_B32_e32 2, undef $vgpr0, implicit $exec
1987     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1988     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
1989     ; GCN: renamable $vgpr0 = V_XOR_B32_e32 3, undef $vgpr0, implicit $exec
1990     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
1991     ; GCN: 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: renamable $vgpr1 = nofpexcept V_MADAK_F32 2, undef $vgpr0, 2, implicit $exec, implicit $mode
2008     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2009     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2010     ; GCN: renamable $vgpr0 = nofpexcept V_MADAK_F32 3, undef $vgpr0, 3, implicit $exec, implicit $mode
2011     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2012     ; GCN: 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: renamable $vgpr1 = V_ADD_U32_e32 2, undef $vgpr0, implicit $exec
2029     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2030     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2031     ; GCN: renamable $vgpr0 = V_ADD_U32_e32 3, undef $vgpr0, implicit $exec
2032     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2033     ; GCN: 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: renamable $vgpr1 = V_SUB_U32_e32 2, undef $vgpr0, implicit $exec
2050     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2051     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2052     ; GCN: renamable $vgpr0 = V_SUB_U32_e32 3, undef $vgpr0, implicit $exec
2053     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2054     ; GCN: 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: renamable $vgpr1 = V_SUBREV_U32_e32 2, undef $vgpr0, implicit $exec
2071     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2072     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2073     ; GCN: renamable $vgpr0 = V_SUBREV_U32_e32 3, undef $vgpr0, implicit $exec
2074     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2075     ; GCN: 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: renamable $vgpr1 = V_BFM_B32_e32 2, undef $vgpr0, implicit $exec
2092     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2093     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2094     ; GCN: renamable $vgpr0 = V_BFM_B32_e32 3, undef $vgpr0, implicit $exec
2095     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2096     ; GCN: 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: renamable $vgpr1 = V_BCNT_U32_B32_e32 2, undef $vgpr0, implicit $exec
2113     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2114     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2115     ; GCN: renamable $vgpr0 = V_BCNT_U32_B32_e32 3, undef $vgpr0, implicit $exec
2116     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2117     ; GCN: 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: renamable $vgpr1 = V_MBCNT_LO_U32_B32_e32 2, undef $vgpr0, implicit $exec
2134     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2135     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2136     ; GCN: renamable $vgpr0 = V_MBCNT_LO_U32_B32_e32 3, undef $vgpr0, implicit $exec
2137     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2138     ; GCN: 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: renamable $vgpr1 = V_MBCNT_HI_U32_B32_e32 2, undef $vgpr0, implicit $exec
2155     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2156     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2157     ; GCN: renamable $vgpr0 = V_MBCNT_HI_U32_B32_e32 3, undef $vgpr0, implicit $exec
2158     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2159     ; GCN: 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: renamable $vgpr1 = nofpexcept V_LDEXP_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2176     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2177     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2178     ; GCN: renamable $vgpr0 = nofpexcept V_LDEXP_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2179     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2180     ; GCN: 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: renamable $vgpr1 = V_CVT_PKNORM_I16_F32_e32 2, undef $vgpr0, implicit $exec
2197     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2198     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2199     ; GCN: renamable $vgpr0 = V_CVT_PKNORM_I16_F32_e32 3, undef $vgpr0, implicit $exec
2200     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2201     ; GCN: 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: renamable $vgpr1 = V_CVT_PKNORM_U16_F32_e32 2, undef $vgpr0, implicit $exec
2218     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2219     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2220     ; GCN: renamable $vgpr0 = V_CVT_PKNORM_U16_F32_e32 3, undef $vgpr0, implicit $exec
2221     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2222     ; GCN: 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: renamable $vgpr1 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2239     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2240     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2241     ; GCN: renamable $vgpr0 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2242     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2243     ; GCN: 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: renamable $vgpr1 = V_CVT_PK_U16_U32_e32 2, undef $vgpr0, implicit $exec
2260     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2261     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2262     ; GCN: renamable $vgpr0 = V_CVT_PK_U16_U32_e32 3, undef $vgpr0, implicit $exec
2263     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2264     ; GCN: 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: renamable $vgpr1 = V_CVT_PK_I16_I32_e32 2, undef $vgpr0, implicit $exec
2281     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2282     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2283     ; GCN: renamable $vgpr0 = V_CVT_PK_I16_I32_e32 3, undef $vgpr0, implicit $exec
2284     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2285     ; GCN: 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: renamable $vgpr1 = nofpexcept V_MIN_LEGACY_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2302     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2303     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2304     ; GCN: renamable $vgpr0 = nofpexcept V_MIN_LEGACY_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2305     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2306     ; GCN: 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: renamable $vgpr1 = nofpexcept V_MAX_LEGACY_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2323     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2324     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2325     ; GCN: renamable $vgpr0 = nofpexcept V_MAX_LEGACY_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2326     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2327     ; GCN: 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: renamable $vgpr1 = V_LSHR_B32_e32 2, undef $vgpr0, implicit $exec
2344     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2345     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2346     ; GCN: renamable $vgpr0 = V_LSHR_B32_e32 3, undef $vgpr0, implicit $exec
2347     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2348     ; GCN: 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: renamable $vgpr1 = V_LSHL_B32_e32 2, undef $vgpr0, implicit $exec
2365     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2366     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2367     ; GCN: renamable $vgpr0 = V_LSHL_B32_e32 3, undef $vgpr0, implicit $exec
2368     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2369     ; GCN: 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: renamable $vgpr1 = V_ASHR_I32_e32 2, undef $vgpr0, implicit $exec
2386     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2387     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2388     ; GCN: renamable $vgpr0 = V_ASHR_I32_e32 3, undef $vgpr0, implicit $exec
2389     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2390     ; GCN: 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_no_remat_v_ldexp_f16_e32
2401 tracksRegLiveness: true
2402 machineFunctionInfo:
2403   stackPtrOffsetReg:  $sgpr32
2404 body:             |
2405   bb.0:
2406     ; GCN-LABEL: name: test_no_remat_v_ldexp_f16_e32
2407     ; GCN: renamable $vgpr0 = nofpexcept V_LDEXP_F16_e32 1, undef $vgpr0, implicit $exec, implicit $mode
2408     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
2409     ; GCN: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2410     ; GCN: renamable $vgpr0 = nofpexcept V_LDEXP_F16_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2411     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
2412     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
2413     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2414     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2415     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
2416     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2417     ; GCN: S_ENDPGM 0
2418     %1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
2419     %2:vgpr_32 = nofpexcept V_LDEXP_F16_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
2420     %3:vgpr_32 = nofpexcept V_LDEXP_F16_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
2421     S_NOP 0, implicit %1
2422     S_NOP 0, implicit %2
2423     S_NOP 0, implicit %3
2424     S_ENDPGM 0
2427 name:            test_no_remat_v_lshrrev_b16_e32
2428 tracksRegLiveness: true
2429 machineFunctionInfo:
2430   stackPtrOffsetReg:  $sgpr32
2431 body:             |
2432   bb.0:
2433     ; GCN-LABEL: name: test_no_remat_v_lshrrev_b16_e32
2434     ; GCN: renamable $vgpr0 = V_LSHRREV_B16_e32 1, undef $vgpr0, implicit $exec
2435     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
2436     ; GCN: renamable $vgpr1 = V_LSHRREV_B16_e32 2, undef $vgpr0, implicit $exec
2437     ; GCN: renamable $vgpr0 = V_LSHRREV_B16_e32 3, undef $vgpr0, implicit $exec
2438     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
2439     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
2440     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2441     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2442     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
2443     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2444     ; GCN: S_ENDPGM 0
2445     %1:vgpr_32 = V_LSHRREV_B16_e32 1, undef %0:vgpr_32, implicit $exec
2446     %2:vgpr_32 = V_LSHRREV_B16_e32 2, undef %0:vgpr_32, implicit $exec
2447     %3:vgpr_32 = V_LSHRREV_B16_e32 3, undef %0:vgpr_32, implicit $exec
2448     S_NOP 0, implicit %1
2449     S_NOP 0, implicit %2
2450     S_NOP 0, implicit %3
2451     S_ENDPGM 0
2454 name:            test_no_remat_v_lshlrev_b16_e32
2455 tracksRegLiveness: true
2456 machineFunctionInfo:
2457   stackPtrOffsetReg:  $sgpr32
2458 body:             |
2459   bb.0:
2460     ; GCN-LABEL: name: test_no_remat_v_lshlrev_b16_e32
2461     ; GCN: renamable $vgpr0 = V_LSHLREV_B16_e32 1, undef $vgpr0, implicit $exec
2462     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
2463     ; GCN: renamable $vgpr1 = V_LSHLREV_B16_e32 2, undef $vgpr0, implicit $exec
2464     ; GCN: renamable $vgpr0 = V_LSHLREV_B16_e32 3, undef $vgpr0, implicit $exec
2465     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
2466     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
2467     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2468     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2469     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
2470     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2471     ; GCN: S_ENDPGM 0
2472     %1:vgpr_32 = V_LSHLREV_B16_e32 1, undef %0:vgpr_32, implicit $exec
2473     %2:vgpr_32 = V_LSHLREV_B16_e32 2, undef %0:vgpr_32, implicit $exec
2474     %3:vgpr_32 = V_LSHLREV_B16_e32 3, undef %0:vgpr_32, implicit $exec
2475     S_NOP 0, implicit %1
2476     S_NOP 0, implicit %2
2477     S_NOP 0, implicit %3
2478     S_ENDPGM 0
2481 name:            test_no_remat_v_ashrrev_i16_e32
2482 tracksRegLiveness: true
2483 machineFunctionInfo:
2484   stackPtrOffsetReg:  $sgpr32
2485 body:             |
2486   bb.0:
2487     ; GCN-LABEL: name: test_no_remat_v_ashrrev_i16_e32
2488     ; GCN: renamable $vgpr0 = V_ASHRREV_I16_e32 1, undef $vgpr0, implicit $exec
2489     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
2490     ; GCN: renamable $vgpr1 = V_ASHRREV_I16_e32 2, undef $vgpr0, implicit $exec
2491     ; GCN: renamable $vgpr0 = V_ASHRREV_I16_e32 3, undef $vgpr0, implicit $exec
2492     ; GCN: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
2493     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
2494     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2495     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2496     ; GCN: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
2497     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2498     ; GCN: S_ENDPGM 0
2499     %1:vgpr_32 = V_ASHRREV_I16_e32 1, undef %0:vgpr_32, implicit $exec
2500     %2:vgpr_32 = V_ASHRREV_I16_e32 2, undef %0:vgpr_32, implicit $exec
2501     %3:vgpr_32 = V_ASHRREV_I16_e32 3, undef %0:vgpr_32, implicit $exec
2502     S_NOP 0, implicit %1
2503     S_NOP 0, implicit %2
2504     S_NOP 0, implicit %3
2505     S_ENDPGM 0
2508 name:            test_remat_v_xnor_b32_e32
2509 tracksRegLiveness: true
2510 body:             |
2511   bb.0:
2512     ; GCN-LABEL: name: test_remat_v_xnor_b32_e32
2513     ; GCN: renamable $vgpr0 = V_XNOR_B32_e32 1, undef $vgpr0, implicit $exec
2514     ; GCN: renamable $vgpr1 = V_XNOR_B32_e32 2, undef $vgpr0, implicit $exec
2515     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2516     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2517     ; GCN: renamable $vgpr0 = V_XNOR_B32_e32 3, undef $vgpr0, implicit $exec
2518     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2519     ; GCN: S_ENDPGM 0
2520     %1:vgpr_32 = V_XNOR_B32_e32 1, undef %0:vgpr_32, implicit $exec
2521     %2:vgpr_32 = V_XNOR_B32_e32 2, undef %0:vgpr_32, implicit $exec
2522     %3:vgpr_32 = V_XNOR_B32_e32 3, undef %0:vgpr_32, implicit $exec
2523     S_NOP 0, implicit %1
2524     S_NOP 0, implicit %2
2525     S_NOP 0, implicit %3
2526     S_ENDPGM 0
2529 name:            test_remat_v_fmamk_f32
2530 tracksRegLiveness: true
2531 body:             |
2532   bb.0:
2533     ; GCN-LABEL: name: test_remat_v_fmamk_f32
2534     ; GCN: renamable $vgpr0 = nofpexcept V_FMAMK_F32 1, 1, undef $vgpr0, implicit $exec, implicit $mode
2535     ; GCN: renamable $vgpr1 = nofpexcept V_FMAMK_F32 2, 2, undef $vgpr0, implicit $exec, implicit $mode
2536     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2537     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2538     ; GCN: renamable $vgpr0 = nofpexcept V_FMAMK_F32 3, 3, undef $vgpr0, implicit $exec, implicit $mode
2539     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2540     ; GCN: S_ENDPGM 0
2541     %1:vgpr_32 = nofpexcept V_FMAMK_F32 1, 1, undef %0:vgpr_32, implicit $exec, implicit $mode
2542     %2:vgpr_32 = nofpexcept V_FMAMK_F32 2, 2, undef %0:vgpr_32, implicit $exec, implicit $mode
2543     %3:vgpr_32 = nofpexcept V_FMAMK_F32 3, 3, undef %0:vgpr_32, implicit $exec, implicit $mode
2544     S_NOP 0, implicit %1
2545     S_NOP 0, implicit %2
2546     S_NOP 0, implicit %3
2547     S_ENDPGM 0
2550 name:            test_remat_v_fmaak_f32
2551 tracksRegLiveness: true
2552 body:             |
2553   bb.0:
2554     ; GCN-LABEL: name: test_remat_v_fmaak_f32
2555     ; GCN: renamable $vgpr0 = nofpexcept V_FMAAK_F32 1, undef $vgpr0, 1, implicit $exec, implicit $mode
2556     ; GCN: renamable $vgpr1 = nofpexcept V_FMAAK_F32 2, undef $vgpr0, 2, implicit $exec, implicit $mode
2557     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2558     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2559     ; GCN: renamable $vgpr0 = nofpexcept V_FMAAK_F32 3, undef $vgpr0, 3, implicit $exec, implicit $mode
2560     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2561     ; GCN: S_ENDPGM 0
2562     %1:vgpr_32 = nofpexcept V_FMAAK_F32 1, undef %0:vgpr_32, 1, implicit $exec, implicit $mode
2563     %2:vgpr_32 = nofpexcept V_FMAAK_F32 2, undef %0:vgpr_32, 2, implicit $exec, implicit $mode
2564     %3:vgpr_32 = nofpexcept V_FMAAK_F32 3, undef %0:vgpr_32, 3, implicit $exec, implicit $mode
2565     S_NOP 0, implicit %1
2566     S_NOP 0, implicit %2
2567     S_NOP 0, implicit %3
2568     S_ENDPGM 0
2571 name:            test_remat_v_mad_legacy_f32_e64
2572 tracksRegLiveness: true
2573 body:             |
2574   bb.0:
2575     ; GCN-LABEL: name: test_remat_v_mad_legacy_f32_e64
2576     ; GCN: renamable $vgpr0 = nofpexcept V_MAD_LEGACY_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2577     ; GCN: renamable $vgpr1 = nofpexcept V_MAD_LEGACY_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2578     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2579     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2580     ; GCN: renamable $vgpr0 = nofpexcept V_MAD_LEGACY_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2581     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2582     ; GCN: S_ENDPGM 0
2583     %1:vgpr_32 = nofpexcept V_MAD_LEGACY_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2584     %2:vgpr_32 = nofpexcept V_MAD_LEGACY_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2585     %3:vgpr_32 = nofpexcept V_MAD_LEGACY_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2586     S_NOP 0, implicit %1
2587     S_NOP 0, implicit %2
2588     S_NOP 0, implicit %3
2589     S_ENDPGM 0
2592 name:            test_remat_v_mad_f32_e64
2593 tracksRegLiveness: true
2594 body:             |
2595   bb.0:
2596     ; GCN-LABEL: name: test_remat_v_mad_f32_e64
2597     ; GCN: renamable $vgpr0 = nofpexcept V_MAD_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2598     ; GCN: renamable $vgpr1 = nofpexcept V_MAD_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2599     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2600     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2601     ; GCN: renamable $vgpr0 = nofpexcept V_MAD_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2602     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2603     ; GCN: S_ENDPGM 0
2604     %1:vgpr_32 = nofpexcept V_MAD_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2605     %2:vgpr_32 = nofpexcept V_MAD_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2606     %3:vgpr_32 = nofpexcept V_MAD_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2607     S_NOP 0, implicit %1
2608     S_NOP 0, implicit %2
2609     S_NOP 0, implicit %3
2610     S_ENDPGM 0
2613 name:            test_remat_v_fma_legacy_f32_e64
2614 tracksRegLiveness: true
2615 body:             |
2616   bb.0:
2617     ; GCN-LABEL: name: test_remat_v_fma_legacy_f32_e64
2618     ; GCN: renamable $vgpr0 = nofpexcept V_FMA_LEGACY_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2619     ; GCN: renamable $vgpr1 = nofpexcept V_FMA_LEGACY_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2620     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2621     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2622     ; GCN: renamable $vgpr0 = nofpexcept V_FMA_LEGACY_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2623     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2624     ; GCN: S_ENDPGM 0
2625     %1:vgpr_32 = nofpexcept V_FMA_LEGACY_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2626     %2:vgpr_32 = nofpexcept V_FMA_LEGACY_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2627     %3:vgpr_32 = nofpexcept V_FMA_LEGACY_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2628     S_NOP 0, implicit %1
2629     S_NOP 0, implicit %2
2630     S_NOP 0, implicit %3
2631     S_ENDPGM 0
2634 name:            test_remat_v_fma_f32_e64
2635 tracksRegLiveness: true
2636 body:             |
2637   bb.0:
2638     ; GCN-LABEL: name: test_remat_v_fma_f32_e64
2639     ; GCN: renamable $vgpr0 = nofpexcept V_FMA_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2640     ; GCN: renamable $vgpr1 = nofpexcept V_FMA_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2641     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2642     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2643     ; GCN: renamable $vgpr0 = nofpexcept V_FMA_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2644     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2645     ; GCN: S_ENDPGM 0
2646     %1:vgpr_32 = nofpexcept V_FMA_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2647     %2:vgpr_32 = nofpexcept V_FMA_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2648     %3:vgpr_32 = nofpexcept V_FMA_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2649     S_NOP 0, implicit %1
2650     S_NOP 0, implicit %2
2651     S_NOP 0, implicit %3
2652     S_ENDPGM 0
2655 name:            test_remat_v_mad_i32_i24_e64
2656 tracksRegLiveness: true
2657 body:             |
2658   bb.0:
2659     ; GCN-LABEL: name: test_remat_v_mad_i32_i24_e64
2660     ; GCN: renamable $vgpr0 = V_MAD_I32_I24_e64 1, 1, undef $vgpr0, 0, implicit $exec
2661     ; GCN: renamable $vgpr1 = V_MAD_I32_I24_e64 2, 2, undef $vgpr0, 0, implicit $exec
2662     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2663     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2664     ; GCN: renamable $vgpr0 = V_MAD_I32_I24_e64 3, 3, undef $vgpr0, 0, implicit $exec
2665     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2666     ; GCN: S_ENDPGM 0
2667     %1:vgpr_32 = V_MAD_I32_I24_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
2668     %2:vgpr_32 = V_MAD_I32_I24_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
2669     %3:vgpr_32 = V_MAD_I32_I24_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
2670     S_NOP 0, implicit %1
2671     S_NOP 0, implicit %2
2672     S_NOP 0, implicit %3
2673     S_ENDPGM 0
2676 name:            test_remat_v_mad_u32_u24_e64
2677 tracksRegLiveness: true
2678 body:             |
2679   bb.0:
2680     ; GCN-LABEL: name: test_remat_v_mad_u32_u24_e64
2681     ; GCN: renamable $vgpr0 = V_MAD_U32_U24_e64 1, 1, undef $vgpr0, 0, implicit $exec
2682     ; GCN: renamable $vgpr1 = V_MAD_U32_U24_e64 2, 2, undef $vgpr0, 0, implicit $exec
2683     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2684     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2685     ; GCN: renamable $vgpr0 = V_MAD_U32_U24_e64 3, 3, undef $vgpr0, 0, implicit $exec
2686     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2687     ; GCN: S_ENDPGM 0
2688     %1:vgpr_32 = V_MAD_U32_U24_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
2689     %2:vgpr_32 = V_MAD_U32_U24_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
2690     %3:vgpr_32 = V_MAD_U32_U24_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
2691     S_NOP 0, implicit %1
2692     S_NOP 0, implicit %2
2693     S_NOP 0, implicit %3
2694     S_ENDPGM 0
2697 name:            test_remat_v_lerp_u8_e64
2698 tracksRegLiveness: true
2699 body:             |
2700   bb.0:
2701     ; GCN-LABEL: name: test_remat_v_lerp_u8_e64
2702     ; GCN: renamable $vgpr0 = V_LERP_U8_e64 1, 1, undef $vgpr0, implicit $exec
2703     ; GCN: renamable $vgpr1 = V_LERP_U8_e64 2, 2, undef $vgpr0, implicit $exec
2704     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2705     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2706     ; GCN: renamable $vgpr0 = V_LERP_U8_e64 3, 3, undef $vgpr0, implicit $exec
2707     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2708     ; GCN: S_ENDPGM 0
2709     %1:vgpr_32 = V_LERP_U8_e64 1, 1, undef %0:vgpr_32, implicit $exec
2710     %2:vgpr_32 = V_LERP_U8_e64 2, 2, undef %0:vgpr_32, implicit $exec
2711     %3:vgpr_32 = V_LERP_U8_e64 3, 3, undef %0:vgpr_32, implicit $exec
2712     S_NOP 0, implicit %1
2713     S_NOP 0, implicit %2
2714     S_NOP 0, implicit %3
2715     S_ENDPGM 0
2718 name:            test_remat_v_fma_f64_e64
2719 tracksRegLiveness: true
2720 body:             |
2721   bb.0:
2722     ; GCN-LABEL: name: test_remat_v_fma_f64_e64
2723     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_FMA_F64_e64 0, 1, 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2724     ; GCN: renamable $vgpr2_vgpr3 = nofpexcept V_FMA_F64_e64 0, 2, 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2725     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2726     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2727     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_FMA_F64_e64 0, 3, 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2728     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2729     ; GCN: S_ENDPGM 0
2730     %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
2731     %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
2732     %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
2733     S_NOP 0, implicit %1
2734     S_NOP 0, implicit %2
2735     S_NOP 0, implicit %3
2736     S_ENDPGM 0
2739 name:            test_remat_v_add_f64_e64
2740 tracksRegLiveness: true
2741 body:             |
2742   bb.0:
2743     ; GCN-LABEL: name: test_remat_v_add_f64_e64
2744     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_ADD_F64_e64 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2745     ; GCN: renamable $vgpr2_vgpr3 = nofpexcept V_ADD_F64_e64 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2746     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2747     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2748     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_ADD_F64_e64 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2749     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2750     ; GCN: S_ENDPGM 0
2751     %1:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2752     %2:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2753     %3:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2754     S_NOP 0, implicit %1
2755     S_NOP 0, implicit %2
2756     S_NOP 0, implicit %3
2757     S_ENDPGM 0
2760 name:            test_remat_v_mul_f64_e64
2761 tracksRegLiveness: true
2762 body:             |
2763   bb.0:
2764     ; GCN-LABEL: name: test_remat_v_mul_f64_e64
2765     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_MUL_F64_e64 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2766     ; GCN: renamable $vgpr2_vgpr3 = nofpexcept V_MUL_F64_e64 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2767     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2768     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2769     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_MUL_F64_e64 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2770     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2771     ; GCN: S_ENDPGM 0
2772     %1:vreg_64_align2 = nofpexcept V_MUL_F64_e64 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2773     %2:vreg_64_align2 = nofpexcept V_MUL_F64_e64 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2774     %3:vreg_64_align2 = nofpexcept V_MUL_F64_e64 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2775     S_NOP 0, implicit %1
2776     S_NOP 0, implicit %2
2777     S_NOP 0, implicit %3
2778     S_ENDPGM 0
2781 name:            test_remat_v_min_f64_e64
2782 tracksRegLiveness: true
2783 body:             |
2784   bb.0:
2785     ; GCN-LABEL: name: test_remat_v_min_f64_e64
2786     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_MIN_F64_e64 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2787     ; GCN: renamable $vgpr2_vgpr3 = nofpexcept V_MIN_F64_e64 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2788     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2789     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2790     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_MIN_F64_e64 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2791     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2792     ; GCN: S_ENDPGM 0
2793     %1:vreg_64_align2 = nofpexcept V_MIN_F64_e64 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2794     %2:vreg_64_align2 = nofpexcept V_MIN_F64_e64 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2795     %3:vreg_64_align2 = nofpexcept V_MIN_F64_e64 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2796     S_NOP 0, implicit %1
2797     S_NOP 0, implicit %2
2798     S_NOP 0, implicit %3
2799     S_ENDPGM 0
2802 name:            test_remat_v_max_f64_e64
2803 tracksRegLiveness: true
2804 body:             |
2805   bb.0:
2806     ; GCN-LABEL: name: test_remat_v_max_f64_e64
2807     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_MAX_F64_e64 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2808     ; GCN: renamable $vgpr2_vgpr3 = nofpexcept V_MAX_F64_e64 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2809     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2810     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2811     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_MAX_F64_e64 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2812     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2813     ; GCN: S_ENDPGM 0
2814     %1:vreg_64_align2 = nofpexcept V_MAX_F64_e64 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2815     %2:vreg_64_align2 = nofpexcept V_MAX_F64_e64 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2816     %3:vreg_64_align2 = nofpexcept V_MAX_F64_e64 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2817     S_NOP 0, implicit %1
2818     S_NOP 0, implicit %2
2819     S_NOP 0, implicit %3
2820     S_ENDPGM 0
2823 name:            test_remat_v_mul_lo_u32_e64
2824 tracksRegLiveness: true
2825 body:             |
2826   bb.0:
2827     ; GCN-LABEL: name: test_remat_v_mul_lo_u32_e64
2828     ; GCN: renamable $vgpr0 = V_MUL_LO_U32_e64 1, undef $vgpr0, implicit $exec
2829     ; GCN: renamable $vgpr1 = V_MUL_LO_U32_e64 2, undef $vgpr0, implicit $exec
2830     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2831     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2832     ; GCN: renamable $vgpr0 = V_MUL_LO_U32_e64 3, undef $vgpr0, implicit $exec
2833     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2834     ; GCN: S_ENDPGM 0
2835     %1:vgpr_32 = V_MUL_LO_U32_e64 1, undef %0:vgpr_32, implicit $exec
2836     %2:vgpr_32 = V_MUL_LO_U32_e64 2, undef %0:vgpr_32, implicit $exec
2837     %3:vgpr_32 = V_MUL_LO_U32_e64 3, undef %0:vgpr_32, implicit $exec
2838     S_NOP 0, implicit %1
2839     S_NOP 0, implicit %2
2840     S_NOP 0, implicit %3
2841     S_ENDPGM 0
2844 name:            test_remat_v_mul_hi_u32_e64
2845 tracksRegLiveness: true
2846 body:             |
2847   bb.0:
2848     ; GCN-LABEL: name: test_remat_v_mul_hi_u32_e64
2849     ; GCN: renamable $vgpr0 = V_MUL_HI_U32_e64 1, undef $vgpr0, implicit $exec
2850     ; GCN: renamable $vgpr1 = V_MUL_HI_U32_e64 2, undef $vgpr0, implicit $exec
2851     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2852     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2853     ; GCN: renamable $vgpr0 = V_MUL_HI_U32_e64 3, undef $vgpr0, implicit $exec
2854     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2855     ; GCN: S_ENDPGM 0
2856     %1:vgpr_32 = V_MUL_HI_U32_e64 1, undef %0:vgpr_32, implicit $exec
2857     %2:vgpr_32 = V_MUL_HI_U32_e64 2, undef %0:vgpr_32, implicit $exec
2858     %3:vgpr_32 = V_MUL_HI_U32_e64 3, undef %0:vgpr_32, implicit $exec
2859     S_NOP 0, implicit %1
2860     S_NOP 0, implicit %2
2861     S_NOP 0, implicit %3
2862     S_ENDPGM 0
2865 name:            test_remat_v_mul_lo_i32_e64
2866 tracksRegLiveness: true
2867 body:             |
2868   bb.0:
2869     ; GCN-LABEL: name: test_remat_v_mul_lo_i32_e64
2870     ; GCN: renamable $vgpr0 = V_MUL_LO_I32_e64 1, undef $vgpr0, implicit $exec
2871     ; GCN: renamable $vgpr1 = V_MUL_LO_I32_e64 2, undef $vgpr0, implicit $exec
2872     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2873     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2874     ; GCN: renamable $vgpr0 = V_MUL_LO_I32_e64 3, undef $vgpr0, implicit $exec
2875     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2876     ; GCN: S_ENDPGM 0
2877     %1:vgpr_32 = V_MUL_LO_I32_e64 1, undef %0:vgpr_32, implicit $exec
2878     %2:vgpr_32 = V_MUL_LO_I32_e64 2, undef %0:vgpr_32, implicit $exec
2879     %3:vgpr_32 = V_MUL_LO_I32_e64 3, undef %0:vgpr_32, implicit $exec
2880     S_NOP 0, implicit %1
2881     S_NOP 0, implicit %2
2882     S_NOP 0, implicit %3
2883     S_ENDPGM 0
2886 name:            test_remat_v_mul_hi_i32_e64
2887 tracksRegLiveness: true
2888 body:             |
2889   bb.0:
2890     ; GCN-LABEL: name: test_remat_v_mul_hi_i32_e64
2891     ; GCN: renamable $vgpr0 = V_MUL_HI_I32_e64 1, undef $vgpr0, implicit $exec
2892     ; GCN: renamable $vgpr1 = V_MUL_HI_I32_e64 2, undef $vgpr0, implicit $exec
2893     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2894     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2895     ; GCN: renamable $vgpr0 = V_MUL_HI_I32_e64 3, undef $vgpr0, implicit $exec
2896     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2897     ; GCN: S_ENDPGM 0
2898     %1:vgpr_32 = V_MUL_HI_I32_e64 1, undef %0:vgpr_32, implicit $exec
2899     %2:vgpr_32 = V_MUL_HI_I32_e64 2, undef %0:vgpr_32, implicit $exec
2900     %3:vgpr_32 = V_MUL_HI_I32_e64 3, undef %0:vgpr_32, implicit $exec
2901     S_NOP 0, implicit %1
2902     S_NOP 0, implicit %2
2903     S_NOP 0, implicit %3
2904     S_ENDPGM 0
2907 name:            test_remat_v_cubeid_f32_e64
2908 tracksRegLiveness: true
2909 body:             |
2910   bb.0:
2911     ; GCN-LABEL: name: test_remat_v_cubeid_f32_e64
2912     ; GCN: renamable $vgpr0 = V_CUBEID_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2913     ; GCN: renamable $vgpr1 = V_CUBEID_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2914     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2915     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2916     ; GCN: renamable $vgpr0 = V_CUBEID_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2917     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2918     ; GCN: S_ENDPGM 0
2919     %1:vgpr_32 = V_CUBEID_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2920     %2:vgpr_32 = V_CUBEID_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2921     %3:vgpr_32 = V_CUBEID_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2922     S_NOP 0, implicit %1
2923     S_NOP 0, implicit %2
2924     S_NOP 0, implicit %3
2925     S_ENDPGM 0
2928 name:            test_remat_v_cubesc_f32_e64
2929 tracksRegLiveness: true
2930 body:             |
2931   bb.0:
2932     ; GCN-LABEL: name: test_remat_v_cubesc_f32_e64
2933     ; GCN: renamable $vgpr0 = V_CUBESC_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2934     ; GCN: renamable $vgpr1 = V_CUBESC_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2935     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2936     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2937     ; GCN: renamable $vgpr0 = V_CUBESC_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2938     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2939     ; GCN: S_ENDPGM 0
2940     %1:vgpr_32 = V_CUBESC_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2941     %2:vgpr_32 = V_CUBESC_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2942     %3:vgpr_32 = V_CUBESC_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2943     S_NOP 0, implicit %1
2944     S_NOP 0, implicit %2
2945     S_NOP 0, implicit %3
2946     S_ENDPGM 0
2949 name:            test_remat_v_cubetc_f32_e64
2950 tracksRegLiveness: true
2951 body:             |
2952   bb.0:
2953     ; GCN-LABEL: name: test_remat_v_cubetc_f32_e64
2954     ; GCN: renamable $vgpr0 = V_CUBETC_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2955     ; GCN: renamable $vgpr1 = V_CUBETC_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2956     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2957     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2958     ; GCN: renamable $vgpr0 = V_CUBETC_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2959     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2960     ; GCN: S_ENDPGM 0
2961     %1:vgpr_32 = V_CUBETC_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2962     %2:vgpr_32 = V_CUBETC_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2963     %3:vgpr_32 = V_CUBETC_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2964     S_NOP 0, implicit %1
2965     S_NOP 0, implicit %2
2966     S_NOP 0, implicit %3
2967     S_ENDPGM 0
2970 name:            test_remat_v_cubema_f32_e64
2971 tracksRegLiveness: true
2972 body:             |
2973   bb.0:
2974     ; GCN-LABEL: name: test_remat_v_cubema_f32_e64
2975     ; GCN: renamable $vgpr0 = V_CUBEMA_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2976     ; GCN: renamable $vgpr1 = V_CUBEMA_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2977     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2978     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
2979     ; GCN: renamable $vgpr0 = V_CUBEMA_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2980     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2981     ; GCN: S_ENDPGM 0
2982     %1:vgpr_32 = V_CUBEMA_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2983     %2:vgpr_32 = V_CUBEMA_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2984     %3:vgpr_32 = V_CUBEMA_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2985     S_NOP 0, implicit %1
2986     S_NOP 0, implicit %2
2987     S_NOP 0, implicit %3
2988     S_ENDPGM 0
2991 name:            test_remat_v_bfe_u32_e64
2992 tracksRegLiveness: true
2993 body:             |
2994   bb.0:
2995     ; GCN-LABEL: name: test_remat_v_bfe_u32_e64
2996     ; GCN: renamable $vgpr0 = V_BFE_U32_e64 1, 1, undef $vgpr0, implicit $exec
2997     ; GCN: renamable $vgpr1 = V_BFE_U32_e64 2, 2, undef $vgpr0, implicit $exec
2998     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
2999     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3000     ; GCN: renamable $vgpr0 = V_BFE_U32_e64 3, 3, undef $vgpr0, implicit $exec
3001     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3002     ; GCN: S_ENDPGM 0
3003     %1:vgpr_32 = V_BFE_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3004     %2:vgpr_32 = V_BFE_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3005     %3:vgpr_32 = V_BFE_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3006     S_NOP 0, implicit %1
3007     S_NOP 0, implicit %2
3008     S_NOP 0, implicit %3
3009     S_ENDPGM 0
3012 name:            test_remat_v_bfe_i32_e64
3013 tracksRegLiveness: true
3014 body:             |
3015   bb.0:
3016     ; GCN-LABEL: name: test_remat_v_bfe_i32_e64
3017     ; GCN: renamable $vgpr0 = V_BFE_I32_e64 1, 1, undef $vgpr0, implicit $exec
3018     ; GCN: renamable $vgpr1 = V_BFE_I32_e64 2, 2, undef $vgpr0, implicit $exec
3019     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3020     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3021     ; GCN: renamable $vgpr0 = V_BFE_I32_e64 3, 3, undef $vgpr0, implicit $exec
3022     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3023     ; GCN: S_ENDPGM 0
3024     %1:vgpr_32 = V_BFE_I32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3025     %2:vgpr_32 = V_BFE_I32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3026     %3:vgpr_32 = V_BFE_I32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3027     S_NOP 0, implicit %1
3028     S_NOP 0, implicit %2
3029     S_NOP 0, implicit %3
3030     S_ENDPGM 0
3033 name:            test_remat_v_bfi_b32_e64
3034 tracksRegLiveness: true
3035 body:             |
3036   bb.0:
3037     ; GCN-LABEL: name: test_remat_v_bfi_b32_e64
3038     ; GCN: renamable $vgpr0 = V_BFI_B32_e64 1, 1, undef $vgpr0, implicit $exec
3039     ; GCN: renamable $vgpr1 = V_BFI_B32_e64 2, 2, undef $vgpr0, implicit $exec
3040     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3041     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3042     ; GCN: renamable $vgpr0 = V_BFI_B32_e64 3, 3, undef $vgpr0, implicit $exec
3043     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3044     ; GCN: S_ENDPGM 0
3045     %1:vgpr_32 = V_BFI_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3046     %2:vgpr_32 = V_BFI_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3047     %3:vgpr_32 = V_BFI_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3048     S_NOP 0, implicit %1
3049     S_NOP 0, implicit %2
3050     S_NOP 0, implicit %3
3051     S_ENDPGM 0
3054 name:            test_remat_v_alignbit_b32_e64
3055 tracksRegLiveness: true
3056 body:             |
3057   bb.0:
3058     ; GCN-LABEL: name: test_remat_v_alignbit_b32_e64
3059     ; GCN: renamable $vgpr0 = V_ALIGNBIT_B32_e64 1, 1, undef $vgpr0, implicit $exec
3060     ; GCN: renamable $vgpr1 = V_ALIGNBIT_B32_e64 2, 2, undef $vgpr0, implicit $exec
3061     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3062     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3063     ; GCN: renamable $vgpr0 = V_ALIGNBIT_B32_e64 3, 3, undef $vgpr0, implicit $exec
3064     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3065     ; GCN: S_ENDPGM 0
3066     %1:vgpr_32 = V_ALIGNBIT_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3067     %2:vgpr_32 = V_ALIGNBIT_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3068     %3:vgpr_32 = V_ALIGNBIT_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3069     S_NOP 0, implicit %1
3070     S_NOP 0, implicit %2
3071     S_NOP 0, implicit %3
3072     S_ENDPGM 0
3075 name:            test_remat_v_alignbyte_b32_e64
3076 tracksRegLiveness: true
3077 body:             |
3078   bb.0:
3079     ; GCN-LABEL: name: test_remat_v_alignbyte_b32_e64
3080     ; GCN: renamable $vgpr0 = V_ALIGNBYTE_B32_e64 1, 1, undef $vgpr0, implicit $exec
3081     ; GCN: renamable $vgpr1 = V_ALIGNBYTE_B32_e64 2, 2, undef $vgpr0, implicit $exec
3082     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3083     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3084     ; GCN: renamable $vgpr0 = V_ALIGNBYTE_B32_e64 3, 3, undef $vgpr0, implicit $exec
3085     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3086     ; GCN: S_ENDPGM 0
3087     %1:vgpr_32 = V_ALIGNBYTE_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3088     %2:vgpr_32 = V_ALIGNBYTE_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3089     %3:vgpr_32 = V_ALIGNBYTE_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3090     S_NOP 0, implicit %1
3091     S_NOP 0, implicit %2
3092     S_NOP 0, implicit %3
3093     S_ENDPGM 0
3096 name:            test_remat_v_min3_i32_e64
3097 tracksRegLiveness: true
3098 body:             |
3099   bb.0:
3100     ; GCN-LABEL: name: test_remat_v_min3_i32_e64
3101     ; GCN: renamable $vgpr0 = V_MIN3_I32_e64 1, 1, undef $vgpr0, implicit $exec
3102     ; GCN: renamable $vgpr1 = V_MIN3_I32_e64 2, 2, undef $vgpr0, implicit $exec
3103     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3104     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3105     ; GCN: renamable $vgpr0 = V_MIN3_I32_e64 3, 3, undef $vgpr0, implicit $exec
3106     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3107     ; GCN: S_ENDPGM 0
3108     %1:vgpr_32 = V_MIN3_I32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3109     %2:vgpr_32 = V_MIN3_I32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3110     %3:vgpr_32 = V_MIN3_I32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3111     S_NOP 0, implicit %1
3112     S_NOP 0, implicit %2
3113     S_NOP 0, implicit %3
3114     S_ENDPGM 0
3117 name:            test_remat_v_min3_u32_e64
3118 tracksRegLiveness: true
3119 body:             |
3120   bb.0:
3121     ; GCN-LABEL: name: test_remat_v_min3_u32_e64
3122     ; GCN: renamable $vgpr0 = V_MIN3_U32_e64 1, 1, undef $vgpr0, implicit $exec
3123     ; GCN: renamable $vgpr1 = V_MIN3_U32_e64 2, 2, undef $vgpr0, implicit $exec
3124     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3125     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3126     ; GCN: renamable $vgpr0 = V_MIN3_U32_e64 3, 3, undef $vgpr0, implicit $exec
3127     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3128     ; GCN: S_ENDPGM 0
3129     %1:vgpr_32 = V_MIN3_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3130     %2:vgpr_32 = V_MIN3_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3131     %3:vgpr_32 = V_MIN3_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3132     S_NOP 0, implicit %1
3133     S_NOP 0, implicit %2
3134     S_NOP 0, implicit %3
3135     S_ENDPGM 0
3138 name:            test_remat_v_max3_i32_e64
3139 tracksRegLiveness: true
3140 body:             |
3141   bb.0:
3142     ; GCN-LABEL: name: test_remat_v_max3_i32_e64
3143     ; GCN: renamable $vgpr0 = V_MAX3_I32_e64 1, 1, undef $vgpr0, implicit $exec
3144     ; GCN: renamable $vgpr1 = V_MAX3_I32_e64 2, 2, undef $vgpr0, implicit $exec
3145     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3146     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3147     ; GCN: renamable $vgpr0 = V_MAX3_I32_e64 3, 3, undef $vgpr0, implicit $exec
3148     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3149     ; GCN: S_ENDPGM 0
3150     %1:vgpr_32 = V_MAX3_I32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3151     %2:vgpr_32 = V_MAX3_I32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3152     %3:vgpr_32 = V_MAX3_I32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3153     S_NOP 0, implicit %1
3154     S_NOP 0, implicit %2
3155     S_NOP 0, implicit %3
3156     S_ENDPGM 0
3159 name:            test_remat_v_max3_u32_e64
3160 tracksRegLiveness: true
3161 body:             |
3162   bb.0:
3163     ; GCN-LABEL: name: test_remat_v_max3_u32_e64
3164     ; GCN: renamable $vgpr0 = V_MAX3_U32_e64 1, 1, undef $vgpr0, implicit $exec
3165     ; GCN: renamable $vgpr1 = V_MAX3_U32_e64 2, 2, undef $vgpr0, implicit $exec
3166     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3167     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3168     ; GCN: renamable $vgpr0 = V_MAX3_U32_e64 3, 3, undef $vgpr0, implicit $exec
3169     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3170     ; GCN: S_ENDPGM 0
3171     %1:vgpr_32 = V_MAX3_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3172     %2:vgpr_32 = V_MAX3_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3173     %3:vgpr_32 = V_MAX3_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3174     S_NOP 0, implicit %1
3175     S_NOP 0, implicit %2
3176     S_NOP 0, implicit %3
3177     S_ENDPGM 0
3180 name:            test_remat_v_med3_i32_e64
3181 tracksRegLiveness: true
3182 body:             |
3183   bb.0:
3184     ; GCN-LABEL: name: test_remat_v_med3_i32_e64
3185     ; GCN: renamable $vgpr0 = V_MED3_I32_e64 1, 1, undef $vgpr0, implicit $exec
3186     ; GCN: renamable $vgpr1 = V_MED3_I32_e64 2, 2, undef $vgpr0, implicit $exec
3187     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3188     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3189     ; GCN: renamable $vgpr0 = V_MED3_I32_e64 3, 3, undef $vgpr0, implicit $exec
3190     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3191     ; GCN: S_ENDPGM 0
3192     %1:vgpr_32 = V_MED3_I32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3193     %2:vgpr_32 = V_MED3_I32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3194     %3:vgpr_32 = V_MED3_I32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3195     S_NOP 0, implicit %1
3196     S_NOP 0, implicit %2
3197     S_NOP 0, implicit %3
3198     S_ENDPGM 0
3201 name:            test_remat_v_med3_u32_e64
3202 tracksRegLiveness: true
3203 body:             |
3204   bb.0:
3205     ; GCN-LABEL: name: test_remat_v_med3_u32_e64
3206     ; GCN: renamable $vgpr0 = V_MED3_U32_e64 1, 1, undef $vgpr0, implicit $exec
3207     ; GCN: renamable $vgpr1 = V_MED3_U32_e64 2, 2, undef $vgpr0, implicit $exec
3208     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3209     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3210     ; GCN: renamable $vgpr0 = V_MED3_U32_e64 3, 3, undef $vgpr0, implicit $exec
3211     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3212     ; GCN: S_ENDPGM 0
3213     %1:vgpr_32 = V_MED3_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3214     %2:vgpr_32 = V_MED3_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3215     %3:vgpr_32 = V_MED3_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3216     S_NOP 0, implicit %1
3217     S_NOP 0, implicit %2
3218     S_NOP 0, implicit %3
3219     S_ENDPGM 0
3222 name:            test_remat_v_min3_f32_e64
3223 tracksRegLiveness: true
3224 body:             |
3225   bb.0:
3226     ; GCN-LABEL: name: test_remat_v_min3_f32_e64
3227     ; GCN: renamable $vgpr0 = V_MIN3_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3228     ; GCN: renamable $vgpr1 = V_MIN3_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3229     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3230     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3231     ; GCN: renamable $vgpr0 = V_MIN3_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3232     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3233     ; GCN: S_ENDPGM 0
3234     %1:vgpr_32 = V_MIN3_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3235     %2:vgpr_32 = V_MIN3_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3236     %3:vgpr_32 = V_MIN3_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3237     S_NOP 0, implicit %1
3238     S_NOP 0, implicit %2
3239     S_NOP 0, implicit %3
3240     S_ENDPGM 0
3243 name:            test_remat_v_max3_f32_e64
3244 tracksRegLiveness: true
3245 body:             |
3246   bb.0:
3247     ; GCN-LABEL: name: test_remat_v_max3_f32_e64
3248     ; GCN: renamable $vgpr0 = V_MAX3_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3249     ; GCN: renamable $vgpr1 = V_MAX3_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3250     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3251     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3252     ; GCN: renamable $vgpr0 = V_MAX3_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3253     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3254     ; GCN: S_ENDPGM 0
3255     %1:vgpr_32 = V_MAX3_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3256     %2:vgpr_32 = V_MAX3_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3257     %3:vgpr_32 = V_MAX3_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3258     S_NOP 0, implicit %1
3259     S_NOP 0, implicit %2
3260     S_NOP 0, implicit %3
3261     S_ENDPGM 0
3264 name:            test_remat_v_med3_f32_e64
3265 tracksRegLiveness: true
3266 body:             |
3267   bb.0:
3268     ; GCN-LABEL: name: test_remat_v_med3_f32_e64
3269     ; GCN: renamable $vgpr0 = V_MED3_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3270     ; GCN: renamable $vgpr1 = V_MED3_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3271     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3272     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3273     ; GCN: renamable $vgpr0 = V_MED3_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3274     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3275     ; GCN: S_ENDPGM 0
3276     %1:vgpr_32 = V_MED3_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3277     %2:vgpr_32 = V_MED3_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3278     %3:vgpr_32 = V_MED3_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3279     S_NOP 0, implicit %1
3280     S_NOP 0, implicit %2
3281     S_NOP 0, implicit %3
3282     S_ENDPGM 0
3285 name:            test_remat_v_sad_u8_e64
3286 tracksRegLiveness: true
3287 body:             |
3288   bb.0:
3289     ; GCN-LABEL: name: test_remat_v_sad_u8_e64
3290     ; GCN: renamable $vgpr0 = V_SAD_U8_e64 1, 1, undef $vgpr0, 0, implicit $exec
3291     ; GCN: renamable $vgpr1 = V_SAD_U8_e64 2, 2, undef $vgpr0, 0, implicit $exec
3292     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3293     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3294     ; GCN: renamable $vgpr0 = V_SAD_U8_e64 3, 3, undef $vgpr0, 0, implicit $exec
3295     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3296     ; GCN: S_ENDPGM 0
3297     %1:vgpr_32 = V_SAD_U8_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3298     %2:vgpr_32 = V_SAD_U8_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3299     %3:vgpr_32 = V_SAD_U8_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3300     S_NOP 0, implicit %1
3301     S_NOP 0, implicit %2
3302     S_NOP 0, implicit %3
3303     S_ENDPGM 0
3306 name:            test_remat_v_sad_hi_u8_e64
3307 tracksRegLiveness: true
3308 body:             |
3309   bb.0:
3310     ; GCN-LABEL: name: test_remat_v_sad_hi_u8_e64
3311     ; GCN: renamable $vgpr0 = V_SAD_HI_U8_e64 1, 1, undef $vgpr0, 0, implicit $exec
3312     ; GCN: renamable $vgpr1 = V_SAD_HI_U8_e64 2, 2, undef $vgpr0, 0, implicit $exec
3313     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3314     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3315     ; GCN: renamable $vgpr0 = V_SAD_HI_U8_e64 3, 3, undef $vgpr0, 0, implicit $exec
3316     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3317     ; GCN: S_ENDPGM 0
3318     %1:vgpr_32 = V_SAD_HI_U8_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3319     %2:vgpr_32 = V_SAD_HI_U8_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3320     %3:vgpr_32 = V_SAD_HI_U8_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3321     S_NOP 0, implicit %1
3322     S_NOP 0, implicit %2
3323     S_NOP 0, implicit %3
3324     S_ENDPGM 0
3327 name:            test_remat_v_sad_u16_e64
3328 tracksRegLiveness: true
3329 body:             |
3330   bb.0:
3331     ; GCN-LABEL: name: test_remat_v_sad_u16_e64
3332     ; GCN: renamable $vgpr0 = V_SAD_U16_e64 1, 1, undef $vgpr0, 0, implicit $exec
3333     ; GCN: renamable $vgpr1 = V_SAD_U16_e64 2, 2, undef $vgpr0, 0, implicit $exec
3334     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3335     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3336     ; GCN: renamable $vgpr0 = V_SAD_U16_e64 3, 3, undef $vgpr0, 0, implicit $exec
3337     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3338     ; GCN: S_ENDPGM 0
3339     %1:vgpr_32 = V_SAD_U16_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3340     %2:vgpr_32 = V_SAD_U16_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3341     %3:vgpr_32 = V_SAD_U16_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3342     S_NOP 0, implicit %1
3343     S_NOP 0, implicit %2
3344     S_NOP 0, implicit %3
3345     S_ENDPGM 0
3348 name:            test_remat_v_sad_u32_e64
3349 tracksRegLiveness: true
3350 body:             |
3351   bb.0:
3352     ; GCN-LABEL: name: test_remat_v_sad_u32_e64
3353     ; GCN: renamable $vgpr0 = V_SAD_U32_e64 1, 1, undef $vgpr0, 0, implicit $exec
3354     ; GCN: renamable $vgpr1 = V_SAD_U32_e64 2, 2, undef $vgpr0, 0, implicit $exec
3355     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3356     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3357     ; GCN: renamable $vgpr0 = V_SAD_U32_e64 3, 3, undef $vgpr0, 0, implicit $exec
3358     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3359     ; GCN: S_ENDPGM 0
3360     %1:vgpr_32 = V_SAD_U32_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3361     %2:vgpr_32 = V_SAD_U32_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3362     %3:vgpr_32 = V_SAD_U32_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3363     S_NOP 0, implicit %1
3364     S_NOP 0, implicit %2
3365     S_NOP 0, implicit %3
3366     S_ENDPGM 0
3369 name:            test_remat_v_cvt_pk_u8_f32_e64
3370 tracksRegLiveness: true
3371 body:             |
3372   bb.0:
3373     ; GCN-LABEL: name: test_remat_v_cvt_pk_u8_f32_e64
3374     ; GCN: renamable $vgpr0 = nofpexcept V_CVT_PK_U8_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, implicit $exec, implicit $mode
3375     ; GCN: renamable $vgpr1 = nofpexcept V_CVT_PK_U8_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, implicit $exec, implicit $mode
3376     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3377     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3378     ; GCN: renamable $vgpr0 = nofpexcept V_CVT_PK_U8_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, implicit $exec, implicit $mode
3379     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3380     ; GCN: S_ENDPGM 0
3381     %1:vgpr_32 = nofpexcept V_CVT_PK_U8_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, implicit $exec, implicit $mode
3382     %2:vgpr_32 = nofpexcept V_CVT_PK_U8_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, implicit $exec, implicit $mode
3383     %3:vgpr_32 = nofpexcept V_CVT_PK_U8_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, implicit $exec, implicit $mode
3384     S_NOP 0, implicit %1
3385     S_NOP 0, implicit %2
3386     S_NOP 0, implicit %3
3387     S_ENDPGM 0
3390 name:            test_remat_v_div_fixup_f64_e64
3391 tracksRegLiveness: true
3392 body:             |
3393   bb.0:
3394     ; GCN-LABEL: name: test_remat_v_div_fixup_f64_e64
3395     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_DIV_FIXUP_F64_e64 0, 1, 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
3396     ; GCN: renamable $vgpr2_vgpr3 = nofpexcept V_DIV_FIXUP_F64_e64 0, 2, 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
3397     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3398     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3399     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_DIV_FIXUP_F64_e64 0, 3, 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
3400     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3401     ; GCN: S_ENDPGM 0
3402     %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
3403     %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
3404     %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
3405     S_NOP 0, implicit %1
3406     S_NOP 0, implicit %2
3407     S_NOP 0, implicit %3
3408     S_ENDPGM 0
3411 name:            test_remat_v_ldexp_f64_e64
3412 tracksRegLiveness: true
3413 body:             |
3414   bb.0:
3415     ; GCN-LABEL: name: test_remat_v_ldexp_f64_e64
3416     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_LDEXP_F64_e64 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3417     ; GCN: renamable $vgpr2_vgpr3 = nofpexcept V_LDEXP_F64_e64 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3418     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3419     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3420     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_LDEXP_F64_e64 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3421     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3422     ; GCN: S_ENDPGM 0
3423     %1:vreg_64_align2 = nofpexcept V_LDEXP_F64_e64 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3424     %2:vreg_64_align2 = nofpexcept V_LDEXP_F64_e64 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3425     %3:vreg_64_align2 = nofpexcept V_LDEXP_F64_e64 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3426     S_NOP 0, implicit %1
3427     S_NOP 0, implicit %2
3428     S_NOP 0, implicit %3
3429     S_ENDPGM 0
3432 name:            test_remat_v_msad_u8_e64
3433 tracksRegLiveness: true
3434 body:             |
3435   bb.0:
3436     ; GCN-LABEL: name: test_remat_v_msad_u8_e64
3437     ; GCN: renamable $vgpr0 = V_MSAD_U8_e64 1, 1, undef $vgpr0, 0, implicit $exec
3438     ; GCN: renamable $vgpr1 = V_MSAD_U8_e64 2, 2, undef $vgpr0, 0, implicit $exec
3439     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3440     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3441     ; GCN: renamable $vgpr0 = V_MSAD_U8_e64 3, 3, undef $vgpr0, 0, implicit $exec
3442     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3443     ; GCN: S_ENDPGM 0
3444     %1:vgpr_32 = V_MSAD_U8_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3445     %2:vgpr_32 = V_MSAD_U8_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3446     %3:vgpr_32 = V_MSAD_U8_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3447     S_NOP 0, implicit %1
3448     S_NOP 0, implicit %2
3449     S_NOP 0, implicit %3
3450     S_ENDPGM 0
3453 name:            test_remat_v_trig_preop_f64_e64
3454 tracksRegLiveness: true
3455 body:             |
3456   bb.0:
3457     ; GCN-LABEL: name: test_remat_v_trig_preop_f64_e64
3458     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_TRIG_PREOP_F64_e64 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3459     ; GCN: renamable $vgpr2_vgpr3 = nofpexcept V_TRIG_PREOP_F64_e64 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3460     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3461     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3462     ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_TRIG_PREOP_F64_e64 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3463     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3464     ; GCN: S_ENDPGM 0
3465     %1:vreg_64_align2 = nofpexcept V_TRIG_PREOP_F64_e64 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3466     %2:vreg_64_align2 = nofpexcept V_TRIG_PREOP_F64_e64 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3467     %3:vreg_64_align2 = nofpexcept V_TRIG_PREOP_F64_e64 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3468     S_NOP 0, implicit %1
3469     S_NOP 0, implicit %2
3470     S_NOP 0, implicit %3
3471     S_ENDPGM 0
3474 name:            test_remat_v_lshlrev_b64_e64
3475 tracksRegLiveness: true
3476 body:             |
3477   bb.0:
3478     ; GCN-LABEL: name: test_remat_v_lshlrev_b64_e64
3479     ; GCN: renamable $vgpr0_vgpr1 = V_LSHLREV_B64_e64 1, undef $vgpr0_vgpr1, implicit $exec
3480     ; GCN: renamable $vgpr2_vgpr3 = V_LSHLREV_B64_e64 2, undef $vgpr0_vgpr1, implicit $exec
3481     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3482     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3483     ; GCN: renamable $vgpr0_vgpr1 = V_LSHLREV_B64_e64 3, undef $vgpr0_vgpr1, implicit $exec
3484     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3485     ; GCN: S_ENDPGM 0
3486     %1:vreg_64_align2 = V_LSHLREV_B64_e64 1, undef %0:vreg_64_align2, implicit $exec
3487     %2:vreg_64_align2 = V_LSHLREV_B64_e64 2, undef %0:vreg_64_align2, implicit $exec
3488     %3:vreg_64_align2 = V_LSHLREV_B64_e64 3, undef %0:vreg_64_align2, implicit $exec
3489     S_NOP 0, implicit %1
3490     S_NOP 0, implicit %2
3491     S_NOP 0, implicit %3
3492     S_ENDPGM 0
3495 name:            test_remat_v_lshrrev_b64_e64
3496 tracksRegLiveness: true
3497 body:             |
3498   bb.0:
3499     ; GCN-LABEL: name: test_remat_v_lshrrev_b64_e64
3500     ; GCN: renamable $vgpr0_vgpr1 = V_LSHRREV_B64_e64 1, undef $vgpr0_vgpr1, implicit $exec
3501     ; GCN: renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 2, undef $vgpr0_vgpr1, implicit $exec
3502     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3503     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3504     ; GCN: renamable $vgpr0_vgpr1 = V_LSHRREV_B64_e64 3, undef $vgpr0_vgpr1, implicit $exec
3505     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3506     ; GCN: S_ENDPGM 0
3507     %1:vreg_64_align2 = V_LSHRREV_B64_e64 1, undef %0:vreg_64_align2, implicit $exec
3508     %2:vreg_64_align2 = V_LSHRREV_B64_e64 2, undef %0:vreg_64_align2, implicit $exec
3509     %3:vreg_64_align2 = V_LSHRREV_B64_e64 3, undef %0:vreg_64_align2, implicit $exec
3510     S_NOP 0, implicit %1
3511     S_NOP 0, implicit %2
3512     S_NOP 0, implicit %3
3513     S_ENDPGM 0
3516 name:            test_remat_v_ashrrev_i64_e64
3517 tracksRegLiveness: true
3518 body:             |
3519   bb.0:
3520     ; GCN-LABEL: name: test_remat_v_ashrrev_i64_e64
3521     ; GCN: renamable $vgpr0_vgpr1 = V_ASHRREV_I64_e64 1, undef $vgpr0_vgpr1, implicit $exec
3522     ; GCN: renamable $vgpr2_vgpr3 = V_ASHRREV_I64_e64 2, undef $vgpr0_vgpr1, implicit $exec
3523     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3524     ; GCN: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3525     ; GCN: renamable $vgpr0_vgpr1 = V_ASHRREV_I64_e64 3, undef $vgpr0_vgpr1, implicit $exec
3526     ; GCN: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3527     ; GCN: S_ENDPGM 0
3528     %1:vreg_64_align2 = V_ASHRREV_I64_e64 1, undef %0:vreg_64_align2, implicit $exec
3529     %2:vreg_64_align2 = V_ASHRREV_I64_e64 2, undef %0:vreg_64_align2, implicit $exec
3530     %3:vreg_64_align2 = V_ASHRREV_I64_e64 3, undef %0:vreg_64_align2, implicit $exec
3531     S_NOP 0, implicit %1
3532     S_NOP 0, implicit %2
3533     S_NOP 0, implicit %3
3534     S_ENDPGM 0
3537 name:            test_remat_v_perm_b32_e64
3538 tracksRegLiveness: true
3539 body:             |
3540   bb.0:
3541     ; GCN-LABEL: name: test_remat_v_perm_b32_e64
3542     ; GCN: renamable $vgpr0 = V_PERM_B32_e64 1, 1, undef $vgpr0, implicit $exec
3543     ; GCN: renamable $vgpr1 = V_PERM_B32_e64 2, 2, undef $vgpr0, implicit $exec
3544     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3545     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3546     ; GCN: renamable $vgpr0 = V_PERM_B32_e64 3, 3, undef $vgpr0, implicit $exec
3547     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3548     ; GCN: S_ENDPGM 0
3549     %1:vgpr_32 = V_PERM_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3550     %2:vgpr_32 = V_PERM_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3551     %3:vgpr_32 = V_PERM_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3552     S_NOP 0, implicit %1
3553     S_NOP 0, implicit %2
3554     S_NOP 0, implicit %3
3555     S_ENDPGM 0
3558 name:            test_remat_v_add3_u32_e64
3559 tracksRegLiveness: true
3560 body:             |
3561   bb.0:
3562     ; GCN-LABEL: name: test_remat_v_add3_u32_e64
3563     ; GCN: renamable $vgpr0 = V_ADD3_U32_e64 1, 1, undef $vgpr0, implicit $exec
3564     ; GCN: renamable $vgpr1 = V_ADD3_U32_e64 2, 2, undef $vgpr0, implicit $exec
3565     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3566     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3567     ; GCN: renamable $vgpr0 = V_ADD3_U32_e64 3, 3, undef $vgpr0, implicit $exec
3568     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3569     ; GCN: S_ENDPGM 0
3570     %1:vgpr_32 = V_ADD3_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3571     %2:vgpr_32 = V_ADD3_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3572     %3:vgpr_32 = V_ADD3_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3573     S_NOP 0, implicit %1
3574     S_NOP 0, implicit %2
3575     S_NOP 0, implicit %3
3576     S_ENDPGM 0
3579 name:            test_remat_v_and_or_b32_e64
3580 tracksRegLiveness: true
3581 body:             |
3582   bb.0:
3583     ; GCN-LABEL: name: test_remat_v_and_or_b32_e64
3584     ; GCN: renamable $vgpr0 = V_AND_OR_B32_e64 1, 1, undef $vgpr0, implicit $exec
3585     ; GCN: renamable $vgpr1 = V_AND_OR_B32_e64 2, 2, undef $vgpr0, implicit $exec
3586     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3587     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3588     ; GCN: renamable $vgpr0 = V_AND_OR_B32_e64 3, 3, undef $vgpr0, implicit $exec
3589     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3590     ; GCN: S_ENDPGM 0
3591     %1:vgpr_32 = V_AND_OR_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3592     %2:vgpr_32 = V_AND_OR_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3593     %3:vgpr_32 = V_AND_OR_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3594     S_NOP 0, implicit %1
3595     S_NOP 0, implicit %2
3596     S_NOP 0, implicit %3
3597     S_ENDPGM 0
3600 name:            test_remat_v_or3_b32_e64
3601 tracksRegLiveness: true
3602 body:             |
3603   bb.0:
3604     ; GCN-LABEL: name: test_remat_v_or3_b32_e64
3605     ; GCN: renamable $vgpr0 = V_OR3_B32_e64 1, 1, undef $vgpr0, implicit $exec
3606     ; GCN: renamable $vgpr1 = V_OR3_B32_e64 2, 2, undef $vgpr0, implicit $exec
3607     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3608     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3609     ; GCN: renamable $vgpr0 = V_OR3_B32_e64 3, 3, undef $vgpr0, implicit $exec
3610     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3611     ; GCN: S_ENDPGM 0
3612     %1:vgpr_32 = V_OR3_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3613     %2:vgpr_32 = V_OR3_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3614     %3:vgpr_32 = V_OR3_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3615     S_NOP 0, implicit %1
3616     S_NOP 0, implicit %2
3617     S_NOP 0, implicit %3
3618     S_ENDPGM 0
3621 name:            test_remat_v_xad_u32_e64
3622 tracksRegLiveness: true
3623 body:             |
3624   bb.0:
3625     ; GCN-LABEL: name: test_remat_v_xad_u32_e64
3626     ; GCN: renamable $vgpr0 = V_XAD_U32_e64 1, 1, undef $vgpr0, implicit $exec
3627     ; GCN: renamable $vgpr1 = V_XAD_U32_e64 2, 2, undef $vgpr0, implicit $exec
3628     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3629     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3630     ; GCN: renamable $vgpr0 = V_XAD_U32_e64 3, 3, undef $vgpr0, implicit $exec
3631     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3632     ; GCN: S_ENDPGM 0
3633     %1:vgpr_32 = V_XAD_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3634     %2:vgpr_32 = V_XAD_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3635     %3:vgpr_32 = V_XAD_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3636     S_NOP 0, implicit %1
3637     S_NOP 0, implicit %2
3638     S_NOP 0, implicit %3
3639     S_ENDPGM 0
3642 name:            test_remat_v_add_i32_e64
3643 tracksRegLiveness: true
3644 body:             |
3645   bb.0:
3646     ; GCN-LABEL: name: test_remat_v_add_i32_e64
3647     ; GCN: renamable $vgpr0 = V_ADD_I32_e64 1, undef $vgpr0, 0, implicit $exec
3648     ; GCN: renamable $vgpr1 = V_ADD_I32_e64 2, undef $vgpr0, 0, implicit $exec
3649     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3650     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3651     ; GCN: renamable $vgpr0 = V_ADD_I32_e64 3, undef $vgpr0, 0, implicit $exec
3652     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3653     ; GCN: S_ENDPGM 0
3654     %1:vgpr_32 = V_ADD_I32_e64 1, undef %0:vgpr_32, 0, implicit $exec
3655     %2:vgpr_32 = V_ADD_I32_e64 2, undef %0:vgpr_32, 0, implicit $exec
3656     %3:vgpr_32 = V_ADD_I32_e64 3, undef %0:vgpr_32, 0, implicit $exec
3657     S_NOP 0, implicit %1
3658     S_NOP 0, implicit %2
3659     S_NOP 0, implicit %3
3660     S_ENDPGM 0
3663 name:            test_remat_v_add_lshl_u32_e64
3664 tracksRegLiveness: true
3665 body:             |
3666   bb.0:
3667     ; GCN-LABEL: name: test_remat_v_add_lshl_u32_e64
3668     ; GCN: renamable $vgpr0 = V_ADD_LSHL_U32_e64 1, 1, undef $vgpr0, implicit $exec
3669     ; GCN: renamable $vgpr1 = V_ADD_LSHL_U32_e64 2, 2, undef $vgpr0, implicit $exec
3670     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3671     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3672     ; GCN: renamable $vgpr0 = V_ADD_LSHL_U32_e64 3, 3, undef $vgpr0, implicit $exec
3673     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3674     ; GCN: S_ENDPGM 0
3675     %1:vgpr_32 = V_ADD_LSHL_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3676     %2:vgpr_32 = V_ADD_LSHL_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3677     %3:vgpr_32 = V_ADD_LSHL_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3678     S_NOP 0, implicit %1
3679     S_NOP 0, implicit %2
3680     S_NOP 0, implicit %3
3681     S_ENDPGM 0
3684 name:            test_remat_v_sub_i32_e64
3685 tracksRegLiveness: true
3686 body:             |
3687   bb.0:
3688     ; GCN-LABEL: name: test_remat_v_sub_i32_e64
3689     ; GCN: renamable $vgpr0 = V_SUB_I32_e64 1, undef $vgpr0, 0, implicit $exec
3690     ; GCN: renamable $vgpr1 = V_SUB_I32_e64 2, undef $vgpr0, 0, implicit $exec
3691     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3692     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3693     ; GCN: renamable $vgpr0 = V_SUB_I32_e64 3, undef $vgpr0, 0, implicit $exec
3694     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3695     ; GCN: S_ENDPGM 0
3696     %1:vgpr_32 = V_SUB_I32_e64 1, undef %0:vgpr_32, 0, implicit $exec
3697     %2:vgpr_32 = V_SUB_I32_e64 2, undef %0:vgpr_32, 0, implicit $exec
3698     %3:vgpr_32 = V_SUB_I32_e64 3, undef %0:vgpr_32, 0, implicit $exec
3699     S_NOP 0, implicit %1
3700     S_NOP 0, implicit %2
3701     S_NOP 0, implicit %3
3702     S_ENDPGM 0
3705 name:            test_remat_v_lshl_add_u32_e64
3706 tracksRegLiveness: true
3707 body:             |
3708   bb.0:
3709     ; GCN-LABEL: name: test_remat_v_lshl_add_u32_e64
3710     ; GCN: renamable $vgpr0 = V_LSHL_ADD_U32_e64 1, 1, undef $vgpr0, implicit $exec
3711     ; GCN: renamable $vgpr1 = V_LSHL_ADD_U32_e64 2, 2, undef $vgpr0, implicit $exec
3712     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3713     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3714     ; GCN: renamable $vgpr0 = V_LSHL_ADD_U32_e64 3, 3, undef $vgpr0, implicit $exec
3715     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3716     ; GCN: S_ENDPGM 0
3717     %1:vgpr_32 = V_LSHL_ADD_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3718     %2:vgpr_32 = V_LSHL_ADD_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3719     %3:vgpr_32 = V_LSHL_ADD_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3720     S_NOP 0, implicit %1
3721     S_NOP 0, implicit %2
3722     S_NOP 0, implicit %3
3723     S_ENDPGM 0
3726 name:            test_remat_v_lshl_or_b32_e64
3727 tracksRegLiveness: true
3728 body:             |
3729   bb.0:
3730     ; GCN-LABEL: name: test_remat_v_lshl_or_b32_e64
3731     ; GCN: renamable $vgpr0 = V_LSHL_OR_B32_e64 1, 1, undef $vgpr0, implicit $exec
3732     ; GCN: renamable $vgpr1 = V_LSHL_OR_B32_e64 2, 2, undef $vgpr0, implicit $exec
3733     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3734     ; GCN: S_NOP 0, implicit killed renamable $vgpr1
3735     ; GCN: renamable $vgpr0 = V_LSHL_OR_B32_e64 3, 3, undef $vgpr0, implicit $exec
3736     ; GCN: S_NOP 0, implicit killed renamable $vgpr0
3737     ; GCN: S_ENDPGM 0
3738     %1:vgpr_32 = V_LSHL_OR_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3739     %2:vgpr_32 = V_LSHL_OR_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3740     %3:vgpr_32 = V_LSHL_OR_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3741     S_NOP 0, implicit %1
3742     S_NOP 0, implicit %2
3743     S_NOP 0, implicit %3
3744     S_ENDPGM 0