1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -verify-regalloc --stress-regalloc=2 -start-before=greedy,0 -stop-after=virtregrewriter,1 -o - %s | FileCheck -check-prefix=GCN %s
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-NEXT: renamable $vgpr1 = V_MOV_B32_e32 2, implicit $exec
12 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
13 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
14 ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e32 3, implicit $exec
15 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
16 ; GCN-NEXT: S_ENDPGM 0
17 %0:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
18 %1:vgpr_32 = V_MOV_B32_e32 2, implicit $exec
19 %2:vgpr_32 = V_MOV_B32_e32 3, implicit $exec
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-NEXT: renamable $vgpr0 = V_MOV_B32_e32 1, implicit $exec, implicit $m0
35 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
36 ; GCN-NEXT: renamable $vgpr1 = V_MOV_B32_e32 2, implicit $exec, implicit $m0
37 ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e32 3, implicit $exec, implicit $m0
38 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
39 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
40 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
41 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
42 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
43 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
44 ; GCN-NEXT: S_ENDPGM 0
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-NEXT: renamable $vgpr1 = V_MOV_B32_e32 2, implicit $exec
64 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
65 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
66 ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e32 3, implicit $exec
67 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
68 ; GCN-NEXT: $exec = S_ANDN2_B64_term $exec, undef renamable $sgpr0_sgpr1, implicit-def $scc
69 ; GCN-NEXT: S_ENDPGM 0
70 %0:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
71 %1:vgpr_32 = V_MOV_B32_e32 2, implicit $exec
72 %2:vgpr_32 = V_MOV_B32_e32 3, implicit $exec
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-NEXT: renamable $vgpr1 = V_MOV_B32_e64 2, implicit $exec
87 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
88 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
89 ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e64 3, implicit $exec
90 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
91 ; GCN-NEXT: S_ENDPGM 0
92 %0:vgpr_32 = V_MOV_B32_e64 1, implicit $exec
93 %1:vgpr_32 = V_MOV_B32_e64 2, implicit $exec
94 %2:vgpr_32 = V_MOV_B32_e64 3, implicit $exec
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-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
110 ; GCN-NEXT: renamable $vgpr1 = V_MOV_B32_dpp undef $vgpr1, undef $vgpr0, 1, 15, 15, 1, implicit $exec
111 ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_dpp undef $vgpr0, undef $vgpr0, 1, 15, 15, 1, implicit $exec
112 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
113 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
114 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
115 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
116 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
117 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
118 ; GCN-NEXT: S_ENDPGM 0
119 %1:vgpr_32 = V_MOV_B32_dpp undef %1:vgpr_32, undef %0:vgpr_32, 1, 15, 15, 1, implicit $exec
120 %2:vgpr_32 = V_MOV_B32_dpp undef %2:vgpr_32, undef %0:vgpr_32, 1, 15, 15, 1, implicit $exec
121 %3:vgpr_32 = V_MOV_B32_dpp undef %3:vgpr_32, undef %0:vgpr_32, 1, 15, 15, 1, implicit $exec
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-NEXT: renamable $vgpr1 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
135 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
136 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
137 ; GCN-NEXT: renamable $vgpr0 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
138 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
139 ; GCN-NEXT: S_ENDPGM 0
140 %0:vgpr_32 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
141 %1:vgpr_32 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
142 %2:vgpr_32 = V_ACCVGPR_READ_B32_e64 undef $agpr0, implicit $exec
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-NEXT: renamable $agpr1 = V_ACCVGPR_WRITE_B32_e64 2, implicit $exec
156 ; GCN-NEXT: S_NOP 0, implicit killed renamable $agpr0
157 ; GCN-NEXT: S_NOP 0, implicit killed renamable $agpr1
158 ; GCN-NEXT: renamable $agpr0 = V_ACCVGPR_WRITE_B32_e64 3, implicit $exec
159 ; GCN-NEXT: S_NOP 0, implicit killed renamable $agpr0
160 ; GCN-NEXT: S_ENDPGM 0
161 %0:agpr_32 = V_ACCVGPR_WRITE_B32_e64 1, implicit $exec
162 %1:agpr_32 = V_ACCVGPR_WRITE_B32_e64 2, implicit $exec
163 %2:agpr_32 = V_ACCVGPR_WRITE_B32_e64 3, implicit $exec
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-NEXT: renamable $vgpr2_vgpr3 = V_MOV_B64_PSEUDO 2, implicit $exec
177 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
178 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
179 ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_MOV_B64_PSEUDO 3, implicit $exec
180 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
181 ; GCN-NEXT: S_ENDPGM 0
182 %0:vreg_64_align2 = V_MOV_B64_PSEUDO 1, implicit $exec
183 %1:vreg_64_align2 = V_MOV_B64_PSEUDO 2, implicit $exec
184 %2:vreg_64_align2 = V_MOV_B64_PSEUDO 3, implicit $exec
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-NEXT: renamable $vgpr1 = nofpexcept V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
198 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
199 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
200 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
201 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
202 ; GCN-NEXT: S_ENDPGM 0
203 %0:vgpr_32 = nofpexcept V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode
204 %1:vgpr_32 = nofpexcept V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
205 %2:vgpr_32 = nofpexcept V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
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-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
221 ; GCN-NEXT: renamable $vgpr1 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
222 ; GCN-NEXT: renamable $vgpr0 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
223 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
224 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
225 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
226 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
227 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
228 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
229 ; GCN-NEXT: S_ENDPGM 0
230 %0:vgpr_32 = V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode
231 %1:vgpr_32 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
232 %2:vgpr_32 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode
249 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
250 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode
251 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode
252 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
253 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
254 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
255 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
256 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
257 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
258 ; GCN-NEXT: S_ENDPGM 0
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-NEXT: renamable $vgpr1 = nofpexcept V_CVT_I32_F64_e64 0, 2, 0, 0, implicit $exec, implicit $mode
276 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
277 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
278 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e64 0, 3, 0, 0, implicit $exec, implicit $mode
279 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
280 ; GCN-NEXT: S_ENDPGM 0
281 %0:vgpr_32 = nofpexcept V_CVT_I32_F64_e64 0, 1, 0, 0, implicit $exec, implicit $mode
282 %1:vgpr_32 = nofpexcept V_CVT_I32_F64_e64 0, 2, 0, 0, implicit $exec, implicit $mode
283 %2:vgpr_32 = nofpexcept V_CVT_I32_F64_e64 0, 3, 0, 0, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_CVT_I32_F64_e64 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
299 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
300 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
301 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_I32_F64_e64 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
302 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
303 ; GCN-NEXT: S_ENDPGM 0
304 %1:vgpr_32 = nofpexcept V_CVT_I32_F64_e64 0, undef %0:vreg_64, 0, 0, implicit $exec, implicit $mode
305 %2:vgpr_32 = nofpexcept V_CVT_I32_F64_e64 0, undef %0:vreg_64, 0, 0, implicit $exec, implicit $mode
306 %3:vgpr_32 = nofpexcept V_CVT_I32_F64_e64 0, undef %0:vreg_64, 0, 0, implicit $exec, implicit $mode
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-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
322 ; GCN-NEXT: renamable $vgpr1 = V_CVT_I32_F64_dpp undef $vgpr1, 0, undef $vgpr0_vgpr1, 336, 0, 0, 0, implicit $exec, implicit $mode
323 ; GCN-NEXT: renamable $vgpr0 = V_CVT_I32_F64_dpp undef $vgpr0, 0, undef $vgpr0_vgpr1, 336, 0, 0, 0, implicit $exec, implicit $mode
324 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
325 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
326 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
327 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
328 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
329 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
330 ; GCN-NEXT: S_ENDPGM 0
331 %1:vgpr_32 = V_CVT_I32_F64_dpp undef %1:vgpr_32, 0, undef %0:vreg_64_align2, 336, 0, 0, 0, implicit $exec, implicit $mode
332 %2:vgpr_32 = V_CVT_I32_F64_dpp undef %2:vgpr_32, 0, undef %0:vreg_64_align2, 336, 0, 0, 0, implicit $exec, implicit $mode
333 %3:vgpr_32 = V_CVT_I32_F64_dpp undef %3:vgpr_32, 0, undef %0:vreg_64_align2, 336, 0, 0, 0, implicit $exec, implicit $mode
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-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
349 ; GCN-NEXT: renamable $vgpr1 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode, implicit-def $m0
350 ; GCN-NEXT: renamable $vgpr0 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode, implicit-def $m0
351 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
352 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
353 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
354 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
355 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
356 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
357 ; GCN-NEXT: S_ENDPGM 0
358 %0:vgpr_32 = V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode, implicit-def $m0
359 %1:vgpr_32 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode, implicit-def $m0
360 %2:vgpr_32 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode, implicit-def $m0
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-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
376 ; GCN-NEXT: renamable $vgpr1 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode, implicit $m0
377 ; GCN-NEXT: renamable $vgpr0 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode, implicit $m0
378 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
379 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
380 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
381 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
382 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
383 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
384 ; GCN-NEXT: S_ENDPGM 0
385 %0:vgpr_32 = V_CVT_I32_F64_e32 1, implicit $exec, implicit $mode, implicit $m0
386 %1:vgpr_32 = V_CVT_I32_F64_e32 2, implicit $exec, implicit $mode, implicit $m0
387 %2:vgpr_32 = V_CVT_I32_F64_e32 3, implicit $exec, implicit $mode, implicit $m0
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-NEXT: renamable $vgpr2_vgpr3 = V_CVT_F64_I32_e32 2, implicit $exec, implicit $mode
401 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
402 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
403 ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_CVT_F64_I32_e32 3, implicit $exec, implicit $mode
404 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
405 ; GCN-NEXT: S_ENDPGM 0
406 %0:vreg_64_align2 = V_CVT_F64_I32_e32 1, implicit $exec, implicit $mode
407 %1:vreg_64_align2 = V_CVT_F64_I32_e32 2, implicit $exec, implicit $mode
408 %2:vreg_64_align2 = V_CVT_F64_I32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_CVT_F32_F64_e32 2, implicit $exec, implicit $mode
422 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
423 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
424 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_F32_F64_e32 3, implicit $exec, implicit $mode
425 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
426 ; GCN-NEXT: S_ENDPGM 0
427 %0:vgpr_32 = nofpexcept V_CVT_F32_F64_e32 1, implicit $exec, implicit $mode
428 %1:vgpr_32 = nofpexcept V_CVT_F32_F64_e32 2, implicit $exec, implicit $mode
429 %2:vgpr_32 = nofpexcept V_CVT_F32_F64_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_CVT_F64_F32_e32 2, implicit $exec, implicit $mode
443 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
444 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
445 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_CVT_F64_F32_e32 3, implicit $exec, implicit $mode
446 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
447 ; GCN-NEXT: S_ENDPGM 0
448 %0:vreg_64_align2 = nofpexcept V_CVT_F64_F32_e32 1, implicit $exec, implicit $mode
449 %1:vreg_64_align2 = nofpexcept V_CVT_F64_F32_e32 2, implicit $exec, implicit $mode
450 %2:vreg_64_align2 = nofpexcept V_CVT_F64_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_CVT_U32_F64_e32 2, implicit $exec, implicit $mode
464 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
465 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
466 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_U32_F64_e32 3, implicit $exec, implicit $mode
467 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
468 ; GCN-NEXT: S_ENDPGM 0
469 %0:vgpr_32 = nofpexcept V_CVT_U32_F64_e32 1, implicit $exec, implicit $mode
470 %1:vgpr_32 = nofpexcept V_CVT_U32_F64_e32 2, implicit $exec, implicit $mode
471 %2:vgpr_32 = nofpexcept V_CVT_U32_F64_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr2_vgpr3 = V_CVT_F64_U32_e32 2, implicit $exec, implicit $mode
485 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
486 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
487 ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_CVT_F64_U32_e32 3, implicit $exec, implicit $mode
488 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
489 ; GCN-NEXT: S_ENDPGM 0
490 %0:vreg_64_align2 = V_CVT_F64_U32_e32 1, implicit $exec, implicit $mode
491 %1:vreg_64_align2 = V_CVT_F64_U32_e32 2, implicit $exec, implicit $mode
492 %2:vreg_64_align2 = V_CVT_F64_U32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = V_CVT_F32_I32_e32 2, implicit $exec, implicit $mode
506 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
507 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
508 ; GCN-NEXT: renamable $vgpr0 = V_CVT_F32_I32_e32 3, implicit $exec, implicit $mode
509 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
510 ; GCN-NEXT: S_ENDPGM 0
511 %0:vgpr_32 = V_CVT_F32_I32_e32 1, implicit $exec, implicit $mode
512 %1:vgpr_32 = V_CVT_F32_I32_e32 2, implicit $exec, implicit $mode
513 %2:vgpr_32 = V_CVT_F32_I32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = V_CVT_F32_I32_sdwa 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
527 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
528 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
529 ; GCN-NEXT: renamable $vgpr0 = V_CVT_F32_I32_sdwa 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
530 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
531 ; GCN-NEXT: S_ENDPGM 0
532 %1:vgpr_32 = V_CVT_F32_I32_sdwa 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
533 %2:vgpr_32 = V_CVT_F32_I32_sdwa 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
534 %3:vgpr_32 = V_CVT_F32_I32_sdwa 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
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-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
552 ; GCN-NEXT: renamable $vgpr1 = V_CVT_F32_I32_sdwa 0, undef $vgpr0, 0, 0, 0, 2, 0, implicit $exec, implicit $mode, implicit undef $vgpr1(tied-def 0)
553 ; GCN-NEXT: renamable $vgpr0 = V_CVT_F32_I32_sdwa 0, undef $vgpr0, 0, 0, 0, 2, 0, implicit $exec, implicit $mode, implicit undef $vgpr0(tied-def 0)
554 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
555 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
556 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
557 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
558 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
559 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
560 ; GCN-NEXT: S_ENDPGM 0
561 %1:vgpr_32 = V_CVT_F32_I32_sdwa 0, undef %0:vgpr_32, 0, 0, 0, 2, 0, implicit $exec, implicit $mode, implicit undef %1:vgpr_32(tied-def 0)
562 %2:vgpr_32 = V_CVT_F32_I32_sdwa 0, undef %0:vgpr_32, 0, 0, 0, 2, 0, implicit $exec, implicit $mode, implicit undef %2:vgpr_32(tied-def 0)
563 %3:vgpr_32 = V_CVT_F32_I32_sdwa 0, undef %0:vgpr_32, 0, 0, 0, 2, 0, implicit $exec, implicit $mode, implicit undef %3:vgpr_32(tied-def 0)
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-NEXT: renamable $vgpr1 = V_CVT_F32_U32_e32 2, implicit $exec, implicit $mode
577 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
578 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
579 ; GCN-NEXT: renamable $vgpr0 = V_CVT_F32_U32_e32 3, implicit $exec, implicit $mode
580 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
581 ; GCN-NEXT: S_ENDPGM 0
582 %0:vgpr_32 = V_CVT_F32_U32_e32 1, implicit $exec, implicit $mode
583 %1:vgpr_32 = V_CVT_F32_U32_e32 2, implicit $exec, implicit $mode
584 %2:vgpr_32 = V_CVT_F32_U32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_CVT_U32_F32_e32 2, implicit $exec, implicit $mode
598 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
599 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
600 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_U32_F32_e32 3, implicit $exec, implicit $mode
601 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
602 ; GCN-NEXT: S_ENDPGM 0
603 %0:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 1, implicit $exec, implicit $mode
604 %1:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 2, implicit $exec, implicit $mode
605 %2:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_CVT_I32_F32_e32 2, implicit $exec, implicit $mode
619 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
620 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
621 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_I32_F32_e32 3, implicit $exec, implicit $mode
622 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
623 ; GCN-NEXT: S_ENDPGM 0
624 %0:vgpr_32 = nofpexcept V_CVT_I32_F32_e32 1, implicit $exec, implicit $mode
625 %1:vgpr_32 = nofpexcept V_CVT_I32_F32_e32 2, implicit $exec, implicit $mode
626 %2:vgpr_32 = nofpexcept V_CVT_I32_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_CVT_F32_F16_e32 2, implicit $exec, implicit $mode
640 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
641 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
642 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_F32_F16_e32 3, implicit $exec, implicit $mode
643 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
644 ; GCN-NEXT: S_ENDPGM 0
645 %0:vgpr_32 = nofpexcept V_CVT_F32_F16_e32 1, implicit $exec, implicit $mode
646 %1:vgpr_32 = nofpexcept V_CVT_F32_F16_e32 2, implicit $exec, implicit $mode
647 %2:vgpr_32 = nofpexcept V_CVT_F32_F16_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = V_CVT_RPI_I32_F32_e32 2, implicit $exec, implicit $mode
661 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
662 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
663 ; GCN-NEXT: renamable $vgpr0 = V_CVT_RPI_I32_F32_e32 3, implicit $exec, implicit $mode
664 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
665 ; GCN-NEXT: S_ENDPGM 0
666 %0:vgpr_32 = V_CVT_RPI_I32_F32_e32 1, implicit $exec, implicit $mode
667 %1:vgpr_32 = V_CVT_RPI_I32_F32_e32 2, implicit $exec, implicit $mode
668 %2:vgpr_32 = V_CVT_RPI_I32_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = V_CVT_FLR_I32_F32_e32 2, implicit $exec, implicit $mode
682 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
683 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
684 ; GCN-NEXT: renamable $vgpr0 = V_CVT_FLR_I32_F32_e32 3, implicit $exec, implicit $mode
685 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
686 ; GCN-NEXT: S_ENDPGM 0
687 %0:vgpr_32 = V_CVT_FLR_I32_F32_e32 1, implicit $exec, implicit $mode
688 %1:vgpr_32 = V_CVT_FLR_I32_F32_e32 2, implicit $exec, implicit $mode
689 %2:vgpr_32 = V_CVT_FLR_I32_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = V_CVT_OFF_F32_I4_e32 2, implicit $exec, implicit $mode
703 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
704 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
705 ; GCN-NEXT: renamable $vgpr0 = V_CVT_OFF_F32_I4_e32 3, implicit $exec, implicit $mode
706 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
707 ; GCN-NEXT: S_ENDPGM 0
708 %0:vgpr_32 = V_CVT_OFF_F32_I4_e32 1, implicit $exec, implicit $mode
709 %1:vgpr_32 = V_CVT_OFF_F32_I4_e32 2, implicit $exec, implicit $mode
710 %2:vgpr_32 = V_CVT_OFF_F32_I4_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = V_CVT_F32_UBYTE0_e32 2, implicit $exec, implicit $mode
724 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
725 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
726 ; GCN-NEXT: renamable $vgpr0 = V_CVT_F32_UBYTE0_e32 3, implicit $exec, implicit $mode
727 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
728 ; GCN-NEXT: S_ENDPGM 0
729 %0:vgpr_32 = V_CVT_F32_UBYTE0_e32 1, implicit $exec, implicit $mode
730 %1:vgpr_32 = V_CVT_F32_UBYTE0_e32 2, implicit $exec, implicit $mode
731 %2:vgpr_32 = V_CVT_F32_UBYTE0_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_FRACT_F32_e32 2, implicit $exec, implicit $mode
745 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
746 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
747 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FRACT_F32_e32 3, implicit $exec, implicit $mode
748 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
749 ; GCN-NEXT: S_ENDPGM 0
750 %0:vgpr_32 = nofpexcept V_FRACT_F32_e32 1, implicit $exec, implicit $mode
751 %1:vgpr_32 = nofpexcept V_FRACT_F32_e32 2, implicit $exec, implicit $mode
752 %2:vgpr_32 = nofpexcept V_FRACT_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_TRUNC_F32_e32 2, implicit $exec, implicit $mode
766 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
767 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
768 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_TRUNC_F32_e32 3, implicit $exec, implicit $mode
769 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
770 ; GCN-NEXT: S_ENDPGM 0
771 %0:vgpr_32 = nofpexcept V_TRUNC_F32_e32 1, implicit $exec, implicit $mode
772 %1:vgpr_32 = nofpexcept V_TRUNC_F32_e32 2, implicit $exec, implicit $mode
773 %2:vgpr_32 = nofpexcept V_TRUNC_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_CEIL_F32_e32 2, implicit $exec, implicit $mode
787 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
788 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
789 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CEIL_F32_e32 3, implicit $exec, implicit $mode
790 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
791 ; GCN-NEXT: S_ENDPGM 0
792 %0:vgpr_32 = nofpexcept V_CEIL_F32_e32 1, implicit $exec, implicit $mode
793 %1:vgpr_32 = nofpexcept V_CEIL_F32_e32 2, implicit $exec, implicit $mode
794 %2:vgpr_32 = nofpexcept V_CEIL_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_RNDNE_F32_e32 2, implicit $exec, implicit $mode
808 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
809 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
810 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_RNDNE_F32_e32 3, implicit $exec, implicit $mode
811 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
812 ; GCN-NEXT: S_ENDPGM 0
813 %0:vgpr_32 = nofpexcept V_RNDNE_F32_e32 1, implicit $exec, implicit $mode
814 %1:vgpr_32 = nofpexcept V_RNDNE_F32_e32 2, implicit $exec, implicit $mode
815 %2:vgpr_32 = nofpexcept V_RNDNE_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_FLOOR_F32_e32 2, implicit $exec, implicit $mode
829 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
830 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
831 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FLOOR_F32_e32 3, implicit $exec, implicit $mode
832 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
833 ; GCN-NEXT: S_ENDPGM 0
834 %0:vgpr_32 = nofpexcept V_FLOOR_F32_e32 1, implicit $exec, implicit $mode
835 %1:vgpr_32 = nofpexcept V_FLOOR_F32_e32 2, implicit $exec, implicit $mode
836 %2:vgpr_32 = nofpexcept V_FLOOR_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_EXP_F32_e32 2, implicit $exec, implicit $mode
850 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
851 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
852 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_EXP_F32_e32 3, implicit $exec, implicit $mode
853 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
854 ; GCN-NEXT: S_ENDPGM 0
855 %0:vgpr_32 = nofpexcept V_EXP_F32_e32 1, implicit $exec, implicit $mode
856 %1:vgpr_32 = nofpexcept V_EXP_F32_e32 2, implicit $exec, implicit $mode
857 %2:vgpr_32 = nofpexcept V_EXP_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_LOG_F32_e32 2, implicit $exec, implicit $mode
871 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
872 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
873 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_LOG_F32_e32 3, implicit $exec, implicit $mode
874 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
875 ; GCN-NEXT: S_ENDPGM 0
876 %0:vgpr_32 = nofpexcept V_LOG_F32_e32 1, implicit $exec, implicit $mode
877 %1:vgpr_32 = nofpexcept V_LOG_F32_e32 2, implicit $exec, implicit $mode
878 %2:vgpr_32 = nofpexcept V_LOG_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_RCP_F32_e32 2, implicit $exec, implicit $mode
892 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
893 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
894 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_RCP_F32_e32 3, implicit $exec, implicit $mode
895 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
896 ; GCN-NEXT: S_ENDPGM 0
897 %0:vgpr_32 = nofpexcept V_RCP_F32_e32 1, implicit $exec, implicit $mode
898 %1:vgpr_32 = nofpexcept V_RCP_F32_e32 2, implicit $exec, implicit $mode
899 %2:vgpr_32 = nofpexcept V_RCP_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_RCP_IFLAG_F32_e32 2, implicit $exec, implicit $mode
913 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
914 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
915 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_RCP_IFLAG_F32_e32 3, implicit $exec, implicit $mode
916 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
917 ; GCN-NEXT: S_ENDPGM 0
918 %0:vgpr_32 = nofpexcept V_RCP_IFLAG_F32_e32 1, implicit $exec, implicit $mode
919 %1:vgpr_32 = nofpexcept V_RCP_IFLAG_F32_e32 2, implicit $exec, implicit $mode
920 %2:vgpr_32 = nofpexcept V_RCP_IFLAG_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_RSQ_F32_e32 2, implicit $exec, implicit $mode
934 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
935 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
936 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_RSQ_F32_e32 3, implicit $exec, implicit $mode
937 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
938 ; GCN-NEXT: S_ENDPGM 0
939 %0:vgpr_32 = nofpexcept V_RSQ_F32_e32 1, implicit $exec, implicit $mode
940 %1:vgpr_32 = nofpexcept V_RSQ_F32_e32 2, implicit $exec, implicit $mode
941 %2:vgpr_32 = nofpexcept V_RSQ_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr1 = nofpexcept V_SQRT_F32_e32 2, implicit $exec, implicit $mode
955 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
956 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
957 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_SQRT_F32_e32 3, implicit $exec, implicit $mode
958 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
959 ; GCN-NEXT: S_ENDPGM 0
960 %0:vgpr_32 = nofpexcept V_SQRT_F32_e32 1, implicit $exec, implicit $mode
961 %1:vgpr_32 = nofpexcept V_SQRT_F32_e32 2, implicit $exec, implicit $mode
962 %2:vgpr_32 = nofpexcept V_SQRT_F32_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_RCP_F64_e32 2, implicit $exec, implicit $mode
976 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
977 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
978 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_RCP_F64_e32 3, implicit $exec, implicit $mode
979 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
980 ; GCN-NEXT: S_ENDPGM 0
981 %0:vreg_64_align2 = nofpexcept V_RCP_F64_e32 1, implicit $exec, implicit $mode
982 %1:vreg_64_align2 = nofpexcept V_RCP_F64_e32 2, implicit $exec, implicit $mode
983 %2:vreg_64_align2 = nofpexcept V_RCP_F64_e32 3, implicit $exec, implicit $mode
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-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_RSQ_F64_e32 2, implicit $exec, implicit $mode
997 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
998 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
999 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_RSQ_F64_e32 3, implicit $exec, implicit $mode
1000 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1001 ; GCN-NEXT: S_ENDPGM 0
1002 %0:vreg_64_align2 = nofpexcept V_RSQ_F64_e32 1, implicit $exec, implicit $mode
1003 %1:vreg_64_align2 = nofpexcept V_RSQ_F64_e32 2, implicit $exec, implicit $mode
1004 %2:vreg_64_align2 = nofpexcept V_RSQ_F64_e32 3, implicit $exec, implicit $mode
1005 S_NOP 0, implicit %0
1006 S_NOP 0, implicit %1
1007 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_SQRT_F64_e32 2, implicit $exec, implicit $mode
1018 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1019 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
1020 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_SQRT_F64_e32 3, implicit $exec, implicit $mode
1021 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1022 ; GCN-NEXT: S_ENDPGM 0
1023 %0:vreg_64_align2 = nofpexcept V_SQRT_F64_e32 1, implicit $exec, implicit $mode
1024 %1:vreg_64_align2 = nofpexcept V_SQRT_F64_e32 2, implicit $exec, implicit $mode
1025 %2:vreg_64_align2 = nofpexcept V_SQRT_F64_e32 3, implicit $exec, implicit $mode
1026 S_NOP 0, implicit %0
1027 S_NOP 0, implicit %1
1028 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = nofpexcept V_SIN_F32_e32 2, implicit $exec, implicit $mode
1039 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1040 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1041 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_SIN_F32_e32 3, implicit $exec, implicit $mode
1042 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1043 ; GCN-NEXT: S_ENDPGM 0
1044 %0:vgpr_32 = nofpexcept V_SIN_F32_e32 1, implicit $exec, implicit $mode
1045 %1:vgpr_32 = nofpexcept V_SIN_F32_e32 2, implicit $exec, implicit $mode
1046 %2:vgpr_32 = nofpexcept V_SIN_F32_e32 3, implicit $exec, implicit $mode
1047 S_NOP 0, implicit %0
1048 S_NOP 0, implicit %1
1049 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = nofpexcept V_COS_F32_e32 2, implicit $exec, implicit $mode
1060 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1061 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1062 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_COS_F32_e32 3, implicit $exec, implicit $mode
1063 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1064 ; GCN-NEXT: S_ENDPGM 0
1065 %0:vgpr_32 = nofpexcept V_COS_F32_e32 1, implicit $exec, implicit $mode
1066 %1:vgpr_32 = nofpexcept V_COS_F32_e32 2, implicit $exec, implicit $mode
1067 %2:vgpr_32 = nofpexcept V_COS_F32_e32 3, implicit $exec, implicit $mode
1068 S_NOP 0, implicit %0
1069 S_NOP 0, implicit %1
1070 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = V_NOT_B32_e32 2, implicit $exec, implicit $mode
1081 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1082 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1083 ; GCN-NEXT: renamable $vgpr0 = V_NOT_B32_e32 3, implicit $exec, implicit $mode
1084 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1085 ; GCN-NEXT: S_ENDPGM 0
1086 %0:vgpr_32 = V_NOT_B32_e32 1, implicit $exec, implicit $mode
1087 %1:vgpr_32 = V_NOT_B32_e32 2, implicit $exec, implicit $mode
1088 %2:vgpr_32 = V_NOT_B32_e32 3, implicit $exec, implicit $mode
1089 S_NOP 0, implicit %0
1090 S_NOP 0, implicit %1
1091 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = V_BFREV_B32_e32 2, implicit $exec, implicit $mode
1102 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1103 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1104 ; GCN-NEXT: renamable $vgpr0 = V_BFREV_B32_e32 3, implicit $exec, implicit $mode
1105 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1106 ; GCN-NEXT: S_ENDPGM 0
1107 %0:vgpr_32 = V_BFREV_B32_e32 1, implicit $exec, implicit $mode
1108 %1:vgpr_32 = V_BFREV_B32_e32 2, implicit $exec, implicit $mode
1109 %2:vgpr_32 = V_BFREV_B32_e32 3, implicit $exec, implicit $mode
1110 S_NOP 0, implicit %0
1111 S_NOP 0, implicit %1
1112 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = V_FFBH_U32_e32 2, implicit $exec, implicit $mode
1123 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1124 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1125 ; GCN-NEXT: renamable $vgpr0 = V_FFBH_U32_e32 3, implicit $exec, implicit $mode
1126 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1127 ; GCN-NEXT: S_ENDPGM 0
1128 %0:vgpr_32 = V_FFBH_U32_e32 1, implicit $exec, implicit $mode
1129 %1:vgpr_32 = V_FFBH_U32_e32 2, implicit $exec, implicit $mode
1130 %2:vgpr_32 = V_FFBH_U32_e32 3, implicit $exec, implicit $mode
1131 S_NOP 0, implicit %0
1132 S_NOP 0, implicit %1
1133 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = V_FFBL_B32_e32 2, implicit $exec, implicit $mode
1144 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1145 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1146 ; GCN-NEXT: renamable $vgpr0 = V_FFBL_B32_e32 3, implicit $exec, implicit $mode
1147 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1148 ; GCN-NEXT: S_ENDPGM 0
1149 %0:vgpr_32 = V_FFBL_B32_e32 1, implicit $exec, implicit $mode
1150 %1:vgpr_32 = V_FFBL_B32_e32 2, implicit $exec, implicit $mode
1151 %2:vgpr_32 = V_FFBL_B32_e32 3, implicit $exec, implicit $mode
1152 S_NOP 0, implicit %0
1153 S_NOP 0, implicit %1
1154 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = V_FFBH_I32_e32 2, implicit $exec, implicit $mode
1165 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1166 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1167 ; GCN-NEXT: renamable $vgpr0 = V_FFBH_I32_e32 3, implicit $exec, implicit $mode
1168 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1169 ; GCN-NEXT: S_ENDPGM 0
1170 %0:vgpr_32 = V_FFBH_I32_e32 1, implicit $exec, implicit $mode
1171 %1:vgpr_32 = V_FFBH_I32_e32 2, implicit $exec, implicit $mode
1172 %2:vgpr_32 = V_FFBH_I32_e32 3, implicit $exec, implicit $mode
1173 S_NOP 0, implicit %0
1174 S_NOP 0, implicit %1
1175 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = nofpexcept V_FREXP_EXP_I32_F64_e32 2, implicit $exec, implicit $mode
1186 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1187 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1188 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FREXP_EXP_I32_F64_e32 3, implicit $exec, implicit $mode
1189 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1190 ; GCN-NEXT: S_ENDPGM 0
1191 %0:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F64_e32 1, implicit $exec, implicit $mode
1192 %1:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F64_e32 2, implicit $exec, implicit $mode
1193 %2:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F64_e32 3, implicit $exec, implicit $mode
1194 S_NOP 0, implicit %0
1195 S_NOP 0, implicit %1
1196 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_FREXP_MANT_F64_e32 2, implicit $exec, implicit $mode
1207 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1208 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
1209 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_FREXP_MANT_F64_e32 3, implicit $exec, implicit $mode
1210 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1211 ; GCN-NEXT: S_ENDPGM 0
1212 %0:vreg_64_align2 = nofpexcept V_FREXP_MANT_F64_e32 1, implicit $exec, implicit $mode
1213 %1:vreg_64_align2 = nofpexcept V_FREXP_MANT_F64_e32 2, implicit $exec, implicit $mode
1214 %2:vreg_64_align2 = nofpexcept V_FREXP_MANT_F64_e32 3, implicit $exec, implicit $mode
1215 S_NOP 0, implicit %0
1216 S_NOP 0, implicit %1
1217 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_FRACT_F64_e32 2, implicit $exec, implicit $mode
1228 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1229 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
1230 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_FRACT_F64_e32 3, implicit $exec, implicit $mode
1231 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
1232 ; GCN-NEXT: S_ENDPGM 0
1233 %0:vreg_64_align2 = nofpexcept V_FRACT_F64_e32 1, implicit $exec, implicit $mode
1234 %1:vreg_64_align2 = nofpexcept V_FRACT_F64_e32 2, implicit $exec, implicit $mode
1235 %2:vreg_64_align2 = nofpexcept V_FRACT_F64_e32 3, implicit $exec, implicit $mode
1236 S_NOP 0, implicit %0
1237 S_NOP 0, implicit %1
1238 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = nofpexcept V_FREXP_EXP_I32_F32_e32 2, implicit $exec, implicit $mode
1249 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1250 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1251 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FREXP_EXP_I32_F32_e32 3, implicit $exec, implicit $mode
1252 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1253 ; GCN-NEXT: S_ENDPGM 0
1254 %0:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F32_e32 1, implicit $exec, implicit $mode
1255 %1:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F32_e32 2, implicit $exec, implicit $mode
1256 %2:vgpr_32 = nofpexcept V_FREXP_EXP_I32_F32_e32 3, implicit $exec, implicit $mode
1257 S_NOP 0, implicit %0
1258 S_NOP 0, implicit %1
1259 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = nofpexcept V_FREXP_MANT_F32_e32 2, implicit $exec, implicit $mode
1270 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1271 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1272 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FREXP_MANT_F32_e32 3, implicit $exec, implicit $mode
1273 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1274 ; GCN-NEXT: S_ENDPGM 0
1275 %0:vgpr_32 = nofpexcept V_FREXP_MANT_F32_e32 1, implicit $exec, implicit $mode
1276 %1:vgpr_32 = nofpexcept V_FREXP_MANT_F32_e32 2, implicit $exec, implicit $mode
1277 %2:vgpr_32 = nofpexcept V_FREXP_MANT_F32_e32 3, implicit $exec, implicit $mode
1278 S_NOP 0, implicit %0
1279 S_NOP 0, implicit %1
1280 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = nofpexcept V_EXP_LEGACY_F32_e32 2, implicit $exec, implicit $mode
1291 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1292 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1293 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_EXP_LEGACY_F32_e32 3, implicit $exec, implicit $mode
1294 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1295 ; GCN-NEXT: S_ENDPGM 0
1296 %0:vgpr_32 = nofpexcept V_EXP_LEGACY_F32_e32 1, implicit $exec, implicit $mode
1297 %1:vgpr_32 = nofpexcept V_EXP_LEGACY_F32_e32 2, implicit $exec, implicit $mode
1298 %2:vgpr_32 = nofpexcept V_EXP_LEGACY_F32_e32 3, implicit $exec, implicit $mode
1299 S_NOP 0, implicit %0
1300 S_NOP 0, implicit %1
1301 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = nofpexcept V_LOG_LEGACY_F32_e32 2, implicit $exec, implicit $mode
1312 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1313 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1314 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_LOG_LEGACY_F32_e32 3, implicit $exec, implicit $mode
1315 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1316 ; GCN-NEXT: S_ENDPGM 0
1317 %0:vgpr_32 = nofpexcept V_LOG_LEGACY_F32_e32 1, implicit $exec, implicit $mode
1318 %1:vgpr_32 = nofpexcept V_LOG_LEGACY_F32_e32 2, implicit $exec, implicit $mode
1319 %2:vgpr_32 = nofpexcept V_LOG_LEGACY_F32_e32 3, implicit $exec, implicit $mode
1320 S_NOP 0, implicit %0
1321 S_NOP 0, implicit %1
1322 S_NOP 0, implicit %2
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-NEXT: renamable $vgpr1 = V_SAT_PK_U8_I16_e32 2, implicit $exec, implicit $mode
1333 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1334 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1335 ; GCN-NEXT: renamable $vgpr0 = V_SAT_PK_U8_I16_e32 3, implicit $exec, implicit $mode
1336 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1337 ; GCN-NEXT: S_ENDPGM 0
1338 %0:vgpr_32 = V_SAT_PK_U8_I16_e32 1, implicit $exec, implicit $mode
1339 %1:vgpr_32 = V_SAT_PK_U8_I16_e32 2, implicit $exec, implicit $mode
1340 %2:vgpr_32 = V_SAT_PK_U8_I16_e32 3, implicit $exec, implicit $mode
1341 S_NOP 0, implicit %0
1342 S_NOP 0, implicit %1
1343 S_NOP 0, implicit %2
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-NEXT: renamable $agpr1 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1354 ; GCN-NEXT: S_NOP 0, implicit killed renamable $agpr0
1355 ; GCN-NEXT: S_NOP 0, implicit killed renamable $agpr1
1356 ; GCN-NEXT: renamable $agpr0 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1357 ; GCN-NEXT: S_NOP 0, implicit killed renamable $agpr0
1358 ; GCN-NEXT: S_ENDPGM 0
1359 %0:agpr_32 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1360 %1:agpr_32 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1361 %2:agpr_32 = V_ACCVGPR_MOV_B32 undef $agpr0, implicit $exec
1362 S_NOP 0, implicit %0
1363 S_NOP 0, implicit %1
1364 S_NOP 0, implicit %2
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-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
1377 ; GCN-NEXT: renamable $vgpr1 = V_CNDMASK_B32_e32 1, undef $vgpr0, implicit $exec, implicit undef $vcc
1378 ; GCN-NEXT: renamable $vgpr0 = V_CNDMASK_B32_e32 1, undef $vgpr0, implicit $exec, implicit undef $vcc
1379 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
1380 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
1381 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1382 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1383 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
1384 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1385 ; GCN-NEXT: S_ENDPGM 0
1386 %1:vgpr_32 = V_CNDMASK_B32_e32 1, undef %0:vgpr_32, implicit $exec, implicit undef $vcc
1387 %2:vgpr_32 = V_CNDMASK_B32_e32 1, undef %0:vgpr_32, implicit $exec, implicit undef $vcc
1388 %3:vgpr_32 = V_CNDMASK_B32_e32 1, undef %0:vgpr_32, implicit $exec, implicit undef $vcc
1389 S_NOP 0, implicit %1
1390 S_NOP 0, implicit %2
1391 S_NOP 0, implicit %3
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-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
1404 ; GCN-NEXT: renamable $vgpr1 = V_CNDMASK_B32_sdwa 0, undef $vgpr0, 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1405 ; GCN-NEXT: renamable $vgpr0 = V_CNDMASK_B32_sdwa 0, undef $vgpr0, 0, undef $vgpr0, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1406 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
1407 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
1408 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1409 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1410 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
1411 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1412 ; GCN-NEXT: S_ENDPGM 0
1413 %1:vgpr_32 = V_CNDMASK_B32_sdwa 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1414 %2:vgpr_32 = V_CNDMASK_B32_sdwa 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1415 %3:vgpr_32 = V_CNDMASK_B32_sdwa 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, implicit $exec, implicit undef $vcc
1416 S_NOP 0, implicit %1
1417 S_NOP 0, implicit %2
1418 S_NOP 0, implicit %3
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-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
1431 ; GCN-NEXT: renamable $vgpr1 = V_CNDMASK_B32_dpp undef $vgpr1, 0, undef $vgpr0, 0, undef $vgpr0, 1, 15, 15, 10, implicit $exec, implicit undef $vcc
1432 ; GCN-NEXT: renamable $vgpr0 = V_CNDMASK_B32_dpp undef $vgpr0, 0, undef $vgpr0, 0, undef $vgpr0, 1, 15, 15, 10, implicit $exec, implicit undef $vcc
1433 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
1434 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
1435 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1436 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1437 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
1438 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1439 ; GCN-NEXT: S_ENDPGM 0
1440 %1:vgpr_32 = V_CNDMASK_B32_dpp undef %1:vgpr_32, 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 1, 15, 15, 10, implicit $exec, implicit undef $vcc
1441 %2:vgpr_32 = V_CNDMASK_B32_dpp undef %2:vgpr_32, 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 1, 15, 15, 10, implicit $exec, implicit undef $vcc
1442 %3:vgpr_32 = V_CNDMASK_B32_dpp undef %3:vgpr_32, 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 1, 15, 15, 10, implicit $exec, implicit undef $vcc
1443 S_NOP 0, implicit %1
1444 S_NOP 0, implicit %2
1445 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef $sgpr0_sgpr1, implicit $exec
1456 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1457 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1458 ; GCN-NEXT: renamable $vgpr0 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef $sgpr0_sgpr1, implicit $exec
1459 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1460 ; GCN-NEXT: S_ENDPGM 0
1461 %1:vgpr_32 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef %0:sreg_64_xexec, implicit $exec
1462 %2:vgpr_32 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef %0:sreg_64_xexec, implicit $exec
1463 %3:vgpr_32 = V_CNDMASK_B32_e64 0, 1, 0, 2, undef %0:sreg_64_xexec, implicit $exec
1464 S_NOP 0, implicit %1
1465 S_NOP 0, implicit %2
1466 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_MADMK_F32 2, 2, undef $vgpr0, implicit $exec, implicit $mode
1477 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1478 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1479 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MADMK_F32 3, 3, undef $vgpr0, implicit $exec, implicit $mode
1480 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1481 ; GCN-NEXT: S_ENDPGM 0
1482 %1:vgpr_32 = nofpexcept V_MADMK_F32 1, 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1483 %2:vgpr_32 = nofpexcept V_MADMK_F32 2, 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1484 %3:vgpr_32 = nofpexcept V_MADMK_F32 3, 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1485 S_NOP 0, implicit %1
1486 S_NOP 0, implicit %2
1487 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1498 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1499 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1500 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_ADD_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1501 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1502 ; GCN-NEXT: S_ENDPGM 0
1503 %1:vgpr_32 = nofpexcept V_ADD_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1504 %2:vgpr_32 = nofpexcept V_ADD_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1505 %3:vgpr_32 = nofpexcept V_ADD_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1506 S_NOP 0, implicit %1
1507 S_NOP 0, implicit %2
1508 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F32_e64 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
1519 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1520 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1521 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_ADD_F32_e64 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
1522 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1523 ; GCN-NEXT: S_ENDPGM 0
1524 %1:vgpr_32 = nofpexcept V_ADD_F32_e64 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
1525 %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
1526 %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
1527 S_NOP 0, implicit %1
1528 S_NOP 0, implicit %2
1529 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F32_sdwa 0, undef $vgpr0, 0, undef $vgpr0, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
1540 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1541 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1542 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_ADD_F32_sdwa 0, undef $vgpr0, 0, undef $vgpr0, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
1543 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1544 ; GCN-NEXT: S_ENDPGM 0
1545 %1:vgpr_32 = nofpexcept V_ADD_F32_sdwa 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
1546 %2:vgpr_32 = nofpexcept V_ADD_F32_sdwa 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
1547 %3:vgpr_32 = nofpexcept V_ADD_F32_sdwa 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 0, 0, 0, 0, 0, 0, implicit $exec, implicit $mode
1548 S_NOP 0, implicit %1
1549 S_NOP 0, implicit %2
1550 S_NOP 0, implicit %3
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-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
1563 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F32_dpp undef $vgpr1, 0, undef $vgpr0, 0, undef $vgpr0, 1, 15, 15, 10, implicit $exec, implicit $mode
1564 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_ADD_F32_dpp undef $vgpr0, 0, undef $vgpr0, 0, undef $vgpr0, 1, 15, 15, 10, implicit $exec, implicit $mode
1565 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
1566 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
1567 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1568 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1569 ; GCN-NEXT: renamable $vgpr0 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
1570 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1571 ; GCN-NEXT: S_ENDPGM 0
1572 %1:vgpr_32 = nofpexcept V_ADD_F32_dpp undef %1:vgpr_32, 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 1, 15, 15, 10, implicit $exec, implicit $mode
1573 %2:vgpr_32 = nofpexcept V_ADD_F32_dpp undef %2:vgpr_32, 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 1, 15, 15, 10, implicit $exec, implicit $mode
1574 %3:vgpr_32 = nofpexcept V_ADD_F32_dpp undef %3:vgpr_32, 0, undef %0:vgpr_32, 0, undef %0:vgpr_32, 1, 15, 15, 10, implicit $exec, implicit $mode
1575 S_NOP 0, implicit %1
1576 S_NOP 0, implicit %2
1577 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1588 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1589 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1590 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_SUB_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1591 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1592 ; GCN-NEXT: S_ENDPGM 0
1593 %1:vgpr_32 = nofpexcept V_SUB_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1594 %2:vgpr_32 = nofpexcept V_SUB_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1595 %3:vgpr_32 = nofpexcept V_SUB_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1596 S_NOP 0, implicit %1
1597 S_NOP 0, implicit %2
1598 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1609 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1610 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1611 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_SUBREV_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1612 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1613 ; GCN-NEXT: S_ENDPGM 0
1614 %1:vgpr_32 = nofpexcept V_SUBREV_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1615 %2:vgpr_32 = nofpexcept V_SUBREV_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1616 %3:vgpr_32 = nofpexcept V_SUBREV_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1617 S_NOP 0, implicit %1
1618 S_NOP 0, implicit %2
1619 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_MUL_LEGACY_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1630 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1631 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1632 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MUL_LEGACY_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1633 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1634 ; GCN-NEXT: S_ENDPGM 0
1635 %1:vgpr_32 = nofpexcept V_MUL_LEGACY_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1636 %2:vgpr_32 = nofpexcept V_MUL_LEGACY_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1637 %3:vgpr_32 = nofpexcept V_MUL_LEGACY_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1638 S_NOP 0, implicit %1
1639 S_NOP 0, implicit %2
1640 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1651 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1652 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1653 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MUL_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1654 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1655 ; GCN-NEXT: S_ENDPGM 0
1656 %1:vgpr_32 = nofpexcept V_MUL_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1657 %2:vgpr_32 = nofpexcept V_MUL_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1658 %3:vgpr_32 = nofpexcept V_MUL_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1659 S_NOP 0, implicit %1
1660 S_NOP 0, implicit %2
1661 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_MUL_I32_I24_e32 2, undef $vgpr0, implicit $exec
1672 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1673 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1674 ; GCN-NEXT: renamable $vgpr0 = V_MUL_I32_I24_e32 3, undef $vgpr0, implicit $exec
1675 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1676 ; GCN-NEXT: S_ENDPGM 0
1677 %1:vgpr_32 = V_MUL_I32_I24_e32 1, undef %0:vgpr_32, implicit $exec
1678 %2:vgpr_32 = V_MUL_I32_I24_e32 2, undef %0:vgpr_32, implicit $exec
1679 %3:vgpr_32 = V_MUL_I32_I24_e32 3, undef %0:vgpr_32, implicit $exec
1680 S_NOP 0, implicit %1
1681 S_NOP 0, implicit %2
1682 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_MUL_HI_I32_I24_e32 2, undef $vgpr0, implicit $exec
1693 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1694 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1695 ; GCN-NEXT: renamable $vgpr0 = V_MUL_HI_I32_I24_e32 3, undef $vgpr0, implicit $exec
1696 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1697 ; GCN-NEXT: S_ENDPGM 0
1698 %1:vgpr_32 = V_MUL_HI_I32_I24_e32 1, undef %0:vgpr_32, implicit $exec
1699 %2:vgpr_32 = V_MUL_HI_I32_I24_e32 2, undef %0:vgpr_32, implicit $exec
1700 %3:vgpr_32 = V_MUL_HI_I32_I24_e32 3, undef %0:vgpr_32, implicit $exec
1701 S_NOP 0, implicit %1
1702 S_NOP 0, implicit %2
1703 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_MUL_U32_U24_e32 2, undef $vgpr0, implicit $exec
1714 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1715 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1716 ; GCN-NEXT: renamable $vgpr0 = V_MUL_U32_U24_e32 3, undef $vgpr0, implicit $exec
1717 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1718 ; GCN-NEXT: S_ENDPGM 0
1719 %1:vgpr_32 = V_MUL_U32_U24_e32 1, undef %0:vgpr_32, implicit $exec
1720 %2:vgpr_32 = V_MUL_U32_U24_e32 2, undef %0:vgpr_32, implicit $exec
1721 %3:vgpr_32 = V_MUL_U32_U24_e32 3, undef %0:vgpr_32, implicit $exec
1722 S_NOP 0, implicit %1
1723 S_NOP 0, implicit %2
1724 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_MUL_HI_U32_U24_e32 2, undef $vgpr0, implicit $exec
1735 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1736 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1737 ; GCN-NEXT: renamable $vgpr0 = V_MUL_HI_U32_U24_e32 3, undef $vgpr0, implicit $exec
1738 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1739 ; GCN-NEXT: S_ENDPGM 0
1740 %1:vgpr_32 = V_MUL_HI_U32_U24_e32 1, undef %0:vgpr_32, implicit $exec
1741 %2:vgpr_32 = V_MUL_HI_U32_U24_e32 2, undef %0:vgpr_32, implicit $exec
1742 %3:vgpr_32 = V_MUL_HI_U32_U24_e32 3, undef %0:vgpr_32, implicit $exec
1743 S_NOP 0, implicit %1
1744 S_NOP 0, implicit %2
1745 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1756 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1757 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1758 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MIN_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1759 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1760 ; GCN-NEXT: S_ENDPGM 0
1761 %1:vgpr_32 = nofpexcept V_MIN_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1762 %2:vgpr_32 = nofpexcept V_MIN_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1763 %3:vgpr_32 = nofpexcept V_MIN_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1764 S_NOP 0, implicit %1
1765 S_NOP 0, implicit %2
1766 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
1777 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1778 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1779 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MAX_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
1780 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1781 ; GCN-NEXT: S_ENDPGM 0
1782 %1:vgpr_32 = nofpexcept V_MAX_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
1783 %2:vgpr_32 = nofpexcept V_MAX_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
1784 %3:vgpr_32 = nofpexcept V_MAX_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
1785 S_NOP 0, implicit %1
1786 S_NOP 0, implicit %2
1787 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_MIN_I32_e32 2, undef $vgpr0, implicit $exec
1798 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1799 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1800 ; GCN-NEXT: renamable $vgpr0 = V_MIN_I32_e32 3, undef $vgpr0, implicit $exec
1801 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1802 ; GCN-NEXT: S_ENDPGM 0
1803 %1:vgpr_32 = V_MIN_I32_e32 1, undef %0:vgpr_32, implicit $exec
1804 %2:vgpr_32 = V_MIN_I32_e32 2, undef %0:vgpr_32, implicit $exec
1805 %3:vgpr_32 = V_MIN_I32_e32 3, undef %0:vgpr_32, implicit $exec
1806 S_NOP 0, implicit %1
1807 S_NOP 0, implicit %2
1808 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_MAX_I32_e32 2, undef $vgpr0, implicit $exec
1819 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1820 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1821 ; GCN-NEXT: renamable $vgpr0 = V_MAX_I32_e32 3, undef $vgpr0, implicit $exec
1822 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1823 ; GCN-NEXT: S_ENDPGM 0
1824 %1:vgpr_32 = V_MAX_I32_e32 1, undef %0:vgpr_32, implicit $exec
1825 %2:vgpr_32 = V_MAX_I32_e32 2, undef %0:vgpr_32, implicit $exec
1826 %3:vgpr_32 = V_MAX_I32_e32 3, undef %0:vgpr_32, implicit $exec
1827 S_NOP 0, implicit %1
1828 S_NOP 0, implicit %2
1829 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_MIN_U32_e32 2, undef $vgpr0, implicit $exec
1840 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1841 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1842 ; GCN-NEXT: renamable $vgpr0 = V_MIN_U32_e32 3, undef $vgpr0, implicit $exec
1843 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1844 ; GCN-NEXT: S_ENDPGM 0
1845 %1:vgpr_32 = V_MIN_U32_e32 1, undef %0:vgpr_32, implicit $exec
1846 %2:vgpr_32 = V_MIN_U32_e32 2, undef %0:vgpr_32, implicit $exec
1847 %3:vgpr_32 = V_MIN_U32_e32 3, undef %0:vgpr_32, implicit $exec
1848 S_NOP 0, implicit %1
1849 S_NOP 0, implicit %2
1850 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_MAX_U32_e32 2, undef $vgpr0, implicit $exec
1861 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1862 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1863 ; GCN-NEXT: renamable $vgpr0 = V_MAX_U32_e32 3, undef $vgpr0, implicit $exec
1864 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1865 ; GCN-NEXT: S_ENDPGM 0
1866 %1:vgpr_32 = V_MAX_U32_e32 1, undef %0:vgpr_32, implicit $exec
1867 %2:vgpr_32 = V_MAX_U32_e32 2, undef %0:vgpr_32, implicit $exec
1868 %3:vgpr_32 = V_MAX_U32_e32 3, undef %0:vgpr_32, implicit $exec
1869 S_NOP 0, implicit %1
1870 S_NOP 0, implicit %2
1871 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_LSHRREV_B32_e32 2, undef $vgpr0, implicit $exec
1882 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1883 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1884 ; GCN-NEXT: renamable $vgpr0 = V_LSHRREV_B32_e32 3, undef $vgpr0, implicit $exec
1885 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1886 ; GCN-NEXT: S_ENDPGM 0
1887 %1:vgpr_32 = V_LSHRREV_B32_e32 1, undef %0:vgpr_32, implicit $exec
1888 %2:vgpr_32 = V_LSHRREV_B32_e32 2, undef %0:vgpr_32, implicit $exec
1889 %3:vgpr_32 = V_LSHRREV_B32_e32 3, undef %0:vgpr_32, implicit $exec
1890 S_NOP 0, implicit %1
1891 S_NOP 0, implicit %2
1892 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_LSHLREV_B32_e32 2, undef $vgpr0, implicit $exec
1903 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1904 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1905 ; GCN-NEXT: renamable $vgpr0 = V_LSHLREV_B32_e32 3, undef $vgpr0, implicit $exec
1906 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1907 ; GCN-NEXT: S_ENDPGM 0
1908 %1:vgpr_32 = V_LSHLREV_B32_e32 1, undef %0:vgpr_32, implicit $exec
1909 %2:vgpr_32 = V_LSHLREV_B32_e32 2, undef %0:vgpr_32, implicit $exec
1910 %3:vgpr_32 = V_LSHLREV_B32_e32 3, undef %0:vgpr_32, implicit $exec
1911 S_NOP 0, implicit %1
1912 S_NOP 0, implicit %2
1913 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_ASHRREV_I32_e32 2, undef $vgpr0, implicit $exec
1924 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1925 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1926 ; GCN-NEXT: renamable $vgpr0 = V_ASHRREV_I32_e32 3, undef $vgpr0, implicit $exec
1927 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1928 ; GCN-NEXT: S_ENDPGM 0
1929 %1:vgpr_32 = V_ASHRREV_I32_e32 1, undef %0:vgpr_32, implicit $exec
1930 %2:vgpr_32 = V_ASHRREV_I32_e32 2, undef %0:vgpr_32, implicit $exec
1931 %3:vgpr_32 = V_ASHRREV_I32_e32 3, undef %0:vgpr_32, implicit $exec
1932 S_NOP 0, implicit %1
1933 S_NOP 0, implicit %2
1934 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_AND_B32_e32 2, undef $vgpr0, implicit $exec
1945 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1946 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1947 ; GCN-NEXT: renamable $vgpr0 = V_AND_B32_e32 3, undef $vgpr0, implicit $exec
1948 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1949 ; GCN-NEXT: S_ENDPGM 0
1950 %1:vgpr_32 = V_AND_B32_e32 1, undef %0:vgpr_32, implicit $exec
1951 %2:vgpr_32 = V_AND_B32_e32 2, undef %0:vgpr_32, implicit $exec
1952 %3:vgpr_32 = V_AND_B32_e32 3, undef %0:vgpr_32, implicit $exec
1953 S_NOP 0, implicit %1
1954 S_NOP 0, implicit %2
1955 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_OR_B32_e32 2, undef $vgpr0, implicit $exec
1966 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1967 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1968 ; GCN-NEXT: renamable $vgpr0 = V_OR_B32_e32 3, undef $vgpr0, implicit $exec
1969 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1970 ; GCN-NEXT: S_ENDPGM 0
1971 %1:vgpr_32 = V_OR_B32_e32 1, undef %0:vgpr_32, implicit $exec
1972 %2:vgpr_32 = V_OR_B32_e32 2, undef %0:vgpr_32, implicit $exec
1973 %3:vgpr_32 = V_OR_B32_e32 3, undef %0:vgpr_32, implicit $exec
1974 S_NOP 0, implicit %1
1975 S_NOP 0, implicit %2
1976 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_XOR_B32_e32 2, undef $vgpr0, implicit $exec
1987 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1988 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
1989 ; GCN-NEXT: renamable $vgpr0 = V_XOR_B32_e32 3, undef $vgpr0, implicit $exec
1990 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
1991 ; GCN-NEXT: S_ENDPGM 0
1992 %1:vgpr_32 = V_XOR_B32_e32 1, undef %0:vgpr_32, implicit $exec
1993 %2:vgpr_32 = V_XOR_B32_e32 2, undef %0:vgpr_32, implicit $exec
1994 %3:vgpr_32 = V_XOR_B32_e32 3, undef %0:vgpr_32, implicit $exec
1995 S_NOP 0, implicit %1
1996 S_NOP 0, implicit %2
1997 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_MADAK_F32 2, undef $vgpr0, 2, implicit $exec, implicit $mode
2008 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2009 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2010 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MADAK_F32 3, undef $vgpr0, 3, implicit $exec, implicit $mode
2011 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2012 ; GCN-NEXT: S_ENDPGM 0
2013 %1:vgpr_32 = nofpexcept V_MADAK_F32 1, undef %0:vgpr_32, 1, implicit $exec, implicit $mode
2014 %2:vgpr_32 = nofpexcept V_MADAK_F32 2, undef %0:vgpr_32, 2, implicit $exec, implicit $mode
2015 %3:vgpr_32 = nofpexcept V_MADAK_F32 3, undef %0:vgpr_32, 3, implicit $exec, implicit $mode
2016 S_NOP 0, implicit %1
2017 S_NOP 0, implicit %2
2018 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_ADD_U32_e32 2, undef $vgpr0, implicit $exec
2029 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2030 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2031 ; GCN-NEXT: renamable $vgpr0 = V_ADD_U32_e32 3, undef $vgpr0, implicit $exec
2032 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2033 ; GCN-NEXT: S_ENDPGM 0
2034 %1:vgpr_32 = V_ADD_U32_e32 1, undef %0:vgpr_32, implicit $exec
2035 %2:vgpr_32 = V_ADD_U32_e32 2, undef %0:vgpr_32, implicit $exec
2036 %3:vgpr_32 = V_ADD_U32_e32 3, undef %0:vgpr_32, implicit $exec
2037 S_NOP 0, implicit %1
2038 S_NOP 0, implicit %2
2039 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_SUB_U32_e32 2, undef $vgpr0, implicit $exec
2050 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2051 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2052 ; GCN-NEXT: renamable $vgpr0 = V_SUB_U32_e32 3, undef $vgpr0, implicit $exec
2053 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2054 ; GCN-NEXT: S_ENDPGM 0
2055 %1:vgpr_32 = V_SUB_U32_e32 1, undef %0:vgpr_32, implicit $exec
2056 %2:vgpr_32 = V_SUB_U32_e32 2, undef %0:vgpr_32, implicit $exec
2057 %3:vgpr_32 = V_SUB_U32_e32 3, undef %0:vgpr_32, implicit $exec
2058 S_NOP 0, implicit %1
2059 S_NOP 0, implicit %2
2060 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_SUBREV_U32_e32 2, undef $vgpr0, implicit $exec
2071 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2072 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2073 ; GCN-NEXT: renamable $vgpr0 = V_SUBREV_U32_e32 3, undef $vgpr0, implicit $exec
2074 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2075 ; GCN-NEXT: S_ENDPGM 0
2076 %1:vgpr_32 = V_SUBREV_U32_e32 1, undef %0:vgpr_32, implicit $exec
2077 %2:vgpr_32 = V_SUBREV_U32_e32 2, undef %0:vgpr_32, implicit $exec
2078 %3:vgpr_32 = V_SUBREV_U32_e32 3, undef %0:vgpr_32, implicit $exec
2079 S_NOP 0, implicit %1
2080 S_NOP 0, implicit %2
2081 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_BFM_B32_e32 2, undef $vgpr0, implicit $exec
2092 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2093 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2094 ; GCN-NEXT: renamable $vgpr0 = V_BFM_B32_e32 3, undef $vgpr0, implicit $exec
2095 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2096 ; GCN-NEXT: S_ENDPGM 0
2097 %1:vgpr_32 = V_BFM_B32_e32 1, undef %0:vgpr_32, implicit $exec
2098 %2:vgpr_32 = V_BFM_B32_e32 2, undef %0:vgpr_32, implicit $exec
2099 %3:vgpr_32 = V_BFM_B32_e32 3, undef %0:vgpr_32, implicit $exec
2100 S_NOP 0, implicit %1
2101 S_NOP 0, implicit %2
2102 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_BCNT_U32_B32_e32 2, undef $vgpr0, implicit $exec
2113 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2114 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2115 ; GCN-NEXT: renamable $vgpr0 = V_BCNT_U32_B32_e32 3, undef $vgpr0, implicit $exec
2116 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2117 ; GCN-NEXT: S_ENDPGM 0
2118 %1:vgpr_32 = V_BCNT_U32_B32_e32 1, undef %0:vgpr_32, implicit $exec
2119 %2:vgpr_32 = V_BCNT_U32_B32_e32 2, undef %0:vgpr_32, implicit $exec
2120 %3:vgpr_32 = V_BCNT_U32_B32_e32 3, undef %0:vgpr_32, implicit $exec
2121 S_NOP 0, implicit %1
2122 S_NOP 0, implicit %2
2123 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_MBCNT_LO_U32_B32_e32 2, undef $vgpr0, implicit $exec
2134 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2135 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2136 ; GCN-NEXT: renamable $vgpr0 = V_MBCNT_LO_U32_B32_e32 3, undef $vgpr0, implicit $exec
2137 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2138 ; GCN-NEXT: S_ENDPGM 0
2139 %1:vgpr_32 = V_MBCNT_LO_U32_B32_e32 1, undef %0:vgpr_32, implicit $exec
2140 %2:vgpr_32 = V_MBCNT_LO_U32_B32_e32 2, undef %0:vgpr_32, implicit $exec
2141 %3:vgpr_32 = V_MBCNT_LO_U32_B32_e32 3, undef %0:vgpr_32, implicit $exec
2142 S_NOP 0, implicit %1
2143 S_NOP 0, implicit %2
2144 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_MBCNT_HI_U32_B32_e32 2, undef $vgpr0, implicit $exec
2155 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2156 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2157 ; GCN-NEXT: renamable $vgpr0 = V_MBCNT_HI_U32_B32_e32 3, undef $vgpr0, implicit $exec
2158 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2159 ; GCN-NEXT: S_ENDPGM 0
2160 %1:vgpr_32 = V_MBCNT_HI_U32_B32_e32 1, undef %0:vgpr_32, implicit $exec
2161 %2:vgpr_32 = V_MBCNT_HI_U32_B32_e32 2, undef %0:vgpr_32, implicit $exec
2162 %3:vgpr_32 = V_MBCNT_HI_U32_B32_e32 3, undef %0:vgpr_32, implicit $exec
2163 S_NOP 0, implicit %1
2164 S_NOP 0, implicit %2
2165 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2176 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2177 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2178 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_LDEXP_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2179 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2180 ; GCN-NEXT: S_ENDPGM 0
2181 %1:vgpr_32 = nofpexcept V_LDEXP_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
2182 %2:vgpr_32 = nofpexcept V_LDEXP_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
2183 %3:vgpr_32 = nofpexcept V_LDEXP_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
2184 S_NOP 0, implicit %1
2185 S_NOP 0, implicit %2
2186 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_CVT_PKNORM_I16_F32_e32 2, undef $vgpr0, implicit $exec
2197 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2198 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2199 ; GCN-NEXT: renamable $vgpr0 = V_CVT_PKNORM_I16_F32_e32 3, undef $vgpr0, implicit $exec
2200 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2201 ; GCN-NEXT: S_ENDPGM 0
2202 %1:vgpr_32 = V_CVT_PKNORM_I16_F32_e32 1, undef %0:vgpr_32, implicit $exec
2203 %2:vgpr_32 = V_CVT_PKNORM_I16_F32_e32 2, undef %0:vgpr_32, implicit $exec
2204 %3:vgpr_32 = V_CVT_PKNORM_I16_F32_e32 3, undef %0:vgpr_32, implicit $exec
2205 S_NOP 0, implicit %1
2206 S_NOP 0, implicit %2
2207 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_CVT_PKNORM_U16_F32_e32 2, undef $vgpr0, implicit $exec
2218 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2219 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2220 ; GCN-NEXT: renamable $vgpr0 = V_CVT_PKNORM_U16_F32_e32 3, undef $vgpr0, implicit $exec
2221 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2222 ; GCN-NEXT: S_ENDPGM 0
2223 %1:vgpr_32 = V_CVT_PKNORM_U16_F32_e32 1, undef %0:vgpr_32, implicit $exec
2224 %2:vgpr_32 = V_CVT_PKNORM_U16_F32_e32 2, undef %0:vgpr_32, implicit $exec
2225 %3:vgpr_32 = V_CVT_PKNORM_U16_F32_e32 3, undef %0:vgpr_32, implicit $exec
2226 S_NOP 0, implicit %1
2227 S_NOP 0, implicit %2
2228 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2239 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2240 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2241 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2242 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2243 ; GCN-NEXT: S_ENDPGM 0
2244 %1:vgpr_32 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
2245 %2:vgpr_32 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
2246 %3:vgpr_32 = nofpexcept V_CVT_PKRTZ_F16_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
2247 S_NOP 0, implicit %1
2248 S_NOP 0, implicit %2
2249 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_CVT_PK_U16_U32_e32 2, undef $vgpr0, implicit $exec
2260 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2261 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2262 ; GCN-NEXT: renamable $vgpr0 = V_CVT_PK_U16_U32_e32 3, undef $vgpr0, implicit $exec
2263 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2264 ; GCN-NEXT: S_ENDPGM 0
2265 %1:vgpr_32 = V_CVT_PK_U16_U32_e32 1, undef %0:vgpr_32, implicit $exec
2266 %2:vgpr_32 = V_CVT_PK_U16_U32_e32 2, undef %0:vgpr_32, implicit $exec
2267 %3:vgpr_32 = V_CVT_PK_U16_U32_e32 3, undef %0:vgpr_32, implicit $exec
2268 S_NOP 0, implicit %1
2269 S_NOP 0, implicit %2
2270 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_CVT_PK_I16_I32_e32 2, undef $vgpr0, implicit $exec
2281 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2282 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2283 ; GCN-NEXT: renamable $vgpr0 = V_CVT_PK_I16_I32_e32 3, undef $vgpr0, implicit $exec
2284 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2285 ; GCN-NEXT: S_ENDPGM 0
2286 %1:vgpr_32 = V_CVT_PK_I16_I32_e32 1, undef %0:vgpr_32, implicit $exec
2287 %2:vgpr_32 = V_CVT_PK_I16_I32_e32 2, undef %0:vgpr_32, implicit $exec
2288 %3:vgpr_32 = V_CVT_PK_I16_I32_e32 3, undef %0:vgpr_32, implicit $exec
2289 S_NOP 0, implicit %1
2290 S_NOP 0, implicit %2
2291 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_MIN_LEGACY_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2302 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2303 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2304 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MIN_LEGACY_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2305 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2306 ; GCN-NEXT: S_ENDPGM 0
2307 %1:vgpr_32 = nofpexcept V_MIN_LEGACY_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
2308 %2:vgpr_32 = nofpexcept V_MIN_LEGACY_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
2309 %3:vgpr_32 = nofpexcept V_MIN_LEGACY_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
2310 S_NOP 0, implicit %1
2311 S_NOP 0, implicit %2
2312 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = nofpexcept V_MAX_LEGACY_F32_e32 2, undef $vgpr0, implicit $exec, implicit $mode
2323 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2324 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2325 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MAX_LEGACY_F32_e32 3, undef $vgpr0, implicit $exec, implicit $mode
2326 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2327 ; GCN-NEXT: S_ENDPGM 0
2328 %1:vgpr_32 = nofpexcept V_MAX_LEGACY_F32_e32 1, undef %0:vgpr_32, implicit $exec, implicit $mode
2329 %2:vgpr_32 = nofpexcept V_MAX_LEGACY_F32_e32 2, undef %0:vgpr_32, implicit $exec, implicit $mode
2330 %3:vgpr_32 = nofpexcept V_MAX_LEGACY_F32_e32 3, undef %0:vgpr_32, implicit $exec, implicit $mode
2331 S_NOP 0, implicit %1
2332 S_NOP 0, implicit %2
2333 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_LSHR_B32_e32 2, undef $vgpr0, implicit $exec
2344 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2345 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2346 ; GCN-NEXT: renamable $vgpr0 = V_LSHR_B32_e32 3, undef $vgpr0, implicit $exec
2347 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2348 ; GCN-NEXT: S_ENDPGM 0
2349 %1:vgpr_32 = V_LSHR_B32_e32 1, undef %0:vgpr_32, implicit $exec
2350 %2:vgpr_32 = V_LSHR_B32_e32 2, undef %0:vgpr_32, implicit $exec
2351 %3:vgpr_32 = V_LSHR_B32_e32 3, undef %0:vgpr_32, implicit $exec
2352 S_NOP 0, implicit %1
2353 S_NOP 0, implicit %2
2354 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_LSHL_B32_e32 2, undef $vgpr0, implicit $exec
2365 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2366 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2367 ; GCN-NEXT: renamable $vgpr0 = V_LSHL_B32_e32 3, undef $vgpr0, implicit $exec
2368 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2369 ; GCN-NEXT: S_ENDPGM 0
2370 %1:vgpr_32 = V_LSHL_B32_e32 1, undef %0:vgpr_32, implicit $exec
2371 %2:vgpr_32 = V_LSHL_B32_e32 2, undef %0:vgpr_32, implicit $exec
2372 %3:vgpr_32 = V_LSHL_B32_e32 3, undef %0:vgpr_32, implicit $exec
2373 S_NOP 0, implicit %1
2374 S_NOP 0, implicit %2
2375 S_NOP 0, implicit %3
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-NEXT: renamable $vgpr1 = V_ASHR_I32_e32 2, undef $vgpr0, implicit $exec
2386 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2387 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2388 ; GCN-NEXT: renamable $vgpr0 = V_ASHR_I32_e32 3, undef $vgpr0, implicit $exec
2389 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2390 ; GCN-NEXT: S_ENDPGM 0
2391 %1:vgpr_32 = V_ASHR_I32_e32 1, undef %0:vgpr_32, implicit $exec
2392 %2:vgpr_32 = V_ASHR_I32_e32 2, undef %0:vgpr_32, implicit $exec
2393 %3:vgpr_32 = V_ASHR_I32_e32 3, undef %0:vgpr_32, implicit $exec
2394 S_NOP 0, implicit %1
2395 S_NOP 0, implicit %2
2396 S_NOP 0, implicit %3
2400 name: test_remat_v_xnor_b32_e32
2401 tracksRegLiveness: true
2404 ; GCN-LABEL: name: test_remat_v_xnor_b32_e32
2405 ; GCN: renamable $vgpr0 = V_XNOR_B32_e32 1, undef $vgpr0, implicit $exec
2406 ; GCN-NEXT: renamable $vgpr1 = V_XNOR_B32_e32 2, undef $vgpr0, implicit $exec
2407 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2408 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2409 ; GCN-NEXT: renamable $vgpr0 = V_XNOR_B32_e32 3, undef $vgpr0, implicit $exec
2410 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2411 ; GCN-NEXT: S_ENDPGM 0
2412 %1:vgpr_32 = V_XNOR_B32_e32 1, undef %0:vgpr_32, implicit $exec
2413 %2:vgpr_32 = V_XNOR_B32_e32 2, undef %0:vgpr_32, implicit $exec
2414 %3:vgpr_32 = V_XNOR_B32_e32 3, undef %0:vgpr_32, implicit $exec
2415 S_NOP 0, implicit %1
2416 S_NOP 0, implicit %2
2417 S_NOP 0, implicit %3
2421 name: test_remat_v_fmamk_f32
2422 tracksRegLiveness: true
2425 ; GCN-LABEL: name: test_remat_v_fmamk_f32
2426 ; GCN: renamable $vgpr0 = nofpexcept V_FMAMK_F32 1, 1, undef $vgpr0, implicit $exec, implicit $mode
2427 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMAMK_F32 2, 2, undef $vgpr0, implicit $exec, implicit $mode
2428 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2429 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2430 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FMAMK_F32 3, 3, undef $vgpr0, implicit $exec, implicit $mode
2431 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2432 ; GCN-NEXT: S_ENDPGM 0
2433 %1:vgpr_32 = nofpexcept V_FMAMK_F32 1, 1, undef %0:vgpr_32, implicit $exec, implicit $mode
2434 %2:vgpr_32 = nofpexcept V_FMAMK_F32 2, 2, undef %0:vgpr_32, implicit $exec, implicit $mode
2435 %3:vgpr_32 = nofpexcept V_FMAMK_F32 3, 3, undef %0:vgpr_32, implicit $exec, implicit $mode
2436 S_NOP 0, implicit %1
2437 S_NOP 0, implicit %2
2438 S_NOP 0, implicit %3
2442 name: test_remat_v_fmaak_f32
2443 tracksRegLiveness: true
2446 ; GCN-LABEL: name: test_remat_v_fmaak_f32
2447 ; GCN: renamable $vgpr0 = nofpexcept V_FMAAK_F32 1, undef $vgpr0, 1, implicit $exec, implicit $mode
2448 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMAAK_F32 2, undef $vgpr0, 2, implicit $exec, implicit $mode
2449 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2450 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2451 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FMAAK_F32 3, undef $vgpr0, 3, implicit $exec, implicit $mode
2452 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2453 ; GCN-NEXT: S_ENDPGM 0
2454 %1:vgpr_32 = nofpexcept V_FMAAK_F32 1, undef %0:vgpr_32, 1, implicit $exec, implicit $mode
2455 %2:vgpr_32 = nofpexcept V_FMAAK_F32 2, undef %0:vgpr_32, 2, implicit $exec, implicit $mode
2456 %3:vgpr_32 = nofpexcept V_FMAAK_F32 3, undef %0:vgpr_32, 3, implicit $exec, implicit $mode
2457 S_NOP 0, implicit %1
2458 S_NOP 0, implicit %2
2459 S_NOP 0, implicit %3
2463 name: test_remat_v_mad_legacy_f32_e64
2464 tracksRegLiveness: true
2467 ; GCN-LABEL: name: test_remat_v_mad_legacy_f32_e64
2468 ; GCN: renamable $vgpr0 = nofpexcept V_MAD_LEGACY_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2469 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAD_LEGACY_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2470 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2471 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2472 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MAD_LEGACY_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2473 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2474 ; GCN-NEXT: S_ENDPGM 0
2475 %1:vgpr_32 = nofpexcept V_MAD_LEGACY_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2476 %2:vgpr_32 = nofpexcept V_MAD_LEGACY_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2477 %3:vgpr_32 = nofpexcept V_MAD_LEGACY_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2478 S_NOP 0, implicit %1
2479 S_NOP 0, implicit %2
2480 S_NOP 0, implicit %3
2484 name: test_remat_v_mad_f32_e64
2485 tracksRegLiveness: true
2488 ; GCN-LABEL: name: test_remat_v_mad_f32_e64
2489 ; GCN: renamable $vgpr0 = nofpexcept V_MAD_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2490 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAD_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2491 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2492 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2493 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_MAD_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2494 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2495 ; GCN-NEXT: S_ENDPGM 0
2496 %1:vgpr_32 = nofpexcept V_MAD_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2497 %2:vgpr_32 = nofpexcept V_MAD_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2498 %3:vgpr_32 = nofpexcept V_MAD_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2499 S_NOP 0, implicit %1
2500 S_NOP 0, implicit %2
2501 S_NOP 0, implicit %3
2505 name: test_remat_v_fma_legacy_f32_e64
2506 tracksRegLiveness: true
2509 ; GCN-LABEL: name: test_remat_v_fma_legacy_f32_e64
2510 ; GCN: renamable $vgpr0 = nofpexcept V_FMA_LEGACY_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2511 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMA_LEGACY_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2512 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2513 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2514 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FMA_LEGACY_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2515 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2516 ; GCN-NEXT: S_ENDPGM 0
2517 %1:vgpr_32 = nofpexcept V_FMA_LEGACY_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2518 %2:vgpr_32 = nofpexcept V_FMA_LEGACY_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2519 %3:vgpr_32 = nofpexcept V_FMA_LEGACY_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2520 S_NOP 0, implicit %1
2521 S_NOP 0, implicit %2
2522 S_NOP 0, implicit %3
2526 name: test_remat_v_fma_f32_e64
2527 tracksRegLiveness: true
2530 ; GCN-LABEL: name: test_remat_v_fma_f32_e64
2531 ; GCN: renamable $vgpr0 = nofpexcept V_FMA_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2532 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMA_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2533 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2534 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2535 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_FMA_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2536 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2537 ; GCN-NEXT: S_ENDPGM 0
2538 %1:vgpr_32 = nofpexcept V_FMA_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2539 %2:vgpr_32 = nofpexcept V_FMA_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2540 %3:vgpr_32 = nofpexcept V_FMA_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2541 S_NOP 0, implicit %1
2542 S_NOP 0, implicit %2
2543 S_NOP 0, implicit %3
2547 name: test_remat_v_mad_i32_i24_e64
2548 tracksRegLiveness: true
2551 ; GCN-LABEL: name: test_remat_v_mad_i32_i24_e64
2552 ; GCN: renamable $vgpr0 = V_MAD_I32_I24_e64 1, 1, undef $vgpr0, 0, implicit $exec
2553 ; GCN-NEXT: renamable $vgpr1 = V_MAD_I32_I24_e64 2, 2, undef $vgpr0, 0, implicit $exec
2554 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2555 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2556 ; GCN-NEXT: renamable $vgpr0 = V_MAD_I32_I24_e64 3, 3, undef $vgpr0, 0, implicit $exec
2557 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2558 ; GCN-NEXT: S_ENDPGM 0
2559 %1:vgpr_32 = V_MAD_I32_I24_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
2560 %2:vgpr_32 = V_MAD_I32_I24_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
2561 %3:vgpr_32 = V_MAD_I32_I24_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
2562 S_NOP 0, implicit %1
2563 S_NOP 0, implicit %2
2564 S_NOP 0, implicit %3
2568 name: test_remat_v_mad_u32_u24_e64
2569 tracksRegLiveness: true
2572 ; GCN-LABEL: name: test_remat_v_mad_u32_u24_e64
2573 ; GCN: renamable $vgpr0 = V_MAD_U32_U24_e64 1, 1, undef $vgpr0, 0, implicit $exec
2574 ; GCN-NEXT: renamable $vgpr1 = V_MAD_U32_U24_e64 2, 2, undef $vgpr0, 0, implicit $exec
2575 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2576 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2577 ; GCN-NEXT: renamable $vgpr0 = V_MAD_U32_U24_e64 3, 3, undef $vgpr0, 0, implicit $exec
2578 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2579 ; GCN-NEXT: S_ENDPGM 0
2580 %1:vgpr_32 = V_MAD_U32_U24_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
2581 %2:vgpr_32 = V_MAD_U32_U24_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
2582 %3:vgpr_32 = V_MAD_U32_U24_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
2583 S_NOP 0, implicit %1
2584 S_NOP 0, implicit %2
2585 S_NOP 0, implicit %3
2589 name: test_remat_v_lerp_u8_e64
2590 tracksRegLiveness: true
2593 ; GCN-LABEL: name: test_remat_v_lerp_u8_e64
2594 ; GCN: renamable $vgpr0 = V_LERP_U8_e64 1, 1, undef $vgpr0, implicit $exec
2595 ; GCN-NEXT: renamable $vgpr1 = V_LERP_U8_e64 2, 2, undef $vgpr0, implicit $exec
2596 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2597 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2598 ; GCN-NEXT: renamable $vgpr0 = V_LERP_U8_e64 3, 3, undef $vgpr0, implicit $exec
2599 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2600 ; GCN-NEXT: S_ENDPGM 0
2601 %1:vgpr_32 = V_LERP_U8_e64 1, 1, undef %0:vgpr_32, implicit $exec
2602 %2:vgpr_32 = V_LERP_U8_e64 2, 2, undef %0:vgpr_32, implicit $exec
2603 %3:vgpr_32 = V_LERP_U8_e64 3, 3, undef %0:vgpr_32, implicit $exec
2604 S_NOP 0, implicit %1
2605 S_NOP 0, implicit %2
2606 S_NOP 0, implicit %3
2610 name: test_remat_v_fma_f64_e64
2611 tracksRegLiveness: true
2614 ; GCN-LABEL: name: test_remat_v_fma_f64_e64
2615 ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_FMA_F64_e64 0, 1, 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2616 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_FMA_F64_e64 0, 2, 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2617 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2618 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2619 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_FMA_F64_e64 0, 3, 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2620 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2621 ; GCN-NEXT: S_ENDPGM 0
2622 %1:vreg_64_align2 = nofpexcept V_FMA_F64_e64 0, 1, 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2623 %2:vreg_64_align2 = nofpexcept V_FMA_F64_e64 0, 2, 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2624 %3:vreg_64_align2 = nofpexcept V_FMA_F64_e64 0, 3, 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2625 S_NOP 0, implicit %1
2626 S_NOP 0, implicit %2
2627 S_NOP 0, implicit %3
2631 name: test_remat_v_add_f64_e64
2632 tracksRegLiveness: true
2635 ; GCN-LABEL: name: test_remat_v_add_f64_e64
2636 ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_ADD_F64_e64 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2637 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_ADD_F64_e64 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2638 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2639 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2640 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_ADD_F64_e64 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2641 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2642 ; GCN-NEXT: S_ENDPGM 0
2643 %1:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2644 %2:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2645 %3:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2646 S_NOP 0, implicit %1
2647 S_NOP 0, implicit %2
2648 S_NOP 0, implicit %3
2652 name: test_remat_v_mul_f64_e64
2653 tracksRegLiveness: true
2656 ; GCN-LABEL: name: test_remat_v_mul_f64_e64
2657 ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_MUL_F64_e64 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2658 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_MUL_F64_e64 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2659 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2660 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2661 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_MUL_F64_e64 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2662 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2663 ; GCN-NEXT: S_ENDPGM 0
2664 %1:vreg_64_align2 = nofpexcept V_MUL_F64_e64 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2665 %2:vreg_64_align2 = nofpexcept V_MUL_F64_e64 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2666 %3:vreg_64_align2 = nofpexcept V_MUL_F64_e64 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2667 S_NOP 0, implicit %1
2668 S_NOP 0, implicit %2
2669 S_NOP 0, implicit %3
2673 name: test_remat_v_min_f64_e64
2674 tracksRegLiveness: true
2677 ; GCN-LABEL: name: test_remat_v_min_f64_e64
2678 ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_MIN_F64_e64 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2679 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_MIN_F64_e64 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2680 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2681 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2682 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_MIN_F64_e64 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2683 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2684 ; GCN-NEXT: S_ENDPGM 0
2685 %1:vreg_64_align2 = nofpexcept V_MIN_F64_e64 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2686 %2:vreg_64_align2 = nofpexcept V_MIN_F64_e64 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2687 %3:vreg_64_align2 = nofpexcept V_MIN_F64_e64 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2688 S_NOP 0, implicit %1
2689 S_NOP 0, implicit %2
2690 S_NOP 0, implicit %3
2694 name: test_remat_v_max_f64_e64
2695 tracksRegLiveness: true
2698 ; GCN-LABEL: name: test_remat_v_max_f64_e64
2699 ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_MAX_F64_e64 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2700 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_MAX_F64_e64 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2701 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2702 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
2703 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_MAX_F64_e64 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
2704 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
2705 ; GCN-NEXT: S_ENDPGM 0
2706 %1:vreg_64_align2 = nofpexcept V_MAX_F64_e64 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2707 %2:vreg_64_align2 = nofpexcept V_MAX_F64_e64 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2708 %3:vreg_64_align2 = nofpexcept V_MAX_F64_e64 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
2709 S_NOP 0, implicit %1
2710 S_NOP 0, implicit %2
2711 S_NOP 0, implicit %3
2715 name: test_remat_v_mul_lo_u32_e64
2716 tracksRegLiveness: true
2719 ; GCN-LABEL: name: test_remat_v_mul_lo_u32_e64
2720 ; GCN: renamable $vgpr0 = V_MUL_LO_U32_e64 1, undef $vgpr0, implicit $exec
2721 ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U32_e64 2, undef $vgpr0, implicit $exec
2722 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2723 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2724 ; GCN-NEXT: renamable $vgpr0 = V_MUL_LO_U32_e64 3, undef $vgpr0, implicit $exec
2725 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2726 ; GCN-NEXT: S_ENDPGM 0
2727 %1:vgpr_32 = V_MUL_LO_U32_e64 1, undef %0:vgpr_32, implicit $exec
2728 %2:vgpr_32 = V_MUL_LO_U32_e64 2, undef %0:vgpr_32, implicit $exec
2729 %3:vgpr_32 = V_MUL_LO_U32_e64 3, undef %0:vgpr_32, implicit $exec
2730 S_NOP 0, implicit %1
2731 S_NOP 0, implicit %2
2732 S_NOP 0, implicit %3
2736 name: test_remat_v_mul_hi_u32_e64
2737 tracksRegLiveness: true
2740 ; GCN-LABEL: name: test_remat_v_mul_hi_u32_e64
2741 ; GCN: renamable $vgpr0 = V_MUL_HI_U32_e64 1, undef $vgpr0, implicit $exec
2742 ; GCN-NEXT: renamable $vgpr1 = V_MUL_HI_U32_e64 2, undef $vgpr0, implicit $exec
2743 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2744 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2745 ; GCN-NEXT: renamable $vgpr0 = V_MUL_HI_U32_e64 3, undef $vgpr0, implicit $exec
2746 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2747 ; GCN-NEXT: S_ENDPGM 0
2748 %1:vgpr_32 = V_MUL_HI_U32_e64 1, undef %0:vgpr_32, implicit $exec
2749 %2:vgpr_32 = V_MUL_HI_U32_e64 2, undef %0:vgpr_32, implicit $exec
2750 %3:vgpr_32 = V_MUL_HI_U32_e64 3, undef %0:vgpr_32, implicit $exec
2751 S_NOP 0, implicit %1
2752 S_NOP 0, implicit %2
2753 S_NOP 0, implicit %3
2757 name: test_remat_v_mul_lo_i32_e64
2758 tracksRegLiveness: true
2761 ; GCN-LABEL: name: test_remat_v_mul_lo_i32_e64
2762 ; GCN: renamable $vgpr0 = V_MUL_LO_I32_e64 1, undef $vgpr0, implicit $exec
2763 ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_I32_e64 2, undef $vgpr0, implicit $exec
2764 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2765 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2766 ; GCN-NEXT: renamable $vgpr0 = V_MUL_LO_I32_e64 3, undef $vgpr0, implicit $exec
2767 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2768 ; GCN-NEXT: S_ENDPGM 0
2769 %1:vgpr_32 = V_MUL_LO_I32_e64 1, undef %0:vgpr_32, implicit $exec
2770 %2:vgpr_32 = V_MUL_LO_I32_e64 2, undef %0:vgpr_32, implicit $exec
2771 %3:vgpr_32 = V_MUL_LO_I32_e64 3, undef %0:vgpr_32, implicit $exec
2772 S_NOP 0, implicit %1
2773 S_NOP 0, implicit %2
2774 S_NOP 0, implicit %3
2778 name: test_remat_v_mul_hi_i32_e64
2779 tracksRegLiveness: true
2782 ; GCN-LABEL: name: test_remat_v_mul_hi_i32_e64
2783 ; GCN: renamable $vgpr0 = V_MUL_HI_I32_e64 1, undef $vgpr0, implicit $exec
2784 ; GCN-NEXT: renamable $vgpr1 = V_MUL_HI_I32_e64 2, undef $vgpr0, implicit $exec
2785 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2786 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2787 ; GCN-NEXT: renamable $vgpr0 = V_MUL_HI_I32_e64 3, undef $vgpr0, implicit $exec
2788 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2789 ; GCN-NEXT: S_ENDPGM 0
2790 %1:vgpr_32 = V_MUL_HI_I32_e64 1, undef %0:vgpr_32, implicit $exec
2791 %2:vgpr_32 = V_MUL_HI_I32_e64 2, undef %0:vgpr_32, implicit $exec
2792 %3:vgpr_32 = V_MUL_HI_I32_e64 3, undef %0:vgpr_32, implicit $exec
2793 S_NOP 0, implicit %1
2794 S_NOP 0, implicit %2
2795 S_NOP 0, implicit %3
2799 name: test_remat_v_cubeid_f32_e64
2800 tracksRegLiveness: true
2803 ; GCN-LABEL: name: test_remat_v_cubeid_f32_e64
2804 ; GCN: renamable $vgpr0 = V_CUBEID_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2805 ; GCN-NEXT: renamable $vgpr1 = V_CUBEID_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2806 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2807 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2808 ; GCN-NEXT: renamable $vgpr0 = V_CUBEID_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2809 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2810 ; GCN-NEXT: S_ENDPGM 0
2811 %1:vgpr_32 = V_CUBEID_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2812 %2:vgpr_32 = V_CUBEID_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2813 %3:vgpr_32 = V_CUBEID_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2814 S_NOP 0, implicit %1
2815 S_NOP 0, implicit %2
2816 S_NOP 0, implicit %3
2820 name: test_remat_v_cubesc_f32_e64
2821 tracksRegLiveness: true
2824 ; GCN-LABEL: name: test_remat_v_cubesc_f32_e64
2825 ; GCN: renamable $vgpr0 = V_CUBESC_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2826 ; GCN-NEXT: renamable $vgpr1 = V_CUBESC_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2827 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2828 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2829 ; GCN-NEXT: renamable $vgpr0 = V_CUBESC_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2830 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2831 ; GCN-NEXT: S_ENDPGM 0
2832 %1:vgpr_32 = V_CUBESC_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2833 %2:vgpr_32 = V_CUBESC_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2834 %3:vgpr_32 = V_CUBESC_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2835 S_NOP 0, implicit %1
2836 S_NOP 0, implicit %2
2837 S_NOP 0, implicit %3
2841 name: test_remat_v_cubetc_f32_e64
2842 tracksRegLiveness: true
2845 ; GCN-LABEL: name: test_remat_v_cubetc_f32_e64
2846 ; GCN: renamable $vgpr0 = V_CUBETC_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2847 ; GCN-NEXT: renamable $vgpr1 = V_CUBETC_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2848 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2849 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2850 ; GCN-NEXT: renamable $vgpr0 = V_CUBETC_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2851 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2852 ; GCN-NEXT: S_ENDPGM 0
2853 %1:vgpr_32 = V_CUBETC_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2854 %2:vgpr_32 = V_CUBETC_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2855 %3:vgpr_32 = V_CUBETC_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2856 S_NOP 0, implicit %1
2857 S_NOP 0, implicit %2
2858 S_NOP 0, implicit %3
2862 name: test_remat_v_cubema_f32_e64
2863 tracksRegLiveness: true
2866 ; GCN-LABEL: name: test_remat_v_cubema_f32_e64
2867 ; GCN: renamable $vgpr0 = V_CUBEMA_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2868 ; GCN-NEXT: renamable $vgpr1 = V_CUBEMA_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2869 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2870 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2871 ; GCN-NEXT: renamable $vgpr0 = V_CUBEMA_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
2872 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2873 ; GCN-NEXT: S_ENDPGM 0
2874 %1:vgpr_32 = V_CUBEMA_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2875 %2:vgpr_32 = V_CUBEMA_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2876 %3:vgpr_32 = V_CUBEMA_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
2877 S_NOP 0, implicit %1
2878 S_NOP 0, implicit %2
2879 S_NOP 0, implicit %3
2883 name: test_remat_v_bfe_u32_e64
2884 tracksRegLiveness: true
2887 ; GCN-LABEL: name: test_remat_v_bfe_u32_e64
2888 ; GCN: renamable $vgpr0 = V_BFE_U32_e64 1, 1, undef $vgpr0, implicit $exec
2889 ; GCN-NEXT: renamable $vgpr1 = V_BFE_U32_e64 2, 2, undef $vgpr0, implicit $exec
2890 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2891 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2892 ; GCN-NEXT: renamable $vgpr0 = V_BFE_U32_e64 3, 3, undef $vgpr0, implicit $exec
2893 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2894 ; GCN-NEXT: S_ENDPGM 0
2895 %1:vgpr_32 = V_BFE_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
2896 %2:vgpr_32 = V_BFE_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
2897 %3:vgpr_32 = V_BFE_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
2898 S_NOP 0, implicit %1
2899 S_NOP 0, implicit %2
2900 S_NOP 0, implicit %3
2904 name: test_remat_v_bfe_i32_e64
2905 tracksRegLiveness: true
2908 ; GCN-LABEL: name: test_remat_v_bfe_i32_e64
2909 ; GCN: renamable $vgpr0 = V_BFE_I32_e64 1, 1, undef $vgpr0, implicit $exec
2910 ; GCN-NEXT: renamable $vgpr1 = V_BFE_I32_e64 2, 2, undef $vgpr0, implicit $exec
2911 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2912 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2913 ; GCN-NEXT: renamable $vgpr0 = V_BFE_I32_e64 3, 3, undef $vgpr0, implicit $exec
2914 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2915 ; GCN-NEXT: S_ENDPGM 0
2916 %1:vgpr_32 = V_BFE_I32_e64 1, 1, undef %0:vgpr_32, implicit $exec
2917 %2:vgpr_32 = V_BFE_I32_e64 2, 2, undef %0:vgpr_32, implicit $exec
2918 %3:vgpr_32 = V_BFE_I32_e64 3, 3, undef %0:vgpr_32, implicit $exec
2919 S_NOP 0, implicit %1
2920 S_NOP 0, implicit %2
2921 S_NOP 0, implicit %3
2925 name: test_remat_v_bfi_b32_e64
2926 tracksRegLiveness: true
2929 ; GCN-LABEL: name: test_remat_v_bfi_b32_e64
2930 ; GCN: renamable $vgpr0 = V_BFI_B32_e64 1, 1, undef $vgpr0, implicit $exec
2931 ; GCN-NEXT: renamable $vgpr1 = V_BFI_B32_e64 2, 2, undef $vgpr0, implicit $exec
2932 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2933 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2934 ; GCN-NEXT: renamable $vgpr0 = V_BFI_B32_e64 3, 3, undef $vgpr0, implicit $exec
2935 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2936 ; GCN-NEXT: S_ENDPGM 0
2937 %1:vgpr_32 = V_BFI_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
2938 %2:vgpr_32 = V_BFI_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
2939 %3:vgpr_32 = V_BFI_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
2940 S_NOP 0, implicit %1
2941 S_NOP 0, implicit %2
2942 S_NOP 0, implicit %3
2946 name: test_remat_v_alignbit_b32_e64
2947 tracksRegLiveness: true
2950 ; GCN-LABEL: name: test_remat_v_alignbit_b32_e64
2951 ; GCN: renamable $vgpr0 = V_ALIGNBIT_B32_e64 1, 1, undef $vgpr0, implicit $exec
2952 ; GCN-NEXT: renamable $vgpr1 = V_ALIGNBIT_B32_e64 2, 2, undef $vgpr0, implicit $exec
2953 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2954 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2955 ; GCN-NEXT: renamable $vgpr0 = V_ALIGNBIT_B32_e64 3, 3, undef $vgpr0, implicit $exec
2956 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2957 ; GCN-NEXT: S_ENDPGM 0
2958 %1:vgpr_32 = V_ALIGNBIT_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
2959 %2:vgpr_32 = V_ALIGNBIT_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
2960 %3:vgpr_32 = V_ALIGNBIT_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
2961 S_NOP 0, implicit %1
2962 S_NOP 0, implicit %2
2963 S_NOP 0, implicit %3
2967 name: test_remat_v_alignbyte_b32_e64
2968 tracksRegLiveness: true
2971 ; GCN-LABEL: name: test_remat_v_alignbyte_b32_e64
2972 ; GCN: renamable $vgpr0 = V_ALIGNBYTE_B32_e64 1, 1, undef $vgpr0, implicit $exec
2973 ; GCN-NEXT: renamable $vgpr1 = V_ALIGNBYTE_B32_e64 2, 2, undef $vgpr0, implicit $exec
2974 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2975 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2976 ; GCN-NEXT: renamable $vgpr0 = V_ALIGNBYTE_B32_e64 3, 3, undef $vgpr0, implicit $exec
2977 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2978 ; GCN-NEXT: S_ENDPGM 0
2979 %1:vgpr_32 = V_ALIGNBYTE_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
2980 %2:vgpr_32 = V_ALIGNBYTE_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
2981 %3:vgpr_32 = V_ALIGNBYTE_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
2982 S_NOP 0, implicit %1
2983 S_NOP 0, implicit %2
2984 S_NOP 0, implicit %3
2988 name: test_remat_v_min3_i32_e64
2989 tracksRegLiveness: true
2992 ; GCN-LABEL: name: test_remat_v_min3_i32_e64
2993 ; GCN: renamable $vgpr0 = V_MIN3_I32_e64 1, 1, undef $vgpr0, implicit $exec
2994 ; GCN-NEXT: renamable $vgpr1 = V_MIN3_I32_e64 2, 2, undef $vgpr0, implicit $exec
2995 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2996 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
2997 ; GCN-NEXT: renamable $vgpr0 = V_MIN3_I32_e64 3, 3, undef $vgpr0, implicit $exec
2998 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
2999 ; GCN-NEXT: S_ENDPGM 0
3000 %1:vgpr_32 = V_MIN3_I32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3001 %2:vgpr_32 = V_MIN3_I32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3002 %3:vgpr_32 = V_MIN3_I32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3003 S_NOP 0, implicit %1
3004 S_NOP 0, implicit %2
3005 S_NOP 0, implicit %3
3009 name: test_remat_v_min3_u32_e64
3010 tracksRegLiveness: true
3013 ; GCN-LABEL: name: test_remat_v_min3_u32_e64
3014 ; GCN: renamable $vgpr0 = V_MIN3_U32_e64 1, 1, undef $vgpr0, implicit $exec
3015 ; GCN-NEXT: renamable $vgpr1 = V_MIN3_U32_e64 2, 2, undef $vgpr0, implicit $exec
3016 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3017 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3018 ; GCN-NEXT: renamable $vgpr0 = V_MIN3_U32_e64 3, 3, undef $vgpr0, implicit $exec
3019 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3020 ; GCN-NEXT: S_ENDPGM 0
3021 %1:vgpr_32 = V_MIN3_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3022 %2:vgpr_32 = V_MIN3_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3023 %3:vgpr_32 = V_MIN3_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3024 S_NOP 0, implicit %1
3025 S_NOP 0, implicit %2
3026 S_NOP 0, implicit %3
3030 name: test_remat_v_max3_i32_e64
3031 tracksRegLiveness: true
3034 ; GCN-LABEL: name: test_remat_v_max3_i32_e64
3035 ; GCN: renamable $vgpr0 = V_MAX3_I32_e64 1, 1, undef $vgpr0, implicit $exec
3036 ; GCN-NEXT: renamable $vgpr1 = V_MAX3_I32_e64 2, 2, undef $vgpr0, implicit $exec
3037 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3038 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3039 ; GCN-NEXT: renamable $vgpr0 = V_MAX3_I32_e64 3, 3, undef $vgpr0, implicit $exec
3040 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3041 ; GCN-NEXT: S_ENDPGM 0
3042 %1:vgpr_32 = V_MAX3_I32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3043 %2:vgpr_32 = V_MAX3_I32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3044 %3:vgpr_32 = V_MAX3_I32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3045 S_NOP 0, implicit %1
3046 S_NOP 0, implicit %2
3047 S_NOP 0, implicit %3
3051 name: test_remat_v_max3_u32_e64
3052 tracksRegLiveness: true
3055 ; GCN-LABEL: name: test_remat_v_max3_u32_e64
3056 ; GCN: renamable $vgpr0 = V_MAX3_U32_e64 1, 1, undef $vgpr0, implicit $exec
3057 ; GCN-NEXT: renamable $vgpr1 = V_MAX3_U32_e64 2, 2, undef $vgpr0, implicit $exec
3058 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3059 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3060 ; GCN-NEXT: renamable $vgpr0 = V_MAX3_U32_e64 3, 3, undef $vgpr0, implicit $exec
3061 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3062 ; GCN-NEXT: S_ENDPGM 0
3063 %1:vgpr_32 = V_MAX3_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3064 %2:vgpr_32 = V_MAX3_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3065 %3:vgpr_32 = V_MAX3_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3066 S_NOP 0, implicit %1
3067 S_NOP 0, implicit %2
3068 S_NOP 0, implicit %3
3072 name: test_remat_v_med3_i32_e64
3073 tracksRegLiveness: true
3076 ; GCN-LABEL: name: test_remat_v_med3_i32_e64
3077 ; GCN: renamable $vgpr0 = V_MED3_I32_e64 1, 1, undef $vgpr0, implicit $exec
3078 ; GCN-NEXT: renamable $vgpr1 = V_MED3_I32_e64 2, 2, undef $vgpr0, implicit $exec
3079 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3080 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3081 ; GCN-NEXT: renamable $vgpr0 = V_MED3_I32_e64 3, 3, undef $vgpr0, implicit $exec
3082 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3083 ; GCN-NEXT: S_ENDPGM 0
3084 %1:vgpr_32 = V_MED3_I32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3085 %2:vgpr_32 = V_MED3_I32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3086 %3:vgpr_32 = V_MED3_I32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3087 S_NOP 0, implicit %1
3088 S_NOP 0, implicit %2
3089 S_NOP 0, implicit %3
3093 name: test_remat_v_med3_u32_e64
3094 tracksRegLiveness: true
3097 ; GCN-LABEL: name: test_remat_v_med3_u32_e64
3098 ; GCN: renamable $vgpr0 = V_MED3_U32_e64 1, 1, undef $vgpr0, implicit $exec
3099 ; GCN-NEXT: renamable $vgpr1 = V_MED3_U32_e64 2, 2, undef $vgpr0, implicit $exec
3100 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3101 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3102 ; GCN-NEXT: renamable $vgpr0 = V_MED3_U32_e64 3, 3, undef $vgpr0, implicit $exec
3103 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3104 ; GCN-NEXT: S_ENDPGM 0
3105 %1:vgpr_32 = V_MED3_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3106 %2:vgpr_32 = V_MED3_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3107 %3:vgpr_32 = V_MED3_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3108 S_NOP 0, implicit %1
3109 S_NOP 0, implicit %2
3110 S_NOP 0, implicit %3
3114 name: test_remat_v_min3_f32_e64
3115 tracksRegLiveness: true
3118 ; GCN-LABEL: name: test_remat_v_min3_f32_e64
3119 ; GCN: renamable $vgpr0 = V_MIN3_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3120 ; GCN-NEXT: renamable $vgpr1 = V_MIN3_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3121 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3122 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3123 ; GCN-NEXT: renamable $vgpr0 = V_MIN3_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3124 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3125 ; GCN-NEXT: S_ENDPGM 0
3126 %1:vgpr_32 = V_MIN3_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3127 %2:vgpr_32 = V_MIN3_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3128 %3:vgpr_32 = V_MIN3_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3129 S_NOP 0, implicit %1
3130 S_NOP 0, implicit %2
3131 S_NOP 0, implicit %3
3135 name: test_remat_v_max3_f32_e64
3136 tracksRegLiveness: true
3139 ; GCN-LABEL: name: test_remat_v_max3_f32_e64
3140 ; GCN: renamable $vgpr0 = V_MAX3_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3141 ; GCN-NEXT: renamable $vgpr1 = V_MAX3_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3142 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3143 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3144 ; GCN-NEXT: renamable $vgpr0 = V_MAX3_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3145 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3146 ; GCN-NEXT: S_ENDPGM 0
3147 %1:vgpr_32 = V_MAX3_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3148 %2:vgpr_32 = V_MAX3_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3149 %3:vgpr_32 = V_MAX3_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3150 S_NOP 0, implicit %1
3151 S_NOP 0, implicit %2
3152 S_NOP 0, implicit %3
3156 name: test_remat_v_med3_f32_e64
3157 tracksRegLiveness: true
3160 ; GCN-LABEL: name: test_remat_v_med3_f32_e64
3161 ; GCN: renamable $vgpr0 = V_MED3_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3162 ; GCN-NEXT: renamable $vgpr1 = V_MED3_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3163 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3164 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3165 ; GCN-NEXT: renamable $vgpr0 = V_MED3_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3166 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3167 ; GCN-NEXT: S_ENDPGM 0
3168 %1:vgpr_32 = V_MED3_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3169 %2:vgpr_32 = V_MED3_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3170 %3:vgpr_32 = V_MED3_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3171 S_NOP 0, implicit %1
3172 S_NOP 0, implicit %2
3173 S_NOP 0, implicit %3
3177 name: test_remat_v_sad_u8_e64
3178 tracksRegLiveness: true
3181 ; GCN-LABEL: name: test_remat_v_sad_u8_e64
3182 ; GCN: renamable $vgpr0 = V_SAD_U8_e64 1, 1, undef $vgpr0, 0, implicit $exec
3183 ; GCN-NEXT: renamable $vgpr1 = V_SAD_U8_e64 2, 2, undef $vgpr0, 0, implicit $exec
3184 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3185 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3186 ; GCN-NEXT: renamable $vgpr0 = V_SAD_U8_e64 3, 3, undef $vgpr0, 0, implicit $exec
3187 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3188 ; GCN-NEXT: S_ENDPGM 0
3189 %1:vgpr_32 = V_SAD_U8_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3190 %2:vgpr_32 = V_SAD_U8_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3191 %3:vgpr_32 = V_SAD_U8_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3192 S_NOP 0, implicit %1
3193 S_NOP 0, implicit %2
3194 S_NOP 0, implicit %3
3198 name: test_remat_v_sad_hi_u8_e64
3199 tracksRegLiveness: true
3202 ; GCN-LABEL: name: test_remat_v_sad_hi_u8_e64
3203 ; GCN: renamable $vgpr0 = V_SAD_HI_U8_e64 1, 1, undef $vgpr0, 0, implicit $exec
3204 ; GCN-NEXT: renamable $vgpr1 = V_SAD_HI_U8_e64 2, 2, undef $vgpr0, 0, implicit $exec
3205 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3206 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3207 ; GCN-NEXT: renamable $vgpr0 = V_SAD_HI_U8_e64 3, 3, undef $vgpr0, 0, implicit $exec
3208 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3209 ; GCN-NEXT: S_ENDPGM 0
3210 %1:vgpr_32 = V_SAD_HI_U8_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3211 %2:vgpr_32 = V_SAD_HI_U8_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3212 %3:vgpr_32 = V_SAD_HI_U8_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3213 S_NOP 0, implicit %1
3214 S_NOP 0, implicit %2
3215 S_NOP 0, implicit %3
3219 name: test_remat_v_sad_u16_e64
3220 tracksRegLiveness: true
3223 ; GCN-LABEL: name: test_remat_v_sad_u16_e64
3224 ; GCN: renamable $vgpr0 = V_SAD_U16_e64 1, 1, undef $vgpr0, 0, implicit $exec
3225 ; GCN-NEXT: renamable $vgpr1 = V_SAD_U16_e64 2, 2, undef $vgpr0, 0, implicit $exec
3226 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3227 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3228 ; GCN-NEXT: renamable $vgpr0 = V_SAD_U16_e64 3, 3, undef $vgpr0, 0, implicit $exec
3229 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3230 ; GCN-NEXT: S_ENDPGM 0
3231 %1:vgpr_32 = V_SAD_U16_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3232 %2:vgpr_32 = V_SAD_U16_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3233 %3:vgpr_32 = V_SAD_U16_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3234 S_NOP 0, implicit %1
3235 S_NOP 0, implicit %2
3236 S_NOP 0, implicit %3
3240 name: test_remat_v_sad_u32_e64
3241 tracksRegLiveness: true
3244 ; GCN-LABEL: name: test_remat_v_sad_u32_e64
3245 ; GCN: renamable $vgpr0 = V_SAD_U32_e64 1, 1, undef $vgpr0, 0, implicit $exec
3246 ; GCN-NEXT: renamable $vgpr1 = V_SAD_U32_e64 2, 2, undef $vgpr0, 0, implicit $exec
3247 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3248 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3249 ; GCN-NEXT: renamable $vgpr0 = V_SAD_U32_e64 3, 3, undef $vgpr0, 0, implicit $exec
3250 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3251 ; GCN-NEXT: S_ENDPGM 0
3252 %1:vgpr_32 = V_SAD_U32_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3253 %2:vgpr_32 = V_SAD_U32_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3254 %3:vgpr_32 = V_SAD_U32_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3255 S_NOP 0, implicit %1
3256 S_NOP 0, implicit %2
3257 S_NOP 0, implicit %3
3261 name: test_remat_v_cvt_pk_u8_f32_e64
3262 tracksRegLiveness: true
3265 ; GCN-LABEL: name: test_remat_v_cvt_pk_u8_f32_e64
3266 ; GCN: renamable $vgpr0 = nofpexcept V_CVT_PK_U8_F32_e64 0, 1, 0, 1, 0, undef $vgpr0, 0, implicit $exec, implicit $mode
3267 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_CVT_PK_U8_F32_e64 0, 2, 0, 2, 0, undef $vgpr0, 0, implicit $exec, implicit $mode
3268 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3269 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3270 ; GCN-NEXT: renamable $vgpr0 = nofpexcept V_CVT_PK_U8_F32_e64 0, 3, 0, 3, 0, undef $vgpr0, 0, implicit $exec, implicit $mode
3271 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3272 ; GCN-NEXT: S_ENDPGM 0
3273 %1:vgpr_32 = nofpexcept V_CVT_PK_U8_F32_e64 0, 1, 0, 1, 0, undef %0:vgpr_32, 0, implicit $exec, implicit $mode
3274 %2:vgpr_32 = nofpexcept V_CVT_PK_U8_F32_e64 0, 2, 0, 2, 0, undef %0:vgpr_32, 0, implicit $exec, implicit $mode
3275 %3:vgpr_32 = nofpexcept V_CVT_PK_U8_F32_e64 0, 3, 0, 3, 0, undef %0:vgpr_32, 0, implicit $exec, implicit $mode
3276 S_NOP 0, implicit %1
3277 S_NOP 0, implicit %2
3278 S_NOP 0, implicit %3
3282 name: test_remat_v_div_fixup_f64_e64
3283 tracksRegLiveness: true
3286 ; GCN-LABEL: name: test_remat_v_div_fixup_f64_e64
3287 ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_DIV_FIXUP_F64_e64 0, 1, 0, 1, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
3288 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_DIV_FIXUP_F64_e64 0, 2, 0, 2, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
3289 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3290 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3291 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_DIV_FIXUP_F64_e64 0, 3, 0, 3, 0, undef $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $mode
3292 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3293 ; GCN-NEXT: S_ENDPGM 0
3294 %1:vreg_64_align2 = nofpexcept V_DIV_FIXUP_F64_e64 0, 1, 0, 1, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
3295 %2:vreg_64_align2 = nofpexcept V_DIV_FIXUP_F64_e64 0, 2, 0, 2, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
3296 %3:vreg_64_align2 = nofpexcept V_DIV_FIXUP_F64_e64 0, 3, 0, 3, 0, undef %0:vreg_64_align2, 0, 0, implicit $exec, implicit $mode
3297 S_NOP 0, implicit %1
3298 S_NOP 0, implicit %2
3299 S_NOP 0, implicit %3
3303 name: test_remat_v_ldexp_f64_e64
3304 tracksRegLiveness: true
3307 ; GCN-LABEL: name: test_remat_v_ldexp_f64_e64
3308 ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_LDEXP_F64_e64 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3309 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_LDEXP_F64_e64 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3310 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3311 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3312 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_LDEXP_F64_e64 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3313 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3314 ; GCN-NEXT: S_ENDPGM 0
3315 %1:vreg_64_align2 = nofpexcept V_LDEXP_F64_e64 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3316 %2:vreg_64_align2 = nofpexcept V_LDEXP_F64_e64 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3317 %3:vreg_64_align2 = nofpexcept V_LDEXP_F64_e64 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3318 S_NOP 0, implicit %1
3319 S_NOP 0, implicit %2
3320 S_NOP 0, implicit %3
3324 name: test_remat_v_msad_u8_e64
3325 tracksRegLiveness: true
3328 ; GCN-LABEL: name: test_remat_v_msad_u8_e64
3329 ; GCN: renamable $vgpr0 = V_MSAD_U8_e64 1, 1, undef $vgpr0, 0, implicit $exec
3330 ; GCN-NEXT: renamable $vgpr1 = V_MSAD_U8_e64 2, 2, undef $vgpr0, 0, implicit $exec
3331 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3332 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3333 ; GCN-NEXT: renamable $vgpr0 = V_MSAD_U8_e64 3, 3, undef $vgpr0, 0, implicit $exec
3334 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3335 ; GCN-NEXT: S_ENDPGM 0
3336 %1:vgpr_32 = V_MSAD_U8_e64 1, 1, undef %0:vgpr_32, 0, implicit $exec
3337 %2:vgpr_32 = V_MSAD_U8_e64 2, 2, undef %0:vgpr_32, 0, implicit $exec
3338 %3:vgpr_32 = V_MSAD_U8_e64 3, 3, undef %0:vgpr_32, 0, implicit $exec
3339 S_NOP 0, implicit %1
3340 S_NOP 0, implicit %2
3341 S_NOP 0, implicit %3
3345 name: test_remat_v_trig_preop_f64_e64
3346 tracksRegLiveness: true
3349 ; GCN-LABEL: name: test_remat_v_trig_preop_f64_e64
3350 ; GCN: renamable $vgpr0_vgpr1 = nofpexcept V_TRIG_PREOP_F64_e64 0, 1, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3351 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_TRIG_PREOP_F64_e64 0, 2, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3352 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3353 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3354 ; GCN-NEXT: renamable $vgpr0_vgpr1 = nofpexcept V_TRIG_PREOP_F64_e64 0, 3, 0, undef $vgpr0, 0, 0, implicit $exec, implicit $mode
3355 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3356 ; GCN-NEXT: S_ENDPGM 0
3357 %1:vreg_64_align2 = nofpexcept V_TRIG_PREOP_F64_e64 0, 1, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3358 %2:vreg_64_align2 = nofpexcept V_TRIG_PREOP_F64_e64 0, 2, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3359 %3:vreg_64_align2 = nofpexcept V_TRIG_PREOP_F64_e64 0, 3, 0, undef %0:vgpr_32, 0, 0, implicit $exec, implicit $mode
3360 S_NOP 0, implicit %1
3361 S_NOP 0, implicit %2
3362 S_NOP 0, implicit %3
3366 name: test_remat_v_lshlrev_b64_e64
3367 tracksRegLiveness: true
3370 ; GCN-LABEL: name: test_remat_v_lshlrev_b64_e64
3371 ; GCN: renamable $vgpr0_vgpr1 = V_LSHLREV_B64_e64 1, undef $vgpr0_vgpr1, implicit $exec
3372 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_LSHLREV_B64_e64 2, undef $vgpr0_vgpr1, implicit $exec
3373 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3374 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3375 ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_LSHLREV_B64_e64 3, undef $vgpr0_vgpr1, implicit $exec
3376 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3377 ; GCN-NEXT: S_ENDPGM 0
3378 %1:vreg_64_align2 = V_LSHLREV_B64_e64 1, undef %0:vreg_64_align2, implicit $exec
3379 %2:vreg_64_align2 = V_LSHLREV_B64_e64 2, undef %0:vreg_64_align2, implicit $exec
3380 %3:vreg_64_align2 = V_LSHLREV_B64_e64 3, undef %0:vreg_64_align2, implicit $exec
3381 S_NOP 0, implicit %1
3382 S_NOP 0, implicit %2
3383 S_NOP 0, implicit %3
3387 name: test_remat_v_lshrrev_b64_e64
3388 tracksRegLiveness: true
3391 ; GCN-LABEL: name: test_remat_v_lshrrev_b64_e64
3392 ; GCN: renamable $vgpr0_vgpr1 = V_LSHRREV_B64_e64 1, undef $vgpr0_vgpr1, implicit $exec
3393 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_LSHRREV_B64_e64 2, undef $vgpr0_vgpr1, implicit $exec
3394 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3395 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3396 ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_LSHRREV_B64_e64 3, undef $vgpr0_vgpr1, implicit $exec
3397 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3398 ; GCN-NEXT: S_ENDPGM 0
3399 %1:vreg_64_align2 = V_LSHRREV_B64_e64 1, undef %0:vreg_64_align2, implicit $exec
3400 %2:vreg_64_align2 = V_LSHRREV_B64_e64 2, undef %0:vreg_64_align2, implicit $exec
3401 %3:vreg_64_align2 = V_LSHRREV_B64_e64 3, undef %0:vreg_64_align2, implicit $exec
3402 S_NOP 0, implicit %1
3403 S_NOP 0, implicit %2
3404 S_NOP 0, implicit %3
3408 name: test_remat_v_ashrrev_i64_e64
3409 tracksRegLiveness: true
3412 ; GCN-LABEL: name: test_remat_v_ashrrev_i64_e64
3413 ; GCN: renamable $vgpr0_vgpr1 = V_ASHRREV_I64_e64 1, undef $vgpr0_vgpr1, implicit $exec
3414 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_ASHRREV_I64_e64 2, undef $vgpr0_vgpr1, implicit $exec
3415 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3416 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
3417 ; GCN-NEXT: renamable $vgpr0_vgpr1 = V_ASHRREV_I64_e64 3, undef $vgpr0_vgpr1, implicit $exec
3418 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0_vgpr1
3419 ; GCN-NEXT: S_ENDPGM 0
3420 %1:vreg_64_align2 = V_ASHRREV_I64_e64 1, undef %0:vreg_64_align2, implicit $exec
3421 %2:vreg_64_align2 = V_ASHRREV_I64_e64 2, undef %0:vreg_64_align2, implicit $exec
3422 %3:vreg_64_align2 = V_ASHRREV_I64_e64 3, undef %0:vreg_64_align2, implicit $exec
3423 S_NOP 0, implicit %1
3424 S_NOP 0, implicit %2
3425 S_NOP 0, implicit %3
3429 name: test_remat_v_perm_b32_e64
3430 tracksRegLiveness: true
3433 ; GCN-LABEL: name: test_remat_v_perm_b32_e64
3434 ; GCN: renamable $vgpr0 = V_PERM_B32_e64 1, 1, undef $vgpr0, implicit $exec
3435 ; GCN-NEXT: renamable $vgpr1 = V_PERM_B32_e64 2, 2, undef $vgpr0, implicit $exec
3436 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3437 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3438 ; GCN-NEXT: renamable $vgpr0 = V_PERM_B32_e64 3, 3, undef $vgpr0, implicit $exec
3439 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3440 ; GCN-NEXT: S_ENDPGM 0
3441 %1:vgpr_32 = V_PERM_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3442 %2:vgpr_32 = V_PERM_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3443 %3:vgpr_32 = V_PERM_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3444 S_NOP 0, implicit %1
3445 S_NOP 0, implicit %2
3446 S_NOP 0, implicit %3
3450 name: test_remat_v_add3_u32_e64
3451 tracksRegLiveness: true
3454 ; GCN-LABEL: name: test_remat_v_add3_u32_e64
3455 ; GCN: renamable $vgpr0 = V_ADD3_U32_e64 1, 1, undef $vgpr0, implicit $exec
3456 ; GCN-NEXT: renamable $vgpr1 = V_ADD3_U32_e64 2, 2, undef $vgpr0, implicit $exec
3457 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3458 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3459 ; GCN-NEXT: renamable $vgpr0 = V_ADD3_U32_e64 3, 3, undef $vgpr0, implicit $exec
3460 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3461 ; GCN-NEXT: S_ENDPGM 0
3462 %1:vgpr_32 = V_ADD3_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3463 %2:vgpr_32 = V_ADD3_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3464 %3:vgpr_32 = V_ADD3_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3465 S_NOP 0, implicit %1
3466 S_NOP 0, implicit %2
3467 S_NOP 0, implicit %3
3471 name: test_remat_v_and_or_b32_e64
3472 tracksRegLiveness: true
3475 ; GCN-LABEL: name: test_remat_v_and_or_b32_e64
3476 ; GCN: renamable $vgpr0 = V_AND_OR_B32_e64 1, 1, undef $vgpr0, implicit $exec
3477 ; GCN-NEXT: renamable $vgpr1 = V_AND_OR_B32_e64 2, 2, undef $vgpr0, implicit $exec
3478 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3479 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3480 ; GCN-NEXT: renamable $vgpr0 = V_AND_OR_B32_e64 3, 3, undef $vgpr0, implicit $exec
3481 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3482 ; GCN-NEXT: S_ENDPGM 0
3483 %1:vgpr_32 = V_AND_OR_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3484 %2:vgpr_32 = V_AND_OR_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3485 %3:vgpr_32 = V_AND_OR_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3486 S_NOP 0, implicit %1
3487 S_NOP 0, implicit %2
3488 S_NOP 0, implicit %3
3492 name: test_remat_v_or3_b32_e64
3493 tracksRegLiveness: true
3496 ; GCN-LABEL: name: test_remat_v_or3_b32_e64
3497 ; GCN: renamable $vgpr0 = V_OR3_B32_e64 1, 1, undef $vgpr0, implicit $exec
3498 ; GCN-NEXT: renamable $vgpr1 = V_OR3_B32_e64 2, 2, undef $vgpr0, implicit $exec
3499 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3500 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3501 ; GCN-NEXT: renamable $vgpr0 = V_OR3_B32_e64 3, 3, undef $vgpr0, implicit $exec
3502 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3503 ; GCN-NEXT: S_ENDPGM 0
3504 %1:vgpr_32 = V_OR3_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3505 %2:vgpr_32 = V_OR3_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3506 %3:vgpr_32 = V_OR3_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3507 S_NOP 0, implicit %1
3508 S_NOP 0, implicit %2
3509 S_NOP 0, implicit %3
3513 name: test_remat_v_xad_u32_e64
3514 tracksRegLiveness: true
3517 ; GCN-LABEL: name: test_remat_v_xad_u32_e64
3518 ; GCN: renamable $vgpr0 = V_XAD_U32_e64 1, 1, undef $vgpr0, implicit $exec
3519 ; GCN-NEXT: renamable $vgpr1 = V_XAD_U32_e64 2, 2, undef $vgpr0, implicit $exec
3520 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3521 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3522 ; GCN-NEXT: renamable $vgpr0 = V_XAD_U32_e64 3, 3, undef $vgpr0, implicit $exec
3523 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3524 ; GCN-NEXT: S_ENDPGM 0
3525 %1:vgpr_32 = V_XAD_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3526 %2:vgpr_32 = V_XAD_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3527 %3:vgpr_32 = V_XAD_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3528 S_NOP 0, implicit %1
3529 S_NOP 0, implicit %2
3530 S_NOP 0, implicit %3
3534 name: test_remat_v_add_i32_e64
3535 tracksRegLiveness: true
3538 ; GCN-LABEL: name: test_remat_v_add_i32_e64
3539 ; GCN: renamable $vgpr0 = V_ADD_I32_e64 1, undef $vgpr0, 0, implicit $exec
3540 ; GCN-NEXT: renamable $vgpr1 = V_ADD_I32_e64 2, undef $vgpr0, 0, implicit $exec
3541 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3542 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3543 ; GCN-NEXT: renamable $vgpr0 = V_ADD_I32_e64 3, undef $vgpr0, 0, implicit $exec
3544 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3545 ; GCN-NEXT: S_ENDPGM 0
3546 %1:vgpr_32 = V_ADD_I32_e64 1, undef %0:vgpr_32, 0, implicit $exec
3547 %2:vgpr_32 = V_ADD_I32_e64 2, undef %0:vgpr_32, 0, implicit $exec
3548 %3:vgpr_32 = V_ADD_I32_e64 3, undef %0:vgpr_32, 0, implicit $exec
3549 S_NOP 0, implicit %1
3550 S_NOP 0, implicit %2
3551 S_NOP 0, implicit %3
3555 name: test_remat_v_add_lshl_u32_e64
3556 tracksRegLiveness: true
3559 ; GCN-LABEL: name: test_remat_v_add_lshl_u32_e64
3560 ; GCN: renamable $vgpr0 = V_ADD_LSHL_U32_e64 1, 1, undef $vgpr0, implicit $exec
3561 ; GCN-NEXT: renamable $vgpr1 = V_ADD_LSHL_U32_e64 2, 2, undef $vgpr0, implicit $exec
3562 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3563 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3564 ; GCN-NEXT: renamable $vgpr0 = V_ADD_LSHL_U32_e64 3, 3, undef $vgpr0, implicit $exec
3565 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3566 ; GCN-NEXT: S_ENDPGM 0
3567 %1:vgpr_32 = V_ADD_LSHL_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3568 %2:vgpr_32 = V_ADD_LSHL_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3569 %3:vgpr_32 = V_ADD_LSHL_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3570 S_NOP 0, implicit %1
3571 S_NOP 0, implicit %2
3572 S_NOP 0, implicit %3
3576 name: test_remat_v_sub_i32_e64
3577 tracksRegLiveness: true
3580 ; GCN-LABEL: name: test_remat_v_sub_i32_e64
3581 ; GCN: renamable $vgpr0 = V_SUB_I32_e64 1, undef $vgpr0, 0, implicit $exec
3582 ; GCN-NEXT: renamable $vgpr1 = V_SUB_I32_e64 2, undef $vgpr0, 0, implicit $exec
3583 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3584 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3585 ; GCN-NEXT: renamable $vgpr0 = V_SUB_I32_e64 3, undef $vgpr0, 0, implicit $exec
3586 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3587 ; GCN-NEXT: S_ENDPGM 0
3588 %1:vgpr_32 = V_SUB_I32_e64 1, undef %0:vgpr_32, 0, implicit $exec
3589 %2:vgpr_32 = V_SUB_I32_e64 2, undef %0:vgpr_32, 0, implicit $exec
3590 %3:vgpr_32 = V_SUB_I32_e64 3, undef %0:vgpr_32, 0, implicit $exec
3591 S_NOP 0, implicit %1
3592 S_NOP 0, implicit %2
3593 S_NOP 0, implicit %3
3597 name: test_remat_v_lshl_add_u32_e64
3598 tracksRegLiveness: true
3601 ; GCN-LABEL: name: test_remat_v_lshl_add_u32_e64
3602 ; GCN: renamable $vgpr0 = V_LSHL_ADD_U32_e64 1, 1, undef $vgpr0, implicit $exec
3603 ; GCN-NEXT: renamable $vgpr1 = V_LSHL_ADD_U32_e64 2, 2, undef $vgpr0, implicit $exec
3604 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3605 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3606 ; GCN-NEXT: renamable $vgpr0 = V_LSHL_ADD_U32_e64 3, 3, undef $vgpr0, implicit $exec
3607 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3608 ; GCN-NEXT: S_ENDPGM 0
3609 %1:vgpr_32 = V_LSHL_ADD_U32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3610 %2:vgpr_32 = V_LSHL_ADD_U32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3611 %3:vgpr_32 = V_LSHL_ADD_U32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3612 S_NOP 0, implicit %1
3613 S_NOP 0, implicit %2
3614 S_NOP 0, implicit %3
3618 name: test_remat_v_lshl_or_b32_e64
3619 tracksRegLiveness: true
3622 ; GCN-LABEL: name: test_remat_v_lshl_or_b32_e64
3623 ; GCN: renamable $vgpr0 = V_LSHL_OR_B32_e64 1, 1, undef $vgpr0, implicit $exec
3624 ; GCN-NEXT: renamable $vgpr1 = V_LSHL_OR_B32_e64 2, 2, undef $vgpr0, implicit $exec
3625 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3626 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3627 ; GCN-NEXT: renamable $vgpr0 = V_LSHL_OR_B32_e64 3, 3, undef $vgpr0, implicit $exec
3628 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
3629 ; GCN-NEXT: S_ENDPGM 0
3630 %1:vgpr_32 = V_LSHL_OR_B32_e64 1, 1, undef %0:vgpr_32, implicit $exec
3631 %2:vgpr_32 = V_LSHL_OR_B32_e64 2, 2, undef %0:vgpr_32, implicit $exec
3632 %3:vgpr_32 = V_LSHL_OR_B32_e64 3, 3, undef %0:vgpr_32, implicit $exec
3633 S_NOP 0, implicit %1
3634 S_NOP 0, implicit %2
3635 S_NOP 0, implicit %3
3640 name: test_remat_v_lshlrev_b16_e32
3641 tracksRegLiveness: true
3645 ; GCN-LABEL: name: test_remat_v_lshlrev_b16_e32
3646 ; GCN: liveins: $vgpr0
3648 ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B16_e32 1, $vgpr0, implicit $exec
3649 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3650 ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B16_e32 2, $vgpr0, implicit $exec
3651 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3652 ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B16_e32 3, $vgpr0, implicit $exec
3653 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3654 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3655 %0:vgpr_32 = COPY $vgpr0
3656 %1:vgpr_32 = V_LSHLREV_B16_e32 1, %0:vgpr_32, implicit $exec
3657 %2:vgpr_32 = V_LSHLREV_B16_e32 2, %0:vgpr_32, implicit $exec
3658 %3:vgpr_32 = V_LSHLREV_B16_e32 3, %0:vgpr_32, implicit $exec
3659 S_NOP 0, implicit %1
3660 S_NOP 0, implicit %2
3661 S_NOP 0, implicit %3
3662 S_ENDPGM 0, implicit %0
3665 name: test_remat_v_lshlrev_b16_e64
3666 tracksRegLiveness: true
3670 ; GCN-LABEL: name: test_remat_v_lshlrev_b16_e64
3671 ; GCN: liveins: $vgpr0
3673 ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B16_e64 1, $vgpr0, implicit $exec
3674 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3675 ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B16_e64 2, $vgpr0, implicit $exec
3676 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3677 ; GCN-NEXT: renamable $vgpr1 = V_LSHLREV_B16_e64 3, $vgpr0, implicit $exec
3678 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3679 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3680 %0:vgpr_32 = COPY $vgpr0
3681 %1:vgpr_32 = V_LSHLREV_B16_e64 1, %0:vgpr_32, implicit $exec
3682 %2:vgpr_32 = V_LSHLREV_B16_e64 2, %0:vgpr_32, implicit $exec
3683 %3:vgpr_32 = V_LSHLREV_B16_e64 3, %0:vgpr_32, implicit $exec
3684 S_NOP 0, implicit %1
3685 S_NOP 0, implicit %2
3686 S_NOP 0, implicit %3
3687 S_ENDPGM 0, implicit %0
3691 name: test_remat_v_lshrrev_b16_e32
3692 tracksRegLiveness: true
3696 ; GCN-LABEL: name: test_remat_v_lshrrev_b16_e32
3697 ; GCN: liveins: $vgpr0
3699 ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B16_e32 1, $vgpr0, implicit $exec
3700 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3701 ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B16_e32 2, $vgpr0, implicit $exec
3702 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3703 ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B16_e32 3, $vgpr0, implicit $exec
3704 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3705 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3706 %0:vgpr_32 = COPY $vgpr0
3707 %1:vgpr_32 = V_LSHRREV_B16_e32 1, %0:vgpr_32, implicit $exec
3708 %2:vgpr_32 = V_LSHRREV_B16_e32 2, %0:vgpr_32, implicit $exec
3709 %3:vgpr_32 = V_LSHRREV_B16_e32 3, %0:vgpr_32, implicit $exec
3710 S_NOP 0, implicit %1
3711 S_NOP 0, implicit %2
3712 S_NOP 0, implicit %3
3713 S_ENDPGM 0, implicit %0
3716 name: test_remat_v_lshrrev_b16_e64
3717 tracksRegLiveness: true
3721 ; GCN-LABEL: name: test_remat_v_lshrrev_b16_e64
3722 ; GCN: liveins: $vgpr0
3724 ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B16_e64 1, $vgpr0, implicit $exec
3725 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3726 ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B16_e64 2, $vgpr0, implicit $exec
3727 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3728 ; GCN-NEXT: renamable $vgpr1 = V_LSHRREV_B16_e64 3, $vgpr0, implicit $exec
3729 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3730 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3731 %0:vgpr_32 = COPY $vgpr0
3732 %1:vgpr_32 = V_LSHRREV_B16_e64 1, %0:vgpr_32, implicit $exec
3733 %2:vgpr_32 = V_LSHRREV_B16_e64 2, %0:vgpr_32, implicit $exec
3734 %3:vgpr_32 = V_LSHRREV_B16_e64 3, %0:vgpr_32, implicit $exec
3735 S_NOP 0, implicit %1
3736 S_NOP 0, implicit %2
3737 S_NOP 0, implicit %3
3738 S_ENDPGM 0, implicit %0
3742 name: test_remat_v_ashrrev_i16_e32
3743 tracksRegLiveness: true
3747 ; GCN-LABEL: name: test_remat_v_ashrrev_i16_e32
3748 ; GCN: liveins: $vgpr0
3750 ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I16_e32 1, $vgpr0, implicit $exec
3751 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3752 ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I16_e32 2, $vgpr0, implicit $exec
3753 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3754 ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I16_e32 3, $vgpr0, implicit $exec
3755 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3756 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3757 %0:vgpr_32 = COPY $vgpr0
3758 %1:vgpr_32 = V_ASHRREV_I16_e32 1, %0:vgpr_32, implicit $exec
3759 %2:vgpr_32 = V_ASHRREV_I16_e32 2, %0:vgpr_32, implicit $exec
3760 %3:vgpr_32 = V_ASHRREV_I16_e32 3, %0:vgpr_32, implicit $exec
3761 S_NOP 0, implicit %1
3762 S_NOP 0, implicit %2
3763 S_NOP 0, implicit %3
3764 S_ENDPGM 0, implicit %0
3767 name: test_remat_v_ashrrev_i16_e64
3768 tracksRegLiveness: true
3772 ; GCN-LABEL: name: test_remat_v_ashrrev_i16_e64
3773 ; GCN: liveins: $vgpr0
3775 ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I16_e64 1, $vgpr0, implicit $exec
3776 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3777 ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I16_e64 2, $vgpr0, implicit $exec
3778 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3779 ; GCN-NEXT: renamable $vgpr1 = V_ASHRREV_I16_e64 3, $vgpr0, implicit $exec
3780 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3781 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3782 %0:vgpr_32 = COPY $vgpr0
3783 %1:vgpr_32 = V_ASHRREV_I16_e64 1, %0:vgpr_32, implicit $exec
3784 %2:vgpr_32 = V_ASHRREV_I16_e64 2, %0:vgpr_32, implicit $exec
3785 %3:vgpr_32 = V_ASHRREV_I16_e64 3, %0:vgpr_32, implicit $exec
3786 S_NOP 0, implicit %1
3787 S_NOP 0, implicit %2
3788 S_NOP 0, implicit %3
3789 S_ENDPGM 0, implicit %0
3793 name: test_remat_v_add_u16_e32
3794 tracksRegLiveness: true
3798 ; GCN-LABEL: name: test_remat_v_add_u16_e32
3799 ; GCN: liveins: $vgpr0
3801 ; GCN-NEXT: renamable $vgpr1 = V_ADD_U16_e32 1, $vgpr0, implicit $exec
3802 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3803 ; GCN-NEXT: renamable $vgpr1 = V_ADD_U16_e32 2, $vgpr0, implicit $exec
3804 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3805 ; GCN-NEXT: renamable $vgpr1 = V_ADD_U16_e32 3, $vgpr0, implicit $exec
3806 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3807 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3808 %0:vgpr_32 = COPY $vgpr0
3809 %1:vgpr_32 = V_ADD_U16_e32 1, %0:vgpr_32, implicit $exec
3810 %2:vgpr_32 = V_ADD_U16_e32 2, %0:vgpr_32, implicit $exec
3811 %3:vgpr_32 = V_ADD_U16_e32 3, %0:vgpr_32, implicit $exec
3812 S_NOP 0, implicit %1
3813 S_NOP 0, implicit %2
3814 S_NOP 0, implicit %3
3815 S_ENDPGM 0, implicit %0
3819 name: test_remat_v_add_u16_e64
3820 tracksRegLiveness: true
3824 ; GCN-LABEL: name: test_remat_v_add_u16_e64
3825 ; GCN: liveins: $vgpr0
3827 ; GCN-NEXT: renamable $vgpr1 = V_ADD_U16_e64 1, $vgpr0, 0, implicit $exec
3828 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3829 ; GCN-NEXT: renamable $vgpr1 = V_ADD_U16_e64 2, $vgpr0, 0, implicit $exec
3830 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3831 ; GCN-NEXT: renamable $vgpr1 = V_ADD_U16_e64 3, $vgpr0, 0, implicit $exec
3832 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3833 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3834 %0:vgpr_32 = COPY $vgpr0
3835 %1:vgpr_32 = V_ADD_U16_e64 1, %0:vgpr_32, 0, implicit $exec
3836 %2:vgpr_32 = V_ADD_U16_e64 2, %0:vgpr_32, 0, implicit $exec
3837 %3:vgpr_32 = V_ADD_U16_e64 3, %0:vgpr_32, 0, implicit $exec
3838 S_NOP 0, implicit %1
3839 S_NOP 0, implicit %2
3840 S_NOP 0, implicit %3
3841 S_ENDPGM 0, implicit %0
3845 name: test_remat_v_sub_u16_e32
3846 tracksRegLiveness: true
3850 ; GCN-LABEL: name: test_remat_v_sub_u16_e32
3851 ; GCN: liveins: $vgpr0
3853 ; GCN-NEXT: renamable $vgpr1 = V_SUB_U16_e32 1, $vgpr0, implicit $exec
3854 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3855 ; GCN-NEXT: renamable $vgpr1 = V_SUB_U16_e32 2, $vgpr0, implicit $exec
3856 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3857 ; GCN-NEXT: renamable $vgpr1 = V_SUB_U16_e32 3, $vgpr0, implicit $exec
3858 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3859 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3860 %0:vgpr_32 = COPY $vgpr0
3861 %1:vgpr_32 = V_SUB_U16_e32 1, %0:vgpr_32, implicit $exec
3862 %2:vgpr_32 = V_SUB_U16_e32 2, %0:vgpr_32, implicit $exec
3863 %3:vgpr_32 = V_SUB_U16_e32 3, %0:vgpr_32, implicit $exec
3864 S_NOP 0, implicit %1
3865 S_NOP 0, implicit %2
3866 S_NOP 0, implicit %3
3867 S_ENDPGM 0, implicit %0
3871 name: test_remat_v_sub_u16_e64
3872 tracksRegLiveness: true
3876 ; GCN-LABEL: name: test_remat_v_sub_u16_e64
3877 ; GCN: liveins: $vgpr0
3879 ; GCN-NEXT: renamable $vgpr1 = V_SUB_U16_e64 1, $vgpr0, 0, implicit $exec
3880 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3881 ; GCN-NEXT: renamable $vgpr1 = V_SUB_U16_e64 2, $vgpr0, 0, implicit $exec
3882 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3883 ; GCN-NEXT: renamable $vgpr1 = V_SUB_U16_e64 3, $vgpr0, 0, implicit $exec
3884 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3885 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3886 %0:vgpr_32 = COPY $vgpr0
3887 %1:vgpr_32 = V_SUB_U16_e64 1, %0:vgpr_32, 0, implicit $exec
3888 %2:vgpr_32 = V_SUB_U16_e64 2, %0:vgpr_32, 0, implicit $exec
3889 %3:vgpr_32 = V_SUB_U16_e64 3, %0:vgpr_32, 0, implicit $exec
3890 S_NOP 0, implicit %1
3891 S_NOP 0, implicit %2
3892 S_NOP 0, implicit %3
3893 S_ENDPGM 0, implicit %0
3897 name: test_remat_v_subrev_u16_e32
3898 tracksRegLiveness: true
3902 ; GCN-LABEL: name: test_remat_v_subrev_u16_e32
3903 ; GCN: liveins: $vgpr0
3905 ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U16_e32 1, $vgpr0, implicit $exec
3906 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3907 ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U16_e32 2, $vgpr0, implicit $exec
3908 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3909 ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U16_e32 3, $vgpr0, implicit $exec
3910 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3911 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3912 %0:vgpr_32 = COPY $vgpr0
3913 %1:vgpr_32 = V_SUBREV_U16_e32 1, %0:vgpr_32, implicit $exec
3914 %2:vgpr_32 = V_SUBREV_U16_e32 2, %0:vgpr_32, implicit $exec
3915 %3:vgpr_32 = V_SUBREV_U16_e32 3, %0:vgpr_32, implicit $exec
3916 S_NOP 0, implicit %1
3917 S_NOP 0, implicit %2
3918 S_NOP 0, implicit %3
3919 S_ENDPGM 0, implicit %0
3923 name: test_remat_v_subrev_u16_e64
3924 tracksRegLiveness: true
3928 ; GCN-LABEL: name: test_remat_v_subrev_u16_e64
3929 ; GCN: liveins: $vgpr0
3931 ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U16_e64 1, $vgpr0, 0, implicit $exec
3932 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3933 ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U16_e64 2, $vgpr0, 0, implicit $exec
3934 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3935 ; GCN-NEXT: renamable $vgpr1 = V_SUBREV_U16_e64 3, $vgpr0, 0, implicit $exec
3936 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3937 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3938 %0:vgpr_32 = COPY $vgpr0
3939 %1:vgpr_32 = V_SUBREV_U16_e64 1, %0:vgpr_32, 0, implicit $exec
3940 %2:vgpr_32 = V_SUBREV_U16_e64 2, %0:vgpr_32, 0, implicit $exec
3941 %3:vgpr_32 = V_SUBREV_U16_e64 3, %0:vgpr_32, 0, implicit $exec
3942 S_NOP 0, implicit %1
3943 S_NOP 0, implicit %2
3944 S_NOP 0, implicit %3
3945 S_ENDPGM 0, implicit %0
3949 name: test_remat_v_min_u16_e32
3950 tracksRegLiveness: true
3954 ; GCN-LABEL: name: test_remat_v_min_u16_e32
3955 ; GCN: liveins: $vgpr0
3957 ; GCN-NEXT: renamable $vgpr1 = V_MIN_U16_e32 1, $vgpr0, implicit $exec
3958 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3959 ; GCN-NEXT: renamable $vgpr1 = V_MIN_U16_e32 2, $vgpr0, implicit $exec
3960 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3961 ; GCN-NEXT: renamable $vgpr1 = V_MIN_U16_e32 3, $vgpr0, implicit $exec
3962 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3963 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3964 %0:vgpr_32 = COPY $vgpr0
3965 %1:vgpr_32 = V_MIN_U16_e32 1, %0:vgpr_32, implicit $exec
3966 %2:vgpr_32 = V_MIN_U16_e32 2, %0:vgpr_32, implicit $exec
3967 %3:vgpr_32 = V_MIN_U16_e32 3, %0:vgpr_32, implicit $exec
3968 S_NOP 0, implicit %1
3969 S_NOP 0, implicit %2
3970 S_NOP 0, implicit %3
3971 S_ENDPGM 0, implicit %0
3975 name: test_remat_v_min_u16_e64
3976 tracksRegLiveness: true
3980 ; GCN-LABEL: name: test_remat_v_min_u16_e64
3981 ; GCN: liveins: $vgpr0
3983 ; GCN-NEXT: renamable $vgpr1 = V_MIN_U16_e64 1, $vgpr0, implicit $exec
3984 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3985 ; GCN-NEXT: renamable $vgpr1 = V_MIN_U16_e64 2, $vgpr0, implicit $exec
3986 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3987 ; GCN-NEXT: renamable $vgpr1 = V_MIN_U16_e64 3, $vgpr0, implicit $exec
3988 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
3989 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
3990 %0:vgpr_32 = COPY $vgpr0
3991 %1:vgpr_32 = V_MIN_U16_e64 1, %0:vgpr_32, implicit $exec
3992 %2:vgpr_32 = V_MIN_U16_e64 2, %0:vgpr_32, implicit $exec
3993 %3:vgpr_32 = V_MIN_U16_e64 3, %0:vgpr_32, implicit $exec
3994 S_NOP 0, implicit %1
3995 S_NOP 0, implicit %2
3996 S_NOP 0, implicit %3
3997 S_ENDPGM 0, implicit %0
4001 name: test_remat_v_max_u16_e32
4002 tracksRegLiveness: true
4006 ; GCN-LABEL: name: test_remat_v_max_u16_e32
4007 ; GCN: liveins: $vgpr0
4009 ; GCN-NEXT: renamable $vgpr1 = V_MAX_U16_e32 1, $vgpr0, implicit $exec
4010 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4011 ; GCN-NEXT: renamable $vgpr1 = V_MAX_U16_e32 2, $vgpr0, implicit $exec
4012 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4013 ; GCN-NEXT: renamable $vgpr1 = V_MAX_U16_e32 3, $vgpr0, implicit $exec
4014 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4015 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4016 %0:vgpr_32 = COPY $vgpr0
4017 %1:vgpr_32 = V_MAX_U16_e32 1, %0:vgpr_32, implicit $exec
4018 %2:vgpr_32 = V_MAX_U16_e32 2, %0:vgpr_32, implicit $exec
4019 %3:vgpr_32 = V_MAX_U16_e32 3, %0:vgpr_32, implicit $exec
4020 S_NOP 0, implicit %1
4021 S_NOP 0, implicit %2
4022 S_NOP 0, implicit %3
4023 S_ENDPGM 0, implicit %0
4027 name: test_remat_v_max_u16_e64
4028 tracksRegLiveness: true
4032 ; GCN-LABEL: name: test_remat_v_max_u16_e64
4033 ; GCN: liveins: $vgpr0
4035 ; GCN-NEXT: renamable $vgpr1 = V_MAX_U16_e64 1, $vgpr0, implicit $exec
4036 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4037 ; GCN-NEXT: renamable $vgpr1 = V_MAX_U16_e64 2, $vgpr0, implicit $exec
4038 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4039 ; GCN-NEXT: renamable $vgpr1 = V_MAX_U16_e64 3, $vgpr0, implicit $exec
4040 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4041 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4042 %0:vgpr_32 = COPY $vgpr0
4043 %1:vgpr_32 = V_MAX_U16_e64 1, %0:vgpr_32, implicit $exec
4044 %2:vgpr_32 = V_MAX_U16_e64 2, %0:vgpr_32, implicit $exec
4045 %3:vgpr_32 = V_MAX_U16_e64 3, %0:vgpr_32, implicit $exec
4046 S_NOP 0, implicit %1
4047 S_NOP 0, implicit %2
4048 S_NOP 0, implicit %3
4049 S_ENDPGM 0, implicit %0
4053 name: test_remat_v_min_i16_e32
4054 tracksRegLiveness: true
4058 ; GCN-LABEL: name: test_remat_v_min_i16_e32
4059 ; GCN: liveins: $vgpr0
4061 ; GCN-NEXT: renamable $vgpr1 = V_MIN_I16_e32 1, $vgpr0, implicit $exec
4062 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4063 ; GCN-NEXT: renamable $vgpr1 = V_MIN_I16_e32 2, $vgpr0, implicit $exec
4064 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4065 ; GCN-NEXT: renamable $vgpr1 = V_MIN_I16_e32 3, $vgpr0, implicit $exec
4066 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4067 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4068 %0:vgpr_32 = COPY $vgpr0
4069 %1:vgpr_32 = V_MIN_I16_e32 1, %0:vgpr_32, implicit $exec
4070 %2:vgpr_32 = V_MIN_I16_e32 2, %0:vgpr_32, implicit $exec
4071 %3:vgpr_32 = V_MIN_I16_e32 3, %0:vgpr_32, implicit $exec
4072 S_NOP 0, implicit %1
4073 S_NOP 0, implicit %2
4074 S_NOP 0, implicit %3
4075 S_ENDPGM 0, implicit %0
4079 name: test_remat_v_min_i16_e64
4080 tracksRegLiveness: true
4084 ; GCN-LABEL: name: test_remat_v_min_i16_e64
4085 ; GCN: liveins: $vgpr0
4087 ; GCN-NEXT: renamable $vgpr1 = V_MIN_I16_e64 1, $vgpr0, implicit $exec
4088 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4089 ; GCN-NEXT: renamable $vgpr1 = V_MIN_I16_e64 2, $vgpr0, implicit $exec
4090 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4091 ; GCN-NEXT: renamable $vgpr1 = V_MIN_I16_e64 3, $vgpr0, implicit $exec
4092 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4093 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4094 %0:vgpr_32 = COPY $vgpr0
4095 %1:vgpr_32 = V_MIN_I16_e64 1, %0:vgpr_32, implicit $exec
4096 %2:vgpr_32 = V_MIN_I16_e64 2, %0:vgpr_32, implicit $exec
4097 %3:vgpr_32 = V_MIN_I16_e64 3, %0:vgpr_32, implicit $exec
4098 S_NOP 0, implicit %1
4099 S_NOP 0, implicit %2
4100 S_NOP 0, implicit %3
4101 S_ENDPGM 0, implicit %0
4105 name: test_remat_v_max_i16_e32
4106 tracksRegLiveness: true
4110 ; GCN-LABEL: name: test_remat_v_max_i16_e32
4111 ; GCN: liveins: $vgpr0
4113 ; GCN-NEXT: renamable $vgpr1 = V_MAX_I16_e32 1, $vgpr0, implicit $exec
4114 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4115 ; GCN-NEXT: renamable $vgpr1 = V_MAX_I16_e32 2, $vgpr0, implicit $exec
4116 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4117 ; GCN-NEXT: renamable $vgpr1 = V_MAX_I16_e32 3, $vgpr0, implicit $exec
4118 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4119 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4120 %0:vgpr_32 = COPY $vgpr0
4121 %1:vgpr_32 = V_MAX_I16_e32 1, %0:vgpr_32, implicit $exec
4122 %2:vgpr_32 = V_MAX_I16_e32 2, %0:vgpr_32, implicit $exec
4123 %3:vgpr_32 = V_MAX_I16_e32 3, %0:vgpr_32, implicit $exec
4124 S_NOP 0, implicit %1
4125 S_NOP 0, implicit %2
4126 S_NOP 0, implicit %3
4127 S_ENDPGM 0, implicit %0
4131 name: test_remat_v_max_i16_e64
4132 tracksRegLiveness: true
4136 ; GCN-LABEL: name: test_remat_v_max_i16_e64
4137 ; GCN: liveins: $vgpr0
4139 ; GCN-NEXT: renamable $vgpr1 = V_MAX_I16_e64 1, $vgpr0, implicit $exec
4140 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4141 ; GCN-NEXT: renamable $vgpr1 = V_MAX_I16_e64 2, $vgpr0, implicit $exec
4142 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4143 ; GCN-NEXT: renamable $vgpr1 = V_MAX_I16_e64 3, $vgpr0, implicit $exec
4144 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4145 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4146 %0:vgpr_32 = COPY $vgpr0
4147 %1:vgpr_32 = V_MAX_I16_e64 1, %0:vgpr_32, implicit $exec
4148 %2:vgpr_32 = V_MAX_I16_e64 2, %0:vgpr_32, implicit $exec
4149 %3:vgpr_32 = V_MAX_I16_e64 3, %0:vgpr_32, implicit $exec
4150 S_NOP 0, implicit %1
4151 S_NOP 0, implicit %2
4152 S_NOP 0, implicit %3
4153 S_ENDPGM 0, implicit %0
4157 name: test_remat_v_mul_lo_u16_e32
4158 tracksRegLiveness: true
4162 ; GCN-LABEL: name: test_remat_v_mul_lo_u16_e32
4163 ; GCN: liveins: $vgpr0
4165 ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U16_e32 1, $vgpr0, implicit $exec
4166 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4167 ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U16_e32 2, $vgpr0, implicit $exec
4168 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4169 ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U16_e32 3, $vgpr0, implicit $exec
4170 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4171 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4172 %0:vgpr_32 = COPY $vgpr0
4173 %1:vgpr_32 = V_MUL_LO_U16_e32 1, %0:vgpr_32, implicit $exec
4174 %2:vgpr_32 = V_MUL_LO_U16_e32 2, %0:vgpr_32, implicit $exec
4175 %3:vgpr_32 = V_MUL_LO_U16_e32 3, %0:vgpr_32, implicit $exec
4176 S_NOP 0, implicit %1
4177 S_NOP 0, implicit %2
4178 S_NOP 0, implicit %3
4179 S_ENDPGM 0, implicit %0
4183 name: test_remat_v_mul_lo_u16_e64
4184 tracksRegLiveness: true
4188 ; GCN-LABEL: name: test_remat_v_mul_lo_u16_e64
4189 ; GCN: liveins: $vgpr0
4191 ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U16_e64 1, $vgpr0, implicit $exec
4192 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4193 ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U16_e64 2, $vgpr0, implicit $exec
4194 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4195 ; GCN-NEXT: renamable $vgpr1 = V_MUL_LO_U16_e64 3, $vgpr0, implicit $exec
4196 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4197 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4198 %0:vgpr_32 = COPY $vgpr0
4199 %1:vgpr_32 = V_MUL_LO_U16_e64 1, %0:vgpr_32, implicit $exec
4200 %2:vgpr_32 = V_MUL_LO_U16_e64 2, %0:vgpr_32, implicit $exec
4201 %3:vgpr_32 = V_MUL_LO_U16_e64 3, %0:vgpr_32, implicit $exec
4202 S_NOP 0, implicit %1
4203 S_NOP 0, implicit %2
4204 S_NOP 0, implicit %3
4205 S_ENDPGM 0, implicit %0
4209 name: test_remat_v_add_f16_e32
4210 tracksRegLiveness: true
4214 ; GCN-LABEL: name: test_remat_v_add_f16_e32
4215 ; GCN: liveins: $vgpr0
4217 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4218 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4219 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F16_e32 2, $vgpr0, implicit $mode, implicit $exec
4220 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4221 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F16_e32 3, $vgpr0, implicit $mode, implicit $exec
4222 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4223 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4224 %0:vgpr_32 = COPY $vgpr0
4225 %1:vgpr_32 = nofpexcept V_ADD_F16_e32 1, %0:vgpr_32, implicit $mode, implicit $exec
4226 %2:vgpr_32 = nofpexcept V_ADD_F16_e32 2, %0:vgpr_32, implicit $mode, implicit $exec
4227 %3:vgpr_32 = nofpexcept V_ADD_F16_e32 3, %0:vgpr_32, implicit $mode, implicit $exec
4228 S_NOP 0, implicit %1
4229 S_NOP 0, implicit %2
4230 S_NOP 0, implicit %3
4231 S_ENDPGM 0, implicit %0
4235 name: test_remat_v_add_f16_e64
4236 tracksRegLiveness: true
4240 ; GCN-LABEL: name: test_remat_v_add_f16_e64
4241 ; GCN: liveins: $vgpr0
4243 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F16_e64 0, 1, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4244 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4245 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F16_e64 0, 2, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4246 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4247 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_ADD_F16_e64 0, 3, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4248 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4249 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4250 %0:vgpr_32 = COPY $vgpr0
4251 %1:vgpr_32 = nofpexcept V_ADD_F16_e64 0, 1, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4252 %2:vgpr_32 = nofpexcept V_ADD_F16_e64 0, 2, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4253 %3:vgpr_32 = nofpexcept V_ADD_F16_e64 0, 3, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4254 S_NOP 0, implicit %1
4255 S_NOP 0, implicit %2
4256 S_NOP 0, implicit %3
4257 S_ENDPGM 0, implicit %0
4261 name: test_remat_v_sub_f16_e32
4262 tracksRegLiveness: true
4266 ; GCN-LABEL: name: test_remat_v_sub_f16_e32
4267 ; GCN: liveins: $vgpr0
4269 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4270 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4271 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F16_e32 2, $vgpr0, implicit $mode, implicit $exec
4272 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4273 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F16_e32 3, $vgpr0, implicit $mode, implicit $exec
4274 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4275 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4276 %0:vgpr_32 = COPY $vgpr0
4277 %1:vgpr_32 = nofpexcept V_SUB_F16_e32 1, %0:vgpr_32, implicit $mode, implicit $exec
4278 %2:vgpr_32 = nofpexcept V_SUB_F16_e32 2, %0:vgpr_32, implicit $mode, implicit $exec
4279 %3:vgpr_32 = nofpexcept V_SUB_F16_e32 3, %0:vgpr_32, implicit $mode, implicit $exec
4280 S_NOP 0, implicit %1
4281 S_NOP 0, implicit %2
4282 S_NOP 0, implicit %3
4283 S_ENDPGM 0, implicit %0
4287 name: test_remat_v_sub_f16_e64
4288 tracksRegLiveness: true
4292 ; GCN-LABEL: name: test_remat_v_sub_f16_e64
4293 ; GCN: liveins: $vgpr0
4295 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F16_e64 0, 1, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4296 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4297 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F16_e64 0, 2, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4298 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4299 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUB_F16_e64 0, 3, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4300 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4301 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4302 %0:vgpr_32 = COPY $vgpr0
4303 %1:vgpr_32 = nofpexcept V_SUB_F16_e64 0, 1, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4304 %2:vgpr_32 = nofpexcept V_SUB_F16_e64 0, 2, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4305 %3:vgpr_32 = nofpexcept V_SUB_F16_e64 0, 3, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4306 S_NOP 0, implicit %1
4307 S_NOP 0, implicit %2
4308 S_NOP 0, implicit %3
4309 S_ENDPGM 0, implicit %0
4313 name: test_remat_v_subrev_f16_e32
4314 tracksRegLiveness: true
4318 ; GCN-LABEL: name: test_remat_v_subrev_f16_e32
4319 ; GCN: liveins: $vgpr0
4321 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4322 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4323 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F16_e32 2, $vgpr0, implicit $mode, implicit $exec
4324 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4325 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F16_e32 3, $vgpr0, implicit $mode, implicit $exec
4326 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4327 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4328 %0:vgpr_32 = COPY $vgpr0
4329 %1:vgpr_32 = nofpexcept V_SUBREV_F16_e32 1, %0:vgpr_32, implicit $mode, implicit $exec
4330 %2:vgpr_32 = nofpexcept V_SUBREV_F16_e32 2, %0:vgpr_32, implicit $mode, implicit $exec
4331 %3:vgpr_32 = nofpexcept V_SUBREV_F16_e32 3, %0:vgpr_32, implicit $mode, implicit $exec
4332 S_NOP 0, implicit %1
4333 S_NOP 0, implicit %2
4334 S_NOP 0, implicit %3
4335 S_ENDPGM 0, implicit %0
4339 name: test_remat_v_subrev_f16_e64
4340 tracksRegLiveness: true
4344 ; GCN-LABEL: name: test_remat_v_subrev_f16_e64
4345 ; GCN: liveins: $vgpr0
4347 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F16_e64 0, 1, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4348 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4349 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F16_e64 0, 2, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4350 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4351 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_SUBREV_F16_e64 0, 3, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4352 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4353 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4354 %0:vgpr_32 = COPY $vgpr0
4355 %1:vgpr_32 = nofpexcept V_SUBREV_F16_e64 0, 1, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4356 %2:vgpr_32 = nofpexcept V_SUBREV_F16_e64 0, 2, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4357 %3:vgpr_32 = nofpexcept V_SUBREV_F16_e64 0, 3, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4358 S_NOP 0, implicit %1
4359 S_NOP 0, implicit %2
4360 S_NOP 0, implicit %3
4361 S_ENDPGM 0, implicit %0
4365 name: test_remat_v_mul_f16_e32
4366 tracksRegLiveness: true
4370 ; GCN-LABEL: name: test_remat_v_mul_f16_e32
4371 ; GCN: liveins: $vgpr0
4373 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4374 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4375 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F16_e32 2, $vgpr0, implicit $mode, implicit $exec
4376 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4377 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F16_e32 3, $vgpr0, implicit $mode, implicit $exec
4378 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4379 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4380 %0:vgpr_32 = COPY $vgpr0
4381 %1:vgpr_32 = nofpexcept V_MUL_F16_e32 1, %0:vgpr_32, implicit $mode, implicit $exec
4382 %2:vgpr_32 = nofpexcept V_MUL_F16_e32 2, %0:vgpr_32, implicit $mode, implicit $exec
4383 %3:vgpr_32 = nofpexcept V_MUL_F16_e32 3, %0:vgpr_32, implicit $mode, implicit $exec
4384 S_NOP 0, implicit %1
4385 S_NOP 0, implicit %2
4386 S_NOP 0, implicit %3
4387 S_ENDPGM 0, implicit %0
4391 name: test_remat_v_mul_f16_e64
4392 tracksRegLiveness: true
4396 ; GCN-LABEL: name: test_remat_v_mul_f16_e64
4397 ; GCN: liveins: $vgpr0
4399 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F16_e64 0, 1, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4400 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4401 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F16_e64 0, 2, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4402 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4403 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MUL_F16_e64 0, 3, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4404 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4405 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4406 %0:vgpr_32 = COPY $vgpr0
4407 %1:vgpr_32 = nofpexcept V_MUL_F16_e64 0, 1, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4408 %2:vgpr_32 = nofpexcept V_MUL_F16_e64 0, 2, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4409 %3:vgpr_32 = nofpexcept V_MUL_F16_e64 0, 3, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4410 S_NOP 0, implicit %1
4411 S_NOP 0, implicit %2
4412 S_NOP 0, implicit %3
4413 S_ENDPGM 0, implicit %0
4417 name: test_remat_v_ldexp_f16_e32
4418 tracksRegLiveness: true
4421 liveins: $vgpr0, $vgpr1
4422 ; GCN-LABEL: name: test_remat_v_ldexp_f16_e32
4423 ; GCN: liveins: $vgpr0, $vgpr1
4425 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4426 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4427 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4428 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4429 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4430 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4431 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4432 %0:vgpr_32 = COPY $vgpr0
4433 %1:vgpr_32 = nofpexcept V_LDEXP_F16_e32 1, %0, implicit $mode, implicit $exec
4434 %2:vgpr_32 = nofpexcept V_LDEXP_F16_e32 1, %0, implicit $mode, implicit $exec
4435 %3:vgpr_32 = nofpexcept V_LDEXP_F16_e32 1, %0, implicit $mode, implicit $exec
4436 S_NOP 0, implicit %1
4437 S_NOP 0, implicit %2
4438 S_NOP 0, implicit %3
4439 S_ENDPGM 0, implicit %0
4443 name: test_remat_v_ldexp_f16_e64
4444 tracksRegLiveness: true
4447 liveins: $vgpr0, $vgpr1
4448 ; GCN-LABEL: name: test_remat_v_ldexp_f16_e64
4449 ; GCN: liveins: $vgpr0, $vgpr1
4451 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e64 0, $vgpr0, 0, 1, 0, 0, implicit $mode, implicit $exec
4452 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4453 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e64 0, $vgpr0, 0, 1, 0, 0, implicit $mode, implicit $exec
4454 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4455 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_LDEXP_F16_e64 0, $vgpr0, 0, 1, 0, 0, implicit $mode, implicit $exec
4456 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4457 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4458 %0:vgpr_32 = COPY $vgpr0
4459 %1:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, %0, 0, 1, 0, 0, implicit $mode, implicit $exec
4460 %2:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, %0, 0, 1, 0, 0, implicit $mode, implicit $exec
4461 %3:vgpr_32 = nofpexcept V_LDEXP_F16_e64 0, %0, 0, 1, 0, 0, implicit $mode, implicit $exec
4462 S_NOP 0, implicit %1
4463 S_NOP 0, implicit %2
4464 S_NOP 0, implicit %3
4465 S_ENDPGM 0, implicit %0
4469 name: test_remat_v_min_f16_e32
4470 tracksRegLiveness: true
4474 ; GCN-LABEL: name: test_remat_v_min_f16_e32
4475 ; GCN: liveins: $vgpr0
4477 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4478 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4479 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F16_e32 2, $vgpr0, implicit $mode, implicit $exec
4480 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4481 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F16_e32 3, $vgpr0, implicit $mode, implicit $exec
4482 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4483 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4484 %0:vgpr_32 = COPY $vgpr0
4485 %1:vgpr_32 = nofpexcept V_MIN_F16_e32 1, %0:vgpr_32, implicit $mode, implicit $exec
4486 %2:vgpr_32 = nofpexcept V_MIN_F16_e32 2, %0:vgpr_32, implicit $mode, implicit $exec
4487 %3:vgpr_32 = nofpexcept V_MIN_F16_e32 3, %0:vgpr_32, implicit $mode, implicit $exec
4488 S_NOP 0, implicit %1
4489 S_NOP 0, implicit %2
4490 S_NOP 0, implicit %3
4491 S_ENDPGM 0, implicit %0
4495 name: test_remat_v_min_f16_e64
4496 tracksRegLiveness: true
4500 ; GCN-LABEL: name: test_remat_v_min_f16_e64
4501 ; GCN: liveins: $vgpr0
4503 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F16_e64 0, 1, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4504 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4505 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F16_e64 0, 2, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4506 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4507 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MIN_F16_e64 0, 3, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4508 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4509 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4510 %0:vgpr_32 = COPY $vgpr0
4511 %1:vgpr_32 = nofpexcept V_MIN_F16_e64 0, 1, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4512 %2:vgpr_32 = nofpexcept V_MIN_F16_e64 0, 2, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4513 %3:vgpr_32 = nofpexcept V_MIN_F16_e64 0, 3, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4514 S_NOP 0, implicit %1
4515 S_NOP 0, implicit %2
4516 S_NOP 0, implicit %3
4517 S_ENDPGM 0, implicit %0
4521 name: test_remat_v_max_f16_e32
4522 tracksRegLiveness: true
4526 ; GCN-LABEL: name: test_remat_v_max_f16_e32
4527 ; GCN: liveins: $vgpr0
4529 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F16_e32 1, $vgpr0, implicit $mode, implicit $exec
4530 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4531 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F16_e32 2, $vgpr0, implicit $mode, implicit $exec
4532 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4533 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F16_e32 3, $vgpr0, implicit $mode, implicit $exec
4534 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4535 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4536 %0:vgpr_32 = COPY $vgpr0
4537 %1:vgpr_32 = nofpexcept V_MAX_F16_e32 1, %0:vgpr_32, implicit $mode, implicit $exec
4538 %2:vgpr_32 = nofpexcept V_MAX_F16_e32 2, %0:vgpr_32, implicit $mode, implicit $exec
4539 %3:vgpr_32 = nofpexcept V_MAX_F16_e32 3, %0:vgpr_32, implicit $mode, implicit $exec
4540 S_NOP 0, implicit %1
4541 S_NOP 0, implicit %2
4542 S_NOP 0, implicit %3
4543 S_ENDPGM 0, implicit %0
4547 name: test_remat_v_max_f16_e64
4548 tracksRegLiveness: true
4552 ; GCN-LABEL: name: test_remat_v_max_f16_e64
4553 ; GCN: liveins: $vgpr0
4555 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F16_e64 0, 1, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4556 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4557 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F16_e64 0, 2, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4558 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4559 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAX_F16_e64 0, 3, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
4560 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4561 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4562 %0:vgpr_32 = COPY $vgpr0
4563 %1:vgpr_32 = nofpexcept V_MAX_F16_e64 0, 1, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4564 %2:vgpr_32 = nofpexcept V_MAX_F16_e64 0, 2, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4565 %3:vgpr_32 = nofpexcept V_MAX_F16_e64 0, 3, 0, %0:vgpr_32, 0, 0, implicit $mode, implicit $exec
4566 S_NOP 0, implicit %1
4567 S_NOP 0, implicit %2
4568 S_NOP 0, implicit %3
4569 S_ENDPGM 0, implicit %0
4573 name: test_remat_v_madak_f16
4574 tracksRegLiveness: true
4578 ; GCN-LABEL: name: test_remat_v_madak_f16
4579 ; GCN: liveins: $vgpr0
4581 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADAK_F16 1, $vgpr0, 1, implicit $exec, implicit $mode
4582 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4583 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADAK_F16 2, $vgpr0, 2, implicit $exec, implicit $mode
4584 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4585 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADAK_F16 3, $vgpr0, 3, implicit $exec, implicit $mode
4586 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4587 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4588 %0:vgpr_32 = COPY $vgpr0
4589 %1:vgpr_32 = nofpexcept V_MADAK_F16 1, %0, 1, implicit $exec, implicit $mode
4590 %2:vgpr_32 = nofpexcept V_MADAK_F16 2, %0, 2, implicit $exec, implicit $mode
4591 %3:vgpr_32 = nofpexcept V_MADAK_F16 3, %0, 3, implicit $exec, implicit $mode
4592 S_NOP 0, implicit %1
4593 S_NOP 0, implicit %2
4594 S_NOP 0, implicit %3
4595 S_ENDPGM 0, implicit %0
4599 name: test_remat_v_madmk_f16
4600 tracksRegLiveness: true
4603 liveins: $vgpr0, $vgpr1
4604 ; GCN-LABEL: name: test_remat_v_madmk_f16
4605 ; GCN: liveins: $vgpr0, $vgpr1
4607 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADMK_F16 1, 1, $vgpr0, implicit $exec, implicit $mode
4608 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4609 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADMK_F16 2, 2, $vgpr0, implicit $exec, implicit $mode
4610 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4611 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MADMK_F16 3, 3, $vgpr0, implicit $exec, implicit $mode
4612 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4613 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4614 %0:vgpr_32 = COPY $vgpr0
4615 %1:vgpr_32 = nofpexcept V_MADMK_F16 1, 1, %0, implicit $exec, implicit $mode
4616 %2:vgpr_32 = nofpexcept V_MADMK_F16 2, 2, %0, implicit $exec, implicit $mode
4617 %3:vgpr_32 = nofpexcept V_MADMK_F16 3, 3, %0, implicit $exec, implicit $mode
4618 S_NOP 0, implicit %1
4619 S_NOP 0, implicit %2
4620 S_NOP 0, implicit %3
4621 S_ENDPGM 0, implicit %0
4625 name: test_remat_v_fmamk_f16
4626 tracksRegLiveness: true
4629 liveins: $vgpr0, $vgpr1
4630 ; GCN-LABEL: name: test_remat_v_fmamk_f16
4631 ; GCN: liveins: $vgpr0, $vgpr1
4633 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMAMK_F16 1, 1, $vgpr0, implicit $exec, implicit $mode
4634 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4635 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMAMK_F16 2, 2, $vgpr0, implicit $exec, implicit $mode
4636 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4637 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMAMK_F16 3, 3, $vgpr0, implicit $exec, implicit $mode
4638 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4639 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4640 %0:vgpr_32 = COPY $vgpr0
4641 %1:vgpr_32 = nofpexcept V_FMAMK_F16 1, 1, %0, implicit $exec, implicit $mode
4642 %2:vgpr_32 = nofpexcept V_FMAMK_F16 2, 2, %0, implicit $exec, implicit $mode
4643 %3:vgpr_32 = nofpexcept V_FMAMK_F16 3, 3, %0, implicit $exec, implicit $mode
4644 S_NOP 0, implicit %1
4645 S_NOP 0, implicit %2
4646 S_NOP 0, implicit %3
4647 S_ENDPGM 0, implicit %0
4651 name: test_remat_v_pk_mad_i16
4652 tracksRegLiveness: true
4656 ; GCN-LABEL: name: test_remat_v_pk_mad_i16
4657 ; GCN: liveins: $vgpr0
4659 ; GCN-NEXT: renamable $vgpr1 = V_PK_MAD_I16 8, $vgpr0, 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4660 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4661 ; GCN-NEXT: renamable $vgpr1 = V_PK_MAD_I16 9, $vgpr0, 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4662 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4663 ; GCN-NEXT: renamable $vgpr1 = V_PK_MAD_I16 10, $vgpr0, 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4664 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4665 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4666 %0:vgpr_32 = COPY $vgpr0
4668 %1:vgpr_32 = V_PK_MAD_I16 8, %0, 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4669 %2:vgpr_32 = V_PK_MAD_I16 9, %0, 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4670 %3:vgpr_32 = V_PK_MAD_I16 10, %0, 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4671 S_NOP 0, implicit %1
4672 S_NOP 0, implicit %2
4673 S_NOP 0, implicit %3
4674 S_ENDPGM 0, implicit %0
4678 name: test_remat_v_pk_mad_u16
4679 tracksRegLiveness: true
4683 ; GCN-LABEL: name: test_remat_v_pk_mad_u16
4684 ; GCN: liveins: $vgpr0
4686 ; GCN-NEXT: renamable $vgpr1 = V_PK_MAD_U16 8, $vgpr0, 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4687 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4688 ; GCN-NEXT: renamable $vgpr1 = V_PK_MAD_U16 9, $vgpr0, 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4689 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4690 ; GCN-NEXT: renamable $vgpr1 = V_PK_MAD_U16 10, $vgpr0, 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4691 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4692 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4693 %0:vgpr_32 = COPY $vgpr0
4695 %1:vgpr_32 = V_PK_MAD_U16 8, %0, 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4696 %2:vgpr_32 = V_PK_MAD_U16 9, %0, 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4697 %3:vgpr_32 = V_PK_MAD_U16 10, %0, 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4698 S_NOP 0, implicit %1
4699 S_NOP 0, implicit %2
4700 S_NOP 0, implicit %3
4701 S_ENDPGM 0, implicit %0
4705 name: test_remat_v_pk_add_u16
4706 tracksRegLiveness: true
4710 ; GCN-LABEL: name: test_remat_v_pk_add_u16
4711 ; GCN: liveins: $vgpr0
4713 ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_U16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4714 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4715 ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_U16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4716 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4717 ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_U16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4718 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4719 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4720 %0:vgpr_32 = COPY $vgpr0
4722 %1:vgpr_32 = V_PK_ADD_U16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4723 %2:vgpr_32 = V_PK_ADD_U16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4724 %3:vgpr_32 = V_PK_ADD_U16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4725 S_NOP 0, implicit %1
4726 S_NOP 0, implicit %2
4727 S_NOP 0, implicit %3
4728 S_ENDPGM 0, implicit %0
4732 name: test_remat_v_pk_add_i16
4733 tracksRegLiveness: true
4737 ; GCN-LABEL: name: test_remat_v_pk_add_i16
4738 ; GCN: liveins: $vgpr0
4740 ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_I16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4741 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4742 ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_I16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4743 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4744 ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_I16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4745 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4746 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4747 %0:vgpr_32 = COPY $vgpr0
4749 %1:vgpr_32 = V_PK_ADD_I16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4750 %2:vgpr_32 = V_PK_ADD_I16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4751 %3:vgpr_32 = V_PK_ADD_I16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4752 S_NOP 0, implicit %1
4753 S_NOP 0, implicit %2
4754 S_NOP 0, implicit %3
4755 S_ENDPGM 0, implicit %0
4759 name: test_remat_v_pk_mul_lo_u16
4760 tracksRegLiveness: true
4764 ; GCN-LABEL: name: test_remat_v_pk_mul_lo_u16
4765 ; GCN: liveins: $vgpr0
4767 ; GCN-NEXT: renamable $vgpr1 = V_PK_MUL_LO_U16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4768 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4769 ; GCN-NEXT: renamable $vgpr1 = V_PK_MUL_LO_U16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4770 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4771 ; GCN-NEXT: renamable $vgpr1 = V_PK_MUL_LO_U16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4772 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4773 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4774 %0:vgpr_32 = COPY $vgpr0
4776 %1:vgpr_32 = V_PK_MUL_LO_U16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4777 %2:vgpr_32 = V_PK_MUL_LO_U16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4778 %3:vgpr_32 = V_PK_MUL_LO_U16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4779 S_NOP 0, implicit %1
4780 S_NOP 0, implicit %2
4781 S_NOP 0, implicit %3
4782 S_ENDPGM 0, implicit %0
4786 name: test_remat_v_pk_min_i16
4787 tracksRegLiveness: true
4791 ; GCN-LABEL: name: test_remat_v_pk_min_i16
4792 ; GCN: liveins: $vgpr0
4794 ; GCN-NEXT: renamable $vgpr1 = V_PK_MIN_I16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4795 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4796 ; GCN-NEXT: renamable $vgpr1 = V_PK_MIN_I16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4797 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4798 ; GCN-NEXT: renamable $vgpr1 = V_PK_MIN_I16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4799 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4800 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4801 %0:vgpr_32 = COPY $vgpr0
4803 %1:vgpr_32 = V_PK_MIN_I16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4804 %2:vgpr_32 = V_PK_MIN_I16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4805 %3:vgpr_32 = V_PK_MIN_I16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4806 S_NOP 0, implicit %1
4807 S_NOP 0, implicit %2
4808 S_NOP 0, implicit %3
4809 S_ENDPGM 0, implicit %0
4813 name: test_remat_v_pk_max_i16
4814 tracksRegLiveness: true
4818 ; GCN-LABEL: name: test_remat_v_pk_max_i16
4819 ; GCN: liveins: $vgpr0
4821 ; GCN-NEXT: renamable $vgpr1 = V_PK_MAX_I16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4822 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4823 ; GCN-NEXT: renamable $vgpr1 = V_PK_MAX_I16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4824 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4825 ; GCN-NEXT: renamable $vgpr1 = V_PK_MAX_I16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4826 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4827 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4828 %0:vgpr_32 = COPY $vgpr0
4830 %1:vgpr_32 = V_PK_MAX_I16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4831 %2:vgpr_32 = V_PK_MAX_I16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4832 %3:vgpr_32 = V_PK_MAX_I16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4833 S_NOP 0, implicit %1
4834 S_NOP 0, implicit %2
4835 S_NOP 0, implicit %3
4836 S_ENDPGM 0, implicit %0
4840 name: test_remat_v_pk_min_u16
4841 tracksRegLiveness: true
4845 ; GCN-LABEL: name: test_remat_v_pk_min_u16
4846 ; GCN: liveins: $vgpr0
4848 ; GCN-NEXT: renamable $vgpr1 = V_PK_MIN_U16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4849 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4850 ; GCN-NEXT: renamable $vgpr1 = V_PK_MIN_U16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4851 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4852 ; GCN-NEXT: renamable $vgpr1 = V_PK_MIN_U16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4853 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4854 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4855 %0:vgpr_32 = COPY $vgpr0
4857 %1:vgpr_32 = V_PK_MIN_U16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4858 %2:vgpr_32 = V_PK_MIN_U16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4859 %3:vgpr_32 = V_PK_MIN_U16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4860 S_NOP 0, implicit %1
4861 S_NOP 0, implicit %2
4862 S_NOP 0, implicit %3
4863 S_ENDPGM 0, implicit %0
4867 name: test_remat_v_pk_max_u16
4868 tracksRegLiveness: true
4872 ; GCN-LABEL: name: test_remat_v_pk_max_u16
4873 ; GCN: liveins: $vgpr0
4875 ; GCN-NEXT: renamable $vgpr1 = V_PK_MAX_U16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4876 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4877 ; GCN-NEXT: renamable $vgpr1 = V_PK_MAX_U16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4878 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4879 ; GCN-NEXT: renamable $vgpr1 = V_PK_MAX_U16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4880 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4881 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4882 %0:vgpr_32 = COPY $vgpr0
4884 %1:vgpr_32 = V_PK_MAX_U16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4885 %2:vgpr_32 = V_PK_MAX_U16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4886 %3:vgpr_32 = V_PK_MAX_U16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4887 S_NOP 0, implicit %1
4888 S_NOP 0, implicit %2
4889 S_NOP 0, implicit %3
4890 S_ENDPGM 0, implicit %0
4894 name: test_remat_v_pk_sub_u16
4895 tracksRegLiveness: true
4899 ; GCN-LABEL: name: test_remat_v_pk_sub_u16
4900 ; GCN: liveins: $vgpr0
4902 ; GCN-NEXT: renamable $vgpr1 = V_PK_SUB_U16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4903 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4904 ; GCN-NEXT: renamable $vgpr1 = V_PK_SUB_U16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4905 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4906 ; GCN-NEXT: renamable $vgpr1 = V_PK_SUB_U16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4907 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4908 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4909 %0:vgpr_32 = COPY $vgpr0
4911 %1:vgpr_32 = V_PK_SUB_U16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4912 %2:vgpr_32 = V_PK_SUB_U16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4913 %3:vgpr_32 = V_PK_SUB_U16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4914 S_NOP 0, implicit %1
4915 S_NOP 0, implicit %2
4916 S_NOP 0, implicit %3
4917 S_ENDPGM 0, implicit %0
4921 name: test_remat_v_pk_sub_i16
4922 tracksRegLiveness: true
4926 ; GCN-LABEL: name: test_remat_v_pk_sub_i16
4927 ; GCN: liveins: $vgpr0
4929 ; GCN-NEXT: renamable $vgpr1 = V_PK_SUB_I16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4930 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4931 ; GCN-NEXT: renamable $vgpr1 = V_PK_SUB_I16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4932 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4933 ; GCN-NEXT: renamable $vgpr1 = V_PK_SUB_I16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4934 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4935 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4936 %0:vgpr_32 = COPY $vgpr0
4938 %1:vgpr_32 = V_PK_SUB_I16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4939 %2:vgpr_32 = V_PK_SUB_I16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4940 %3:vgpr_32 = V_PK_SUB_I16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4941 S_NOP 0, implicit %1
4942 S_NOP 0, implicit %2
4943 S_NOP 0, implicit %3
4944 S_ENDPGM 0, implicit %0
4948 name: test_remat_v_pk_lshlrev_b16
4949 tracksRegLiveness: true
4953 ; GCN-LABEL: name: test_remat_v_pk_lshlrev_b16
4954 ; GCN: liveins: $vgpr0
4956 ; GCN-NEXT: renamable $vgpr1 = V_PK_LSHLREV_B16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4957 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4958 ; GCN-NEXT: renamable $vgpr1 = V_PK_LSHLREV_B16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4959 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4960 ; GCN-NEXT: renamable $vgpr1 = V_PK_LSHLREV_B16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4961 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4962 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4963 %0:vgpr_32 = COPY $vgpr0
4965 %1:vgpr_32 = V_PK_LSHLREV_B16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4966 %2:vgpr_32 = V_PK_LSHLREV_B16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4967 %3:vgpr_32 = V_PK_LSHLREV_B16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4968 S_NOP 0, implicit %1
4969 S_NOP 0, implicit %2
4970 S_NOP 0, implicit %3
4971 S_ENDPGM 0, implicit %0
4975 name: test_remat_v_pk_ashrrev_i16
4976 tracksRegLiveness: true
4980 ; GCN-LABEL: name: test_remat_v_pk_ashrrev_i16
4981 ; GCN: liveins: $vgpr0
4983 ; GCN-NEXT: renamable $vgpr1 = V_PK_ASHRREV_I16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4984 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4985 ; GCN-NEXT: renamable $vgpr1 = V_PK_ASHRREV_I16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4986 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4987 ; GCN-NEXT: renamable $vgpr1 = V_PK_ASHRREV_I16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
4988 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
4989 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
4990 %0:vgpr_32 = COPY $vgpr0
4992 %1:vgpr_32 = V_PK_ASHRREV_I16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
4993 %2:vgpr_32 = V_PK_ASHRREV_I16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
4994 %3:vgpr_32 = V_PK_ASHRREV_I16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
4995 S_NOP 0, implicit %1
4996 S_NOP 0, implicit %2
4997 S_NOP 0, implicit %3
4998 S_ENDPGM 0, implicit %0
5002 name: test_remat_v_pk_lshrrev_b16
5003 tracksRegLiveness: true
5007 ; GCN-LABEL: name: test_remat_v_pk_lshrrev_b16
5008 ; GCN: liveins: $vgpr0
5010 ; GCN-NEXT: renamable $vgpr1 = V_PK_LSHRREV_B16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
5011 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5012 ; GCN-NEXT: renamable $vgpr1 = V_PK_LSHRREV_B16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
5013 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5014 ; GCN-NEXT: renamable $vgpr1 = V_PK_LSHRREV_B16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $exec
5015 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5016 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5017 %0:vgpr_32 = COPY $vgpr0
5019 %1:vgpr_32 = V_PK_LSHRREV_B16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $exec
5020 %2:vgpr_32 = V_PK_LSHRREV_B16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $exec
5021 %3:vgpr_32 = V_PK_LSHRREV_B16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $exec
5022 S_NOP 0, implicit %1
5023 S_NOP 0, implicit %2
5024 S_NOP 0, implicit %3
5025 S_ENDPGM 0, implicit %0
5029 name: test_remat_v_pk_add_f16
5030 tracksRegLiveness: true
5034 ; GCN-LABEL: name: test_remat_v_pk_add_f16
5035 ; GCN: liveins: $vgpr0
5037 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_ADD_F16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5038 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5039 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_ADD_F16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5040 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5041 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_ADD_F16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5042 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5043 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5044 %0:vgpr_32 = COPY $vgpr0
5046 %1:vgpr_32 = nofpexcept V_PK_ADD_F16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5047 %2:vgpr_32 = nofpexcept V_PK_ADD_F16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5048 %3:vgpr_32 = nofpexcept V_PK_ADD_F16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5049 S_NOP 0, implicit %1
5050 S_NOP 0, implicit %2
5051 S_NOP 0, implicit %3
5052 S_ENDPGM 0, implicit %0
5055 # Missing nofpexcept
5057 name: test_no_remat_v_pk_add_f16
5058 tracksRegLiveness: true
5059 machineFunctionInfo:
5060 stackPtrOffsetReg: $sgpr32
5064 ; GCN-LABEL: name: test_no_remat_v_pk_add_f16
5065 ; GCN: liveins: $vgpr0
5067 ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_F16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5068 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr1, %stack.1, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.1, addrspace 5)
5069 ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_F16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5070 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr1, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)
5071 ; GCN-NEXT: renamable $vgpr1 = V_PK_ADD_F16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5072 ; GCN-NEXT: SI_SPILL_V32_SAVE killed $vgpr1, %stack.2, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.2, addrspace 5)
5073 ; GCN-NEXT: renamable $vgpr1 = SI_SPILL_V32_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.1, addrspace 5)
5074 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5075 ; GCN-NEXT: renamable $vgpr1 = SI_SPILL_V32_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.0, addrspace 5)
5076 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5077 ; GCN-NEXT: renamable $vgpr1 = SI_SPILL_V32_RESTORE %stack.2, $sgpr32, 0, implicit $exec :: (load (s32) from %stack.2, addrspace 5)
5078 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5079 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5080 %0:vgpr_32 = COPY $vgpr0
5082 %1:vgpr_32 = V_PK_ADD_F16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5083 %2:vgpr_32 = V_PK_ADD_F16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5084 %3:vgpr_32 = V_PK_ADD_F16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5085 S_NOP 0, implicit %1
5086 S_NOP 0, implicit %2
5087 S_NOP 0, implicit %3
5088 S_ENDPGM 0, implicit %0
5092 name: test_remat_v_pk_mul_f16
5093 tracksRegLiveness: true
5097 ; GCN-LABEL: name: test_remat_v_pk_mul_f16
5098 ; GCN: liveins: $vgpr0
5100 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MUL_F16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5101 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5102 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MUL_F16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5103 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5104 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MUL_F16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5105 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5106 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5107 %0:vgpr_32 = COPY $vgpr0
5109 %1:vgpr_32 = nofpexcept V_PK_MUL_F16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5110 %2:vgpr_32 = nofpexcept V_PK_MUL_F16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5111 %3:vgpr_32 = nofpexcept V_PK_MUL_F16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5112 S_NOP 0, implicit %1
5113 S_NOP 0, implicit %2
5114 S_NOP 0, implicit %3
5115 S_ENDPGM 0, implicit %0
5119 name: test_remat_v_pk_min_f16
5120 tracksRegLiveness: true
5124 ; GCN-LABEL: name: test_remat_v_pk_min_f16
5125 ; GCN: liveins: $vgpr0
5127 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MIN_F16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5128 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5129 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MIN_F16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5130 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5131 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MIN_F16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5132 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5133 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5134 %0:vgpr_32 = COPY $vgpr0
5136 %1:vgpr_32 = nofpexcept V_PK_MIN_F16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5137 %2:vgpr_32 = nofpexcept V_PK_MIN_F16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5138 %3:vgpr_32 = nofpexcept V_PK_MIN_F16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5139 S_NOP 0, implicit %1
5140 S_NOP 0, implicit %2
5141 S_NOP 0, implicit %3
5142 S_ENDPGM 0, implicit %0
5146 name: test_remat_v_pk_max_f16
5147 tracksRegLiveness: true
5151 ; GCN-LABEL: name: test_remat_v_pk_max_f16
5152 ; GCN: liveins: $vgpr0
5154 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MAX_F16 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5155 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5156 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MAX_F16 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5157 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5158 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_MAX_F16 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5159 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5160 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5161 %0:vgpr_32 = COPY $vgpr0
5163 %1:vgpr_32 = nofpexcept V_PK_MAX_F16 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5164 %2:vgpr_32 = nofpexcept V_PK_MAX_F16 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5165 %3:vgpr_32 = nofpexcept V_PK_MAX_F16 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5166 S_NOP 0, implicit %1
5167 S_NOP 0, implicit %2
5168 S_NOP 0, implicit %3
5169 S_ENDPGM 0, implicit %0
5173 name: test_remat_v_pk_fma_f16
5174 tracksRegLiveness: true
5178 ; GCN-LABEL: name: test_remat_v_pk_fma_f16
5179 ; GCN: liveins: $vgpr0
5181 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_FMA_F16 8, $vgpr0, 8, $vgpr0, 8, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5182 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5183 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_FMA_F16 9, $vgpr0, 9, $vgpr0, 9, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5184 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5185 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_PK_FMA_F16 10, $vgpr0, 10, $vgpr0, 10, $vgpr0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5186 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5187 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5188 %0:vgpr_32 = COPY $vgpr0
5189 %1:vgpr_32 = nofpexcept V_PK_FMA_F16 8, %0, 8, %0, 8, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5190 %2:vgpr_32 = nofpexcept V_PK_FMA_F16 9, %0, 9, %0, 9, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5191 %3:vgpr_32 = nofpexcept V_PK_FMA_F16 10, %0, 10, %0, 10, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5193 S_NOP 0, implicit %1
5194 S_NOP 0, implicit %2
5195 S_NOP 0, implicit %3
5196 S_ENDPGM 0, implicit %0
5200 name: test_remat_v_mad_mix_f32
5201 tracksRegLiveness: true
5205 ; GCN-LABEL: name: test_remat_v_mad_mix_f32
5206 ; GCN: liveins: $vgpr0
5208 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAD_MIX_F32 8, $vgpr0, 8, $vgpr0, 8, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
5209 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5210 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAD_MIX_F32 9, $vgpr0, 9, $vgpr0, 9, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
5211 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5212 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_MAD_MIX_F32 10, $vgpr0, 10, $vgpr0, 10, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
5213 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5214 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5215 %0:vgpr_32 = COPY $vgpr0
5216 %1:vgpr_32 = nofpexcept V_MAD_MIX_F32 8, %0, 8, %0, 8, %0, 0, 0, 0, implicit $mode, implicit $exec
5217 %2:vgpr_32 = nofpexcept V_MAD_MIX_F32 9, %0, 9, %0, 9, %0, 0, 0, 0, implicit $mode, implicit $exec
5218 %3:vgpr_32 = nofpexcept V_MAD_MIX_F32 10, %0, 10, %0, 10, %0, 0, 0, 0, implicit $mode, implicit $exec
5219 S_NOP 0, implicit %1
5220 S_NOP 0, implicit %2
5221 S_NOP 0, implicit %3
5222 S_ENDPGM 0, implicit %0
5226 name: test_remat_v_fma_mix_f32
5227 tracksRegLiveness: true
5231 ; GCN-LABEL: name: test_remat_v_fma_mix_f32
5232 ; GCN: liveins: $vgpr0
5234 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMA_MIX_F32 8, $vgpr0, 8, $vgpr0, 8, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
5235 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5236 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMA_MIX_F32 9, $vgpr0, 9, $vgpr0, 9, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
5237 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5238 ; GCN-NEXT: renamable $vgpr1 = nofpexcept V_FMA_MIX_F32 10, $vgpr0, 10, $vgpr0, 10, $vgpr0, 0, 0, 0, implicit $mode, implicit $exec
5239 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5240 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0
5241 %0:vgpr_32 = COPY $vgpr0
5242 %1:vgpr_32 = nofpexcept V_FMA_MIX_F32 8, %0, 8, %0, 8, %0, 0, 0, 0, implicit $mode, implicit $exec
5243 %2:vgpr_32 = nofpexcept V_FMA_MIX_F32 9, %0, 9, %0, 9, %0, 0, 0, 0, implicit $mode, implicit $exec
5244 %3:vgpr_32 = nofpexcept V_FMA_MIX_F32 10, %0, 10, %0, 10, %0, 0, 0, 0, implicit $mode, implicit $exec
5245 S_NOP 0, implicit %1
5246 S_NOP 0, implicit %2
5247 S_NOP 0, implicit %3
5248 S_ENDPGM 0, implicit %0
5252 name: test_remat_v_pk_fma_f32
5253 tracksRegLiveness: true
5256 liveins: $vgpr0_vgpr1
5257 ; GCN-LABEL: name: test_remat_v_pk_fma_f32
5258 ; GCN: liveins: $vgpr0_vgpr1
5260 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_FMA_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5261 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5262 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_FMA_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5263 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5264 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_FMA_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5265 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5266 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0_vgpr1
5267 %0:vreg_64_align2 = COPY $vgpr0_vgpr1
5268 %1:vreg_64_align2 = nofpexcept V_PK_FMA_F32 8, %0, 8, %0, 11, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5269 %2:vreg_64_align2 = nofpexcept V_PK_FMA_F32 8, %0, 8, %0, 11, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5270 %3:vreg_64_align2 = nofpexcept V_PK_FMA_F32 8, %0, 8, %0, 11, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5271 S_NOP 0, implicit %1
5272 S_NOP 0, implicit %2
5273 S_NOP 0, implicit %3
5274 S_ENDPGM 0, implicit %0
5278 name: test_no_remat_v_pk_fma_f32
5279 tracksRegLiveness: true
5280 machineFunctionInfo:
5281 stackPtrOffsetReg: $sgpr32
5284 liveins: $vgpr0_vgpr1
5285 ; GCN-LABEL: name: test_no_remat_v_pk_fma_f32
5286 ; GCN: liveins: $vgpr0_vgpr1
5288 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_PK_FMA_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5289 ; GCN-NEXT: SI_SPILL_V64_SAVE killed $vgpr2_vgpr3, %stack.1, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.1, align 4, addrspace 5)
5290 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_PK_FMA_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5291 ; GCN-NEXT: SI_SPILL_V64_SAVE killed $vgpr2_vgpr3, %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, align 4, addrspace 5)
5292 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_PK_FMA_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, $vgpr0_vgpr1, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5293 ; GCN-NEXT: SI_SPILL_V64_SAVE killed $vgpr2_vgpr3, %stack.2, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.2, align 4, addrspace 5)
5294 ; GCN-NEXT: renamable $vgpr2_vgpr3 = SI_SPILL_V64_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.1, align 4, addrspace 5)
5295 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5296 ; GCN-NEXT: renamable $vgpr2_vgpr3 = SI_SPILL_V64_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.0, align 4, addrspace 5)
5297 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5298 ; GCN-NEXT: renamable $vgpr2_vgpr3 = SI_SPILL_V64_RESTORE %stack.2, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.2, align 4, addrspace 5)
5299 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5300 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0_vgpr1
5301 %0:vreg_64_align2 = COPY $vgpr0_vgpr1
5302 %1:vreg_64_align2 = V_PK_FMA_F32 8, %0, 8, %0, 11, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5303 %2:vreg_64_align2 = V_PK_FMA_F32 8, %0, 8, %0, 11, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5304 %3:vreg_64_align2 = V_PK_FMA_F32 8, %0, 8, %0, 11, %0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec
5305 S_NOP 0, implicit %1
5306 S_NOP 0, implicit %2
5307 S_NOP 0, implicit %3
5308 S_ENDPGM 0, implicit %0
5312 name: test_remat_v_pk_mul_f32
5313 tracksRegLiveness: true
5316 liveins: $vgpr0_vgpr1
5317 ; GCN-LABEL: name: test_remat_v_pk_mul_f32
5318 ; GCN: liveins: $vgpr0_vgpr1
5320 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_MUL_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5321 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5322 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_MUL_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5323 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5324 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_MUL_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5325 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5326 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0_vgpr1
5327 %0:vreg_64_align2 = COPY $vgpr0_vgpr1
5328 %1:vreg_64_align2 = nofpexcept V_PK_MUL_F32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5329 %2:vreg_64_align2 = nofpexcept V_PK_MUL_F32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5330 %3:vreg_64_align2 = nofpexcept V_PK_MUL_F32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5331 S_NOP 0, implicit %1
5332 S_NOP 0, implicit %2
5333 S_NOP 0, implicit %3
5334 S_ENDPGM 0, implicit %0
5338 name: test_remat_v_pk_add_f32
5339 tracksRegLiveness: true
5342 liveins: $vgpr0_vgpr1
5343 ; GCN-LABEL: name: test_remat_v_pk_add_f32
5344 ; GCN: liveins: $vgpr0_vgpr1
5346 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_ADD_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5347 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5348 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_ADD_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5349 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5350 ; GCN-NEXT: renamable $vgpr2_vgpr3 = nofpexcept V_PK_ADD_F32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5351 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5352 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0_vgpr1
5353 %0:vreg_64_align2 = COPY $vgpr0_vgpr1
5354 %1:vreg_64_align2 = nofpexcept V_PK_ADD_F32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5355 %2:vreg_64_align2 = nofpexcept V_PK_ADD_F32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5356 %3:vreg_64_align2 = nofpexcept V_PK_ADD_F32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $mode, implicit $exec
5357 S_NOP 0, implicit %1
5358 S_NOP 0, implicit %2
5359 S_NOP 0, implicit %3
5360 S_ENDPGM 0, implicit %0
5364 name: test_remat_v_pk_mov_b32
5365 tracksRegLiveness: true
5368 liveins: $vgpr0_vgpr1
5369 ; GCN-LABEL: name: test_remat_v_pk_mov_b32
5370 ; GCN: liveins: $vgpr0_vgpr1
5372 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_PK_MOV_B32 8, $vgpr0_vgpr1, 8, $vgpr0_vgpr1, 11, 0, 0, 0, 0, implicit $exec
5373 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5374 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_PK_MOV_B32 9, $vgpr0_vgpr1, 9, $vgpr0_vgpr1, 12, 0, 0, 0, 0, implicit $exec
5375 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5376 ; GCN-NEXT: renamable $vgpr2_vgpr3 = V_PK_MOV_B32 10, $vgpr0_vgpr1, 10, $vgpr0_vgpr1, 13, 0, 0, 0, 0, implicit $exec
5377 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr2_vgpr3
5378 ; GCN-NEXT: S_ENDPGM 0, implicit killed renamable $vgpr0_vgpr1
5379 %0:vreg_64_align2 = COPY $vgpr0_vgpr1
5380 %1:vreg_64_align2 = V_PK_MOV_B32 8, %0, 8, %0, 11, 0, 0, 0, 0, implicit $exec
5381 %2:vreg_64_align2 = V_PK_MOV_B32 9, %0, 9, %0, 12, 0, 0, 0, 0, implicit $exec
5382 %3:vreg_64_align2 = V_PK_MOV_B32 10, %0, 10, %0, 13, 0, 0, 0, 0, implicit $exec
5383 S_NOP 0, implicit %1
5384 S_NOP 0, implicit %2
5385 S_NOP 0, implicit %3
5386 S_ENDPGM 0, implicit %0
5389 # Make sure there's no verifier error after making a subregister def dead. The
5390 # dead interval still needs a subrange.
5393 name: test_remat_subreg_def
5394 tracksRegLiveness: true
5397 ; GCN-LABEL: name: test_remat_subreg_def
5398 ; GCN: renamable $vgpr1 = V_MOV_B32_e32 1, implicit $exec
5399 ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e32 3, implicit $exec
5400 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr1
5401 ; GCN-NEXT: S_NOP 0, implicit killed renamable $vgpr0
5402 ; GCN-NEXT: renamable $vgpr0 = V_MOV_B32_e32 2, implicit $exec
5403 ; GCN-NEXT: S_NOP 0, implicit renamable $vgpr0_vgpr1
5404 ; GCN-NEXT: S_ENDPGM 0
5405 %0:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
5406 undef %1.sub0:vreg_64 = V_MOV_B32_e32 2, implicit $exec
5407 %2:vgpr_32 = V_MOV_B32_e32 3, implicit $exec
5408 S_NOP 0, implicit %0
5409 S_NOP 0, implicit %2
5410 S_NOP 0, implicit %1