1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass=postmisched %s -o - | FileCheck -check-prefix=SCHED %s
3 # RUN: llc -march=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass=postmisched,gcn-create-vopd %s -o - | FileCheck -check-prefix=PAIR %s
6 @lds = external addrspace(3) global [8 x i8]
7 define void @vopd_schedule() { ret void }
8 define void @vopd_fmamk() { ret void }
9 define void @vopd_fmamk_fail() { ret void }
10 define void @vopd_cndmask() { ret void }
11 define void @vopd_mov() { ret void }
12 define void @vopd_mov_mov() { ret void }
13 define void @vopd_constants_fail() { ret void }
14 define void @vopd_constants_inlinable() { ret void }
15 define void @vopd_constants_same() { ret void }
16 define void @vopd_mov_fmaak_constants_same() { ret void }
17 define void @vopd_debug() { ret void }
18 define void @vopd_schedule_unconstrained() { ret void }
19 define void @vopd_schedule_unconstrained_2() { ret void }
20 define void @vopd_mov_fixup() { ret void }
21 define void @vopd_mov_fixup_fail() { ret void }
22 define void @vopd_no_combine_dependent_subreg() { ret void }
27 tracksRegLiveness: true
31 ; SCHED-LABEL: name: vopd_schedule
32 ; SCHED: $vgpr0 = IMPLICIT_DEF
33 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
34 ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
35 ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
36 ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
37 ; SCHED-NEXT: $vgpr4 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
38 ; PAIR-LABEL: name: vopd_schedule
39 ; PAIR: $vgpr0 = IMPLICIT_DEF
40 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
41 ; PAIR-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
42 ; PAIR-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32 $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
43 ; PAIR-NEXT: $vgpr4 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
46 $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
47 ; can fuse vgpr3 and vgpr6 writing insts only due to reg constraints
48 $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
49 $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
50 $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
56 tracksRegLiveness: true
60 ; SCHED-LABEL: name: vopd_fmamk
61 ; SCHED: $vgpr2 = IMPLICIT_DEF
62 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
63 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
64 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
65 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 10, killed $vgpr3, implicit $mode, implicit $exec
66 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
67 ; PAIR-LABEL: name: vopd_fmamk
68 ; PAIR: $vgpr2 = IMPLICIT_DEF
69 ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF
70 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
71 ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF
72 ; PAIR-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32 killed $vgpr0, 10, killed $vgpr3, killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
78 $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr2, implicit $mode, implicit $exec
79 $vgpr5 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec
85 tracksRegLiveness: true
89 ; SCHED-LABEL: name: vopd_fmamk_fail
90 ; SCHED: $vgpr1 = IMPLICIT_DEF
91 ; SCHED-NEXT: $vgpr2 = V_XOR_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
92 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
93 ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF
94 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 10, killed $vgpr4, implicit $mode, implicit $exec
95 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
96 ; PAIR-LABEL: name: vopd_fmamk_fail
97 ; PAIR: $vgpr1 = IMPLICIT_DEF
98 ; PAIR-NEXT: $vgpr2 = V_XOR_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
99 ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF
100 ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF
101 ; PAIR-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 10, killed $vgpr4, implicit $mode, implicit $exec
102 ; PAIR-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
103 $vgpr0 = IMPLICIT_DEF
104 $vgpr1 = IMPLICIT_DEF
105 $vgpr2 = V_XOR_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
106 $vgpr4 = IMPLICIT_DEF
108 $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr2, implicit $mode, implicit $exec
109 $vgpr5 = V_FMAMK_F32 $vgpr0, 10, $vgpr4, implicit $mode, implicit $exec
115 tracksRegLiveness: true
118 ; SCHED-LABEL: name: vopd_cndmask
119 ; SCHED: $vgpr2 = IMPLICIT_DEF
120 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
121 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
122 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
123 ; SCHED-NEXT: $sgpr20 = IMPLICIT_DEF
124 ; SCHED-NEXT: $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec
125 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 $sgpr20, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
126 ; SCHED-NEXT: $vgpr5 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
127 ; SCHED-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
128 ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec
129 ; SCHED-NEXT: $vgpr9 = V_CNDMASK_B32_e32 killed $sgpr20, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc
130 ; PAIR-LABEL: name: vopd_cndmask
131 ; PAIR: $vgpr2 = IMPLICIT_DEF
132 ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF
133 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
134 ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF
135 ; PAIR-NEXT: $sgpr20 = IMPLICIT_DEF
136 ; PAIR-NEXT: $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec
137 ; PAIR-NEXT: $vgpr2, $vgpr5 = V_DUAL_FMAC_F32_e32_X_CNDMASK_B32_e32 $sgpr20, killed $vgpr1, killed $vgpr2, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc
138 ; PAIR-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
139 ; PAIR-NEXT: $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec
140 ; PAIR-NEXT: $vgpr9 = V_CNDMASK_B32_e32 killed $sgpr20, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc
141 $vgpr0 = IMPLICIT_DEF
142 $vgpr1 = IMPLICIT_DEF
143 $vgpr2 = IMPLICIT_DEF
144 $vgpr3 = IMPLICIT_DEF
145 $sgpr20 = IMPLICIT_DEF
147 $vgpr2 = V_FMAC_F32_e32 $sgpr20, $vgpr1, $vgpr2, implicit $mode, implicit $exec
148 $vgpr5 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
149 ; should not pair, uses 3 scalars (implicit vcc)
150 $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec
151 $vgpr7 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
152 ; should not pair, uses 3 scalars (implicit vcc)
153 $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec
154 $vgpr9 = V_CNDMASK_B32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
160 tracksRegLiveness: true
164 ; SCHED-LABEL: name: vopd_mov
165 ; SCHED: $vgpr0 = IMPLICIT_DEF
166 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
167 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 killed $vgpr0, implicit $exec
168 ; SCHED-NEXT: $vgpr3 = V_ADD_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
169 ; PAIR-LABEL: name: vopd_mov
170 ; PAIR: $vgpr0 = IMPLICIT_DEF
171 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
172 ; PAIR-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32 killed $vgpr0, killed $vgpr1, $vgpr1, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
173 $vgpr0 = IMPLICIT_DEF
174 $vgpr1 = IMPLICIT_DEF
175 $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec
176 $vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
182 tracksRegLiveness: true
186 ; SCHED-LABEL: name: vopd_mov_mov
187 ; SCHED: $sgpr0 = IMPLICIT_DEF
188 ; SCHED-NEXT: $sgpr7 = IMPLICIT_DEF
189 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 killed $sgpr0, implicit $exec
190 ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 killed $sgpr7, implicit $exec
191 ; PAIR-LABEL: name: vopd_mov_mov
192 ; PAIR: $sgpr0 = IMPLICIT_DEF
193 ; PAIR-NEXT: $sgpr7 = IMPLICIT_DEF
194 ; PAIR-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32 killed $sgpr0, killed $sgpr7, implicit $exec, implicit $exec, implicit $exec
195 $sgpr0 = IMPLICIT_DEF
196 $sgpr7 = IMPLICIT_DEF
197 $vgpr2 = V_MOV_B32_e32 $sgpr0, implicit $exec
198 $vgpr3 = V_MOV_B32_e32 $sgpr7, implicit $exec
204 name: vopd_constants_fail
205 tracksRegLiveness: true
209 ; SCHED-LABEL: name: vopd_constants_fail
210 ; SCHED: $vgpr2 = IMPLICIT_DEF
211 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
212 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
213 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
214 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec
215 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 99, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
216 ; PAIR-LABEL: name: vopd_constants_fail
217 ; PAIR: $vgpr2 = IMPLICIT_DEF
218 ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF
219 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
220 ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF
221 ; PAIR-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec
222 ; PAIR-NEXT: $vgpr2 = V_FMAC_F32_e32 99, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
223 $vgpr0 = IMPLICIT_DEF
224 $vgpr1 = IMPLICIT_DEF
225 $vgpr2 = IMPLICIT_DEF
226 $vgpr3 = IMPLICIT_DEF
227 ; should not pair with two different literals
228 $vgpr2 = V_FMAC_F32_e32 99, $vgpr1, $vgpr2, implicit $mode, implicit $exec
229 $vgpr5 = V_FMAMK_F32 $vgpr0, 100, $vgpr3, implicit $mode, implicit $exec
234 name: vopd_constants_inlinable
235 tracksRegLiveness: true
238 ; SCHED-LABEL: name: vopd_constants_inlinable
239 ; SCHED: $vgpr2 = IMPLICIT_DEF
240 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
241 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
242 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
243 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec
244 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 4, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
245 ; PAIR-LABEL: name: vopd_constants_inlinable
246 ; PAIR: $vgpr2 = IMPLICIT_DEF
247 ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF
248 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
249 ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF
250 ; PAIR-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32 killed $vgpr0, 100, killed $vgpr3, 4, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
251 $vgpr0 = IMPLICIT_DEF
252 $vgpr1 = IMPLICIT_DEF
253 $vgpr2 = IMPLICIT_DEF
254 $vgpr3 = IMPLICIT_DEF
255 ; can pair since 4 is inlinable
256 $vgpr2 = V_FMAC_F32_e32 4, $vgpr1, $vgpr2, implicit $mode, implicit $exec
257 $vgpr5 = V_FMAMK_F32 $vgpr0, 100, $vgpr3, implicit $mode, implicit $exec
263 name: vopd_constants_same
264 tracksRegLiveness: true
268 ; SCHED-LABEL: name: vopd_constants_same
269 ; SCHED: $vgpr2 = IMPLICIT_DEF
270 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
271 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
272 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
273 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec
274 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 100, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
275 ; PAIR-LABEL: name: vopd_constants_same
276 ; PAIR: $vgpr2 = IMPLICIT_DEF
277 ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF
278 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
279 ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF
280 ; PAIR-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32 killed $vgpr0, 100, killed $vgpr3, 100, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
281 $vgpr0 = IMPLICIT_DEF
282 $vgpr1 = IMPLICIT_DEF
283 $vgpr2 = IMPLICIT_DEF
284 $vgpr3 = IMPLICIT_DEF
285 ; should be able to pair using 1 deduplicated literal
286 $vgpr2 = V_FMAC_F32_e32 100, $vgpr1, $vgpr2, implicit $mode, implicit $exec
287 $vgpr5 = V_FMAMK_F32 $vgpr0, 100, $vgpr3, implicit $mode, implicit $exec
292 name: vopd_mov_fmaak_constants_same
293 tracksRegLiveness: true
297 ; SCHED-LABEL: name: vopd_mov_fmaak_constants_same
298 ; SCHED: $vgpr0 = IMPLICIT_DEF
299 ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF
300 ; SCHED-NEXT: $vgpr1 = V_MOV_B32_e32 981467136, implicit $exec
301 ; SCHED-NEXT: $vgpr2 = V_FMAAK_F32 killed $sgpr0, killed $vgpr0, 981467136, implicit $mode, implicit $exec
302 ; PAIR-LABEL: name: vopd_mov_fmaak_constants_same
303 ; PAIR: $vgpr0 = IMPLICIT_DEF
304 ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF
305 ; PAIR-NEXT: $vgpr1, $vgpr2 = V_DUAL_MOV_B32_e32_X_FMAAK_F32 981467136, killed $sgpr0, killed $vgpr0, 981467136, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
306 $vgpr0 = IMPLICIT_DEF
307 $sgpr0 = IMPLICIT_DEF
308 ; should be able to pair using 1 deduplicated literal
309 $vgpr1 = V_MOV_B32_e32 981467136, implicit $exec
310 $vgpr2 = V_FMAAK_F32 $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec
316 tracksRegLiveness: true
320 ; SCHED-LABEL: name: vopd_debug
321 ; SCHED: $vgpr0 = IMPLICIT_DEF
322 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
323 ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
324 ; SCHED-NEXT: DBG_VALUE $vgpr0, 0, 0
325 ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
326 ; PAIR-LABEL: name: vopd_debug
327 ; PAIR: $vgpr0 = IMPLICIT_DEF
328 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
329 ; PAIR-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
330 ; PAIR-NEXT: DBG_VALUE $vgpr0, 0, 0
331 $vgpr0 = IMPLICIT_DEF
332 $vgpr1 = IMPLICIT_DEF
333 ; TODO Debug values disable VOPD creation
334 $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
335 DBG_VALUE $vgpr0, 0, 0
336 $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
341 name: vopd_schedule_unconstrained
342 tracksRegLiveness: true
346 ; SCHED-LABEL: name: vopd_schedule_unconstrained
347 ; SCHED: $vgpr2 = IMPLICIT_DEF
348 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
349 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
350 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
351 ; SCHED-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
352 ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
353 ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
354 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
355 ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
356 ; SCHED-NEXT: $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
357 ; SCHED-NEXT: $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
358 ; SCHED-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc
359 ; SCHED-NEXT: $vgpr17 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
360 ; SCHED-NEXT: $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
361 ; SCHED-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $vcc
362 ; SCHED-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
363 ; SCHED-NEXT: $vgpr14 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
364 ; PAIR-LABEL: name: vopd_schedule_unconstrained
365 ; PAIR: $vgpr2 = IMPLICIT_DEF
366 ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF
367 ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF
368 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
369 ; PAIR-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
370 ; PAIR-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
371 ; PAIR-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
372 ; PAIR-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
373 ; PAIR-NEXT: $vgpr12, $vgpr19 = V_DUAL_ADD_F32_e32_X_CNDMASK_B32_e32 $vgpr1, $vgpr1, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc
374 ; PAIR-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc
375 ; PAIR-NEXT: $vgpr17, $vgpr10 = V_DUAL_MUL_F32_e32_X_CNDMASK_B32_e32 killed $vgpr0, $vgpr0, $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc
376 ; PAIR-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $vcc
377 ; PAIR-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
378 ; PAIR-NEXT: $vgpr14 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
379 $vgpr0 = IMPLICIT_DEF
380 $vgpr1 = IMPLICIT_DEF
381 $vgpr2 = IMPLICIT_DEF
382 $vgpr3 = IMPLICIT_DEF
383 $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, $vgpr2, implicit $mode, implicit $exec
384 $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
385 $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
386 $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
387 $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
388 $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
389 ; $vgpr9 = V_FMAMK_F32 $vgpr0, 10, $vgpr2, implicit $mode, implicit $exec
390 $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
391 $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
392 $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
393 $vgpr17 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
394 ; $vgpr18 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec
395 ; $vgpr11 = V_FMAC_F32_e32 10, $vgpr1, $vgpr11, implicit $mode, implicit $exec
396 $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
397 $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
398 $vgpr14 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
403 name: vopd_schedule_unconstrained_2
404 tracksRegLiveness: true
408 ; SCHED-LABEL: name: vopd_schedule_unconstrained_2
409 ; SCHED: $vgpr2 = IMPLICIT_DEF
410 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
411 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
412 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
413 ; SCHED-NEXT: $vgpr20 = IMPLICIT_DEF
414 ; SCHED-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
415 ; SCHED-NEXT: $vgpr35 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
416 ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
417 ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
418 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
419 ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
420 ; SCHED-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
421 ; SCHED-NEXT: $vgpr29 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
422 ; SCHED-NEXT: $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
423 ; SCHED-NEXT: $vgpr20 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr20, implicit $mode, implicit $exec
424 ; SCHED-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
425 ; SCHED-NEXT: $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
426 ; SCHED-NEXT: $vgpr17 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
427 ; SCHED-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
428 ; SCHED-NEXT: $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
429 ; SCHED-NEXT: $vgpr37 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc
430 ; SCHED-NEXT: $vgpr14 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
431 ; SCHED-NEXT: $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
432 ; SCHED-NEXT: $vgpr21 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
433 ; SCHED-NEXT: $vgpr24 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
434 ; SCHED-NEXT: $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
435 ; SCHED-NEXT: $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
436 ; SCHED-NEXT: $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
437 ; SCHED-NEXT: $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $vcc
438 ; SCHED-NEXT: $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
439 ; SCHED-NEXT: $vgpr32 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
440 ; PAIR-LABEL: name: vopd_schedule_unconstrained_2
441 ; PAIR: $vgpr2 = IMPLICIT_DEF
442 ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF
443 ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF
444 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
445 ; PAIR-NEXT: $vgpr20 = IMPLICIT_DEF
446 ; PAIR-NEXT: $vgpr16, $vgpr35 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
447 ; PAIR-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
448 ; PAIR-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
449 ; PAIR-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
450 ; PAIR-NEXT: $vgpr4, $vgpr29 = V_DUAL_SUB_F32_e32_X_CNDMASK_B32_e32 $vgpr1, $vgpr1, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc
451 ; PAIR-NEXT: $vgpr19, $vgpr20 = V_DUAL_CNDMASK_B32_e32_X_FMAC_F32_e32 $vgpr0, $vgpr3, 10, $vgpr1, killed $vgpr20, implicit $vcc, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc, implicit $mode, implicit $exec
452 ; PAIR-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
453 ; PAIR-NEXT: $vgpr10, $vgpr17 = V_DUAL_CNDMASK_B32_e32_X_MUL_F32_e32 $vgpr1, $vgpr2, $vgpr0, $vgpr0, implicit $vcc, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc, implicit $mode, implicit $exec
454 ; PAIR-NEXT: $vgpr11, $vgpr12 = V_DUAL_CNDMASK_B32_e32_X_ADD_F32_e32 $vgpr0, $vgpr3, $vgpr1, $vgpr1, implicit $vcc, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc, implicit $mode, implicit $exec
455 ; PAIR-NEXT: $vgpr37, $vgpr14 = V_DUAL_CNDMASK_B32_e32_X_SUB_F32_e32 $vgpr0, killed $vgpr3, $vgpr1, $vgpr1, implicit $vcc, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc, implicit $mode, implicit $exec
456 ; PAIR-NEXT: $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
457 ; PAIR-NEXT: $vgpr21, $vgpr24 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32 $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
458 ; PAIR-NEXT: $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
459 ; PAIR-NEXT: $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
460 ; PAIR-NEXT: $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
461 ; PAIR-NEXT: $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $vcc
462 ; PAIR-NEXT: $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
463 ; PAIR-NEXT: $vgpr32 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
464 $vgpr0 = IMPLICIT_DEF
465 $vgpr1 = IMPLICIT_DEF
466 $vgpr2 = IMPLICIT_DEF
467 $vgpr3 = IMPLICIT_DEF
468 $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, $vgpr2, implicit $mode, implicit $exec
469 $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
470 $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
471 $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
472 $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
473 $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
474 ; $vgpr9 = V_FMAMK_F32 $vgpr0, 10, $vgpr2, implicit $mode, implicit $exec
475 $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
476 $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
477 $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
478 $vgpr17 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
479 ; $vgpr18 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec
480 ; $vgpr11 = V_FMAC_F32_e32 10, $vgpr1, $vgpr11, implicit $mode, implicit $exec
481 $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
482 $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
483 $vgpr14 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
484 $vgpr20 = IMPLICIT_DEF
485 $vgpr20 = V_FMAC_F32_e32 10, $vgpr1, $vgpr20, implicit $mode, implicit $exec
486 $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
487 $vgpr21 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
488 $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
489 $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
490 $vgpr24 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
491 ; $vgpr9 = V_FMAMK_F32 $vgpr0, 10, $vgpr2, implicit $mode, implicit $exec
492 $vgpr29 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
493 $vgpr37 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
494 $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
495 $vgpr35 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
496 ; $vgpr18 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec
497 ; $vgpr11 = V_FMAC_F32_e32 10, $vgpr1, $vgpr11, implicit $mode, implicit $exec
498 $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
499 $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
500 $vgpr32 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
506 tracksRegLiveness: true
509 ; SCHED-LABEL: name: vopd_mov_fixup
510 ; SCHED: $vgpr0 = IMPLICIT_DEF
511 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
512 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
513 ; SCHED-NEXT: $vgpr3 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr1, implicit $mode, implicit $exec
514 ; SCHED-NEXT: $vgpr4 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
515 ; SCHED-NEXT: $vgpr5 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
516 ; PAIR-LABEL: name: vopd_mov_fixup
517 ; PAIR: $vgpr0 = IMPLICIT_DEF
518 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
519 ; PAIR-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32 target-flags(amdgpu-abs32-lo) @lds, killed $vgpr0, killed $vgpr1, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
520 ; PAIR-NEXT: $vgpr4, $vgpr5 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, target-flags(amdgpu-abs32-lo) @lds, implicit $exec, implicit $exec, implicit $exec
521 $vgpr0 = IMPLICIT_DEF
522 $vgpr1 = IMPLICIT_DEF
524 $vgpr2 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
525 $vgpr3 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
527 $vgpr4 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
528 $vgpr5 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
532 name: vopd_mov_fixup_fail
533 tracksRegLiveness: true
536 ; SCHED-LABEL: name: vopd_mov_fixup_fail
537 ; SCHED: $vgpr0 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
538 ; SCHED-NEXT: $vgpr1 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds + 4, implicit $exec
539 ; PAIR-LABEL: name: vopd_mov_fixup_fail
540 ; PAIR: $vgpr0 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
541 ; PAIR-NEXT: $vgpr1 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds + 4, implicit $exec
542 $vgpr0 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
543 $vgpr1 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds + 4, implicit $exec
547 name: vopd_no_combine_dependent_subreg
548 tracksRegLiveness: true
552 ; SCHED-LABEL: name: vopd_no_combine_dependent_subreg
553 ; SCHED: $vgpr0 = IMPLICIT_DEF
554 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit-def $vgpr2_vgpr3, implicit $exec
555 ; SCHED-NEXT: $vgpr5 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr3, implicit $mode, implicit $exec
556 ; PAIR-LABEL: name: vopd_no_combine_dependent_subreg
557 ; PAIR: $vgpr0 = IMPLICIT_DEF
558 ; PAIR-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit-def $vgpr2_vgpr3, implicit $exec
559 ; PAIR-NEXT: $vgpr5 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr3, implicit $mode, implicit $exec
560 $vgpr0 = IMPLICIT_DEF
561 $vgpr2 = V_MOV_B32_e32 0, implicit-def $vgpr2_vgpr3, implicit $exec
562 $vgpr5 = V_ADD_F32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec