1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass=postmisched %s -o - | FileCheck -check-prefix=SCHED %s
3 # RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass=postmisched,gcn-create-vopd %s -o - | FileCheck -check-prefixes=PAIR,PAIR-GFX11 %s
4 # RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass=postmisched %s -o - | FileCheck -check-prefix=SCHED %s
5 # RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass=postmisched,gcn-create-vopd %s -o - | FileCheck -check-prefixes=PAIR,PAIR-GFX12 %s
8 @lds = external addrspace(3) global [8 x i8]
9 define void @vopd_schedule() { ret void }
10 define void @vopd_fmamk() { ret void }
11 define void @vopd_fmamk_fail() { ret void }
12 define void @vopd_cndmask() { ret void }
13 define void @vopd_mov() { ret void }
14 define void @vopd_mov_mov() { ret void }
15 define void @vopd_constants_fail() { ret void }
16 define void @vopd_constants_inlinable() { ret void }
17 define void @vopd_constants_same() { ret void }
18 define void @vopd_mov_fmaak_constants_same() { ret void }
19 define void @vopd_debug() { ret void }
20 define void @vopd_schedule_unconstrained() { ret void }
21 define void @vopd_schedule_unconstrained_2() { ret void }
22 define void @vopd_mov_fixup() { ret void }
23 define void @vopd_mov_fixup_fail() { ret void }
24 define void @vopd_no_combine_dependent_subreg() { ret void }
25 define void @vopd_mov_mov_same_src_bank() { ret void }
30 tracksRegLiveness: true
34 ; SCHED-LABEL: name: vopd_schedule
35 ; SCHED: $vgpr0 = IMPLICIT_DEF
36 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
37 ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
38 ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
39 ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
40 ; SCHED-NEXT: $vgpr4 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
42 ; PAIR-GFX11-LABEL: name: vopd_schedule
43 ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF
44 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
45 ; PAIR-GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
46 ; PAIR-GFX11-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx11 $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
47 ; PAIR-GFX11-NEXT: $vgpr4 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
49 ; PAIR-GFX12-LABEL: name: vopd_schedule
50 ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF
51 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
52 ; PAIR-GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
53 ; PAIR-GFX12-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx12 $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
54 ; PAIR-GFX12-NEXT: $vgpr4 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
57 $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
58 ; can fuse vgpr3 and vgpr6 writing insts only due to reg constraints
59 $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
60 $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
61 $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
67 tracksRegLiveness: true
71 ; SCHED-LABEL: name: vopd_fmamk
72 ; SCHED: $vgpr2 = IMPLICIT_DEF
73 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
74 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
75 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
76 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 10, killed $vgpr3, implicit $mode, implicit $exec
77 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
79 ; PAIR-GFX11-LABEL: name: vopd_fmamk
80 ; PAIR-GFX11: $vgpr2 = IMPLICIT_DEF
81 ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF
82 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
83 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
84 ; PAIR-GFX11-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx11 killed $vgpr0, 10, killed $vgpr3, killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
86 ; PAIR-GFX12-LABEL: name: vopd_fmamk
87 ; PAIR-GFX12: $vgpr2 = IMPLICIT_DEF
88 ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF
89 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
90 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
91 ; PAIR-GFX12-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx12 killed $vgpr0, 10, killed $vgpr3, killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
97 $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr2, implicit $mode, implicit $exec
98 $vgpr5 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec
103 name: vopd_fmamk_fail
104 tracksRegLiveness: true
108 ; SCHED-LABEL: name: vopd_fmamk_fail
109 ; SCHED: $vgpr1 = IMPLICIT_DEF
110 ; SCHED-NEXT: $vgpr2 = V_XOR_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
111 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
112 ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF
113 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 10, killed $vgpr4, implicit $mode, implicit $exec
114 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
116 ; PAIR-LABEL: name: vopd_fmamk_fail
117 ; PAIR: $vgpr1 = IMPLICIT_DEF
118 ; PAIR-NEXT: $vgpr2 = V_XOR_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
119 ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF
120 ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF
121 ; PAIR-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 10, killed $vgpr4, implicit $mode, implicit $exec
122 ; PAIR-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
123 $vgpr0 = IMPLICIT_DEF
124 $vgpr1 = IMPLICIT_DEF
125 $vgpr2 = V_XOR_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
126 $vgpr4 = IMPLICIT_DEF
128 $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr2, implicit $mode, implicit $exec
129 $vgpr5 = V_FMAMK_F32 $vgpr0, 10, $vgpr4, implicit $mode, implicit $exec
135 tracksRegLiveness: true
139 ; SCHED-LABEL: name: vopd_cndmask
140 ; SCHED: liveins: $vcc_lo
142 ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF
143 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
144 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
145 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
146 ; SCHED-NEXT: $sgpr20 = IMPLICIT_DEF
147 ; SCHED-NEXT: $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec
148 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 $sgpr20, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
149 ; SCHED-NEXT: $vgpr5 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
150 ; SCHED-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
151 ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec
152 ; SCHED-NEXT: $vgpr9 = V_CNDMASK_B32_e32 killed $sgpr20, killed $vgpr3, implicit $mode, implicit $exec, implicit killed $vcc_lo
154 ; PAIR-GFX11-LABEL: name: vopd_cndmask
155 ; PAIR-GFX11: liveins: $vcc_lo
156 ; PAIR-GFX11-NEXT: {{ $}}
157 ; PAIR-GFX11-NEXT: $vgpr2 = IMPLICIT_DEF
158 ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF
159 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
160 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
161 ; PAIR-GFX11-NEXT: $sgpr20 = IMPLICIT_DEF
162 ; PAIR-GFX11-NEXT: $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec
163 ; PAIR-GFX11-NEXT: $vgpr2, $vgpr5 = V_DUAL_FMAC_F32_e32_X_CNDMASK_B32_e32_gfx11 $sgpr20, killed $vgpr1, killed $vgpr2, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo
164 ; PAIR-GFX11-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
165 ; PAIR-GFX11-NEXT: $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec
166 ; PAIR-GFX11-NEXT: $vgpr9 = V_CNDMASK_B32_e32 killed $sgpr20, killed $vgpr3, implicit $mode, implicit $exec, implicit killed $vcc_lo
168 ; PAIR-GFX12-LABEL: name: vopd_cndmask
169 ; PAIR-GFX12: liveins: $vcc_lo
170 ; PAIR-GFX12-NEXT: {{ $}}
171 ; PAIR-GFX12-NEXT: $vgpr2 = IMPLICIT_DEF
172 ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF
173 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
174 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
175 ; PAIR-GFX12-NEXT: $sgpr20 = IMPLICIT_DEF
176 ; PAIR-GFX12-NEXT: $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec
177 ; PAIR-GFX12-NEXT: $vgpr2, $vgpr5 = V_DUAL_FMAC_F32_e32_X_CNDMASK_B32_e32_gfx12 $sgpr20, killed $vgpr1, killed $vgpr2, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo
178 ; PAIR-GFX12-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
179 ; PAIR-GFX12-NEXT: $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec
180 ; PAIR-GFX12-NEXT: $vgpr9 = V_CNDMASK_B32_e32 killed $sgpr20, killed $vgpr3, implicit $mode, implicit $exec, implicit killed $vcc_lo
181 $vgpr0 = IMPLICIT_DEF
182 $vgpr1 = IMPLICIT_DEF
183 $vgpr2 = IMPLICIT_DEF
184 $vgpr3 = IMPLICIT_DEF
185 $sgpr20 = IMPLICIT_DEF
187 $vgpr2 = V_FMAC_F32_e32 $sgpr20, $vgpr1, $vgpr2, implicit $mode, implicit $exec
188 $vgpr5 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
189 ; should not pair, uses 3 scalars (implicit vcc)
190 $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec
191 $vgpr7 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
192 ; should not pair, uses 3 scalars (implicit vcc)
193 $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec
194 $vgpr9 = V_CNDMASK_B32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
200 tracksRegLiveness: true
204 ; SCHED-LABEL: name: vopd_mov
205 ; SCHED: $vgpr0 = IMPLICIT_DEF
206 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
207 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 killed $vgpr0, implicit $exec
208 ; SCHED-NEXT: $vgpr3 = V_ADD_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
210 ; PAIR-GFX11-LABEL: name: vopd_mov
211 ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF
212 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
213 ; PAIR-GFX11-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32_gfx11 killed $vgpr0, killed $vgpr1, $vgpr1, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
215 ; PAIR-GFX12-LABEL: name: vopd_mov
216 ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF
217 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
218 ; PAIR-GFX12-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32_gfx12 killed $vgpr0, killed $vgpr1, $vgpr1, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
219 $vgpr0 = IMPLICIT_DEF
220 $vgpr1 = IMPLICIT_DEF
221 $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec
222 $vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
228 tracksRegLiveness: true
232 ; SCHED-LABEL: name: vopd_mov_mov
233 ; SCHED: $sgpr0 = IMPLICIT_DEF
234 ; SCHED-NEXT: $sgpr7 = IMPLICIT_DEF
235 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 killed $sgpr0, implicit $exec
236 ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 killed $sgpr7, implicit $exec
238 ; PAIR-GFX11-LABEL: name: vopd_mov_mov
239 ; PAIR-GFX11: $sgpr0 = IMPLICIT_DEF
240 ; PAIR-GFX11-NEXT: $sgpr7 = IMPLICIT_DEF
241 ; PAIR-GFX11-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx11 killed $sgpr0, killed $sgpr7, implicit $exec, implicit $exec, implicit $exec
243 ; PAIR-GFX12-LABEL: name: vopd_mov_mov
244 ; PAIR-GFX12: $sgpr0 = IMPLICIT_DEF
245 ; PAIR-GFX12-NEXT: $sgpr7 = IMPLICIT_DEF
246 ; PAIR-GFX12-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx12 killed $sgpr0, killed $sgpr7, implicit $exec, implicit $exec, implicit $exec
247 $sgpr0 = IMPLICIT_DEF
248 $sgpr7 = IMPLICIT_DEF
249 $vgpr2 = V_MOV_B32_e32 $sgpr0, implicit $exec
250 $vgpr3 = V_MOV_B32_e32 $sgpr7, implicit $exec
256 name: vopd_constants_fail
257 tracksRegLiveness: true
261 ; SCHED-LABEL: name: vopd_constants_fail
262 ; SCHED: $vgpr2 = IMPLICIT_DEF
263 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
264 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
265 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
266 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec
267 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 99, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
269 ; PAIR-LABEL: name: vopd_constants_fail
270 ; PAIR: $vgpr2 = IMPLICIT_DEF
271 ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF
272 ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
273 ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF
274 ; PAIR-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec
275 ; PAIR-NEXT: $vgpr2 = V_FMAC_F32_e32 99, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
276 $vgpr0 = IMPLICIT_DEF
277 $vgpr1 = IMPLICIT_DEF
278 $vgpr2 = IMPLICIT_DEF
279 $vgpr3 = IMPLICIT_DEF
280 ; should not pair with two different literals
281 $vgpr2 = V_FMAC_F32_e32 99, $vgpr1, $vgpr2, implicit $mode, implicit $exec
282 $vgpr5 = V_FMAMK_F32 $vgpr0, 100, $vgpr3, implicit $mode, implicit $exec
287 name: vopd_constants_inlinable
288 tracksRegLiveness: true
291 ; SCHED-LABEL: name: vopd_constants_inlinable
292 ; SCHED: $vgpr2 = IMPLICIT_DEF
293 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
294 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
295 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
296 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec
297 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 4, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
299 ; PAIR-GFX11-LABEL: name: vopd_constants_inlinable
300 ; PAIR-GFX11: $vgpr2 = IMPLICIT_DEF
301 ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF
302 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
303 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
304 ; PAIR-GFX11-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx11 killed $vgpr0, 100, killed $vgpr3, 4, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
306 ; PAIR-GFX12-LABEL: name: vopd_constants_inlinable
307 ; PAIR-GFX12: $vgpr2 = IMPLICIT_DEF
308 ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF
309 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
310 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
311 ; PAIR-GFX12-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx12 killed $vgpr0, 100, killed $vgpr3, 4, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
312 $vgpr0 = IMPLICIT_DEF
313 $vgpr1 = IMPLICIT_DEF
314 $vgpr2 = IMPLICIT_DEF
315 $vgpr3 = IMPLICIT_DEF
316 ; can pair since 4 is inlinable
317 $vgpr2 = V_FMAC_F32_e32 4, $vgpr1, $vgpr2, implicit $mode, implicit $exec
318 $vgpr5 = V_FMAMK_F32 $vgpr0, 100, $vgpr3, implicit $mode, implicit $exec
324 name: vopd_constants_same
325 tracksRegLiveness: true
329 ; SCHED-LABEL: name: vopd_constants_same
330 ; SCHED: $vgpr2 = IMPLICIT_DEF
331 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
332 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
333 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
334 ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec
335 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 100, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
337 ; PAIR-GFX11-LABEL: name: vopd_constants_same
338 ; PAIR-GFX11: $vgpr2 = IMPLICIT_DEF
339 ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF
340 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
341 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
342 ; PAIR-GFX11-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx11 killed $vgpr0, 100, killed $vgpr3, 100, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
344 ; PAIR-GFX12-LABEL: name: vopd_constants_same
345 ; PAIR-GFX12: $vgpr2 = IMPLICIT_DEF
346 ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF
347 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
348 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
349 ; PAIR-GFX12-NEXT: $vgpr5, $vgpr2 = V_DUAL_FMAMK_F32_X_FMAC_F32_e32_gfx12 killed $vgpr0, 100, killed $vgpr3, 100, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
350 $vgpr0 = IMPLICIT_DEF
351 $vgpr1 = IMPLICIT_DEF
352 $vgpr2 = IMPLICIT_DEF
353 $vgpr3 = IMPLICIT_DEF
354 ; should be able to pair using 1 deduplicated literal
355 $vgpr2 = V_FMAC_F32_e32 100, $vgpr1, $vgpr2, implicit $mode, implicit $exec
356 $vgpr5 = V_FMAMK_F32 $vgpr0, 100, $vgpr3, implicit $mode, implicit $exec
361 name: vopd_mov_fmaak_constants_same
362 tracksRegLiveness: true
366 ; SCHED-LABEL: name: vopd_mov_fmaak_constants_same
367 ; SCHED: $vgpr0 = IMPLICIT_DEF
368 ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF
369 ; SCHED-NEXT: $vgpr1 = V_MOV_B32_e32 981467136, implicit $exec
370 ; SCHED-NEXT: $vgpr2 = V_FMAAK_F32 killed $sgpr0, killed $vgpr0, 981467136, implicit $mode, implicit $exec
372 ; PAIR-GFX11-LABEL: name: vopd_mov_fmaak_constants_same
373 ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF
374 ; PAIR-GFX11-NEXT: $sgpr0 = IMPLICIT_DEF
375 ; PAIR-GFX11-NEXT: $vgpr1, $vgpr2 = V_DUAL_MOV_B32_e32_X_FMAAK_F32_gfx11 981467136, killed $sgpr0, killed $vgpr0, 981467136, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
377 ; PAIR-GFX12-LABEL: name: vopd_mov_fmaak_constants_same
378 ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF
379 ; PAIR-GFX12-NEXT: $sgpr0 = IMPLICIT_DEF
380 ; PAIR-GFX12-NEXT: $vgpr1, $vgpr2 = V_DUAL_MOV_B32_e32_X_FMAAK_F32_gfx12 981467136, killed $sgpr0, killed $vgpr0, 981467136, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
381 $vgpr0 = IMPLICIT_DEF
382 $sgpr0 = IMPLICIT_DEF
383 ; should be able to pair using 1 deduplicated literal
384 $vgpr1 = V_MOV_B32_e32 981467136, implicit $exec
385 $vgpr2 = V_FMAAK_F32 $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec
391 tracksRegLiveness: true
395 ; SCHED-LABEL: name: vopd_debug
396 ; SCHED: $vgpr0 = IMPLICIT_DEF
397 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
398 ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
399 ; SCHED-NEXT: DBG_VALUE $vgpr0, 0, 0
400 ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
402 ; PAIR-GFX11-LABEL: name: vopd_debug
403 ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF
404 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
405 ; PAIR-GFX11-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx11 killed $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
406 ; PAIR-GFX11-NEXT: DBG_VALUE $vgpr0, 0, 0
408 ; PAIR-GFX12-LABEL: name: vopd_debug
409 ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF
410 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
411 ; PAIR-GFX12-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx12 killed $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
412 ; PAIR-GFX12-NEXT: DBG_VALUE $vgpr0, 0, 0
413 $vgpr0 = IMPLICIT_DEF
414 $vgpr1 = IMPLICIT_DEF
415 ; TODO Debug values disable VOPD creation
416 $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
417 DBG_VALUE $vgpr0, 0, 0
418 $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
423 name: vopd_schedule_unconstrained
424 tracksRegLiveness: true
429 ; SCHED-LABEL: name: vopd_schedule_unconstrained
430 ; SCHED: liveins: $vcc_lo
432 ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF
433 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
434 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
435 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
436 ; SCHED-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
437 ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
438 ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
439 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
440 ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
441 ; SCHED-NEXT: $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
442 ; SCHED-NEXT: $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
443 ; SCHED-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
444 ; SCHED-NEXT: $vgpr17 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
445 ; SCHED-NEXT: $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
446 ; SCHED-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo
447 ; SCHED-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
448 ; SCHED-NEXT: $vgpr14 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
450 ; PAIR-GFX11-LABEL: name: vopd_schedule_unconstrained
451 ; PAIR-GFX11: liveins: $vcc_lo
452 ; PAIR-GFX11-NEXT: {{ $}}
453 ; PAIR-GFX11-NEXT: $vgpr2 = IMPLICIT_DEF
454 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
455 ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF
456 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
457 ; PAIR-GFX11-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
458 ; PAIR-GFX11-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx11 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
459 ; PAIR-GFX11-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
460 ; PAIR-GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
461 ; PAIR-GFX11-NEXT: $vgpr12, $vgpr19 = V_DUAL_ADD_F32_e32_X_CNDMASK_B32_e32_gfx11 $vgpr1, $vgpr1, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo
462 ; PAIR-GFX11-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
463 ; PAIR-GFX11-NEXT: $vgpr17, $vgpr10 = V_DUAL_MUL_F32_e32_X_CNDMASK_B32_e32_gfx11 killed $vgpr0, $vgpr0, $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo
464 ; PAIR-GFX11-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo
465 ; PAIR-GFX11-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
466 ; PAIR-GFX11-NEXT: $vgpr14 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
468 ; PAIR-GFX12-LABEL: name: vopd_schedule_unconstrained
469 ; PAIR-GFX12: liveins: $vcc_lo
470 ; PAIR-GFX12-NEXT: {{ $}}
471 ; PAIR-GFX12-NEXT: $vgpr2 = IMPLICIT_DEF
472 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
473 ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF
474 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
475 ; PAIR-GFX12-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
476 ; PAIR-GFX12-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx12 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
477 ; PAIR-GFX12-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
478 ; PAIR-GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
479 ; PAIR-GFX12-NEXT: $vgpr12, $vgpr19 = V_DUAL_ADD_F32_e32_X_CNDMASK_B32_e32_gfx12 $vgpr1, $vgpr1, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo
480 ; PAIR-GFX12-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
481 ; PAIR-GFX12-NEXT: $vgpr17, $vgpr10 = V_DUAL_MUL_F32_e32_X_CNDMASK_B32_e32_gfx12 killed $vgpr0, $vgpr0, $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo
482 ; PAIR-GFX12-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo
483 ; PAIR-GFX12-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
484 ; PAIR-GFX12-NEXT: $vgpr14 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
485 $vgpr0 = IMPLICIT_DEF
486 $vgpr1 = IMPLICIT_DEF
487 $vgpr2 = IMPLICIT_DEF
488 $vgpr3 = IMPLICIT_DEF
489 $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, $vgpr2, implicit $mode, implicit $exec
490 $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
491 $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
492 $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
493 $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
494 $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
495 ; $vgpr9 = V_FMAMK_F32 $vgpr0, 10, $vgpr2, implicit $mode, implicit $exec
496 $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
497 $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
498 $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
499 $vgpr17 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
500 ; $vgpr18 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec
501 ; $vgpr11 = V_FMAC_F32_e32 10, $vgpr1, $vgpr11, implicit $mode, implicit $exec
502 $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
503 $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
504 $vgpr14 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
509 name: vopd_schedule_unconstrained_2
510 tracksRegLiveness: true
515 ; SCHED-LABEL: name: vopd_schedule_unconstrained_2
516 ; SCHED: liveins: $vcc_lo
518 ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF
519 ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
520 ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
521 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
522 ; SCHED-NEXT: $vgpr20 = IMPLICIT_DEF
523 ; SCHED-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
524 ; SCHED-NEXT: $vgpr35 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
525 ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
526 ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
527 ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
528 ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
529 ; SCHED-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
530 ; SCHED-NEXT: $vgpr29 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
531 ; SCHED-NEXT: $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
532 ; SCHED-NEXT: $vgpr20 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr20, implicit $mode, implicit $exec
533 ; SCHED-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
534 ; SCHED-NEXT: $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
535 ; SCHED-NEXT: $vgpr17 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
536 ; SCHED-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
537 ; SCHED-NEXT: $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
538 ; SCHED-NEXT: $vgpr37 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
539 ; SCHED-NEXT: $vgpr14 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
540 ; SCHED-NEXT: $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
541 ; SCHED-NEXT: $vgpr21 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
542 ; SCHED-NEXT: $vgpr24 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
543 ; SCHED-NEXT: $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
544 ; SCHED-NEXT: $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
545 ; SCHED-NEXT: $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
546 ; SCHED-NEXT: $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo
547 ; SCHED-NEXT: $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
548 ; SCHED-NEXT: $vgpr32 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
550 ; PAIR-GFX11-LABEL: name: vopd_schedule_unconstrained_2
551 ; PAIR-GFX11: liveins: $vcc_lo
552 ; PAIR-GFX11-NEXT: {{ $}}
553 ; PAIR-GFX11-NEXT: $vgpr2 = IMPLICIT_DEF
554 ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
555 ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF
556 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
557 ; PAIR-GFX11-NEXT: $vgpr20 = IMPLICIT_DEF
558 ; PAIR-GFX11-NEXT: $vgpr16, $vgpr35 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx11 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
559 ; PAIR-GFX11-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx11 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
560 ; PAIR-GFX11-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
561 ; PAIR-GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
562 ; PAIR-GFX11-NEXT: $vgpr4, $vgpr29 = V_DUAL_SUB_F32_e32_X_CNDMASK_B32_e32_gfx11 $vgpr1, $vgpr1, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo
563 ; PAIR-GFX11-NEXT: $vgpr19, $vgpr20 = V_DUAL_CNDMASK_B32_e32_X_FMAC_F32_e32_gfx11 $vgpr0, $vgpr3, 10, $vgpr1, killed $vgpr20, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec
564 ; PAIR-GFX11-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
565 ; PAIR-GFX11-NEXT: $vgpr10, $vgpr17 = V_DUAL_CNDMASK_B32_e32_X_MUL_F32_e32_gfx11 $vgpr1, $vgpr2, $vgpr0, $vgpr0, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec
566 ; PAIR-GFX11-NEXT: $vgpr11, $vgpr12 = V_DUAL_CNDMASK_B32_e32_X_ADD_F32_e32_gfx11 $vgpr0, $vgpr3, $vgpr1, $vgpr1, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec
567 ; PAIR-GFX11-NEXT: $vgpr37, $vgpr14 = V_DUAL_CNDMASK_B32_e32_X_SUB_F32_e32_gfx11 $vgpr0, killed $vgpr3, $vgpr1, $vgpr1, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec
568 ; PAIR-GFX11-NEXT: $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
569 ; PAIR-GFX11-NEXT: $vgpr21, $vgpr24 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx11 $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
570 ; PAIR-GFX11-NEXT: $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
571 ; PAIR-GFX11-NEXT: $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
572 ; PAIR-GFX11-NEXT: $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
573 ; PAIR-GFX11-NEXT: $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo
574 ; PAIR-GFX11-NEXT: $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
575 ; PAIR-GFX11-NEXT: $vgpr32 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
577 ; PAIR-GFX12-LABEL: name: vopd_schedule_unconstrained_2
578 ; PAIR-GFX12: liveins: $vcc_lo
579 ; PAIR-GFX12-NEXT: {{ $}}
580 ; PAIR-GFX12-NEXT: $vgpr2 = IMPLICIT_DEF
581 ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
582 ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF
583 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
584 ; PAIR-GFX12-NEXT: $vgpr20 = IMPLICIT_DEF
585 ; PAIR-GFX12-NEXT: $vgpr16, $vgpr35 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx12 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
586 ; PAIR-GFX12-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx12 $vgpr1, $vgpr1, $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
587 ; PAIR-GFX12-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
588 ; PAIR-GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
589 ; PAIR-GFX12-NEXT: $vgpr4, $vgpr29 = V_DUAL_SUB_F32_e32_X_CNDMASK_B32_e32_gfx12 $vgpr1, $vgpr1, $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $vcc_lo
590 ; PAIR-GFX12-NEXT: $vgpr19, $vgpr20 = V_DUAL_CNDMASK_B32_e32_X_FMAC_F32_e32_gfx12 $vgpr0, $vgpr3, 10, $vgpr1, killed $vgpr20, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec
591 ; PAIR-GFX12-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
592 ; PAIR-GFX12-NEXT: $vgpr10, $vgpr17 = V_DUAL_CNDMASK_B32_e32_X_MUL_F32_e32_gfx12 $vgpr1, $vgpr2, $vgpr0, $vgpr0, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec
593 ; PAIR-GFX12-NEXT: $vgpr11, $vgpr12 = V_DUAL_CNDMASK_B32_e32_X_ADD_F32_e32_gfx12 $vgpr0, $vgpr3, $vgpr1, $vgpr1, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec
594 ; PAIR-GFX12-NEXT: $vgpr37, $vgpr14 = V_DUAL_CNDMASK_B32_e32_X_SUB_F32_e32_gfx12 $vgpr0, killed $vgpr3, $vgpr1, $vgpr1, implicit $vcc_lo, implicit $exec, implicit $mode, implicit $mode, implicit $exec, implicit $vcc_lo, implicit $mode, implicit $exec
595 ; PAIR-GFX12-NEXT: $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
596 ; PAIR-GFX12-NEXT: $vgpr21, $vgpr24 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx12 $vgpr1, $vgpr1, killed $vgpr0, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
597 ; PAIR-GFX12-NEXT: $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
598 ; PAIR-GFX12-NEXT: $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
599 ; PAIR-GFX12-NEXT: $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
600 ; PAIR-GFX12-NEXT: $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo
601 ; PAIR-GFX12-NEXT: $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
602 ; PAIR-GFX12-NEXT: $vgpr32 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
603 $vgpr0 = IMPLICIT_DEF
604 $vgpr1 = IMPLICIT_DEF
605 $vgpr2 = IMPLICIT_DEF
606 $vgpr3 = IMPLICIT_DEF
607 $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, $vgpr2, implicit $mode, implicit $exec
608 $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
609 $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
610 $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
611 $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
612 $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
613 ; $vgpr9 = V_FMAMK_F32 $vgpr0, 10, $vgpr2, implicit $mode, implicit $exec
614 $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
615 $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
616 $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
617 $vgpr17 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
618 ; $vgpr18 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec
619 ; $vgpr11 = V_FMAC_F32_e32 10, $vgpr1, $vgpr11, implicit $mode, implicit $exec
620 $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
621 $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
622 $vgpr14 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
623 $vgpr20 = IMPLICIT_DEF
624 $vgpr20 = V_FMAC_F32_e32 10, $vgpr1, $vgpr20, implicit $mode, implicit $exec
625 $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
626 $vgpr21 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
627 $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
628 $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
629 $vgpr24 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
630 ; $vgpr9 = V_FMAMK_F32 $vgpr0, 10, $vgpr2, implicit $mode, implicit $exec
631 $vgpr29 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
632 $vgpr37 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
633 $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
634 $vgpr35 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
635 ; $vgpr18 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec
636 ; $vgpr11 = V_FMAC_F32_e32 10, $vgpr1, $vgpr11, implicit $mode, implicit $exec
637 $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
638 $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
639 $vgpr32 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
645 tracksRegLiveness: true
648 ; SCHED-LABEL: name: vopd_mov_fixup
649 ; SCHED: $vgpr0 = IMPLICIT_DEF
650 ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
651 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
652 ; SCHED-NEXT: $vgpr3 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr1, implicit $mode, implicit $exec
653 ; SCHED-NEXT: $vgpr4 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
654 ; SCHED-NEXT: $vgpr5 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
656 ; PAIR-GFX11-LABEL: name: vopd_mov_fixup
657 ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF
658 ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
659 ; PAIR-GFX11-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32_gfx11 target-flags(amdgpu-abs32-lo) @lds, killed $vgpr0, killed $vgpr1, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
660 ; PAIR-GFX11-NEXT: $vgpr4, $vgpr5 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx11 target-flags(amdgpu-abs32-lo) @lds, target-flags(amdgpu-abs32-lo) @lds, implicit $exec, implicit $exec, implicit $exec
662 ; PAIR-GFX12-LABEL: name: vopd_mov_fixup
663 ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF
664 ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
665 ; PAIR-GFX12-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32_gfx12 target-flags(amdgpu-abs32-lo) @lds, killed $vgpr0, killed $vgpr1, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
666 ; PAIR-GFX12-NEXT: $vgpr4, $vgpr5 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx12 target-flags(amdgpu-abs32-lo) @lds, target-flags(amdgpu-abs32-lo) @lds, implicit $exec, implicit $exec, implicit $exec
667 $vgpr0 = IMPLICIT_DEF
668 $vgpr1 = IMPLICIT_DEF
670 $vgpr2 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
671 $vgpr3 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
673 $vgpr4 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
674 $vgpr5 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
678 name: vopd_mov_fixup_fail
679 tracksRegLiveness: true
682 ; SCHED-LABEL: name: vopd_mov_fixup_fail
683 ; SCHED: $vgpr0 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
684 ; SCHED-NEXT: $vgpr1 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds + 4, implicit $exec
686 ; PAIR-LABEL: name: vopd_mov_fixup_fail
687 ; PAIR: $vgpr0 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
688 ; PAIR-NEXT: $vgpr1 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds + 4, implicit $exec
689 $vgpr0 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
690 $vgpr1 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds + 4, implicit $exec
694 name: vopd_no_combine_dependent_subreg
695 tracksRegLiveness: true
699 ; SCHED-LABEL: name: vopd_no_combine_dependent_subreg
700 ; SCHED: $vgpr0 = IMPLICIT_DEF
701 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit-def $vgpr2_vgpr3, implicit $exec
702 ; SCHED-NEXT: $vgpr5 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr3, implicit $mode, implicit $exec
704 ; PAIR-LABEL: name: vopd_no_combine_dependent_subreg
705 ; PAIR: $vgpr0 = IMPLICIT_DEF
706 ; PAIR-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit-def $vgpr2_vgpr3, implicit $exec
707 ; PAIR-NEXT: $vgpr5 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr3, implicit $mode, implicit $exec
708 $vgpr0 = IMPLICIT_DEF
709 $vgpr2 = V_MOV_B32_e32 0, implicit-def $vgpr2_vgpr3, implicit $exec
710 $vgpr5 = V_ADD_F32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec
714 name: vopd_mov_mov_same_src_bank
715 tracksRegLiveness: true
719 ; SCHED-LABEL: name: vopd_mov_mov_same_src_bank
720 ; SCHED: $vgpr1 = IMPLICIT_DEF
721 ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF
722 ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
723 ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 killed $vgpr5, implicit $exec
725 ; PAIR-GFX11-LABEL: name: vopd_mov_mov_same_src_bank
726 ; PAIR-GFX11: $vgpr1 = IMPLICIT_DEF
727 ; PAIR-GFX11-NEXT: $vgpr5 = IMPLICIT_DEF
728 ; PAIR-GFX11-NEXT: $vgpr2 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
729 ; PAIR-GFX11-NEXT: $vgpr3 = V_MOV_B32_e32 killed $vgpr5, implicit $exec
731 ; PAIR-GFX12-LABEL: name: vopd_mov_mov_same_src_bank
732 ; PAIR-GFX12: $vgpr1 = IMPLICIT_DEF
733 ; PAIR-GFX12-NEXT: $vgpr5 = IMPLICIT_DEF
734 ; PAIR-GFX12-NEXT: $vgpr2, $vgpr3 = V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx12 killed $vgpr1, killed $vgpr5, implicit $exec, implicit $exec, implicit $exec
735 $vgpr1 = IMPLICIT_DEF
736 $vgpr5 = IMPLICIT_DEF
737 $vgpr2 = V_MOV_B32_e32 $vgpr1, implicit $exec
738 $vgpr3 = V_MOV_B32_e32 $vgpr5, implicit $exec