@@ -68,4 +68,70 @@ define <8 x i32> @widen_shuffle_mask_v8i32_to_v4i64(<8 x i32> %a, <8 x i32> %b)
6868; CHECK-NEXT: ret
6969 %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 >
7070 ret <8 x i32 > %r
71- }
71+ }
72+
73+ define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvpackev_h (<32 x i8 > %a , <32 x i8 > %b ) {
74+ ; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvpackev_h:
75+ ; 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: ret
80+ %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 >
81+ ret <32 x i8 > %r
82+ }
83+
84+ define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvpackod_h (<32 x i8 > %a , <32 x i8 > %b ) {
85+ ; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvpackod_h:
86+ ; 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
90+ ; CHECK-NEXT: ret
91+ %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 >
92+ ret <32 x i8 > %r
93+ }
94+
95+ define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvpickev_h (<32 x i8 > %a , <32 x i8 > %b ) {
96+ ; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvpickev_h:
97+ ; 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
101+ ; CHECK-NEXT: ret
102+ %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 >
103+ ret <32 x i8 > %r
104+ }
105+
106+ define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvpickod_h (<32 x i8 > %a , <32 x i8 > %b ) {
107+ ; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvpickod_h:
108+ ; 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
112+ ; CHECK-NEXT: ret
113+ %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 >
114+ ret <32 x i8 > %r
115+ }
116+
117+ define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvilvl_h (<32 x i8 > %a , <32 x i8 > %b ) {
118+ ; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvilvl_h:
119+ ; 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
123+ ; CHECK-NEXT: ret
124+ %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 >
125+ ret <32 x i8 > %r
126+ }
127+
128+ define <32 x i8 > @widen_shuffle_mask_v32i8_to_xvilvh_h (<32 x i8 > %a , <32 x i8 > %b ) {
129+ ; CHECK-LABEL: widen_shuffle_mask_v32i8_to_xvilvh_h:
130+ ; 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
134+ ; CHECK-NEXT: ret
135+ %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 >
136+ ret <32 x i8 > %r
137+ }
0 commit comments