1 ; RUN: llc < %s -mcpu=x86-64 -mattr=+avx -x86-experimental-vector-shuffle-lowering | FileCheck %s --check-prefix=ALL --check-prefix=AVX1
2 ; RUN: llc < %s -mcpu=x86-64 -mattr=+avx2 -x86-experimental-vector-shuffle-lowering | FileCheck %s --check-prefix=ALL --check-prefix=AVX2
4 target triple = "x86_64-unknown-unknown"
6 define <8 x float> @shuffle_v8f32_00000000(<8 x float> %a, <8 x float> %b) {
7 ; ALL-LABEL: @shuffle_v8f32_00000000
9 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,0,0,0]
10 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
12 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
13 ret <8 x float> %shuffle
16 define <8 x float> @shuffle_v8f32_00000010(<8 x float> %a, <8 x float> %b) {
17 ; ALL-LABEL: @shuffle_v8f32_00000010
19 ; ALL-NEXT: vpermilps {{.*}} # xmm1 = xmm0[0,0,0,0]
20 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,0,1,0]
21 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
23 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0>
24 ret <8 x float> %shuffle
27 define <8 x float> @shuffle_v8f32_00000200(<8 x float> %a, <8 x float> %b) {
28 ; ALL-LABEL: @shuffle_v8f32_00000200
30 ; ALL-NEXT: vpermilps {{.*}} # xmm1 = xmm0[0,0,0,0]
31 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,2,0,0]
32 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
34 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0>
35 ret <8 x float> %shuffle
38 define <8 x float> @shuffle_v8f32_00003000(<8 x float> %a, <8 x float> %b) {
39 ; ALL-LABEL: @shuffle_v8f32_00003000
41 ; ALL-NEXT: vpermilps {{.*}} # xmm1 = xmm0[0,0,0,0]
42 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[3,0,0,0]
43 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
45 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0>
46 ret <8 x float> %shuffle
49 define <8 x float> @shuffle_v8f32_00040000(<8 x float> %a, <8 x float> %b) {
50 ; ALL-LABEL: @shuffle_v8f32_00040000
52 ; ALL-NEXT: vextractf128 $1, %ymm0, %xmm1
53 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm1[0,0],xmm0[0,0]
54 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm0[0,0],xmm1[2,0]
55 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,0,0,0]
56 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
58 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0>
59 ret <8 x float> %shuffle
62 define <8 x float> @shuffle_v8f32_00500000(<8 x float> %a, <8 x float> %b) {
63 ; ALL-LABEL: @shuffle_v8f32_00500000
65 ; ALL-NEXT: vextractf128 $1, %ymm0, %xmm1
66 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm1[1,0],xmm0[0,0]
67 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm0[0,0],xmm1[0,2]
68 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,0,0,0]
69 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
71 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0>
72 ret <8 x float> %shuffle
75 define <8 x float> @shuffle_v8f32_06000000(<8 x float> %a, <8 x float> %b) {
76 ; ALL-LABEL: @shuffle_v8f32_06000000
78 ; ALL-NEXT: vextractf128 $1, %ymm0, %xmm1
79 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm1[2,0],xmm0[0,0]
80 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm1[2,0],xmm0[0,0]
81 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,0,0,0]
82 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
84 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
85 ret <8 x float> %shuffle
88 define <8 x float> @shuffle_v8f32_70000000(<8 x float> %a, <8 x float> %b) {
89 ; ALL-LABEL: @shuffle_v8f32_70000000
91 ; ALL-NEXT: vextractf128 $1, %ymm0, %xmm1
92 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm1[3,0],xmm0[0,0]
93 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm1[0,2],xmm0[0,0]
94 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,0,0,0]
95 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
97 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
98 ret <8 x float> %shuffle
101 define <8 x float> @shuffle_v8f32_01014545(<8 x float> %a, <8 x float> %b) {
102 ; ALL-LABEL: @shuffle_v8f32_01014545
104 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,1,0,1,4,5,4,5]
106 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 4, i32 5, i32 4, i32 5>
107 ret <8 x float> %shuffle
110 define <8 x float> @shuffle_v8f32_00112233(<8 x float> %a, <8 x float> %b) {
111 ; ALL-LABEL: @shuffle_v8f32_00112233
113 ; ALL-NEXT: vunpcklps {{.*}} # xmm1 = xmm0[0,0,1,1]
114 ; ALL-NEXT: vunpckhps {{.*}} # xmm0 = xmm0[2,2,3,3]
115 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
117 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>
118 ret <8 x float> %shuffle
121 define <8 x float> @shuffle_v8f32_00001111(<8 x float> %a, <8 x float> %b) {
122 ; ALL-LABEL: @shuffle_v8f32_00001111
124 ; ALL-NEXT: vpermilps {{.*}} # xmm1 = xmm0[0,0,0,0]
125 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[1,1,1,1]
126 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
128 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1>
129 ret <8 x float> %shuffle
132 define <8 x float> @shuffle_v8f32_81a3c5e7(<8 x float> %a, <8 x float> %b) {
133 ; ALL-LABEL: @shuffle_v8f32_81a3c5e7
135 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4],ymm0[5],ymm1[6],ymm0[7]
137 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 8, i32 1, i32 10, i32 3, i32 12, i32 5, i32 14, i32 7>
138 ret <8 x float> %shuffle
141 define <8 x float> @shuffle_v8f32_08080808(<8 x float> %a, <8 x float> %b) {
142 ; ALL-LABEL: @shuffle_v8f32_08080808
144 ; ALL-NEXT: vpermilps {{.*}} # xmm1 = xmm1[0,0,2,0]
145 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,1,0,3]
146 ; ALL-NEXT: vblendps {{.*}} # xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]
147 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
149 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8>
150 ret <8 x float> %shuffle
153 define <8 x float> @shuffle_v8f32_08084c4c(<8 x float> %a, <8 x float> %b) {
154 ; ALL-LABEL: @shuffle_v8f32_08084c4c
156 ; ALL-NEXT: vshufps {{.*}} # ymm0 = ymm0[0,0],ymm1[0,0],ymm0[4,4],ymm1[4,4]
157 ; ALL-NEXT: vshufps {{.*}} # ymm0 = ymm0[0,2,1,3,4,6,5,7]
159 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 8, i32 0, i32 8, i32 4, i32 12, i32 4, i32 12>
160 ret <8 x float> %shuffle
163 define <8 x float> @shuffle_v8f32_8823cc67(<8 x float> %a, <8 x float> %b) {
164 ; ALL-LABEL: @shuffle_v8f32_8823cc67
166 ; ALL-NEXT: vshufps {{.*}} # ymm0 = ymm1[0,0],ymm0[2,3],ymm1[4,4],ymm0[6,7]
168 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 8, i32 8, i32 2, i32 3, i32 12, i32 12, i32 6, i32 7>
169 ret <8 x float> %shuffle
172 define <8 x float> @shuffle_v8f32_9832dc76(<8 x float> %a, <8 x float> %b) {
173 ; ALL-LABEL: @shuffle_v8f32_9832dc76
175 ; ALL-NEXT: vshufps {{.*}} # ymm0 = ymm1[1,0],ymm0[3,2],ymm1[5,4],ymm0[7,6]
177 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 9, i32 8, i32 3, i32 2, i32 13, i32 12, i32 7, i32 6>
178 ret <8 x float> %shuffle
181 define <8 x float> @shuffle_v8f32_9810dc54(<8 x float> %a, <8 x float> %b) {
182 ; ALL-LABEL: @shuffle_v8f32_9810dc54
184 ; ALL-NEXT: vshufps {{.*}} # ymm0 = ymm1[1,0],ymm0[1,0],ymm1[5,4],ymm0[5,4]
186 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 9, i32 8, i32 1, i32 0, i32 13, i32 12, i32 5, i32 4>
187 ret <8 x float> %shuffle
190 define <8 x float> @shuffle_v8f32_08194c5d(<8 x float> %a, <8 x float> %b) {
191 ; ALL-LABEL: @shuffle_v8f32_08194c5d
193 ; ALL-NEXT: vunpcklps {{.*}} # ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]
195 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
196 ret <8 x float> %shuffle
199 define <8 x float> @shuffle_v8f32_2a3b6e7f(<8 x float> %a, <8 x float> %b) {
200 ; ALL-LABEL: @shuffle_v8f32_2a3b6e7f
202 ; ALL-NEXT: vunpckhps {{.*}} # ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]
204 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
205 ret <8 x float> %shuffle
208 define <8 x float> @shuffle_v8f32_08192a3b(<8 x float> %a, <8 x float> %b) {
209 ; ALL-LABEL: @shuffle_v8f32_08192a3b
211 ; ALL-NEXT: vpermilps {{.*}} # xmm2 = xmm1[0,2,2,3]
212 ; ALL-NEXT: vpermilps {{.*}} # xmm3 = xmm0[2,1,3,3]
213 ; ALL-NEXT: vblendps {{.*}} # xmm2 = xmm3[0],xmm2[1],xmm3[2],xmm2[3]
214 ; ALL-NEXT: vpermilps {{.*}} # xmm1 = xmm1[0,0,2,1]
215 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,1,1,3]
216 ; ALL-NEXT: vblendps {{.*}} # xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]
217 ; ALL-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
219 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
220 ret <8 x float> %shuffle
223 define <8 x float> @shuffle_v8f32_08991abb(<8 x float> %a, <8 x float> %b) {
224 ; ALL-LABEL: @shuffle_v8f32_08991abb
226 ; ALL-NEXT: vpermilps {{.*}} # xmm2 = xmm0[1,1,2,3]
227 ; ALL-NEXT: vpermilps {{.*}} # xmm3 = xmm1[0,2,3,3]
228 ; ALL-NEXT: vblendps {{.*}} # xmm2 = xmm2[0],xmm3[1,2,3]
229 ; ALL-NEXT: vunpcklps {{.*}} # xmm1 = xmm1[0,0,1,1]
230 ; ALL-NEXT: vblendps {{.*}} # xmm0 = xmm0[0],xmm1[1,2,3]
231 ; ALL-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
233 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 8, i32 9, i32 9, i32 1, i32 10, i32 11, i32 11>
234 ret <8 x float> %shuffle
237 define <8 x float> @shuffle_v8f32_091b2d3f(<8 x float> %a, <8 x float> %b) {
238 ; ALL-LABEL: @shuffle_v8f32_091b2d3f
240 ; ALL-NEXT: vextractf128 $1, %ymm1, %xmm2
241 ; ALL-NEXT: vpermilps {{.*}} # xmm3 = xmm0[2,1,3,3]
242 ; ALL-NEXT: vblendps {{.*}} # xmm2 = xmm3[0],xmm2[1],xmm3[2],xmm2[3]
243 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,1,1,3]
244 ; ALL-NEXT: vblendps {{.*}} # xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]
245 ; ALL-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
247 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 9, i32 1, i32 11, i32 2, i32 13, i32 3, i32 15>
248 ret <8 x float> %shuffle
251 define <8 x float> @shuffle_v8f32_09ab1def(<8 x float> %a, <8 x float> %b) {
252 ; ALL-LABEL: @shuffle_v8f32_09ab1def
254 ; ALL-NEXT: vextractf128 $1, %ymm1, %xmm2
255 ; ALL-NEXT: vpermilps {{.*}} # xmm3 = xmm0[1,1,2,3]
256 ; ALL-NEXT: vblendps {{.*}} # xmm2 = xmm3[0],xmm2[1,2,3]
257 ; ALL-NEXT: vblendps {{.*}} # xmm0 = xmm0[0],xmm1[1,2,3]
258 ; ALL-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
260 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 9, i32 10, i32 11, i32 1, i32 13, i32 14, i32 15>
261 ret <8 x float> %shuffle
264 define <8 x float> @shuffle_v8f32_00014445(<8 x float> %a, <8 x float> %b) {
265 ; ALL-LABEL: @shuffle_v8f32_00014445
267 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,0,1,4,4,4,5]
269 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 1, i32 4, i32 4, i32 4, i32 5>
270 ret <8 x float> %shuffle
273 define <8 x float> @shuffle_v8f32_00204464(<8 x float> %a, <8 x float> %b) {
274 ; ALL-LABEL: @shuffle_v8f32_00204464
276 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,0,4,4,6,4]
278 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 0, i32 4, i32 4, i32 6, i32 4>
279 ret <8 x float> %shuffle
282 define <8 x float> @shuffle_v8f32_03004744(<8 x float> %a, <8 x float> %b) {
283 ; ALL-LABEL: @shuffle_v8f32_03004744
285 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,3,0,0,4,7,4,4]
287 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 3, i32 0, i32 0, i32 4, i32 7, i32 4, i32 4>
288 ret <8 x float> %shuffle
291 define <8 x float> @shuffle_v8f32_10005444(<8 x float> %a, <8 x float> %b) {
292 ; ALL-LABEL: @shuffle_v8f32_10005444
294 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[1,0,0,0,5,4,4,4]
296 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4>
297 ret <8 x float> %shuffle
300 define <8 x float> @shuffle_v8f32_22006644(<8 x float> %a, <8 x float> %b) {
301 ; ALL-LABEL: @shuffle_v8f32_22006644
303 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[2,2,0,0,6,6,4,4]
305 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 2, i32 2, i32 0, i32 0, i32 6, i32 6, i32 4, i32 4>
306 ret <8 x float> %shuffle
309 define <8 x float> @shuffle_v8f32_33307774(<8 x float> %a, <8 x float> %b) {
310 ; ALL-LABEL: @shuffle_v8f32_33307774
312 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[3,3,3,0,7,7,7,4]
314 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 3, i32 3, i32 3, i32 0, i32 7, i32 7, i32 7, i32 4>
315 ret <8 x float> %shuffle
318 define <8 x float> @shuffle_v8f32_32107654(<8 x float> %a, <8 x float> %b) {
319 ; ALL-LABEL: @shuffle_v8f32_32107654
321 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[3,2,1,0,7,6,5,4]
323 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
324 ret <8 x float> %shuffle
327 define <8 x float> @shuffle_v8f32_00234467(<8 x float> %a, <8 x float> %b) {
328 ; ALL-LABEL: @shuffle_v8f32_00234467
330 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,3,4,4,6,7]
332 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 3, i32 4, i32 4, i32 6, i32 7>
333 ret <8 x float> %shuffle
336 define <8 x float> @shuffle_v8f32_00224466(<8 x float> %a, <8 x float> %b) {
337 ; ALL-LABEL: @shuffle_v8f32_00224466
339 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,2,4,4,6,6]
341 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
342 ret <8 x float> %shuffle
345 define <8 x float> @shuffle_v8f32_10325476(<8 x float> %a, <8 x float> %b) {
346 ; ALL-LABEL: @shuffle_v8f32_10325476
348 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[1,0,3,2,5,4,7,6]
350 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6>
351 ret <8 x float> %shuffle
354 define <8 x float> @shuffle_v8f32_11335577(<8 x float> %a, <8 x float> %b) {
355 ; ALL-LABEL: @shuffle_v8f32_11335577
357 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[1,1,3,3,5,5,7,7]
359 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>
360 ret <8 x float> %shuffle
363 define <8 x float> @shuffle_v8f32_10235467(<8 x float> %a, <8 x float> %b) {
364 ; ALL-LABEL: @shuffle_v8f32_10235467
366 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[1,0,2,3,5,4,6,7]
368 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 1, i32 0, i32 2, i32 3, i32 5, i32 4, i32 6, i32 7>
369 ret <8 x float> %shuffle
372 define <8 x float> @shuffle_v8f32_10225466(<8 x float> %a, <8 x float> %b) {
373 ; ALL-LABEL: @shuffle_v8f32_10225466
375 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[1,0,2,2,5,4,6,6]
377 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 1, i32 0, i32 2, i32 2, i32 5, i32 4, i32 6, i32 6>
378 ret <8 x float> %shuffle
381 define <8 x float> @shuffle_v8f32_00015444(<8 x float> %a, <8 x float> %b) {
382 ; ALL-LABEL: @shuffle_v8f32_00015444
384 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,0,0,0,5,4,4,4]
385 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,0,1,4,4,4,5]
386 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
388 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 1, i32 5, i32 4, i32 4, i32 4>
389 ret <8 x float> %shuffle
392 define <8 x float> @shuffle_v8f32_00204644(<8 x float> %a, <8 x float> %b) {
393 ; ALL-LABEL: @shuffle_v8f32_00204644
395 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[0,2,0,0,4,6,4,4]
396 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,0,4,4,6,4]
397 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
399 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 0, i32 4, i32 6, i32 4, i32 4>
400 ret <8 x float> %shuffle
403 define <8 x float> @shuffle_v8f32_03004474(<8 x float> %a, <8 x float> %b) {
404 ; ALL-LABEL: @shuffle_v8f32_03004474
406 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[0,0,3,0,4,4,7,4]
407 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,3,0,0,4,7,4,4]
408 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
410 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 3, i32 0, i32 0, i32 4, i32 4, i32 7, i32 4>
411 ret <8 x float> %shuffle
414 define <8 x float> @shuffle_v8f32_10004444(<8 x float> %a, <8 x float> %b) {
415 ; ALL-LABEL: @shuffle_v8f32_10004444
417 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[0,0,0,0,4,4,4,4]
418 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[1,0,0,0,5,4,4,4]
419 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
421 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 1, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
422 ret <8 x float> %shuffle
425 define <8 x float> @shuffle_v8f32_22006446(<8 x float> %a, <8 x float> %b) {
426 ; ALL-LABEL: @shuffle_v8f32_22006446
428 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[2,0,0,2,6,4,4,6]
429 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[2,2,0,0,6,6,4,4]
430 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
432 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 2, i32 2, i32 0, i32 0, i32 6, i32 4, i32 4, i32 6>
433 ret <8 x float> %shuffle
436 define <8 x float> @shuffle_v8f32_33307474(<8 x float> %a, <8 x float> %b) {
437 ; ALL-LABEL: @shuffle_v8f32_33307474
439 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[3,0,3,0,7,4,7,4]
440 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[3,3,3,0,7,7,7,4]
441 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
443 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 3, i32 3, i32 3, i32 0, i32 7, i32 4, i32 7, i32 4>
444 ret <8 x float> %shuffle
447 define <8 x float> @shuffle_v8f32_32104567(<8 x float> %a, <8 x float> %b) {
448 ; ALL-LABEL: @shuffle_v8f32_32104567
450 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[3,2,1,0,7,6,5,4]
451 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
453 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 4, i32 5, i32 6, i32 7>
454 ret <8 x float> %shuffle
457 define <8 x float> @shuffle_v8f32_00236744(<8 x float> %a, <8 x float> %b) {
458 ; ALL-LABEL: @shuffle_v8f32_00236744
460 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[2,3,0,0,6,7,4,4]
461 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,3,4,4,6,7]
462 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
464 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 3, i32 6, i32 7, i32 4, i32 4>
465 ret <8 x float> %shuffle
468 define <8 x float> @shuffle_v8f32_00226644(<8 x float> %a, <8 x float> %b) {
469 ; ALL-LABEL: @shuffle_v8f32_00226644
471 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[2,2,0,0,6,6,4,4]
472 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,2,4,4,6,6]
473 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
475 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 6, i32 6, i32 4, i32 4>
476 ret <8 x float> %shuffle
479 define <8 x float> @shuffle_v8f32_10324567(<8 x float> %a, <8 x float> %b) {
480 ; ALL-LABEL: @shuffle_v8f32_10324567
482 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,0,3,2,5,4,7,6]
483 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
485 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 4, i32 5, i32 6, i32 7>
486 ret <8 x float> %shuffle
489 define <8 x float> @shuffle_v8f32_11334567(<8 x float> %a, <8 x float> %b) {
490 ; ALL-LABEL: @shuffle_v8f32_11334567
492 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,1,3,3,5,5,7,7]
493 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
495 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 4, i32 5, i32 6, i32 7>
496 ret <8 x float> %shuffle
499 define <8 x float> @shuffle_v8f32_01235467(<8 x float> %a, <8 x float> %b) {
500 ; ALL-LABEL: @shuffle_v8f32_01235467
502 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,0,2,3,5,4,6,7]
503 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
505 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 4, i32 6, i32 7>
506 ret <8 x float> %shuffle
509 define <8 x float> @shuffle_v8f32_01235466(<8 x float> %a, <8 x float> %b) {
510 ; ALL-LABEL: @shuffle_v8f32_01235466
512 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,0,2,2,5,4,6,6]
513 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
515 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 4, i32 6, i32 6>
516 ret <8 x float> %shuffle
519 define <8 x float> @shuffle_v8f32_002u6u44(<8 x float> %a, <8 x float> %b) {
520 ; ALL-LABEL: @shuffle_v8f32_002u6u44
522 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[2,1,0,0,6,5,4,4]
523 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,3,4,4,6,7]
524 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
526 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 undef, i32 6, i32 undef, i32 4, i32 4>
527 ret <8 x float> %shuffle
530 define <8 x float> @shuffle_v8f32_00uu66uu(<8 x float> %a, <8 x float> %b) {
531 ; ALL-LABEL: @shuffle_v8f32_00uu66uu
533 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[2,2,2,3,6,6,6,7]
534 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,3,4,4,6,7]
535 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
537 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 0, i32 undef, i32 undef, i32 6, i32 6, i32 undef, i32 undef>
538 ret <8 x float> %shuffle
541 define <8 x float> @shuffle_v8f32_103245uu(<8 x float> %a, <8 x float> %b) {
542 ; ALL-LABEL: @shuffle_v8f32_103245uu
544 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,0,3,2,5,4,7,6]
545 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
547 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 4, i32 5, i32 undef, i32 undef>
548 ret <8 x float> %shuffle
551 define <8 x float> @shuffle_v8f32_1133uu67(<8 x float> %a, <8 x float> %b) {
552 ; ALL-LABEL: @shuffle_v8f32_1133uu67
554 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,1,3,3,5,5,7,7]
555 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
557 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 undef, i32 undef, i32 6, i32 7>
558 ret <8 x float> %shuffle
561 define <8 x float> @shuffle_v8f32_0uu354uu(<8 x float> %a, <8 x float> %b) {
562 ; ALL-LABEL: @shuffle_v8f32_0uu354uu
564 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,0,2,3,5,4,6,7]
565 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
567 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 0, i32 undef, i32 undef, i32 3, i32 5, i32 4, i32 undef, i32 undef>
568 ret <8 x float> %shuffle
571 define <8 x float> @shuffle_v8f32_uuu3uu66(<8 x float> %a, <8 x float> %b) {
572 ; ALL-LABEL: @shuffle_v8f32_uuu3uu66
574 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[0,1,2,2,4,5,6,6]
575 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
577 %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 undef, i32 undef, i32 undef, i32 3, i32 undef, i32 undef, i32 6, i32 6>
578 ret <8 x float> %shuffle
581 define <8 x i32> @shuffle_v8i32_00000000(<8 x i32> %a, <8 x i32> %b) {
582 ; ALL-LABEL: @shuffle_v8i32_00000000
584 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,0,0,0]
585 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
587 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
588 ret <8 x i32> %shuffle
591 define <8 x i32> @shuffle_v8i32_00000010(<8 x i32> %a, <8 x i32> %b) {
592 ; ALL-LABEL: @shuffle_v8i32_00000010
594 ; ALL-NEXT: vpermilps {{.*}} # xmm1 = xmm0[0,0,0,0]
595 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,0,1,0]
596 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
598 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0>
599 ret <8 x i32> %shuffle
602 define <8 x i32> @shuffle_v8i32_00000200(<8 x i32> %a, <8 x i32> %b) {
603 ; ALL-LABEL: @shuffle_v8i32_00000200
605 ; ALL-NEXT: vpermilps {{.*}} # xmm1 = xmm0[0,0,0,0]
606 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,2,0,0]
607 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
609 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0>
610 ret <8 x i32> %shuffle
613 define <8 x i32> @shuffle_v8i32_00003000(<8 x i32> %a, <8 x i32> %b) {
614 ; ALL-LABEL: @shuffle_v8i32_00003000
616 ; ALL-NEXT: vpermilps {{.*}} # xmm1 = xmm0[0,0,0,0]
617 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[3,0,0,0]
618 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
620 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0>
621 ret <8 x i32> %shuffle
624 define <8 x i32> @shuffle_v8i32_00040000(<8 x i32> %a, <8 x i32> %b) {
625 ; ALL-LABEL: @shuffle_v8i32_00040000
627 ; ALL-NEXT: vextractf128 $1, %ymm0, %xmm1
628 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm1[0,0],xmm0[0,0]
629 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm0[0,0],xmm1[2,0]
630 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,0,0,0]
631 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
633 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0>
634 ret <8 x i32> %shuffle
637 define <8 x i32> @shuffle_v8i32_00500000(<8 x i32> %a, <8 x i32> %b) {
638 ; ALL-LABEL: @shuffle_v8i32_00500000
640 ; ALL-NEXT: vextractf128 $1, %ymm0, %xmm1
641 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm1[1,0],xmm0[0,0]
642 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm0[0,0],xmm1[0,2]
643 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,0,0,0]
644 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
646 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0>
647 ret <8 x i32> %shuffle
650 define <8 x i32> @shuffle_v8i32_06000000(<8 x i32> %a, <8 x i32> %b) {
651 ; ALL-LABEL: @shuffle_v8i32_06000000
653 ; ALL-NEXT: vextractf128 $1, %ymm0, %xmm1
654 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm1[2,0],xmm0[0,0]
655 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm1[2,0],xmm0[0,0]
656 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,0,0,0]
657 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
659 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
660 ret <8 x i32> %shuffle
663 define <8 x i32> @shuffle_v8i32_70000000(<8 x i32> %a, <8 x i32> %b) {
664 ; ALL-LABEL: @shuffle_v8i32_70000000
666 ; ALL-NEXT: vextractf128 $1, %ymm0, %xmm1
667 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm1[3,0],xmm0[0,0]
668 ; ALL-NEXT: vshufps {{.*}} # xmm1 = xmm1[0,2],xmm0[0,0]
669 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,0,0,0]
670 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
672 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
673 ret <8 x i32> %shuffle
676 define <8 x i32> @shuffle_v8i32_01014545(<8 x i32> %a, <8 x i32> %b) {
677 ; ALL-LABEL: @shuffle_v8i32_01014545
679 ; ALL-NEXT: vpermilpd {{.*}} # ymm0 = ymm0[0,0,2,2]
681 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 4, i32 5, i32 4, i32 5>
682 ret <8 x i32> %shuffle
685 define <8 x i32> @shuffle_v8i32_00112233(<8 x i32> %a, <8 x i32> %b) {
686 ; ALL-LABEL: @shuffle_v8i32_00112233
688 ; ALL-NEXT: vunpcklps {{.*}} # xmm1 = xmm0[0,0,1,1]
689 ; ALL-NEXT: vunpckhps {{.*}} # xmm0 = xmm0[2,2,3,3]
690 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
692 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>
693 ret <8 x i32> %shuffle
696 define <8 x i32> @shuffle_v8i32_00001111(<8 x i32> %a, <8 x i32> %b) {
697 ; ALL-LABEL: @shuffle_v8i32_00001111
699 ; ALL-NEXT: vpermilps {{.*}} # xmm1 = xmm0[0,0,0,0]
700 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[1,1,1,1]
701 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
703 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1>
704 ret <8 x i32> %shuffle
707 define <8 x i32> @shuffle_v8i32_81a3c5e7(<8 x i32> %a, <8 x i32> %b) {
708 ; ALL-LABEL: @shuffle_v8i32_81a3c5e7
710 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm1[0],ymm0[1],ymm1[2],ymm0[3],ymm1[4],ymm0[5],ymm1[6],ymm0[7]
712 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 8, i32 1, i32 10, i32 3, i32 12, i32 5, i32 14, i32 7>
713 ret <8 x i32> %shuffle
716 define <8 x i32> @shuffle_v8i32_08080808(<8 x i32> %a, <8 x i32> %b) {
717 ; ALL-LABEL: @shuffle_v8i32_08080808
719 ; ALL-NEXT: vpermilps {{.*}} # xmm1 = xmm1[0,0,2,0]
720 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,1,0,3]
721 ; ALL-NEXT: vblendps {{.*}} # xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]
722 ; ALL-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
724 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8>
725 ret <8 x i32> %shuffle
728 define <8 x i32> @shuffle_v8i32_08084c4c(<8 x i32> %a, <8 x i32> %b) {
729 ; ALL-LABEL: @shuffle_v8i32_08084c4c
731 ; ALL-NEXT: vshufps {{.*}} # ymm0 = ymm0[0,0],ymm1[0,0],ymm0[4,4],ymm1[4,4]
732 ; ALL-NEXT: vshufps {{.*}} # ymm0 = ymm0[0,2,1,3,4,6,5,7]
734 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 8, i32 0, i32 8, i32 4, i32 12, i32 4, i32 12>
735 ret <8 x i32> %shuffle
738 define <8 x i32> @shuffle_v8i32_8823cc67(<8 x i32> %a, <8 x i32> %b) {
739 ; ALL-LABEL: @shuffle_v8i32_8823cc67
741 ; ALL-NEXT: vshufps {{.*}} # ymm0 = ymm1[0,0],ymm0[2,3],ymm1[4,4],ymm0[6,7]
743 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 8, i32 8, i32 2, i32 3, i32 12, i32 12, i32 6, i32 7>
744 ret <8 x i32> %shuffle
747 define <8 x i32> @shuffle_v8i32_9832dc76(<8 x i32> %a, <8 x i32> %b) {
748 ; ALL-LABEL: @shuffle_v8i32_9832dc76
750 ; ALL-NEXT: vshufps {{.*}} # ymm0 = ymm1[1,0],ymm0[3,2],ymm1[5,4],ymm0[7,6]
752 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 9, i32 8, i32 3, i32 2, i32 13, i32 12, i32 7, i32 6>
753 ret <8 x i32> %shuffle
756 define <8 x i32> @shuffle_v8i32_9810dc54(<8 x i32> %a, <8 x i32> %b) {
757 ; ALL-LABEL: @shuffle_v8i32_9810dc54
759 ; ALL-NEXT: vshufps {{.*}} # ymm0 = ymm1[1,0],ymm0[1,0],ymm1[5,4],ymm0[5,4]
761 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 9, i32 8, i32 1, i32 0, i32 13, i32 12, i32 5, i32 4>
762 ret <8 x i32> %shuffle
765 define <8 x i32> @shuffle_v8i32_08194c5d(<8 x i32> %a, <8 x i32> %b) {
766 ; ALL-LABEL: @shuffle_v8i32_08194c5d
768 ; ALL-NEXT: vunpcklps {{.*}} # ymm0 = ymm0[0],ymm1[0],ymm0[1],ymm1[1],ymm0[4],ymm1[4],ymm0[5],ymm1[5]
770 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
771 ret <8 x i32> %shuffle
774 define <8 x i32> @shuffle_v8i32_2a3b6e7f(<8 x i32> %a, <8 x i32> %b) {
775 ; ALL-LABEL: @shuffle_v8i32_2a3b6e7f
777 ; ALL-NEXT: vunpckhps {{.*}} # ymm0 = ymm0[2],ymm1[2],ymm0[3],ymm1[3],ymm0[6],ymm1[6],ymm0[7],ymm1[7]
779 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
780 ret <8 x i32> %shuffle
783 define <8 x i32> @shuffle_v8i32_08192a3b(<8 x i32> %a, <8 x i32> %b) {
784 ; ALL-LABEL: @shuffle_v8i32_08192a3b
786 ; ALL-NEXT: vpermilps {{.*}} # xmm2 = xmm1[0,2,2,3]
787 ; ALL-NEXT: vpermilps {{.*}} # xmm3 = xmm0[2,1,3,3]
788 ; ALL-NEXT: vblendps {{.*}} # xmm2 = xmm3[0],xmm2[1],xmm3[2],xmm2[3]
789 ; ALL-NEXT: vpermilps {{.*}} # xmm1 = xmm1[0,0,2,1]
790 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,1,1,3]
791 ; ALL-NEXT: vblendps {{.*}} # xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]
792 ; ALL-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
794 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
795 ret <8 x i32> %shuffle
798 define <8 x i32> @shuffle_v8i32_08991abb(<8 x i32> %a, <8 x i32> %b) {
799 ; ALL-LABEL: @shuffle_v8i32_08991abb
801 ; ALL-NEXT: vpermilps {{.*}} # xmm2 = xmm0[1,1,2,3]
802 ; ALL-NEXT: vpermilps {{.*}} # xmm3 = xmm1[0,2,3,3]
803 ; ALL-NEXT: vblendps {{.*}} # xmm2 = xmm2[0],xmm3[1,2,3]
804 ; ALL-NEXT: vunpcklps {{.*}} # xmm1 = xmm1[0,0,1,1]
805 ; ALL-NEXT: vblendps {{.*}} # xmm0 = xmm0[0],xmm1[1,2,3]
806 ; ALL-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
808 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 8, i32 9, i32 9, i32 1, i32 10, i32 11, i32 11>
809 ret <8 x i32> %shuffle
812 define <8 x i32> @shuffle_v8i32_091b2d3f(<8 x i32> %a, <8 x i32> %b) {
813 ; ALL-LABEL: @shuffle_v8i32_091b2d3f
815 ; ALL-NEXT: vextractf128 $1, %ymm1, %xmm2
816 ; ALL-NEXT: vpermilps {{.*}} # xmm3 = xmm0[2,1,3,3]
817 ; ALL-NEXT: vblendps {{.*}} # xmm2 = xmm3[0],xmm2[1],xmm3[2],xmm2[3]
818 ; ALL-NEXT: vpermilps {{.*}} # xmm0 = xmm0[0,1,1,3]
819 ; ALL-NEXT: vblendps {{.*}} # xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]
820 ; ALL-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
822 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 9, i32 1, i32 11, i32 2, i32 13, i32 3, i32 15>
823 ret <8 x i32> %shuffle
826 define <8 x i32> @shuffle_v8i32_09ab1def(<8 x i32> %a, <8 x i32> %b) {
827 ; ALL-LABEL: @shuffle_v8i32_09ab1def
829 ; ALL-NEXT: vextractf128 $1, %ymm1, %xmm2
830 ; ALL-NEXT: vpermilps {{.*}} # xmm3 = xmm0[1,1,2,3]
831 ; ALL-NEXT: vblendps {{.*}} # xmm2 = xmm3[0],xmm2[1,2,3]
832 ; ALL-NEXT: vblendps {{.*}} # xmm0 = xmm0[0],xmm1[1,2,3]
833 ; ALL-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
835 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 9, i32 10, i32 11, i32 1, i32 13, i32 14, i32 15>
836 ret <8 x i32> %shuffle
839 define <8 x i32> @shuffle_v8i32_00014445(<8 x i32> %a, <8 x i32> %b) {
840 ; ALL-LABEL: @shuffle_v8i32_00014445
842 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,0,1,4,4,4,5]
844 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 1, i32 4, i32 4, i32 4, i32 5>
845 ret <8 x i32> %shuffle
848 define <8 x i32> @shuffle_v8i32_00204464(<8 x i32> %a, <8 x i32> %b) {
849 ; ALL-LABEL: @shuffle_v8i32_00204464
851 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,0,4,4,6,4]
853 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 0, i32 4, i32 4, i32 6, i32 4>
854 ret <8 x i32> %shuffle
857 define <8 x i32> @shuffle_v8i32_03004744(<8 x i32> %a, <8 x i32> %b) {
858 ; ALL-LABEL: @shuffle_v8i32_03004744
860 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,3,0,0,4,7,4,4]
862 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 3, i32 0, i32 0, i32 4, i32 7, i32 4, i32 4>
863 ret <8 x i32> %shuffle
866 define <8 x i32> @shuffle_v8i32_10005444(<8 x i32> %a, <8 x i32> %b) {
867 ; ALL-LABEL: @shuffle_v8i32_10005444
869 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[1,0,0,0,5,4,4,4]
871 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4>
872 ret <8 x i32> %shuffle
875 define <8 x i32> @shuffle_v8i32_22006644(<8 x i32> %a, <8 x i32> %b) {
876 ; ALL-LABEL: @shuffle_v8i32_22006644
878 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[2,2,0,0,6,6,4,4]
880 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 2, i32 2, i32 0, i32 0, i32 6, i32 6, i32 4, i32 4>
881 ret <8 x i32> %shuffle
884 define <8 x i32> @shuffle_v8i32_33307774(<8 x i32> %a, <8 x i32> %b) {
885 ; ALL-LABEL: @shuffle_v8i32_33307774
887 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[3,3,3,0,7,7,7,4]
889 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 3, i32 3, i32 3, i32 0, i32 7, i32 7, i32 7, i32 4>
890 ret <8 x i32> %shuffle
893 define <8 x i32> @shuffle_v8i32_32107654(<8 x i32> %a, <8 x i32> %b) {
894 ; ALL-LABEL: @shuffle_v8i32_32107654
896 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[3,2,1,0,7,6,5,4]
898 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
899 ret <8 x i32> %shuffle
902 define <8 x i32> @shuffle_v8i32_00234467(<8 x i32> %a, <8 x i32> %b) {
903 ; ALL-LABEL: @shuffle_v8i32_00234467
905 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,3,4,4,6,7]
907 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 3, i32 4, i32 4, i32 6, i32 7>
908 ret <8 x i32> %shuffle
911 define <8 x i32> @shuffle_v8i32_00224466(<8 x i32> %a, <8 x i32> %b) {
912 ; ALL-LABEL: @shuffle_v8i32_00224466
914 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,2,4,4,6,6]
916 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
917 ret <8 x i32> %shuffle
920 define <8 x i32> @shuffle_v8i32_10325476(<8 x i32> %a, <8 x i32> %b) {
921 ; ALL-LABEL: @shuffle_v8i32_10325476
923 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[1,0,3,2,5,4,7,6]
925 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6>
926 ret <8 x i32> %shuffle
929 define <8 x i32> @shuffle_v8i32_11335577(<8 x i32> %a, <8 x i32> %b) {
930 ; ALL-LABEL: @shuffle_v8i32_11335577
932 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[1,1,3,3,5,5,7,7]
934 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>
935 ret <8 x i32> %shuffle
938 define <8 x i32> @shuffle_v8i32_10235467(<8 x i32> %a, <8 x i32> %b) {
939 ; ALL-LABEL: @shuffle_v8i32_10235467
941 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[1,0,2,3,5,4,6,7]
943 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 1, i32 0, i32 2, i32 3, i32 5, i32 4, i32 6, i32 7>
944 ret <8 x i32> %shuffle
947 define <8 x i32> @shuffle_v8i32_10225466(<8 x i32> %a, <8 x i32> %b) {
948 ; ALL-LABEL: @shuffle_v8i32_10225466
950 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[1,0,2,2,5,4,6,6]
952 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 1, i32 0, i32 2, i32 2, i32 5, i32 4, i32 6, i32 6>
953 ret <8 x i32> %shuffle
956 define <8 x i32> @shuffle_v8i32_00015444(<8 x i32> %a, <8 x i32> %b) {
957 ; ALL-LABEL: @shuffle_v8i32_00015444
959 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,0,0,0,5,4,4,4]
960 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,0,1,4,4,4,5]
961 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
963 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 1, i32 5, i32 4, i32 4, i32 4>
964 ret <8 x i32> %shuffle
967 define <8 x i32> @shuffle_v8i32_00204644(<8 x i32> %a, <8 x i32> %b) {
968 ; ALL-LABEL: @shuffle_v8i32_00204644
970 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[0,2,0,0,4,6,4,4]
971 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,0,4,4,6,4]
972 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
974 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 0, i32 4, i32 6, i32 4, i32 4>
975 ret <8 x i32> %shuffle
978 define <8 x i32> @shuffle_v8i32_03004474(<8 x i32> %a, <8 x i32> %b) {
979 ; ALL-LABEL: @shuffle_v8i32_03004474
981 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[0,0,3,0,4,4,7,4]
982 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,3,0,0,4,7,4,4]
983 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
985 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 3, i32 0, i32 0, i32 4, i32 4, i32 7, i32 4>
986 ret <8 x i32> %shuffle
989 define <8 x i32> @shuffle_v8i32_10004444(<8 x i32> %a, <8 x i32> %b) {
990 ; ALL-LABEL: @shuffle_v8i32_10004444
992 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[0,0,0,0,4,4,4,4]
993 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[1,0,0,0,5,4,4,4]
994 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
996 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 1, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
997 ret <8 x i32> %shuffle
1000 define <8 x i32> @shuffle_v8i32_22006446(<8 x i32> %a, <8 x i32> %b) {
1001 ; ALL-LABEL: @shuffle_v8i32_22006446
1003 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[2,0,0,2,6,4,4,6]
1004 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[2,2,0,0,6,6,4,4]
1005 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1007 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 2, i32 2, i32 0, i32 0, i32 6, i32 4, i32 4, i32 6>
1008 ret <8 x i32> %shuffle
1011 define <8 x i32> @shuffle_v8i32_33307474(<8 x i32> %a, <8 x i32> %b) {
1012 ; ALL-LABEL: @shuffle_v8i32_33307474
1014 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[3,0,3,0,7,4,7,4]
1015 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[3,3,3,0,7,7,7,4]
1016 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1018 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 3, i32 3, i32 3, i32 0, i32 7, i32 4, i32 7, i32 4>
1019 ret <8 x i32> %shuffle
1022 define <8 x i32> @shuffle_v8i32_32104567(<8 x i32> %a, <8 x i32> %b) {
1023 ; ALL-LABEL: @shuffle_v8i32_32104567
1025 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[3,2,1,0,7,6,5,4]
1026 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1028 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 4, i32 5, i32 6, i32 7>
1029 ret <8 x i32> %shuffle
1032 define <8 x i32> @shuffle_v8i32_00236744(<8 x i32> %a, <8 x i32> %b) {
1033 ; ALL-LABEL: @shuffle_v8i32_00236744
1035 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[2,3,0,0,6,7,4,4]
1036 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,3,4,4,6,7]
1037 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1039 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 3, i32 6, i32 7, i32 4, i32 4>
1040 ret <8 x i32> %shuffle
1043 define <8 x i32> @shuffle_v8i32_00226644(<8 x i32> %a, <8 x i32> %b) {
1044 ; ALL-LABEL: @shuffle_v8i32_00226644
1046 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[2,2,0,0,6,6,4,4]
1047 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,2,4,4,6,6]
1048 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1050 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 6, i32 6, i32 4, i32 4>
1051 ret <8 x i32> %shuffle
1054 define <8 x i32> @shuffle_v8i32_10324567(<8 x i32> %a, <8 x i32> %b) {
1055 ; ALL-LABEL: @shuffle_v8i32_10324567
1057 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,0,3,2,5,4,7,6]
1058 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1060 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 4, i32 5, i32 6, i32 7>
1061 ret <8 x i32> %shuffle
1064 define <8 x i32> @shuffle_v8i32_11334567(<8 x i32> %a, <8 x i32> %b) {
1065 ; ALL-LABEL: @shuffle_v8i32_11334567
1067 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,1,3,3,5,5,7,7]
1068 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1070 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 4, i32 5, i32 6, i32 7>
1071 ret <8 x i32> %shuffle
1074 define <8 x i32> @shuffle_v8i32_01235467(<8 x i32> %a, <8 x i32> %b) {
1075 ; ALL-LABEL: @shuffle_v8i32_01235467
1077 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,0,2,3,5,4,6,7]
1078 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1080 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 4, i32 6, i32 7>
1081 ret <8 x i32> %shuffle
1084 define <8 x i32> @shuffle_v8i32_01235466(<8 x i32> %a, <8 x i32> %b) {
1085 ; ALL-LABEL: @shuffle_v8i32_01235466
1087 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,0,2,2,5,4,6,6]
1088 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1090 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 4, i32 6, i32 6>
1091 ret <8 x i32> %shuffle
1094 define <8 x i32> @shuffle_v8i32_002u6u44(<8 x i32> %a, <8 x i32> %b) {
1095 ; ALL-LABEL: @shuffle_v8i32_002u6u44
1097 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[2,1,0,0,6,5,4,4]
1098 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,3,4,4,6,7]
1099 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1101 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 undef, i32 6, i32 undef, i32 4, i32 4>
1102 ret <8 x i32> %shuffle
1105 define <8 x i32> @shuffle_v8i32_00uu66uu(<8 x i32> %a, <8 x i32> %b) {
1106 ; ALL-LABEL: @shuffle_v8i32_00uu66uu
1108 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[2,2,2,3,6,6,6,7]
1109 ; ALL-NEXT: vpermilps {{.*}} # ymm0 = ymm0[0,0,2,3,4,4,6,7]
1110 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1112 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 0, i32 undef, i32 undef, i32 6, i32 6, i32 undef, i32 undef>
1113 ret <8 x i32> %shuffle
1116 define <8 x i32> @shuffle_v8i32_103245uu(<8 x i32> %a, <8 x i32> %b) {
1117 ; ALL-LABEL: @shuffle_v8i32_103245uu
1119 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,0,3,2,5,4,7,6]
1120 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1122 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 4, i32 5, i32 undef, i32 undef>
1123 ret <8 x i32> %shuffle
1126 define <8 x i32> @shuffle_v8i32_1133uu67(<8 x i32> %a, <8 x i32> %b) {
1127 ; ALL-LABEL: @shuffle_v8i32_1133uu67
1129 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,1,3,3,5,5,7,7]
1130 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm1[0,1,2,3],ymm0[4,5,6,7]
1132 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 undef, i32 undef, i32 6, i32 7>
1133 ret <8 x i32> %shuffle
1136 define <8 x i32> @shuffle_v8i32_0uu354uu(<8 x i32> %a, <8 x i32> %b) {
1137 ; ALL-LABEL: @shuffle_v8i32_0uu354uu
1139 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[1,0,2,3,5,4,6,7]
1140 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1142 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 0, i32 undef, i32 undef, i32 3, i32 5, i32 4, i32 undef, i32 undef>
1143 ret <8 x i32> %shuffle
1146 define <8 x i32> @shuffle_v8i32_uuu3uu66(<8 x i32> %a, <8 x i32> %b) {
1147 ; ALL-LABEL: @shuffle_v8i32_uuu3uu66
1149 ; ALL-NEXT: vpermilps {{.*}} # ymm1 = ymm0[0,1,2,2,4,5,6,6]
1150 ; ALL-NEXT: vblendps {{.*}} # ymm0 = ymm0[0,1,2,3],ymm1[4,5,6,7]
1152 %shuffle = shufflevector <8 x i32> %a, <8 x i32> %b, <8 x i32> <i32 undef, i32 undef, i32 undef, i32 3, i32 undef, i32 undef, i32 6, i32 6>
1153 ret <8 x i32> %shuffle