@@ -6,7 +6,8 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_v16i16(<32 x i8> %a, <32 x i8> %b)
66; CHECK: # %bb.0:
77; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI0_0)
88; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI0_0)
9- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
9+ ; CHECK-NEXT: xvshuf.h $xr2, $xr1, $xr0
10+ ; CHECK-NEXT: xvori.b $xr0, $xr2, 0
1011; CHECK-NEXT: ret
1112 %r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , i32 9 , i32 10 , i32 11 , i32 32 , i32 33 , i32 34 , i32 35 , i32 24 , i32 25 , i32 26 , i32 27 , i32 48 , i32 49 , i32 50 , i32 51 , i32 52 , i32 53 , i32 54 , i32 55 , i32 60 , i32 61 , i32 30 , i32 31 >
1213 ret <32 x i8 > %r
@@ -17,7 +18,8 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_v8i32(<32 x i8> %a, <32 x i8> %b)
1718; CHECK: # %bb.0:
1819; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI1_0)
1920; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI1_0)
20- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
21+ ; CHECK-NEXT: xvshuf.w $xr2, $xr1, $xr0
22+ ; CHECK-NEXT: xvori.b $xr0, $xr2, 0
2123; CHECK-NEXT: ret
2224 %r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , i32 9 , i32 10 , i32 11 , i32 32 , i32 33 , i32 34 , i32 35 , i32 24 , i32 25 , i32 26 , i32 27 , i32 48 , i32 49 , i32 50 , i32 51 , i32 52 , i32 53 , i32 54 , i32 55 , i32 60 , i32 61 , i32 62 , i32 63 >
2325 ret <32 x i8 > %r
@@ -28,7 +30,8 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_v4i64(<32 x i8> %a, <32 x i8> %b)
2830; CHECK: # %bb.0:
2931; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI2_0)
3032; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI2_0)
31- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
33+ ; CHECK-NEXT: xvshuf.d $xr2, $xr1, $xr0
34+ ; CHECK-NEXT: xvori.b $xr0, $xr2, 0
3235; CHECK-NEXT: ret
3336 %r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 4 , i32 5 , i32 6 , i32 7 , i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 , i32 24 , i32 25 , i32 26 , i32 27 , i32 28 , i32 29 , i32 30 , i32 31 , i32 48 , i32 49 , i32 50 , i32 51 , i32 52 , i32 53 , i32 54 , i32 55 >
3437 ret <32 x i8 > %r
@@ -39,7 +42,7 @@ define <16 x i16> @widen_shuffle_mask_v16i16_to_v8i32(<16 x i16> %a, <16 x i16>
3942; CHECK: # %bb.0:
4043; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI3_0)
4144; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI3_0)
42- ; CHECK-NEXT: xvshuf.h $xr2, $xr1, $xr0
45+ ; CHECK-NEXT: xvshuf.w $xr2, $xr1, $xr0
4346; CHECK-NEXT: xvori.b $xr0, $xr2, 0
4447; CHECK-NEXT: ret
4548 %r = shufflevector <16 x i16 > %a , <16 x i16 > %b , <16 x i32 > <i32 0 , i32 1 , i32 6 , i32 7 , i32 16 , i32 17 , i32 2 , i32 3 , i32 10 , i32 11 , i32 12 , i32 13 , i32 24 , i32 25 , i32 26 , i32 27 >
@@ -51,7 +54,7 @@ define <16 x i16> @widen_shuffle_mask_v16i16_to_v4i64(<16 x i16> %a, <16 x i16>
5154; CHECK: # %bb.0:
5255; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI4_0)
5356; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI4_0)
54- ; CHECK-NEXT: xvshuf.h $xr2, $xr1, $xr0
57+ ; CHECK-NEXT: xvshuf.d $xr2, $xr1, $xr0
5558; CHECK-NEXT: xvori.b $xr0, $xr2, 0
5659; CHECK-NEXT: ret
5760 %r = shufflevector <16 x i16 > %a , <16 x i16 > %b , <16 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 , i32 20 , i32 21 , i32 22 , i32 23 , i32 12 , i32 13 , i32 14 , i32 15 , i32 28 , i32 29 , i32 30 , i32 31 >
@@ -63,7 +66,7 @@ define <8 x i32> @widen_shuffle_mask_v8i32_to_v4i64(<8 x i32> %a, <8 x i32> %b)
6366; CHECK: # %bb.0:
6467; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI5_0)
6568; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI5_0)
66- ; CHECK-NEXT: xvshuf.w $xr2, $xr1, $xr0
69+ ; CHECK-NEXT: xvshuf.d $xr2, $xr1, $xr0
6770; CHECK-NEXT: xvori.b $xr0, $xr2, 0
6871; CHECK-NEXT: ret
6972 %r = shufflevector <8 x i32 > %a , <8 x i32 > %b , <8 x i32 > <i32 0 , i32 1 , i32 8 , i32 9 , i32 14 , i32 15 , i32 6 , i32 7 >
@@ -73,9 +76,7 @@ define <8 x i32> @widen_shuffle_mask_v8i32_to_v4i64(<8 x i32> %a, <8 x i32> %b)
7376define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvpackev_h (<32 x i8 > %a , <32 x i8 > %b ) {
7477; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvpackev_h:
7578; CHECK: # %bb.0:
76- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI6_0)
77- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI6_0)
78- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
79+ ; CHECK-NEXT: xvpackev.h $xr0, $xr1, $xr0
7980; CHECK-NEXT: ret
8081 %r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 0 , i32 1 , i32 32 , i32 33 , i32 4 , i32 5 , i32 36 , i32 37 , i32 8 , i32 9 , i32 40 , i32 41 , i32 12 , i32 13 , i32 44 , i32 45 , i32 16 , i32 17 , i32 48 , i32 49 , i32 20 , i32 21 , i32 52 , i32 53 , i32 24 , i32 25 , i32 56 , i32 57 , i32 28 , i32 29 , i32 60 , i32 61 >
8182 ret <32 x i8 > %r
@@ -84,9 +85,7 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_xvpackev_h(<32 x i8> %a, <32 x i8>
8485define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvpackod_h (<32 x i8 > %a , <32 x i8 > %b ) {
8586; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvpackod_h:
8687; CHECK: # %bb.0:
87- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI7_0)
88- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI7_0)
89- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
88+ ; CHECK-NEXT: xvpackod.h $xr0, $xr1, $xr0
9089; CHECK-NEXT: ret
9190 %r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 2 , i32 3 , i32 34 , i32 35 , i32 6 , i32 7 , i32 38 , i32 39 , i32 10 , i32 11 , i32 42 , i32 43 , i32 14 , i32 15 , i32 46 , i32 47 , i32 18 , i32 19 , i32 50 , i32 51 , i32 22 , i32 23 , i32 54 , i32 55 , i32 26 , i32 27 , i32 58 , i32 59 , i32 30 , i32 31 , i32 62 , i32 63 >
9291 ret <32 x i8 > %r
@@ -95,9 +94,7 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_xvpackod_h(<32 x i8> %a, <32 x i8>
9594define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvpickev_h (<32 x i8 > %a , <32 x i8 > %b ) {
9695; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvpickev_h:
9796; CHECK: # %bb.0:
98- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI8_0)
99- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI8_0)
100- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
97+ ; CHECK-NEXT: xvpickev.h $xr0, $xr1, $xr0
10198; CHECK-NEXT: ret
10299 %r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 0 , i32 1 , i32 4 , i32 5 , i32 8 , i32 9 , i32 12 , i32 13 , i32 32 , i32 33 , i32 36 , i32 37 , i32 40 , i32 41 , i32 44 , i32 45 , i32 16 , i32 17 , i32 20 , i32 21 , i32 24 , i32 25 , i32 28 , i32 29 , i32 48 , i32 49 , i32 52 , i32 53 , i32 56 , i32 57 , i32 60 , i32 61 >
103100 ret <32 x i8 > %r
@@ -106,9 +103,7 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_xvpickev_h(<32 x i8> %a, <32 x i8>
106103define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvpickod_h (<32 x i8 > %a , <32 x i8 > %b ) {
107104; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvpickod_h:
108105; CHECK: # %bb.0:
109- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI9_0)
110- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI9_0)
111- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
106+ ; CHECK-NEXT: xvpickod.h $xr0, $xr1, $xr0
112107; CHECK-NEXT: ret
113108 %r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 2 , i32 3 , i32 6 , i32 7 , i32 10 , i32 11 , i32 14 , i32 15 , i32 34 , i32 35 , i32 38 , i32 39 , i32 42 , i32 43 , i32 46 , i32 47 , i32 18 , i32 19 , i32 22 , i32 23 , i32 26 , i32 27 , i32 30 , i32 31 , i32 50 , i32 51 , i32 54 , i32 55 , i32 58 , i32 59 , i32 62 , i32 63 >
114109 ret <32 x i8 > %r
@@ -117,9 +112,7 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_xvpickod_h(<32 x i8> %a, <32 x i8>
117112define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvilvl_h (<32 x i8 > %a , <32 x i8 > %b ) {
118113; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvilvl_h:
119114; CHECK: # %bb.0:
120- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI10_0)
121- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI10_0)
122- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
115+ ; CHECK-NEXT: xvilvl.h $xr0, $xr1, $xr0
123116; CHECK-NEXT: ret
124117 %r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 0 , i32 1 , i32 32 , i32 33 , i32 2 , i32 3 , i32 34 , i32 35 , i32 4 , i32 5 , i32 36 , i32 37 , i32 6 , i32 7 , i32 38 , i32 39 , i32 16 , i32 17 , i32 48 , i32 49 , i32 18 , i32 19 , i32 50 , i32 51 , i32 20 , i32 21 , i32 52 , i32 53 , i32 22 , i32 23 , i32 54 , i32 55 >
125118 ret <32 x i8 > %r
@@ -128,9 +121,7 @@ define <32 x i8> @widen_shuffle_mask_v32i8_to_xvilvl_h(<32 x i8> %a, <32 x i8> %
128121define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvilvh_h (<32 x i8 > %a , <32 x i8 > %b ) {
129122; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvilvh_h:
130123; CHECK: # %bb.0:
131- ; CHECK-NEXT: pcalau12i $a0, %pc_hi20(.LCPI11_0)
132- ; CHECK-NEXT: xvld $xr2, $a0, %pc_lo12(.LCPI11_0)
133- ; CHECK-NEXT: xvshuf.b $xr0, $xr1, $xr0, $xr2
124+ ; CHECK-NEXT: xvilvh.h $xr0, $xr1, $xr0
134125; CHECK-NEXT: ret
135126 %r = shufflevector <32 x i8 > %a , <32 x i8 > %b , <32 x i32 > <i32 8 , i32 9 , i32 40 , i32 41 , i32 10 , i32 11 , i32 42 , i32 43 , i32 12 , i32 13 , i32 44 , i32 45 , i32 14 , i32 15 , i32 46 , i32 47 , i32 24 , i32 25 , i32 56 , i32 57 , i32 26 , i32 27 , i32 58 , i32 59 , i32 28 , i32 29 , i32 60 , i32 61 , i32 30 , i32 31 , i32 62 , i32 63 >
136127 ret <32 x i8 > %r
0 commit comments