1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -run-pass=instruction-select -o - %s | FileCheck -check-prefix=GFX9 %s
3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -run-pass=instruction-select -o - %s | FileCheck -check-prefix=GFX9 %s
4
5---
6name: v_shufflevector_v2s16_v2s16_u_u
7tracksRegLiveness: true
8legalized:       true
9regBankSelected: true
10
11body: |
12  bb.0:
13    liveins: $vgpr0, $vgpr1
14
15    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_u_u
16    ; GFX9: liveins: $vgpr0, $vgpr1
17    ; GFX9: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
18    ; GFX9: $vgpr0 = COPY [[DEF]]
19    %0:vgpr(<2 x s16>) = COPY $vgpr0
20    %1:vgpr(<2 x s16>) = COPY $vgpr1
21    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, undef)
22    $vgpr0 = COPY %2
23
24...
25
26---
27name: v_shufflevector_v2s16_v2s16_0_u
28tracksRegLiveness: true
29legalized:       true
30regBankSelected: true
31
32body: |
33  bb.0:
34    liveins: $vgpr0, $vgpr1
35
36    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_0_u
37    ; GFX9: liveins: $vgpr0, $vgpr1
38    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
39    ; GFX9: $vgpr0 = COPY [[COPY]]
40    %0:vgpr(<2 x s16>) = COPY $vgpr0
41    %1:vgpr(<2 x s16>) = COPY $vgpr1
42    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, undef)
43    $vgpr0 = COPY %2
44
45...
46
47---
48name: v_shufflevector_v2s16_v2s16_u_0
49tracksRegLiveness: true
50legalized:       true
51regBankSelected: true
52
53body: |
54  bb.0:
55    liveins: $vgpr0, $vgpr1
56
57    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_u_0
58    ; GFX9: liveins: $vgpr0, $vgpr1
59    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
60    ; GFX9: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 16, [[COPY]], implicit $exec
61    ; GFX9: $vgpr0 = COPY [[V_LSHLREV_B32_e64_]]
62    %0:vgpr(<2 x s16>) = COPY $vgpr0
63    %1:vgpr(<2 x s16>) = COPY $vgpr1
64    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 0)
65    $vgpr0 = COPY %2
66
67...
68
69---
70name: v_shufflevector_v2s16_v2s16_1_u
71tracksRegLiveness: true
72legalized:       true
73regBankSelected: true
74
75body: |
76  bb.0:
77    liveins: $vgpr0, $vgpr1
78
79    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_1_u
80    ; GFX9: liveins: $vgpr0, $vgpr1
81    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
82    ; GFX9: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 16, [[COPY]], implicit $exec
83    ; GFX9: $vgpr0 = COPY [[V_LSHRREV_B32_e64_]]
84    %0:vgpr(<2 x s16>) = COPY $vgpr0
85    %1:vgpr(<2 x s16>) = COPY $vgpr1
86    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, undef)
87    $vgpr0 = COPY %2
88
89...
90
91---
92name: v_shufflevector_v2s16_v2s16_u_1
93tracksRegLiveness: true
94legalized:       true
95regBankSelected: true
96
97body: |
98  bb.0:
99    liveins: $vgpr0, $vgpr1
100
101    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_u_1
102    ; GFX9: liveins: $vgpr0, $vgpr1
103    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
104    ; GFX9: $vgpr0 = COPY [[COPY]]
105    %0:vgpr(<2 x s16>) = COPY $vgpr0
106    %1:vgpr(<2 x s16>) = COPY $vgpr1
107    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 1)
108    $vgpr0 = COPY %2
109
110...
111
112
113---
114name: v_shufflevector_v2s16_v2s16_2_u
115tracksRegLiveness: true
116legalized:       true
117regBankSelected: true
118
119body: |
120  bb.0:
121    liveins: $vgpr0, $vgpr1
122
123    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_2_u
124    ; GFX9: liveins: $vgpr0, $vgpr1
125    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1
126    ; GFX9: $vgpr0 = COPY [[COPY]]
127    %0:vgpr(<2 x s16>) = COPY $vgpr0
128    %1:vgpr(<2 x s16>) = COPY $vgpr1
129    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, undef)
130    $vgpr0 = COPY %2
131
132...
133
134---
135name: v_shufflevector_v2s16_v2s16_u_2
136tracksRegLiveness: true
137legalized:       true
138regBankSelected: true
139
140body: |
141  bb.0:
142    liveins: $vgpr0, $vgpr1
143
144    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_u_2
145    ; GFX9: liveins: $vgpr0, $vgpr1
146    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1
147    ; GFX9: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 16, [[COPY]], implicit $exec
148    ; GFX9: $vgpr0 = COPY [[V_LSHLREV_B32_e64_]]
149    %0:vgpr(<2 x s16>) = COPY $vgpr0
150    %1:vgpr(<2 x s16>) = COPY $vgpr1
151    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 2)
152    $vgpr0 = COPY %2
153
154...
155
156---
157name: v_shufflevector_v2s16_v2s16_3_u
158tracksRegLiveness: true
159legalized:       true
160regBankSelected: true
161
162body: |
163  bb.0:
164    liveins: $vgpr0, $vgpr1
165
166    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_3_u
167    ; GFX9: liveins: $vgpr0, $vgpr1
168    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1
169    ; GFX9: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 16, [[COPY]], implicit $exec
170    ; GFX9: $vgpr0 = COPY [[V_LSHRREV_B32_e64_]]
171    %0:vgpr(<2 x s16>) = COPY $vgpr0
172    %1:vgpr(<2 x s16>) = COPY $vgpr1
173    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, undef)
174    $vgpr0 = COPY %2
175
176...
177
178---
179name: v_shufflevector_v2s16_v2s16_u_3
180tracksRegLiveness: true
181legalized:       true
182regBankSelected: true
183
184body: |
185  bb.0:
186    liveins: $vgpr0, $vgpr1
187
188    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_u_3
189    ; GFX9: liveins: $vgpr0, $vgpr1
190    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1
191    ; GFX9: $vgpr0 = COPY [[COPY]]
192    %0:vgpr(<2 x s16>) = COPY $vgpr0
193    %1:vgpr(<2 x s16>) = COPY $vgpr1
194    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 3)
195    $vgpr0 = COPY %2
196
197...
198
199---
200name: v_shufflevector_v2s16_v2s16_0_0
201tracksRegLiveness: true
202legalized:       true
203regBankSelected: true
204
205body: |
206  bb.0:
207    liveins: $vgpr0, $vgpr1
208
209    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_0_0
210    ; GFX9: liveins: $vgpr0, $vgpr1
211    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
212    ; GFX9: [[V_MOV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_MOV_B32_sdwa 0, [[COPY]], 0, 5, 2, 4, implicit $exec, implicit [[COPY]](tied-def 0)
213    ; GFX9: $vgpr0 = COPY [[V_MOV_B32_sdwa]]
214    %0:vgpr(<2 x s16>) = COPY $vgpr0
215    %1:vgpr(<2 x s16>) = COPY $vgpr1
216    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 0)
217    $vgpr0 = COPY %2
218
219...
220
221---
222name: v_shufflevector_v2s16_v2s16_0_1
223tracksRegLiveness: true
224legalized:       true
225regBankSelected: true
226
227body: |
228  bb.0:
229    liveins: $vgpr0, $vgpr1
230
231    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_0_1
232    ; GFX9: liveins: $vgpr0, $vgpr1
233    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
234    ; GFX9: $vgpr0 = COPY [[COPY]]
235    %0:vgpr(<2 x s16>) = COPY $vgpr0
236    %1:vgpr(<2 x s16>) = COPY $vgpr1
237    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 1)
238    $vgpr0 = COPY %2
239
240...
241
242---
243name: v_shufflevector_v2s16_v2s16_1_0
244tracksRegLiveness: true
245legalized:       true
246regBankSelected: true
247
248body: |
249  bb.0:
250    liveins: $vgpr0, $vgpr1
251
252    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_1_0
253    ; GFX9: liveins: $vgpr0, $vgpr1
254    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
255    ; GFX9: [[V_ALIGNBIT_B32_e64_:%[0-9]+]]:vgpr_32 = V_ALIGNBIT_B32_e64 [[COPY]], [[COPY]], 16, implicit $exec
256    ; GFX9: $vgpr0 = COPY [[V_ALIGNBIT_B32_e64_]]
257    %0:vgpr(<2 x s16>) = COPY $vgpr0
258    %1:vgpr(<2 x s16>) = COPY $vgpr1
259    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, 0)
260    $vgpr0 = COPY %2
261
262...
263
264---
265name: v_shufflevector_v2s16_v2s16_1_1
266tracksRegLiveness: true
267legalized:       true
268regBankSelected: true
269
270body: |
271  bb.0:
272    liveins: $vgpr0, $vgpr1
273
274    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_1_1
275    ; GFX9: liveins: $vgpr0, $vgpr1
276    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
277    ; GFX9: [[V_MOV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_MOV_B32_sdwa 0, [[COPY]], 0, 4, 2, 5, implicit $exec, implicit [[COPY]](tied-def 0)
278    ; GFX9: $vgpr0 = COPY [[V_MOV_B32_sdwa]]
279    %0:vgpr(<2 x s16>) = COPY $vgpr0
280    %1:vgpr(<2 x s16>) = COPY $vgpr1
281    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, 1)
282    $vgpr0 = COPY %2
283
284...
285
286---
287name: v_shufflevector_v2s16_v2s16_2_2
288tracksRegLiveness: true
289legalized:       true
290regBankSelected: true
291
292body: |
293  bb.0:
294    liveins: $vgpr0, $vgpr1
295
296    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_2_2
297    ; GFX9: liveins: $vgpr0, $vgpr1
298    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1
299    ; GFX9: [[V_MOV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_MOV_B32_sdwa 0, [[COPY]], 0, 5, 2, 4, implicit $exec, implicit [[COPY]](tied-def 0)
300    ; GFX9: $vgpr0 = COPY [[V_MOV_B32_sdwa]]
301    %0:vgpr(<2 x s16>) = COPY $vgpr0
302    %1:vgpr(<2 x s16>) = COPY $vgpr1
303    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, 2)
304    $vgpr0 = COPY %2
305
306...
307
308---
309name: v_shufflevector_v2s16_v2s16_2_3
310tracksRegLiveness: true
311legalized:       true
312regBankSelected: true
313
314body: |
315  bb.0:
316    liveins: $vgpr0, $vgpr1
317
318    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_2_3
319    ; GFX9: liveins: $vgpr0, $vgpr1
320    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1
321    ; GFX9: $vgpr0 = COPY [[COPY]]
322    %0:vgpr(<2 x s16>) = COPY $vgpr0
323    %1:vgpr(<2 x s16>) = COPY $vgpr1
324    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, 3)
325    $vgpr0 = COPY %2
326
327...
328
329---
330name: v_shufflevector_v2s16_v2s16_3_2
331tracksRegLiveness: true
332legalized:       true
333regBankSelected: true
334
335body: |
336  bb.0:
337    liveins: $vgpr0, $vgpr1
338
339    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_3_2
340    ; GFX9: liveins: $vgpr0, $vgpr1
341    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1
342    ; GFX9: [[V_ALIGNBIT_B32_e64_:%[0-9]+]]:vgpr_32 = V_ALIGNBIT_B32_e64 [[COPY]], [[COPY]], 16, implicit $exec
343    ; GFX9: $vgpr0 = COPY [[V_ALIGNBIT_B32_e64_]]
344    %0:vgpr(<2 x s16>) = COPY $vgpr0
345    %1:vgpr(<2 x s16>) = COPY $vgpr1
346    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, 2)
347    $vgpr0 = COPY %2
348
349...
350
351---
352name: v_shufflevector_v2s16_v2s16_3_3
353tracksRegLiveness: true
354legalized:       true
355regBankSelected: true
356
357body: |
358  bb.0:
359    liveins: $vgpr0, $vgpr1
360
361    ; GFX9-LABEL: name: v_shufflevector_v2s16_v2s16_3_3
362    ; GFX9: liveins: $vgpr0, $vgpr1
363    ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1
364    ; GFX9: [[V_MOV_B32_sdwa:%[0-9]+]]:vgpr_32 = V_MOV_B32_sdwa 0, [[COPY]], 0, 4, 2, 5, implicit $exec, implicit [[COPY]](tied-def 0)
365    ; GFX9: $vgpr0 = COPY [[V_MOV_B32_sdwa]]
366    %0:vgpr(<2 x s16>) = COPY $vgpr0
367    %1:vgpr(<2 x s16>) = COPY $vgpr1
368    %2:vgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, 3)
369    $vgpr0 = COPY %2
370
371...
372
373---
374name: s_shufflevector_v2s16_v2s16_u_u
375tracksRegLiveness: true
376legalized:       true
377regBankSelected: true
378
379body: |
380  bb.0:
381    liveins: $sgpr0, $sgpr1
382
383    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_u_u
384    ; GFX9: liveins: $sgpr0, $sgpr1
385    ; GFX9: [[DEF:%[0-9]+]]:sreg_32 = IMPLICIT_DEF
386    ; GFX9: $sgpr0 = COPY [[DEF]]
387    %0:sgpr(<2 x s16>) = COPY $sgpr0
388    %1:sgpr(<2 x s16>) = COPY $sgpr1
389    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, undef)
390    $sgpr0 = COPY %2
391
392...
393
394---
395name: s_shufflevector_v2s16_v2s16_0_u
396tracksRegLiveness: true
397legalized:       true
398regBankSelected: true
399
400body: |
401  bb.0:
402    liveins: $sgpr0, $sgpr1
403
404    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_0_u
405    ; GFX9: liveins: $sgpr0, $sgpr1
406    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
407    ; GFX9: $sgpr0 = COPY [[COPY]]
408    %0:sgpr(<2 x s16>) = COPY $sgpr0
409    %1:sgpr(<2 x s16>) = COPY $sgpr1
410    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, undef)
411    $sgpr0 = COPY %2
412
413...
414
415---
416name: s_shufflevector_v2s16_v2s16_u_0
417tracksRegLiveness: true
418legalized:       true
419regBankSelected: true
420
421body: |
422  bb.0:
423    liveins: $sgpr0, $sgpr1
424
425    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_u_0
426    ; GFX9: liveins: $sgpr0, $sgpr1
427    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
428    ; GFX9: [[S_LSHL_B32_:%[0-9]+]]:sreg_32 = S_LSHL_B32 [[COPY]], 16, implicit-def $scc
429    ; GFX9: $sgpr0 = COPY [[S_LSHL_B32_]]
430    %0:sgpr(<2 x s16>) = COPY $sgpr0
431    %1:sgpr(<2 x s16>) = COPY $sgpr1
432    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 0)
433    $sgpr0 = COPY %2
434
435...
436
437---
438name: s_shufflevector_v2s16_v2s16_1_u
439tracksRegLiveness: true
440legalized:       true
441regBankSelected: true
442
443body: |
444  bb.0:
445    liveins: $sgpr0, $sgpr1
446
447    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_1_u
448    ; GFX9: liveins: $sgpr0, $sgpr1
449    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
450    ; GFX9: [[S_LSHR_B32_:%[0-9]+]]:sreg_32 = S_LSHR_B32 [[COPY]], 16, implicit-def $scc
451    ; GFX9: $sgpr0 = COPY [[S_LSHR_B32_]]
452    %0:sgpr(<2 x s16>) = COPY $sgpr0
453    %1:sgpr(<2 x s16>) = COPY $sgpr1
454    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, undef)
455    $sgpr0 = COPY %2
456
457...
458
459---
460name: s_shufflevector_v2s16_v2s16_u_1
461tracksRegLiveness: true
462legalized:       true
463regBankSelected: true
464
465body: |
466  bb.0:
467    liveins: $sgpr0, $sgpr1
468
469    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_u_1
470    ; GFX9: liveins: $sgpr0, $sgpr1
471    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
472    ; GFX9: $sgpr0 = COPY [[COPY]]
473    %0:sgpr(<2 x s16>) = COPY $sgpr0
474    %1:sgpr(<2 x s16>) = COPY $sgpr1
475    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 1)
476    $sgpr0 = COPY %2
477
478...
479
480
481---
482name: s_shufflevector_v2s16_v2s16_2_u
483tracksRegLiveness: true
484legalized:       true
485regBankSelected: true
486
487body: |
488  bb.0:
489    liveins: $sgpr0, $sgpr1
490
491    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_2_u
492    ; GFX9: liveins: $sgpr0, $sgpr1
493    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1
494    ; GFX9: $sgpr0 = COPY [[COPY]]
495    %0:sgpr(<2 x s16>) = COPY $sgpr0
496    %1:sgpr(<2 x s16>) = COPY $sgpr1
497    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, undef)
498    $sgpr0 = COPY %2
499
500...
501
502---
503name: s_shufflevector_v2s16_v2s16_u_2
504tracksRegLiveness: true
505legalized:       true
506regBankSelected: true
507
508body: |
509  bb.0:
510    liveins: $sgpr0, $sgpr1
511
512    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_u_2
513    ; GFX9: liveins: $sgpr0, $sgpr1
514    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1
515    ; GFX9: [[S_LSHL_B32_:%[0-9]+]]:sreg_32 = S_LSHL_B32 [[COPY]], 16, implicit-def $scc
516    ; GFX9: $sgpr0 = COPY [[S_LSHL_B32_]]
517    %0:sgpr(<2 x s16>) = COPY $sgpr0
518    %1:sgpr(<2 x s16>) = COPY $sgpr1
519    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 2)
520    $sgpr0 = COPY %2
521
522...
523
524---
525name: s_shufflevector_v2s16_v2s16_3_u
526tracksRegLiveness: true
527legalized:       true
528regBankSelected: true
529
530body: |
531  bb.0:
532    liveins: $sgpr0, $sgpr1
533
534    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_3_u
535    ; GFX9: liveins: $sgpr0, $sgpr1
536    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1
537    ; GFX9: [[S_LSHR_B32_:%[0-9]+]]:sreg_32 = S_LSHR_B32 [[COPY]], 16, implicit-def $scc
538    ; GFX9: $sgpr0 = COPY [[S_LSHR_B32_]]
539    %0:sgpr(<2 x s16>) = COPY $sgpr0
540    %1:sgpr(<2 x s16>) = COPY $sgpr1
541    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, undef)
542    $sgpr0 = COPY %2
543
544...
545
546---
547name: s_shufflevector_v2s16_v2s16_u_3
548tracksRegLiveness: true
549legalized:       true
550regBankSelected: true
551
552body: |
553  bb.0:
554    liveins: $sgpr0, $sgpr1
555
556    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_u_3
557    ; GFX9: liveins: $sgpr0, $sgpr1
558    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1
559    ; GFX9: $sgpr0 = COPY [[COPY]]
560    %0:sgpr(<2 x s16>) = COPY $sgpr0
561    %1:sgpr(<2 x s16>) = COPY $sgpr1
562    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(undef, 3)
563    $sgpr0 = COPY %2
564
565...
566
567---
568name: s_shufflevector_v2s16_v2s16_0_0
569tracksRegLiveness: true
570legalized:       true
571regBankSelected: true
572
573body: |
574  bb.0:
575    liveins: $sgpr0, $sgpr1
576
577    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_0_0
578    ; GFX9: liveins: $sgpr0, $sgpr1
579    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
580    ; GFX9: [[S_PACK_LL_B32_B16_:%[0-9]+]]:sreg_32 = S_PACK_LL_B32_B16 [[COPY]], [[COPY]]
581    ; GFX9: $sgpr0 = COPY [[S_PACK_LL_B32_B16_]]
582    %0:sgpr(<2 x s16>) = COPY $sgpr0
583    %1:sgpr(<2 x s16>) = COPY $sgpr1
584    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 0)
585    $sgpr0 = COPY %2
586
587...
588
589---
590name: s_shufflevector_v2s16_v2s16_0_1
591tracksRegLiveness: true
592legalized:       true
593regBankSelected: true
594
595body: |
596  bb.0:
597    liveins: $sgpr0, $sgpr1
598
599    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_0_1
600    ; GFX9: liveins: $sgpr0, $sgpr1
601    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
602    ; GFX9: $sgpr0 = COPY [[COPY]]
603    %0:sgpr(<2 x s16>) = COPY $sgpr0
604    %1:sgpr(<2 x s16>) = COPY $sgpr1
605    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(0, 1)
606    $sgpr0 = COPY %2
607
608...
609
610---
611name: s_shufflevector_v2s16_v2s16_1_0
612tracksRegLiveness: true
613legalized:       true
614regBankSelected: true
615
616body: |
617  bb.0:
618    liveins: $sgpr0, $sgpr1
619
620    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_1_0
621    ; GFX9: liveins: $sgpr0, $sgpr1
622    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
623    ; GFX9: [[S_LSHR_B32_:%[0-9]+]]:sreg_32 = S_LSHR_B32 [[COPY]], 16, implicit-def $scc
624    ; GFX9: [[S_PACK_LL_B32_B16_:%[0-9]+]]:sreg_32 = S_PACK_LL_B32_B16 [[S_LSHR_B32_]], [[COPY]]
625    ; GFX9: $sgpr0 = COPY [[S_PACK_LL_B32_B16_]]
626    %0:sgpr(<2 x s16>) = COPY $sgpr0
627    %1:sgpr(<2 x s16>) = COPY $sgpr1
628    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, 0)
629    $sgpr0 = COPY %2
630
631...
632
633---
634name: s_shufflevector_v2s16_v2s16_1_1
635tracksRegLiveness: true
636legalized:       true
637regBankSelected: true
638
639body: |
640  bb.0:
641    liveins: $sgpr0, $sgpr1
642
643    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_1_1
644    ; GFX9: liveins: $sgpr0, $sgpr1
645    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0
646    ; GFX9: [[S_PACK_HH_B32_B16_:%[0-9]+]]:sreg_32 = S_PACK_HH_B32_B16 [[COPY]], [[COPY]]
647    ; GFX9: $sgpr0 = COPY [[S_PACK_HH_B32_B16_]]
648    %0:sgpr(<2 x s16>) = COPY $sgpr0
649    %1:sgpr(<2 x s16>) = COPY $sgpr1
650    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(1, 1)
651    $sgpr0 = COPY %2
652
653...
654
655---
656name: s_shufflevector_v2s16_v2s16_2_2
657tracksRegLiveness: true
658legalized:       true
659regBankSelected: true
660
661body: |
662  bb.0:
663    liveins: $sgpr0, $sgpr1
664
665    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_2_2
666    ; GFX9: liveins: $sgpr0, $sgpr1
667    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1
668    ; GFX9: [[S_PACK_LL_B32_B16_:%[0-9]+]]:sreg_32 = S_PACK_LL_B32_B16 [[COPY]], [[COPY]]
669    ; GFX9: $sgpr0 = COPY [[S_PACK_LL_B32_B16_]]
670    %0:sgpr(<2 x s16>) = COPY $sgpr0
671    %1:sgpr(<2 x s16>) = COPY $sgpr1
672    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, 2)
673    $sgpr0 = COPY %2
674
675...
676
677---
678name: s_shufflevector_v2s16_v2s16_2_3
679tracksRegLiveness: true
680legalized:       true
681regBankSelected: true
682
683body: |
684  bb.0:
685    liveins: $sgpr0, $sgpr1
686
687    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_2_3
688    ; GFX9: liveins: $sgpr0, $sgpr1
689    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1
690    ; GFX9: $sgpr0 = COPY [[COPY]]
691    %0:sgpr(<2 x s16>) = COPY $sgpr0
692    %1:sgpr(<2 x s16>) = COPY $sgpr1
693    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(2, 3)
694    $sgpr0 = COPY %2
695
696...
697
698---
699name: s_shufflevector_v2s16_v2s16_3_2
700tracksRegLiveness: true
701legalized:       true
702regBankSelected: true
703
704body: |
705  bb.0:
706    liveins: $sgpr0, $sgpr1
707
708    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_3_2
709    ; GFX9: liveins: $sgpr0, $sgpr1
710    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1
711    ; GFX9: [[S_LSHR_B32_:%[0-9]+]]:sreg_32 = S_LSHR_B32 [[COPY]], 16, implicit-def $scc
712    ; GFX9: [[S_PACK_LL_B32_B16_:%[0-9]+]]:sreg_32 = S_PACK_LL_B32_B16 [[S_LSHR_B32_]], [[COPY]]
713    ; GFX9: $sgpr0 = COPY [[S_PACK_LL_B32_B16_]]
714    %0:sgpr(<2 x s16>) = COPY $sgpr0
715    %1:sgpr(<2 x s16>) = COPY $sgpr1
716    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, 2)
717    $sgpr0 = COPY %2
718
719...
720
721---
722name: s_shufflevector_v2s16_v2s16_3_3
723tracksRegLiveness: true
724legalized:       true
725regBankSelected: true
726
727body: |
728  bb.0:
729    liveins: $sgpr0, $sgpr1
730
731    ; GFX9-LABEL: name: s_shufflevector_v2s16_v2s16_3_3
732    ; GFX9: liveins: $sgpr0, $sgpr1
733    ; GFX9: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr1
734    ; GFX9: [[S_PACK_HH_B32_B16_:%[0-9]+]]:sreg_32 = S_PACK_HH_B32_B16 [[COPY]], [[COPY]]
735    ; GFX9: $sgpr0 = COPY [[S_PACK_HH_B32_B16_]]
736    %0:sgpr(<2 x s16>) = COPY $sgpr0
737    %1:sgpr(<2 x s16>) = COPY $sgpr1
738    %2:sgpr(<2 x s16>) = G_SHUFFLE_VECTOR %0, %1, shufflemask(3, 3)
739    $sgpr0 = COPY %2
740
741...
742