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