@@ -27,6 +27,251 @@ body: |
2727 $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
2828 ...
2929
30+ ---
31+ name : vopd_combine_hi_vgprs
32+ tracksRegLiveness : true
33+ body : |
34+ bb.0:
35+
36+ ; SCHED-LABEL: name: vopd_combine_hi_vgprs
37+ ; SCHED: $vgpr300 = IMPLICIT_DEF
38+ ; SCHED-NEXT: $vgpr301 = IMPLICIT_DEF
39+ ; SCHED-NEXT: $vgpr303 = V_SUB_F32_e32 $vgpr301, $vgpr301, implicit $mode, implicit $exec
40+ ; SCHED-NEXT: $vgpr306 = V_MUL_F32_e32 $vgpr300, $vgpr300, implicit $mode, implicit $exec
41+ ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr300, $vgpr301, implicit $exec
42+ ;
43+ ; PAIR-LABEL: name: vopd_combine_hi_vgprs
44+ ; PAIR: $vgpr300 = IMPLICIT_DEF
45+ ; PAIR-NEXT: $vgpr301 = IMPLICIT_DEF
46+ ; PAIR-NEXT: $vgpr303, $vgpr306 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 $vgpr301, $vgpr301, $vgpr300, $vgpr300, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
47+ ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr300, $vgpr301, implicit $exec
48+ $vgpr300 = IMPLICIT_DEF
49+ $vgpr301 = IMPLICIT_DEF
50+ $vgpr303 = V_SUB_F32_e32 $vgpr301, $vgpr301, implicit $mode, implicit $exec
51+ $vgpr4 = V_BFM_B32_e32 $vgpr300, $vgpr301, implicit $exec
52+ $vgpr306 = V_MUL_F32_e32 killed $vgpr300, $vgpr300, implicit $mode, implicit $exec
53+ ...
54+
55+ ---
56+ name : vopd_combine_hi_vgprs_above_512
57+ tracksRegLiveness : true
58+ body : |
59+ bb.0:
60+
61+ ; SCHED-LABEL: name: vopd_combine_hi_vgprs_above_512
62+ ; SCHED: $vgpr812 = IMPLICIT_DEF
63+ ; SCHED-NEXT: $vgpr813 = IMPLICIT_DEF
64+ ; SCHED-NEXT: $vgpr559 = V_SUB_F32_e32 $vgpr813, $vgpr813, implicit $mode, implicit $exec
65+ ; SCHED-NEXT: $vgpr562 = V_MUL_F32_e32 $vgpr812, $vgpr812, implicit $mode, implicit $exec
66+ ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr812, $vgpr813, implicit $exec
67+ ;
68+ ; PAIR-LABEL: name: vopd_combine_hi_vgprs_above_512
69+ ; PAIR: $vgpr812 = IMPLICIT_DEF
70+ ; PAIR-NEXT: $vgpr813 = IMPLICIT_DEF
71+ ; PAIR-NEXT: $vgpr559, $vgpr562 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 $vgpr813, $vgpr813, $vgpr812, $vgpr812, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
72+ ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr812, $vgpr813, implicit $exec
73+ $vgpr812 = IMPLICIT_DEF
74+ $vgpr813 = IMPLICIT_DEF
75+ $vgpr559 = V_SUB_F32_e32 $vgpr813, $vgpr813, implicit $mode, implicit $exec
76+ $vgpr4 = V_BFM_B32_e32 $vgpr812, $vgpr813, implicit $exec
77+ $vgpr562 = V_MUL_F32_e32 killed $vgpr812, $vgpr812, implicit $mode, implicit $exec
78+ ...
79+
80+ ---
81+ name : mixed_vgprs_low_and_hi_dst
82+ tracksRegLiveness : true
83+ body : |
84+ bb.0:
85+
86+ ; SCHED-LABEL: name: mixed_vgprs_low_and_hi_dst
87+ ; SCHED: $vgpr0 = IMPLICIT_DEF
88+ ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
89+ ; SCHED-NEXT: $vgpr303 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
90+ ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec
91+ ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
92+ ;
93+ ; PAIR-LABEL: name: mixed_vgprs_low_and_hi_dst
94+ ; PAIR: $vgpr0 = IMPLICIT_DEF
95+ ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
96+ ; PAIR-NEXT: $vgpr303 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
97+ ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec
98+ ; PAIR-NEXT: $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
99+ $vgpr0 = IMPLICIT_DEF
100+ $vgpr1 = IMPLICIT_DEF
101+ $vgpr303 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
102+ $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec
103+ $vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
104+ ...
105+
106+ ---
107+ name : mixed_vgprs_low_and_hi_scr0
108+ tracksRegLiveness : true
109+ body : |
110+ bb.0:
111+
112+ ; SCHED-LABEL: name: mixed_vgprs_low_and_hi_scr0
113+ ; SCHED: $vgpr0 = IMPLICIT_DEF
114+ ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
115+ ; SCHED-NEXT: $vgpr300 = IMPLICIT_DEF
116+ ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
117+ ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec
118+ ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, killed $vgpr0, implicit $mode, implicit $exec
119+ ;
120+ ; PAIR-LABEL: name: mixed_vgprs_low_and_hi_scr0
121+ ; PAIR: $vgpr0 = IMPLICIT_DEF
122+ ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
123+ ; PAIR-NEXT: $vgpr300 = IMPLICIT_DEF
124+ ; PAIR-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
125+ ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec
126+ ; PAIR-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, killed $vgpr0, implicit $mode, implicit $exec
127+ $vgpr0 = IMPLICIT_DEF
128+ $vgpr1 = IMPLICIT_DEF
129+ $vgpr300 = IMPLICIT_DEF
130+ $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
131+ $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec
132+ $vgpr6 = V_MUL_F32_e32 killed $vgpr300, $vgpr0, implicit $mode, implicit $exec
133+ ...
134+
135+ ---
136+ name : mixed_vgprs_low_and_hi_scr1
137+ tracksRegLiveness : true
138+ body : |
139+ bb.0:
140+
141+ ; SCHED-LABEL: name: mixed_vgprs_low_and_hi_scr1
142+ ; SCHED: $vgpr0 = IMPLICIT_DEF
143+ ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
144+ ; SCHED-NEXT: $vgpr300 = IMPLICIT_DEF
145+ ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr301, implicit $mode, implicit $exec
146+ ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec
147+ ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, killed $vgpr0, implicit $mode, implicit $exec
148+ ;
149+ ; PAIR-LABEL: name: mixed_vgprs_low_and_hi_scr1
150+ ; PAIR: $vgpr0 = IMPLICIT_DEF
151+ ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
152+ ; PAIR-NEXT: $vgpr300 = IMPLICIT_DEF
153+ ; PAIR-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr301, implicit $mode, implicit $exec
154+ ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 $vgpr0, killed $vgpr1, implicit $exec
155+ ; PAIR-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, killed $vgpr0, implicit $mode, implicit $exec
156+ $vgpr0 = IMPLICIT_DEF
157+ $vgpr1 = IMPLICIT_DEF
158+ $vgpr300 = IMPLICIT_DEF
159+ $vgpr3 = V_SUB_F32_e32 $vgpr1, $vgpr301, implicit $mode, implicit $exec
160+ $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec
161+ $vgpr6 = V_MUL_F32_e32 killed $vgpr300, $vgpr0, implicit $mode, implicit $exec
162+ ...
163+
164+ ---
165+ name : mixed_vgprs_hi_and_hi_dst_different_msb
166+ tracksRegLiveness : true
167+ body : |
168+ bb.0:
169+
170+ ; SCHED-LABEL: name: mixed_vgprs_hi_and_hi_dst_different_msb
171+ ; SCHED: $vgpr0 = IMPLICIT_DEF
172+ ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
173+ ; SCHED-NEXT: $vgpr559 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
174+ ; SCHED-NEXT: $vgpr303 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
175+ ;
176+ ; PAIR-LABEL: name: mixed_vgprs_hi_and_hi_dst_different_msb
177+ ; PAIR: $vgpr0 = IMPLICIT_DEF
178+ ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
179+ ; PAIR-NEXT: $vgpr559 = V_SUB_F32_e32 killed $vgpr1, $vgpr1, implicit $mode, implicit $exec
180+ ; PAIR-NEXT: $vgpr303 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
181+ $vgpr0 = IMPLICIT_DEF
182+ $vgpr1 = IMPLICIT_DEF
183+ $vgpr559 = V_SUB_F32_e32 $vgpr1, $vgpr1, implicit $mode, implicit $exec
184+ $vgpr303 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
185+ ...
186+
187+ ---
188+ name : mixed_vgprs_low_and_hi_scr0_different_msb
189+ tracksRegLiveness : true
190+ body : |
191+ bb.0:
192+
193+ ; SCHED-LABEL: name: mixed_vgprs_low_and_hi_scr0_different_msb
194+ ; SCHED: $vgpr0 = IMPLICIT_DEF
195+ ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
196+ ; SCHED-NEXT: $vgpr513 = IMPLICIT_DEF
197+ ; SCHED-NEXT: $vgpr812 = IMPLICIT_DEF
198+ ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr513, killed $vgpr1, implicit $mode, implicit $exec
199+ ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr812, killed $vgpr0, implicit $mode, implicit $exec
200+ ;
201+ ; PAIR-LABEL: name: mixed_vgprs_low_and_hi_scr0_different_msb
202+ ; PAIR: $vgpr0 = IMPLICIT_DEF
203+ ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
204+ ; PAIR-NEXT: $vgpr513 = IMPLICIT_DEF
205+ ; PAIR-NEXT: $vgpr812 = IMPLICIT_DEF
206+ ; PAIR-NEXT: $vgpr3 = V_SUB_F32_e32 $vgpr513, killed $vgpr1, implicit $mode, implicit $exec
207+ ; PAIR-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr812, killed $vgpr0, implicit $mode, implicit $exec
208+ $vgpr0 = IMPLICIT_DEF
209+ $vgpr1 = IMPLICIT_DEF
210+ $vgpr513 = IMPLICIT_DEF
211+ $vgpr812 = IMPLICIT_DEF
212+ $vgpr3 = V_SUB_F32_e32 $vgpr513, $vgpr1, implicit $mode, implicit $exec
213+ $vgpr6 = V_MUL_F32_e32 killed $vgpr812, $vgpr0, implicit $mode, implicit $exec
214+ ...
215+
216+ ---
217+ name : vopd_combine_sgpr_src0
218+ tracksRegLiveness : true
219+ body : |
220+ bb.0:
221+
222+ ; SCHED-LABEL: name: vopd_combine_sgpr_src0
223+ ; SCHED: $vgpr0 = IMPLICIT_DEF
224+ ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
225+ ; SCHED-NEXT: $vgpr300 = IMPLICIT_DEF
226+ ; SCHED-NEXT: $sgpr0 = IMPLICIT_DEF
227+ ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 killed $sgpr0, $vgpr1, implicit $mode, implicit $exec
228+ ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, $vgpr0, implicit $mode, implicit $exec
229+ ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
230+ ;
231+ ; PAIR-LABEL: name: vopd_combine_sgpr_src0
232+ ; PAIR: $vgpr0 = IMPLICIT_DEF
233+ ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
234+ ; PAIR-NEXT: $vgpr300 = IMPLICIT_DEF
235+ ; PAIR-NEXT: $sgpr0 = IMPLICIT_DEF
236+ ; PAIR-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 killed $sgpr0, $vgpr1, $vgpr300, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
237+ ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
238+ $vgpr0 = IMPLICIT_DEF
239+ $vgpr1 = IMPLICIT_DEF
240+ $vgpr300 = IMPLICIT_DEF
241+ $sgpr0 = IMPLICIT_DEF
242+ $vgpr3 = V_SUB_F32_e32 $sgpr0, $vgpr1, implicit $mode, implicit $exec
243+ $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec
244+ $vgpr6 = V_MUL_F32_e32 killed $vgpr300, $vgpr0, implicit $mode, implicit $exec
245+ ...
246+
247+ ---
248+ name : vopd_combine_imm_src0
249+ tracksRegLiveness : true
250+ body : |
251+ bb.0:
252+
253+ ; SCHED-LABEL: name: vopd_combine_imm_src0
254+ ; SCHED: $vgpr0 = IMPLICIT_DEF
255+ ; SCHED-NEXT: $vgpr1 = IMPLICIT_DEF
256+ ; SCHED-NEXT: $vgpr300 = IMPLICIT_DEF
257+ ; SCHED-NEXT: $vgpr3 = V_SUB_F32_e32 0, $vgpr1, implicit $mode, implicit $exec
258+ ; SCHED-NEXT: $vgpr6 = V_MUL_F32_e32 $vgpr300, $vgpr0, implicit $mode, implicit $exec
259+ ; SCHED-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
260+ ;
261+ ; PAIR-LABEL: name: vopd_combine_imm_src0
262+ ; PAIR: $vgpr0 = IMPLICIT_DEF
263+ ; PAIR-NEXT: $vgpr1 = IMPLICIT_DEF
264+ ; PAIR-NEXT: $vgpr300 = IMPLICIT_DEF
265+ ; PAIR-NEXT: $vgpr3, $vgpr6 = V_DUAL_SUB_F32_e32_X_MUL_F32_e32_gfx1250 0, $vgpr1, $vgpr300, $vgpr0, implicit $mode, implicit $exec, implicit $mode, implicit $exec, implicit $mode, implicit $exec
266+ ; PAIR-NEXT: $vgpr4 = V_BFM_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
267+ $vgpr0 = IMPLICIT_DEF
268+ $vgpr1 = IMPLICIT_DEF
269+ $vgpr300 = IMPLICIT_DEF
270+ $vgpr3 = V_SUB_F32_e32 0, $vgpr1, implicit $mode, implicit $exec
271+ $vgpr4 = V_BFM_B32_e32 $vgpr0, $vgpr1, implicit $exec
272+ $vgpr6 = V_MUL_F32_e32 killed $vgpr300, $vgpr0, implicit $mode, implicit $exec
273+ ...
274+
30275---
31276name : vopd_mov_max_i32
32277tracksRegLiveness : true
@@ -657,6 +902,34 @@ body: |
657902 $vgpr5 = V_ASHRREV_I32_e32 $vgpr2, $vgpr3, implicit $mode, implicit $exec
658903 ...
659904
905+ ---
906+ name : vopd_combine_lshr_lshr
907+ tracksRegLiveness : true
908+ body : |
909+ bb.0:
910+
911+ ; SCHED-LABEL: name: vopd_combine_lshr_lshr
912+ ; SCHED: $vgpr300 = IMPLICIT_DEF
913+ ; SCHED-NEXT: $vgpr301 = IMPLICIT_DEF
914+ ; SCHED-NEXT: $vgpr302 = IMPLICIT_DEF
915+ ; SCHED-NEXT: $vgpr303 = IMPLICIT_DEF
916+ ; SCHED-NEXT: $vgpr304 = V_LSHRREV_B32_e32 $vgpr300, $vgpr301, implicit $exec
917+ ; SCHED-NEXT: $vgpr305 = V_LSHRREV_B32_e32 $vgpr302, $vgpr303, implicit $mode, implicit $exec
918+ ;
919+ ; PAIR-LABEL: name: vopd_combine_lshr_lshr
920+ ; PAIR: $vgpr300 = IMPLICIT_DEF
921+ ; PAIR-NEXT: $vgpr301 = IMPLICIT_DEF
922+ ; PAIR-NEXT: $vgpr302 = IMPLICIT_DEF
923+ ; PAIR-NEXT: $vgpr303 = IMPLICIT_DEF
924+ ; PAIR-NEXT: $vgpr304, $vgpr305 = V_DUAL_LSHRREV_B32_e32_X_LSHRREV_B32_e32_e96_gfx1250 $vgpr300, $vgpr301, $vgpr302, $vgpr303, implicit $exec, implicit $exec, implicit $mode, implicit $exec
925+ $vgpr300 = IMPLICIT_DEF
926+ $vgpr301 = IMPLICIT_DEF
927+ $vgpr302 = IMPLICIT_DEF
928+ $vgpr303 = IMPLICIT_DEF
929+ $vgpr304 = V_LSHRREV_B32_e32 $vgpr300, $vgpr301, implicit $exec
930+ $vgpr305 = V_LSHRREV_B32_e32 $vgpr302, $vgpr303, implicit $mode, implicit $exec
931+ ...
932+
660933---
661934name : vopd_combine_sub_u32_sub_u32
662935tracksRegLiveness : true
0 commit comments