[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / vopd-combine.mir
blob8d5060177c63d6f5a4956d02a48ab74af06d4c7f
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
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 ...
30 ---
31 name:            vopd_schedule
32 tracksRegLiveness: true
33 body:             |
34   bb.0:
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
65 ...
67 ---
68 name:            vopd_fmamk
69 tracksRegLiveness: true
70 body:             |
71   bb.0:
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
105 name:            vopd_fmamk_fail
106 tracksRegLiveness: true
107 body:             |
108   bb.0:
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
136 name:            vopd_cndmask
137 tracksRegLiveness: true
138 body:             |
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
201 name:            vopd_mov
202 tracksRegLiveness: true
203 body:             |
204   bb.0:
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
229 name:            vopd_mov_mov
230 tracksRegLiveness: true
231 body:             |
232   bb.0:
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
258 name:            vopd_constants_fail
259 tracksRegLiveness: true
260 body:             |
261   bb.0:
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
289 name:            vopd_constants_inlinable
290 tracksRegLiveness: true
291 body:             |
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
326 name:            vopd_constants_same
327 tracksRegLiveness: true
328 body:             |
329   bb.0:
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
363 name:            vopd_mov_fmaak_constants_same
364 tracksRegLiveness: true
365 body:             |
366   bb.0:
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
392 name:            vopd_debug
393 tracksRegLiveness: true
394 body:             |
395   bb.0:
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
425 name:            vopd_schedule_unconstrained
426 tracksRegLiveness: true
427 body:             |
428   bb.0:
429     liveins: $vcc_lo
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
511 name:            vopd_schedule_unconstrained_2
512 tracksRegLiveness: true
513 body:             |
514   bb.0:
515     liveins: $vcc_lo
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
646 name: vopd_mov_fixup
647 tracksRegLiveness: true
648 body: |
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
680 name: vopd_mov_fixup_fail
681 tracksRegLiveness: true
682 body: |
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
696 name:            vopd_no_combine_dependent_subreg
697 tracksRegLiveness: true
698 body:             |
699   bb.0:
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
716 name:            vopd_mov_mov_same_src_bank
717 tracksRegLiveness: true
718 body:             |
719   bb.0:
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
744 # There is no race between mov and add, they are executed at the same time
745 name:            vopd_combine_opy_overwrites_opx
746 tracksRegLiveness: true
747 body:             |
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
771 # OPY cannot cosume value produced by OPX
772 name:            vopd_no_combine_opx_overwrites_opy
773 tracksRegLiveness: true
774 body:             |
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