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
5 name: test_remat_v_mov_b32_e32
6 tracksRegLiveness: true
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
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
26 name: test_no_remat_v_mov_b32_e32_impuse
27 tracksRegLiveness: true
29 stackPtrOffsetReg: $sgpr32
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
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
55 name: test_remat_v_mov_b32_e32_exec_def
56 tracksRegLiveness: true
58 stackPtrOffsetReg: $sgpr32
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
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
76 $exec = S_ANDN2_B64_term $exec, undef %4:sreg_64, implicit-def $scc
80 name: test_remat_v_mov_b32_e64
81 tracksRegLiveness: true
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
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
101 name: test_no_remat_v_mov_b32_dpp
102 tracksRegLiveness: true
104 stackPtrOffsetReg: $sgpr32
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
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
128 name: test_remat_v_accvgpr_read_b32
129 tracksRegLiveness: true
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
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
149 name: test_remat_v_accvgpr_write_b32
150 tracksRegLiveness: true
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
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
170 name: test_remat_v_mov_b64_pseudo
171 tracksRegLiveness: true
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
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
191 name: test_remat_v_cvt_i32_f64_e32
192 tracksRegLiveness: true
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
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
213 stackPtrOffsetReg: $sgpr32
214 name: test_no_remat_v_cvt_i32_f64_e32_fp_except
215 tracksRegLiveness: true
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
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
239 # Cannot rematerialize if MODE register is modified anywhere
240 name: test_no_remat_v_cvt_i32_f64_e32_mode_def
241 tracksRegLiveness: true
243 stackPtrOffsetReg: $sgpr32
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
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
269 name: test_remat_v_cvt_i32_f64_e64
270 tracksRegLiveness: true
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
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
290 name: test_remat_v_cvt_i32_f64_e64_undef
291 tracksRegLiveness: true
293 stackPtrOffsetReg: $sgpr32
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
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
313 name: test_no_remat_v_cvt_i32_f64_dpp
314 tracksRegLiveness: true
316 stackPtrOffsetReg: $sgpr32
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
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
340 name: test_no_remat_v_cvt_i32_f64_e32_imp_def
341 tracksRegLiveness: true
343 stackPtrOffsetReg: $sgpr32
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
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
367 name: test_no_remat_v_cvt_i32_f64_e32_imp_use
368 tracksRegLiveness: true
370 stackPtrOffsetReg: $sgpr32
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
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
394 name: test_remat_v_cvt_f64_i32_e32
395 tracksRegLiveness: true
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
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
415 name: test_remat_v_cvt_f32_f64_e32
416 tracksRegLiveness: true
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
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
436 name: test_remat_v_cvt_f64_f32_e32
437 tracksRegLiveness: true
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
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
457 name: test_remat_v_cvt_u32_f64_e32
458 tracksRegLiveness: true
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
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
478 name: test_remat_v_cvt_f64_u32_e32
479 tracksRegLiveness: true
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
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
499 name: test_remat_v_cvt_f32_i32_e32
500 tracksRegLiveness: true
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
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
520 name: test_remat_v_cvt_f32_i32_sdwa
521 tracksRegLiveness: true
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
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
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
546 stackPtrOffsetReg: $sgpr32
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
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)
570 name: test_remat_v_cvt_f32_u32_e32
571 tracksRegLiveness: true
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
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
591 name: test_remat_v_cvt_u32_f32_e32
592 tracksRegLiveness: true
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
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
612 name: test_remat_v_cvt_i32_f32_e32
613 tracksRegLiveness: true
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
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
633 name: test_remat_v_cvt_f32_f16_e32
634 tracksRegLiveness: true
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
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
654 name: test_remat_v_cvt_rpi_i32_f32_e32
655 tracksRegLiveness: true
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
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
675 name: test_remat_v_cvt_flr_i32_f32_e32
676 tracksRegLiveness: true
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
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
696 name: test_remat_v_cvt_off_f32_i4_e32
697 tracksRegLiveness: true
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
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
717 name: test_remat_v_cvt_f32_ubyte0_e32
718 tracksRegLiveness: true
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
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
738 name: test_remat_v_fract_f32_e32
739 tracksRegLiveness: true
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
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
759 name: test_remat_v_trunc_f32_e32
760 tracksRegLiveness: true
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
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
780 name: test_remat_v_ceil_f32_e32
781 tracksRegLiveness: true
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
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
801 name: test_remat_v_rndne_f32_e32
802 tracksRegLiveness: true
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
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
822 name: test_remat_v_floor_f32_e32
823 tracksRegLiveness: true
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
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
843 name: test_remat_v_exp_f32_e32
844 tracksRegLiveness: true
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
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
864 name: test_remat_v_log_f32_e32
865 tracksRegLiveness: true
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
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
885 name: test_remat_v_rcp_f32_e32
886 tracksRegLiveness: true
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
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
906 name: test_remat_v_rcp_iflag_f32_e32
907 tracksRegLiveness: true
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
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
927 name: test_remat_v_rsq_f32_e32
928 tracksRegLiveness: true
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
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
948 name: test_remat_v_sqrt_f32_e32
949 tracksRegLiveness: true
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
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
969 name: test_remat_v_rcp_f64_e32
970 tracksRegLiveness: true
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
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
990 name: test_remat_v_rsq_f64_e32
991 tracksRegLiveness: true
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
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
1011 name: test_remat_v_sqrt_f64_e32
1012 tracksRegLiveness: true
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
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
1032 name: test_remat_v_sin_f32_e32
1033 tracksRegLiveness: true
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
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
1053 name: test_remat_v_cos_f32_e32
1054 tracksRegLiveness: true
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
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
1074 name: test_remat_v_not_b32_e32
1075 tracksRegLiveness: true
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
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
1095 name: test_remat_v_bfrev_b32_e32
1096 tracksRegLiveness: true
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
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
1116 name: test_remat_v_ffbh_u32_e32
1117 tracksRegLiveness: true
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
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
1137 name: test_remat_v_ffbl_b32_e32
1138 tracksRegLiveness: true
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
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
1158 name: test_remat_v_ffbh_i32_e32
1159 tracksRegLiveness: true
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
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
1179 name: test_remat_v_frexp_exp_i32_f64_e32
1180 tracksRegLiveness: true
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
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
1200 name: test_remat_v_frexp_mant_f64_e32
1201 tracksRegLiveness: true
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
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
1221 name: test_remat_v_fract_f64_e32
1222 tracksRegLiveness: true
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
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
1242 name: test_remat_v_frexp_exp_i32_f32_e32
1243 tracksRegLiveness: true
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
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
1263 name: test_remat_v_frexp_mant_f32_e32
1264 tracksRegLiveness: true
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
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
1284 name: test_remat_v_exp_legacy_f32_e32
1285 tracksRegLiveness: true
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
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
1305 name: test_remat_v_log_legacy_f32_e32
1306 tracksRegLiveness: true
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
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
1326 name: test_remat_v_sat_pk_u8_i16_e32
1327 tracksRegLiveness: true
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
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
1347 name: test_remat_v_accvgpr_mov_b32
1348 tracksRegLiveness: true
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
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
1368 name: test_no_remat_v_cndmask_b32_e32
1369 tracksRegLiveness: true
1370 machineFunctionInfo:
1371 stackPtrOffsetReg: $sgpr32
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
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
1395 name: test_no_remat_v_cndmask_b32_sdwa
1396 tracksRegLiveness: true
1397 machineFunctionInfo:
1398 stackPtrOffsetReg: $sgpr32
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
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
1422 name: test_no_remat_v_cndmask_b32_dpp
1423 tracksRegLiveness: true
1424 machineFunctionInfo:
1425 stackPtrOffsetReg: $sgpr32
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
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
1449 name: test_remat_v_cndmask_b32_e64
1450 tracksRegLiveness: true
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
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
1470 name: test_remat_v_madmk_f32
1471 tracksRegLiveness: true
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
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
1491 name: test_remat_v_add_f32_e32
1492 tracksRegLiveness: true
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
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
1512 name: test_remat_v_add_f32_e64
1513 tracksRegLiveness: true
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
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
1533 name: test_remat_v_add_f32_sdwa
1534 tracksRegLiveness: true
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
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
1554 name: test_no_remat_v_add_f32_dpp
1555 tracksRegLiveness: true
1556 machineFunctionInfo:
1557 stackPtrOffsetReg: $sgpr32
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
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
1581 name: test_remat_v_sub_f32_e32
1582 tracksRegLiveness: true
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
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
1602 name: test_remat_v_subrev_f32_e32
1603 tracksRegLiveness: true
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
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
1623 name: test_remat_v_mul_legacy_f32_e32
1624 tracksRegLiveness: true
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
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
1644 name: test_remat_v_mul_f32_e32
1645 tracksRegLiveness: true
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
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
1665 name: test_remat_v_mul_i32_i24_e32
1666 tracksRegLiveness: true
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
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
1686 name: test_remat_v_mul_hi_i32_i24_e32
1687 tracksRegLiveness: true
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
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
1707 name: test_remat_v_mul_u32_u24_e32
1708 tracksRegLiveness: true
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
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
1728 name: test_remat_v_mul_hi_u32_u24_e32
1729 tracksRegLiveness: true
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
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
1749 name: test_remat_v_min_f32_e32
1750 tracksRegLiveness: true
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
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
1770 name: test_remat_v_max_f32_e32
1771 tracksRegLiveness: true
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
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
1791 name: test_remat_v_min_i32_e32
1792 tracksRegLiveness: true
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
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
1812 name: test_remat_v_max_i32_e32
1813 tracksRegLiveness: true
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
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
1833 name: test_remat_v_min_u32_e32
1834 tracksRegLiveness: true
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
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
1854 name: test_remat_v_max_u32_e32
1855 tracksRegLiveness: true
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
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
1875 name: test_remat_v_lshrrev_b32_e32
1876 tracksRegLiveness: true
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
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
1896 name: test_remat_v_lshlrev_b32_e32
1897 tracksRegLiveness: true
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
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
1917 name: test_remat_v_ashrrev_i32_e32
1918 tracksRegLiveness: true
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
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
1938 name: test_remat_v_and_b32_e32
1939 tracksRegLiveness: true
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
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
1959 name: test_remat_v_or_b32_e32
1960 tracksRegLiveness: true
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
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
1980 name: test_remat_v_xor_b32_e32
1981 tracksRegLiveness: true
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
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
2001 name: test_remat_v_madak_f32
2002 tracksRegLiveness: true
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
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
2022 name: test_remat_v_add_u32_e32
2023 tracksRegLiveness: true
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
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
2043 name: test_remat_v_sub_u32_e32
2044 tracksRegLiveness: true
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
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
2064 name: test_remat_v_subrev_u32_e32
2065 tracksRegLiveness: true
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
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
2085 name: test_remat_v_bfm_b32_e32
2086 tracksRegLiveness: true
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
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
2106 name: test_remat_v_bcnt_u32_b32_e32
2107 tracksRegLiveness: true
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
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
2127 name: test_remat_v_mbcnt_lo_u32_b32_e32
2128 tracksRegLiveness: true
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
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
2148 name: test_remat_v_mbcnt_hi_u32_b32_e32
2149 tracksRegLiveness: true
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
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
2169 name: test_remat_v_ldexp_f32_e32
2170 tracksRegLiveness: true
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
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
2190 name: test_remat_v_cvt_pknorm_i16_f32_e32
2191 tracksRegLiveness: true
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
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
2211 name: test_remat_v_cvt_pknorm_u16_f32_e32
2212 tracksRegLiveness: true
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
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
2232 name: test_remat_v_cvt_pkrtz_f16_f32_e32
2233 tracksRegLiveness: true
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
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
2253 name: test_remat_v_cvt_pk_u16_u32_e32
2254 tracksRegLiveness: true
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
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
2274 name: test_remat_v_cvt_pk_i16_i32_e32
2275 tracksRegLiveness: true
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
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
2295 name: test_remat_v_min_legacy_f32_e32
2296 tracksRegLiveness: true
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
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
2316 name: test_remat_v_max_legacy_f32_e32
2317 tracksRegLiveness: true
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
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
2337 name: test_remat_v_lshr_b32_e32
2338 tracksRegLiveness: true
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
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
2358 name: test_remat_v_lshl_b32_e32
2359 tracksRegLiveness: true
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
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
2379 name: test_remat_v_ashr_i32_e32
2380 tracksRegLiveness: true
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
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
2400 name: test_no_remat_v_ldexp_f16_e32
2401 tracksRegLiveness: true
2402 machineFunctionInfo:
2403 stackPtrOffsetReg: $sgpr32
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
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
2427 name: test_no_remat_v_lshrrev_b16_e32
2428 tracksRegLiveness: true
2429 machineFunctionInfo:
2430 stackPtrOffsetReg: $sgpr32
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
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
2454 name: test_no_remat_v_lshlrev_b16_e32
2455 tracksRegLiveness: true
2456 machineFunctionInfo:
2457 stackPtrOffsetReg: $sgpr32
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
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
2481 name: test_no_remat_v_ashrrev_i16_e32
2482 tracksRegLiveness: true
2483 machineFunctionInfo:
2484 stackPtrOffsetReg: $sgpr32
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
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
2508 name: test_remat_v_xnor_b32_e32
2509 tracksRegLiveness: true
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
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
2529 name: test_remat_v_fmamk_f32
2530 tracksRegLiveness: true
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
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
2550 name: test_remat_v_fmaak_f32
2551 tracksRegLiveness: true
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
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
2571 name: test_remat_v_mad_legacy_f32_e64
2572 tracksRegLiveness: true
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
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
2592 name: test_remat_v_mad_f32_e64
2593 tracksRegLiveness: true
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
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
2613 name: test_remat_v_fma_legacy_f32_e64
2614 tracksRegLiveness: true
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
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
2634 name: test_remat_v_fma_f32_e64
2635 tracksRegLiveness: true
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
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
2655 name: test_remat_v_mad_i32_i24_e64
2656 tracksRegLiveness: true
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
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
2676 name: test_remat_v_mad_u32_u24_e64
2677 tracksRegLiveness: true
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
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
2697 name: test_remat_v_lerp_u8_e64
2698 tracksRegLiveness: true
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
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
2718 name: test_remat_v_fma_f64_e64
2719 tracksRegLiveness: true
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
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
2739 name: test_remat_v_add_f64_e64
2740 tracksRegLiveness: true
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
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
2760 name: test_remat_v_mul_f64_e64
2761 tracksRegLiveness: true
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
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
2781 name: test_remat_v_min_f64_e64
2782 tracksRegLiveness: true
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
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
2802 name: test_remat_v_max_f64_e64
2803 tracksRegLiveness: true
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
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
2823 name: test_remat_v_mul_lo_u32_e64
2824 tracksRegLiveness: true
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
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
2844 name: test_remat_v_mul_hi_u32_e64
2845 tracksRegLiveness: true
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
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
2865 name: test_remat_v_mul_lo_i32_e64
2866 tracksRegLiveness: true
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
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
2886 name: test_remat_v_mul_hi_i32_e64
2887 tracksRegLiveness: true
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
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
2907 name: test_remat_v_cubeid_f32_e64
2908 tracksRegLiveness: true
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
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
2928 name: test_remat_v_cubesc_f32_e64
2929 tracksRegLiveness: true
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
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
2949 name: test_remat_v_cubetc_f32_e64
2950 tracksRegLiveness: true
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
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
2970 name: test_remat_v_cubema_f32_e64
2971 tracksRegLiveness: true
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
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
2991 name: test_remat_v_bfe_u32_e64
2992 tracksRegLiveness: true
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
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
3012 name: test_remat_v_bfe_i32_e64
3013 tracksRegLiveness: true
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
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
3033 name: test_remat_v_bfi_b32_e64
3034 tracksRegLiveness: true
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
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
3054 name: test_remat_v_alignbit_b32_e64
3055 tracksRegLiveness: true
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
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
3075 name: test_remat_v_alignbyte_b32_e64
3076 tracksRegLiveness: true
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
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
3096 name: test_remat_v_min3_i32_e64
3097 tracksRegLiveness: true
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
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
3117 name: test_remat_v_min3_u32_e64
3118 tracksRegLiveness: true
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
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
3138 name: test_remat_v_max3_i32_e64
3139 tracksRegLiveness: true
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
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
3159 name: test_remat_v_max3_u32_e64
3160 tracksRegLiveness: true
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
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
3180 name: test_remat_v_med3_i32_e64
3181 tracksRegLiveness: true
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
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
3201 name: test_remat_v_med3_u32_e64
3202 tracksRegLiveness: true
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
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
3222 name: test_remat_v_min3_f32_e64
3223 tracksRegLiveness: true
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
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
3243 name: test_remat_v_max3_f32_e64
3244 tracksRegLiveness: true
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
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
3264 name: test_remat_v_med3_f32_e64
3265 tracksRegLiveness: true
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
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
3285 name: test_remat_v_sad_u8_e64
3286 tracksRegLiveness: true
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
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
3306 name: test_remat_v_sad_hi_u8_e64
3307 tracksRegLiveness: true
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
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
3327 name: test_remat_v_sad_u16_e64
3328 tracksRegLiveness: true
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
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
3348 name: test_remat_v_sad_u32_e64
3349 tracksRegLiveness: true
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
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
3369 name: test_remat_v_cvt_pk_u8_f32_e64
3370 tracksRegLiveness: true
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
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
3390 name: test_remat_v_div_fixup_f64_e64
3391 tracksRegLiveness: true
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
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
3411 name: test_remat_v_ldexp_f64_e64
3412 tracksRegLiveness: true
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
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
3432 name: test_remat_v_msad_u8_e64
3433 tracksRegLiveness: true
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
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
3453 name: test_remat_v_trig_preop_f64_e64
3454 tracksRegLiveness: true
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
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
3474 name: test_remat_v_lshlrev_b64_e64
3475 tracksRegLiveness: true
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
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
3495 name: test_remat_v_lshrrev_b64_e64
3496 tracksRegLiveness: true
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
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
3516 name: test_remat_v_ashrrev_i64_e64
3517 tracksRegLiveness: true
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
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
3537 name: test_remat_v_perm_b32_e64
3538 tracksRegLiveness: true
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
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
3558 name: test_remat_v_add3_u32_e64
3559 tracksRegLiveness: true
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
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
3579 name: test_remat_v_and_or_b32_e64
3580 tracksRegLiveness: true
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
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
3600 name: test_remat_v_or3_b32_e64
3601 tracksRegLiveness: true
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
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
3621 name: test_remat_v_xad_u32_e64
3622 tracksRegLiveness: true
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
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
3642 name: test_remat_v_add_i32_e64
3643 tracksRegLiveness: true
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
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
3663 name: test_remat_v_add_lshl_u32_e64
3664 tracksRegLiveness: true
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
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
3684 name: test_remat_v_sub_i32_e64
3685 tracksRegLiveness: true
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
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
3705 name: test_remat_v_lshl_add_u32_e64
3706 tracksRegLiveness: true
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
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
3726 name: test_remat_v_lshl_or_b32_e64
3727 tracksRegLiveness: true
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
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