@@ -27,6 +27,251 @@ body: |
27
27
$vgpr6 = V_MUL_F32_e32 killed $vgpr0, $vgpr0, implicit $mode, implicit $exec
28
28
...
29
29
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
+
30
275
---
31
276
name : vopd_mov_max_i32
32
277
tracksRegLiveness : true
@@ -657,6 +902,34 @@ body: |
657
902
$vgpr5 = V_ASHRREV_I32_e32 $vgpr2, $vgpr3, implicit $mode, implicit $exec
658
903
...
659
904
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
+
660
933
---
661
934
name : vopd_combine_sub_u32_sub_u32
662
935
tracksRegLiveness : true
0 commit comments