xref: /llvm-project/llvm/test/CodeGen/AMDGPU/vopd-combine.mir (revision 5fcd05967aaa0447d8da01b3f19139f2136863b4)
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
6
7--- |
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 }
26  define void @vopd_combine_opy_overwrites_opx() { ret void }
27  define void @vopd_no_combine_opx_overwrites_opy() { ret void }
28...
29
30---
31name:            vopd_schedule
32tracksRegLiveness: true
33body:             |
34  bb.0:
35
36    ; SCHED-LABEL: name: vopd_schedule
37    ; SCHED: $vgpr0 = IMPLICIT_DEF
38    ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
39    ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
40    ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
41    ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
42    ; SCHED-NEXT: $vgpr4 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
43    ;
44    ; PAIR-GFX11-LABEL: name: vopd_schedule
45    ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF
46    ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
47    ; PAIR-GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
48    ; 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
49    ; PAIR-GFX11-NEXT: $vgpr4 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
50    ;
51    ; PAIR-GFX12-LABEL: name: vopd_schedule
52    ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF
53    ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
54    ; PAIR-GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
55    ; 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
56    ; PAIR-GFX12-NEXT: $vgpr4 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
57    $vgpr0 = IMPLICIT_DEF
58    $vgpr1 = IMPLICIT_DEF
59    $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
60    ; can fuse vgpr3 and vgpr6 writing insts only due to reg constraints
61    $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
62    $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
63    $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
64
65...
66
67---
68name:            vopd_fmamk
69tracksRegLiveness: true
70body:             |
71  bb.0:
72
73    ; SCHED-LABEL: name: vopd_fmamk
74    ; SCHED: $vgpr2 = IMPLICIT_DEF
75    ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
76    ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
77    ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
78    ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 10, killed $vgpr3, implicit $mode, implicit $exec
79    ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
80    ;
81    ; PAIR-GFX11-LABEL: name: vopd_fmamk
82    ; PAIR-GFX11: $vgpr2 = IMPLICIT_DEF
83    ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF
84    ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
85    ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
86    ; 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
87    ;
88    ; PAIR-GFX12-LABEL: name: vopd_fmamk
89    ; PAIR-GFX12: $vgpr2 = IMPLICIT_DEF
90    ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF
91    ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
92    ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
93    ; 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
94    $vgpr0 = IMPLICIT_DEF
95    $vgpr1 = IMPLICIT_DEF
96    $vgpr2 = IMPLICIT_DEF
97    $vgpr3 = IMPLICIT_DEF
98    ; should pair
99    $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr2, implicit $mode, implicit $exec
100    $vgpr5 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec
101
102...
103
104---
105name:            vopd_fmamk_fail
106tracksRegLiveness: true
107body:             |
108  bb.0:
109
110    ; SCHED-LABEL: name: vopd_fmamk_fail
111    ; SCHED: $vgpr1 = IMPLICIT_DEF
112    ; SCHED-NEXT: $vgpr2 = V_XOR_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
113    ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
114    ; SCHED-NEXT: $vgpr4 = IMPLICIT_DEF
115    ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 10, killed $vgpr4, implicit $mode, implicit $exec
116    ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
117    ;
118    ; PAIR-LABEL: name: vopd_fmamk_fail
119    ; PAIR: $vgpr1 = IMPLICIT_DEF
120    ; PAIR-NEXT: $vgpr2 = V_XOR_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
121    ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF
122    ; PAIR-NEXT: $vgpr4 = IMPLICIT_DEF
123    ; PAIR-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 10, killed $vgpr4, implicit $mode, implicit $exec
124    ; PAIR-NEXT: $vgpr2 = V_FMAC_F32_e32 killed $vgpr1, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
125    $vgpr0 = IMPLICIT_DEF
126    $vgpr1 = IMPLICIT_DEF
127    $vgpr2 = V_XOR_B32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
128    $vgpr4 = IMPLICIT_DEF
129    ; should not pair
130    $vgpr2 = V_FMAC_F32_e32 $vgpr1, $vgpr1, $vgpr2, implicit $mode, implicit $exec
131    $vgpr5 = V_FMAMK_F32 $vgpr0, 10, $vgpr4, implicit $mode, implicit $exec
132
133...
134
135---
136name:            vopd_cndmask
137tracksRegLiveness: true
138body:             |
139  bb.0:
140    liveins: $vcc_lo
141    ; SCHED-LABEL: name: vopd_cndmask
142    ; SCHED: liveins: $vcc_lo
143    ; SCHED-NEXT: {{  $}}
144    ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF
145    ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
146    ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
147    ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
148    ; SCHED-NEXT: $sgpr20 = IMPLICIT_DEF
149    ; SCHED-NEXT: $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec
150    ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 $sgpr20, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
151    ; SCHED-NEXT: $vgpr5 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
152    ; SCHED-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
153    ; SCHED-NEXT: $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec
154    ; SCHED-NEXT: $vgpr9 = V_CNDMASK_B32_e32 killed $sgpr20, killed $vgpr3, implicit $mode, implicit $exec, implicit killed $vcc_lo
155    ;
156    ; PAIR-GFX11-LABEL: name: vopd_cndmask
157    ; PAIR-GFX11: liveins: $vcc_lo
158    ; PAIR-GFX11-NEXT: {{  $}}
159    ; PAIR-GFX11-NEXT: $vgpr2 = IMPLICIT_DEF
160    ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF
161    ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
162    ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
163    ; PAIR-GFX11-NEXT: $sgpr20 = IMPLICIT_DEF
164    ; PAIR-GFX11-NEXT: $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec
165    ; 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
166    ; PAIR-GFX11-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
167    ; PAIR-GFX11-NEXT: $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec
168    ; PAIR-GFX11-NEXT: $vgpr9 = V_CNDMASK_B32_e32 killed $sgpr20, killed $vgpr3, implicit $mode, implicit $exec, implicit killed $vcc_lo
169    ;
170    ; PAIR-GFX12-LABEL: name: vopd_cndmask
171    ; PAIR-GFX12: liveins: $vcc_lo
172    ; PAIR-GFX12-NEXT: {{  $}}
173    ; PAIR-GFX12-NEXT: $vgpr2 = IMPLICIT_DEF
174    ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF
175    ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
176    ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
177    ; PAIR-GFX12-NEXT: $sgpr20 = IMPLICIT_DEF
178    ; PAIR-GFX12-NEXT: $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec
179    ; 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
180    ; PAIR-GFX12-NEXT: $vgpr7 = V_CNDMASK_B32_e32 killed $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
181    ; PAIR-GFX12-NEXT: $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec
182    ; PAIR-GFX12-NEXT: $vgpr9 = V_CNDMASK_B32_e32 killed $sgpr20, killed $vgpr3, implicit $mode, implicit $exec, implicit killed $vcc_lo
183    $vgpr0 = IMPLICIT_DEF
184    $vgpr1 = IMPLICIT_DEF
185    $vgpr2 = IMPLICIT_DEF
186    $vgpr3 = IMPLICIT_DEF
187    $sgpr20 = IMPLICIT_DEF
188    ; should pair
189    $vgpr2 = V_FMAC_F32_e32 $sgpr20, $vgpr1, $vgpr2, implicit $mode, implicit $exec
190    $vgpr5 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
191    ; should not pair, uses 3 scalars (implicit vcc)
192    $vgpr4 = V_FMAMK_F32 $sgpr20, 12345, $vgpr3, implicit $mode, implicit $exec
193    $vgpr7 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
194    ; should not pair, uses 3 scalars (implicit vcc)
195    $vgpr6 = V_ADD_F32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec
196    $vgpr9 = V_CNDMASK_B32_e32 $sgpr20, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
197
198...
199
200---
201name:            vopd_mov
202tracksRegLiveness: true
203body:             |
204  bb.0:
205
206    ; SCHED-LABEL: name: vopd_mov
207    ; SCHED: $vgpr0 = IMPLICIT_DEF
208    ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
209    ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 killed $vgpr0, implicit $exec
210    ; SCHED-NEXT: $vgpr3 = V_ADD_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
211    ;
212    ; PAIR-GFX11-LABEL: name: vopd_mov
213    ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF
214    ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
215    ; 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
216    ;
217    ; PAIR-GFX12-LABEL: name: vopd_mov
218    ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF
219    ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
220    ; 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
221    $vgpr0 = IMPLICIT_DEF
222    $vgpr1 = IMPLICIT_DEF
223    $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec
224    $vgpr3 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
225
226...
227
228---
229name:            vopd_mov_mov
230tracksRegLiveness: true
231body:             |
232  bb.0:
233
234    ; SCHED-LABEL: name: vopd_mov_mov
235    ; SCHED: $sgpr0 = IMPLICIT_DEF
236    ; SCHED-NEXT: $sgpr7 = IMPLICIT_DEF
237    ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 killed $sgpr0, implicit $exec
238    ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 killed $sgpr7, implicit $exec
239    ;
240    ; PAIR-GFX11-LABEL: name: vopd_mov_mov
241    ; PAIR-GFX11: $sgpr0 = IMPLICIT_DEF
242    ; PAIR-GFX11-NEXT: $sgpr7 = IMPLICIT_DEF
243    ; 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
244    ;
245    ; PAIR-GFX12-LABEL: name: vopd_mov_mov
246    ; PAIR-GFX12: $sgpr0 = IMPLICIT_DEF
247    ; PAIR-GFX12-NEXT: $sgpr7 = IMPLICIT_DEF
248    ; 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
249    $sgpr0 = IMPLICIT_DEF
250    $sgpr7 = IMPLICIT_DEF
251    $vgpr2 = V_MOV_B32_e32 $sgpr0, implicit $exec
252    $vgpr3 = V_MOV_B32_e32 $sgpr7, implicit $exec
253
254...
255
256
257---
258name:            vopd_constants_fail
259tracksRegLiveness: true
260body:             |
261  bb.0:
262
263    ; SCHED-LABEL: name: vopd_constants_fail
264    ; SCHED: $vgpr2 = IMPLICIT_DEF
265    ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
266    ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
267    ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
268    ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec
269    ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 99, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
270    ;
271    ; PAIR-LABEL: name: vopd_constants_fail
272    ; PAIR: $vgpr2 = IMPLICIT_DEF
273    ; PAIR-NEXT: $vgpr0 = IMPLICIT_DEF
274    ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
275    ; PAIR-NEXT: $vgpr3 = IMPLICIT_DEF
276    ; PAIR-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec
277    ; PAIR-NEXT: $vgpr2 = V_FMAC_F32_e32 99, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
278    $vgpr0 = IMPLICIT_DEF
279    $vgpr1 = IMPLICIT_DEF
280    $vgpr2 = IMPLICIT_DEF
281    $vgpr3 = IMPLICIT_DEF
282    ; should not pair with two different literals
283    $vgpr2 = V_FMAC_F32_e32 99, $vgpr1, $vgpr2, implicit $mode, implicit $exec
284    $vgpr5 = V_FMAMK_F32 $vgpr0, 100, $vgpr3, implicit $mode, implicit $exec
285
286...
287
288---
289name:            vopd_constants_inlinable
290tracksRegLiveness: true
291body:             |
292  bb.0:
293    ; SCHED-LABEL: name: vopd_constants_inlinable
294    ; SCHED: $vgpr2 = IMPLICIT_DEF
295    ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
296    ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
297    ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
298    ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec
299    ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 4, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
300    ;
301    ; PAIR-GFX11-LABEL: name: vopd_constants_inlinable
302    ; PAIR-GFX11: $vgpr2 = IMPLICIT_DEF
303    ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF
304    ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
305    ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
306    ; 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
307    ;
308    ; PAIR-GFX12-LABEL: name: vopd_constants_inlinable
309    ; PAIR-GFX12: $vgpr2 = IMPLICIT_DEF
310    ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF
311    ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
312    ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
313    ; 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
314    $vgpr0 = IMPLICIT_DEF
315    $vgpr1 = IMPLICIT_DEF
316    $vgpr2 = IMPLICIT_DEF
317    $vgpr3 = IMPLICIT_DEF
318    ; can pair since 4 is inlinable
319    $vgpr2 = V_FMAC_F32_e32 4, $vgpr1, $vgpr2, implicit $mode, implicit $exec
320    $vgpr5 = V_FMAMK_F32 $vgpr0, 100, $vgpr3, implicit $mode, implicit $exec
321
322...
323
324
325---
326name:            vopd_constants_same
327tracksRegLiveness: true
328body:             |
329  bb.0:
330
331    ; SCHED-LABEL: name: vopd_constants_same
332    ; SCHED: $vgpr2 = IMPLICIT_DEF
333    ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
334    ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
335    ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
336    ; SCHED-NEXT: $vgpr5 = V_FMAMK_F32 killed $vgpr0, 100, killed $vgpr3, implicit $mode, implicit $exec
337    ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 100, killed $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
338    ;
339    ; PAIR-GFX11-LABEL: name: vopd_constants_same
340    ; PAIR-GFX11: $vgpr2 = IMPLICIT_DEF
341    ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF
342    ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
343    ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
344    ; 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
345    ;
346    ; PAIR-GFX12-LABEL: name: vopd_constants_same
347    ; PAIR-GFX12: $vgpr2 = IMPLICIT_DEF
348    ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF
349    ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
350    ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
351    ; 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
352    $vgpr0 = IMPLICIT_DEF
353    $vgpr1 = IMPLICIT_DEF
354    $vgpr2 = IMPLICIT_DEF
355    $vgpr3 = IMPLICIT_DEF
356    ; should be able to pair using 1 deduplicated literal
357    $vgpr2 = V_FMAC_F32_e32 100, $vgpr1, $vgpr2, implicit $mode, implicit $exec
358    $vgpr5 = V_FMAMK_F32 $vgpr0, 100, $vgpr3, implicit $mode, implicit $exec
359
360...
361
362---
363name:            vopd_mov_fmaak_constants_same
364tracksRegLiveness: true
365body:             |
366  bb.0:
367
368    ; SCHED-LABEL: name: vopd_mov_fmaak_constants_same
369    ; SCHED: $vgpr0 = IMPLICIT_DEF
370    ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF
371    ; SCHED-NEXT: $vgpr1 = V_MOV_B32_e32 981467136, implicit $exec
372    ; SCHED-NEXT: $vgpr2 = V_FMAAK_F32 killed $sgpr0, killed $vgpr0, 981467136, implicit $mode, implicit $exec
373    ;
374    ; PAIR-GFX11-LABEL: name: vopd_mov_fmaak_constants_same
375    ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF
376    ; PAIR-GFX11-NEXT: $sgpr0 = IMPLICIT_DEF
377    ; 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
378    ;
379    ; PAIR-GFX12-LABEL: name: vopd_mov_fmaak_constants_same
380    ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF
381    ; PAIR-GFX12-NEXT: $sgpr0 = IMPLICIT_DEF
382    ; 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
383    $vgpr0 = IMPLICIT_DEF
384    $sgpr0 = IMPLICIT_DEF
385    ; should be able to pair using 1 deduplicated literal
386    $vgpr1 = V_MOV_B32_e32 981467136, implicit $exec
387    $vgpr2 = V_FMAAK_F32 $sgpr0, $vgpr0, 981467136, implicit $mode, implicit $exec
388
389...
390
391---
392name:            vopd_debug
393tracksRegLiveness: true
394body:             |
395  bb.0:
396
397    ; SCHED-LABEL: name: vopd_debug
398    ; SCHED: $vgpr0 = IMPLICIT_DEF
399    ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
400    ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
401    ; SCHED-NEXT: DBG_VALUE $vgpr0, 0, 0
402    ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
403    ;
404    ; PAIR-GFX11-LABEL: name: vopd_debug
405    ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF
406    ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
407    ; 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
408    ; PAIR-GFX11-NEXT: DBG_VALUE $vgpr0, 0, 0
409    ;
410    ; PAIR-GFX12-LABEL: name: vopd_debug
411    ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF
412    ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
413    ; 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
414    ; PAIR-GFX12-NEXT: DBG_VALUE $vgpr0, 0, 0
415    $vgpr0 = IMPLICIT_DEF
416    $vgpr1 = IMPLICIT_DEF
417    ; TODO Debug values disable VOPD creation
418    $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
419    DBG_VALUE $vgpr0, 0, 0
420    $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
421
422...
423
424---
425name:            vopd_schedule_unconstrained
426tracksRegLiveness: true
427body:             |
428  bb.0:
429    liveins: $vcc_lo
430
431    ; SCHED-LABEL: name: vopd_schedule_unconstrained
432    ; SCHED: liveins: $vcc_lo
433    ; SCHED-NEXT: {{  $}}
434    ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF
435    ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
436    ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
437    ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
438    ; SCHED-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
439    ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
440    ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
441    ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
442    ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
443    ; SCHED-NEXT: $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
444    ; SCHED-NEXT: $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
445    ; SCHED-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
446    ; SCHED-NEXT: $vgpr17 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
447    ; SCHED-NEXT: $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
448    ; SCHED-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo
449    ; SCHED-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
450    ; SCHED-NEXT: $vgpr14 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
451    ;
452    ; PAIR-GFX11-LABEL: name: vopd_schedule_unconstrained
453    ; PAIR-GFX11: liveins: $vcc_lo
454    ; PAIR-GFX11-NEXT: {{  $}}
455    ; PAIR-GFX11-NEXT: $vgpr2 = IMPLICIT_DEF
456    ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
457    ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF
458    ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
459    ; PAIR-GFX11-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
460    ; 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
461    ; PAIR-GFX11-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
462    ; PAIR-GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
463    ; 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
464    ; PAIR-GFX11-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
465    ; 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
466    ; PAIR-GFX11-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo
467    ; PAIR-GFX11-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
468    ; PAIR-GFX11-NEXT: $vgpr14 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
469    ;
470    ; PAIR-GFX12-LABEL: name: vopd_schedule_unconstrained
471    ; PAIR-GFX12: liveins: $vcc_lo
472    ; PAIR-GFX12-NEXT: {{  $}}
473    ; PAIR-GFX12-NEXT: $vgpr2 = IMPLICIT_DEF
474    ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
475    ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF
476    ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
477    ; PAIR-GFX12-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
478    ; 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
479    ; PAIR-GFX12-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
480    ; PAIR-GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
481    ; 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
482    ; PAIR-GFX12-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
483    ; 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
484    ; PAIR-GFX12-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo
485    ; PAIR-GFX12-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
486    ; PAIR-GFX12-NEXT: $vgpr14 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
487    $vgpr0 = IMPLICIT_DEF
488    $vgpr1 = IMPLICIT_DEF
489    $vgpr2 = IMPLICIT_DEF
490    $vgpr3 = IMPLICIT_DEF
491    $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, $vgpr2, implicit $mode, implicit $exec
492    $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
493    $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
494    $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
495    $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
496    $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
497    ; $vgpr9 = V_FMAMK_F32 $vgpr0, 10, $vgpr2, implicit $mode, implicit $exec
498    $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
499    $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
500    $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
501    $vgpr17 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
502    ; $vgpr18 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec
503    ; $vgpr11 = V_FMAC_F32_e32 10, $vgpr1, $vgpr11, implicit $mode, implicit $exec
504    $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
505    $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
506    $vgpr14 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
507
508...
509
510---
511name:            vopd_schedule_unconstrained_2
512tracksRegLiveness: true
513body:             |
514  bb.0:
515    liveins: $vcc_lo
516
517    ; SCHED-LABEL: name: vopd_schedule_unconstrained_2
518    ; SCHED: liveins: $vcc_lo
519    ; SCHED-NEXT: {{  $}}
520    ; SCHED-NEXT: $vgpr2 = IMPLICIT_DEF
521    ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
522    ; SCHED-NEXT: $vgpr0 = IMPLICIT_DEF
523    ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
524    ; SCHED-NEXT: $vgpr20 = IMPLICIT_DEF
525    ; SCHED-NEXT: $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
526    ; SCHED-NEXT: $vgpr35 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
527    ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
528    ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
529    ; SCHED-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
530    ; SCHED-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
531    ; SCHED-NEXT: $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
532    ; SCHED-NEXT: $vgpr29 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
533    ; SCHED-NEXT: $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
534    ; SCHED-NEXT: $vgpr20 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr20, implicit $mode, implicit $exec
535    ; SCHED-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
536    ; SCHED-NEXT: $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
537    ; SCHED-NEXT: $vgpr17 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
538    ; SCHED-NEXT: $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
539    ; SCHED-NEXT: $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
540    ; SCHED-NEXT: $vgpr37 = V_CNDMASK_B32_e32 $vgpr0, killed $vgpr3, implicit $mode, implicit $exec, implicit $vcc_lo
541    ; SCHED-NEXT: $vgpr14 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
542    ; SCHED-NEXT: $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
543    ; SCHED-NEXT: $vgpr21 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
544    ; SCHED-NEXT: $vgpr24 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
545    ; SCHED-NEXT: $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
546    ; SCHED-NEXT: $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
547    ; SCHED-NEXT: $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
548    ; SCHED-NEXT: $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo
549    ; SCHED-NEXT: $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
550    ; SCHED-NEXT: $vgpr32 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
551    ;
552    ; PAIR-GFX11-LABEL: name: vopd_schedule_unconstrained_2
553    ; PAIR-GFX11: liveins: $vcc_lo
554    ; PAIR-GFX11-NEXT: {{  $}}
555    ; PAIR-GFX11-NEXT: $vgpr2 = IMPLICIT_DEF
556    ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
557    ; PAIR-GFX11-NEXT: $vgpr0 = IMPLICIT_DEF
558    ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
559    ; PAIR-GFX11-NEXT: $vgpr20 = IMPLICIT_DEF
560    ; 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
561    ; 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
562    ; PAIR-GFX11-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
563    ; PAIR-GFX11-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
564    ; 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
565    ; 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
566    ; PAIR-GFX11-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
567    ; 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
568    ; 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
569    ; 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
570    ; PAIR-GFX11-NEXT: $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
571    ; 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
572    ; PAIR-GFX11-NEXT: $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
573    ; PAIR-GFX11-NEXT: $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
574    ; PAIR-GFX11-NEXT: $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
575    ; PAIR-GFX11-NEXT: $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo
576    ; PAIR-GFX11-NEXT: $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
577    ; PAIR-GFX11-NEXT: $vgpr32 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
578    ;
579    ; PAIR-GFX12-LABEL: name: vopd_schedule_unconstrained_2
580    ; PAIR-GFX12: liveins: $vcc_lo
581    ; PAIR-GFX12-NEXT: {{  $}}
582    ; PAIR-GFX12-NEXT: $vgpr2 = IMPLICIT_DEF
583    ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
584    ; PAIR-GFX12-NEXT: $vgpr0 = IMPLICIT_DEF
585    ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
586    ; PAIR-GFX12-NEXT: $vgpr20 = IMPLICIT_DEF
587    ; 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
588    ; 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
589    ; PAIR-GFX12-NEXT: $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, killed $vgpr2, implicit $mode, implicit $exec
590    ; PAIR-GFX12-NEXT: $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
591    ; 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
592    ; 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
593    ; PAIR-GFX12-NEXT: $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
594    ; 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
595    ; 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
596    ; 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
597    ; PAIR-GFX12-NEXT: $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
598    ; 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
599    ; PAIR-GFX12-NEXT: $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc_lo
600    ; PAIR-GFX12-NEXT: $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
601    ; PAIR-GFX12-NEXT: $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
602    ; PAIR-GFX12-NEXT: $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, killed $vgpr2, implicit $mode, implicit $exec, implicit killed $vcc_lo
603    ; PAIR-GFX12-NEXT: $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
604    ; PAIR-GFX12-NEXT: $vgpr32 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
605    $vgpr0 = IMPLICIT_DEF
606    $vgpr1 = IMPLICIT_DEF
607    $vgpr2 = IMPLICIT_DEF
608    $vgpr3 = IMPLICIT_DEF
609    $vgpr2 = V_FMAC_F32_e32 10, $vgpr1, $vgpr2, implicit $mode, implicit $exec
610    $vgpr2 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
611    $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
612    $vgpr10 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
613    $vgpr4 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
614    $vgpr6 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
615    ; $vgpr9 = V_FMAMK_F32 $vgpr0, 10, $vgpr2, implicit $mode, implicit $exec
616    $vgpr11 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
617    $vgpr19 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
618    $vgpr12 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
619    $vgpr17 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
620    ; $vgpr18 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec
621    ; $vgpr11 = V_FMAC_F32_e32 10, $vgpr1, $vgpr11, implicit $mode, implicit $exec
622    $vgpr15 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
623    $vgpr16 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
624    $vgpr14 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
625    $vgpr20 = IMPLICIT_DEF
626    $vgpr20 = V_FMAC_F32_e32 10, $vgpr1, $vgpr20, implicit $mode, implicit $exec
627    $vgpr20 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
628    $vgpr21 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
629    $vgpr28 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
630    $vgpr22 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
631    $vgpr24 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
632    ; $vgpr9 = V_FMAMK_F32 $vgpr0, 10, $vgpr2, implicit $mode, implicit $exec
633    $vgpr29 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
634    $vgpr37 = V_CNDMASK_B32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec, implicit $vcc
635    $vgpr31 = V_ADD_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
636    $vgpr35 = V_MUL_F32_e32 $vgpr0, $vgpr0, implicit $mode, implicit $exec
637    ; $vgpr18 = V_FMAMK_F32 $vgpr0, 10, $vgpr3, implicit $mode, implicit $exec
638    ; $vgpr11 = V_FMAC_F32_e32 10, $vgpr1, $vgpr11, implicit $mode, implicit $exec
639    $vgpr33 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $mode, implicit $exec, implicit $vcc
640    $vgpr34 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
641    $vgpr32 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
642
643...
644
645---
646name: vopd_mov_fixup
647tracksRegLiveness: true
648body: |
649  bb.0:
650    ; SCHED-LABEL: name: vopd_mov_fixup
651    ; SCHED: $vgpr0 = IMPLICIT_DEF
652    ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
653    ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
654    ; SCHED-NEXT: $vgpr3 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr1, implicit $mode, implicit $exec
655    ; SCHED-NEXT: $vgpr4 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
656    ; SCHED-NEXT: $vgpr5 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
657    ;
658    ; PAIR-GFX11-LABEL: name: vopd_mov_fixup
659    ; PAIR-GFX11: $vgpr0 = IMPLICIT_DEF
660    ; PAIR-GFX11-NEXT: $vgpr1 = IMPLICIT_DEF
661    ; 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
662    ; 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
663    ;
664    ; PAIR-GFX12-LABEL: name: vopd_mov_fixup
665    ; PAIR-GFX12: $vgpr0 = IMPLICIT_DEF
666    ; PAIR-GFX12-NEXT: $vgpr1 = IMPLICIT_DEF
667    ; 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
668    ; 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
669    $vgpr0 = IMPLICIT_DEF
670    $vgpr1 = IMPLICIT_DEF
671    ; should pair
672    $vgpr2 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
673    $vgpr3 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
674    ; should pair
675    $vgpr4 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
676    $vgpr5 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
677...
678
679---
680name: vopd_mov_fixup_fail
681tracksRegLiveness: true
682body: |
683  bb.0:
684    ; SCHED-LABEL: name: vopd_mov_fixup_fail
685    ; SCHED: $vgpr0 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
686    ; SCHED-NEXT: $vgpr1 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds + 4, implicit $exec
687    ;
688    ; PAIR-LABEL: name: vopd_mov_fixup_fail
689    ; PAIR: $vgpr0 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
690    ; PAIR-NEXT: $vgpr1 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds + 4, implicit $exec
691    $vgpr0 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds, implicit $exec
692    $vgpr1 = V_MOV_B32_e32 target-flags(amdgpu-abs32-lo) @lds + 4, implicit $exec
693...
694
695---
696name:            vopd_no_combine_dependent_subreg
697tracksRegLiveness: true
698body:             |
699  bb.0:
700
701    ; SCHED-LABEL: name: vopd_no_combine_dependent_subreg
702    ; SCHED: $vgpr0 = IMPLICIT_DEF
703    ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit-def $vgpr2_vgpr3, implicit $exec
704    ; SCHED-NEXT: $vgpr5 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr3, implicit $mode, implicit $exec
705    ;
706    ; PAIR-LABEL: name: vopd_no_combine_dependent_subreg
707    ; PAIR: $vgpr0 = IMPLICIT_DEF
708    ; PAIR-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit-def $vgpr2_vgpr3, implicit $exec
709    ; PAIR-NEXT: $vgpr5 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr3, implicit $mode, implicit $exec
710    $vgpr0 = IMPLICIT_DEF
711    $vgpr2 = V_MOV_B32_e32 0, implicit-def $vgpr2_vgpr3, implicit $exec
712    $vgpr5 = V_ADD_F32_e32 $vgpr0, $vgpr3, implicit $mode, implicit $exec
713...
714
715---
716name:            vopd_mov_mov_same_src_bank
717tracksRegLiveness: true
718body:             |
719  bb.0:
720
721    ; SCHED-LABEL: name: vopd_mov_mov_same_src_bank
722    ; SCHED: $vgpr1 = IMPLICIT_DEF
723    ; SCHED-NEXT: $vgpr5 = IMPLICIT_DEF
724    ; SCHED-NEXT: $vgpr2 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
725    ; SCHED-NEXT: $vgpr3 = V_MOV_B32_e32 killed $vgpr5, implicit $exec
726    ;
727    ; PAIR-GFX11-LABEL: name: vopd_mov_mov_same_src_bank
728    ; PAIR-GFX11: $vgpr1 = IMPLICIT_DEF
729    ; PAIR-GFX11-NEXT: $vgpr5 = IMPLICIT_DEF
730    ; PAIR-GFX11-NEXT: $vgpr2 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
731    ; PAIR-GFX11-NEXT: $vgpr3 = V_MOV_B32_e32 killed $vgpr5, implicit $exec
732    ;
733    ; PAIR-GFX12-LABEL: name: vopd_mov_mov_same_src_bank
734    ; PAIR-GFX12: $vgpr1 = IMPLICIT_DEF
735    ; PAIR-GFX12-NEXT: $vgpr5 = IMPLICIT_DEF
736    ; 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
737    $vgpr1 = IMPLICIT_DEF
738    $vgpr5 = IMPLICIT_DEF
739    $vgpr2 = V_MOV_B32_e32 $vgpr1, implicit $exec
740    $vgpr3 = V_MOV_B32_e32 $vgpr5, implicit $exec
741...
742
743---
744# There is no race between mov and add, they are executed at the same time
745name:            vopd_combine_opy_overwrites_opx
746tracksRegLiveness: true
747body:             |
748  bb.0:
749    ; SCHED-LABEL: name: vopd_combine_opy_overwrites_opx
750    ; SCHED: $vgpr1 = IMPLICIT_DEF
751    ; SCHED-NEXT: $vgpr3 = IMPLICIT_DEF
752    ; SCHED-NEXT: $vgpr0 = V_MOV_B32_e32 killed $vgpr1, implicit $exec
753    ; SCHED-NEXT: $vgpr1 = V_ADD_F32_e32 killed $vgpr3, $vgpr3, implicit $mode, implicit $exec
754    ;
755    ; PAIR-GFX11-LABEL: name: vopd_combine_opy_overwrites_opx
756    ; PAIR-GFX11: $vgpr1 = IMPLICIT_DEF
757    ; PAIR-GFX11-NEXT: $vgpr3 = IMPLICIT_DEF
758    ; PAIR-GFX11-NEXT: $vgpr0, $vgpr1 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32_gfx11 killed $vgpr1, killed $vgpr3, $vgpr3, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
759    ;
760    ; PAIR-GFX12-LABEL: name: vopd_combine_opy_overwrites_opx
761    ; PAIR-GFX12: $vgpr1 = IMPLICIT_DEF
762    ; PAIR-GFX12-NEXT: $vgpr3 = IMPLICIT_DEF
763    ; PAIR-GFX12-NEXT: $vgpr0, $vgpr1 = V_DUAL_MOV_B32_e32_X_ADD_F32_e32_gfx12 killed $vgpr1, killed $vgpr3, $vgpr3, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
764    $vgpr1 = IMPLICIT_DEF
765    $vgpr3 = IMPLICIT_DEF
766    $vgpr0 = V_MOV_B32_e32 $vgpr1, implicit $exec
767    $vgpr1 = V_ADD_F32_e32 $vgpr3, $vgpr3, implicit $mode, implicit $exec
768...
769
770---
771# OPY cannot cosume value produced by OPX
772name:            vopd_no_combine_opx_overwrites_opy
773tracksRegLiveness: true
774body:             |
775  bb.0:
776    ; SCHED-LABEL: name: vopd_no_combine_opx_overwrites_opy
777    ; SCHED: $vgpr1 = IMPLICIT_DEF
778    ; SCHED-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr1, implicit $exec
779    ; SCHED-NEXT: $vgpr3 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr1, implicit $mode, implicit $exec
780    ;
781    ; PAIR-LABEL: name: vopd_no_combine_opx_overwrites_opy
782    ; PAIR: $vgpr1 = IMPLICIT_DEF
783    ; PAIR-NEXT: $vgpr0 = V_MOV_B32_e32 $vgpr1, implicit $exec
784    ; PAIR-NEXT: $vgpr3 = V_ADD_F32_e32 killed $vgpr0, killed $vgpr1, implicit $mode, implicit $exec
785    $vgpr1 = IMPLICIT_DEF
786    $vgpr0 = V_MOV_B32_e32 $vgpr1, implicit $exec
787    $vgpr3 = V_ADD_F32_e32 $vgpr0, $vgpr1, implicit $mode, implicit $exec
788...
789