1 ; RUN: llc < %s -mcpu=x86-64 -mattr=+avx512f | FileCheck %s --check-prefix=ALL --check-prefix=AVX512 --check-prefix=AVX512F
2 ; RUN: llc < %s -mcpu=x86-64 -mattr=+avx512bw | FileCheck %s --check-prefix=ALL --check-prefix=AVX512 --check-prefix=AVX512BW
4 target triple = "x86_64-unknown-unknown"
6 define <8 x double> @shuffle_v8f64_00000000(<8 x double> %a, <8 x double> %b) {
7 ; ALL-LABEL: shuffle_v8f64_00000000:
9 ; ALL-NEXT: vbroadcastsd %xmm0, %zmm0
11 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
12 ret <8 x double> %shuffle
15 define <8 x double> @shuffle_v8f64_00000010(<8 x double> %a, <8 x double> %b) {
16 ; ALL-LABEL: shuffle_v8f64_00000010:
18 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,0,0,0,1,0]
19 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
21 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0>
22 ret <8 x double> %shuffle
25 define <8 x double> @shuffle_v8f64_00000200(<8 x double> %a, <8 x double> %b) {
26 ; ALL-LABEL: shuffle_v8f64_00000200:
28 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,0,0,2,0,0]
29 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
31 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0>
32 ret <8 x double> %shuffle
35 define <8 x double> @shuffle_v8f64_00003000(<8 x double> %a, <8 x double> %b) {
36 ; ALL-LABEL: shuffle_v8f64_00003000:
38 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,0,3,0,0,0]
39 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
41 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0>
42 ret <8 x double> %shuffle
45 define <8 x double> @shuffle_v8f64_00040000(<8 x double> %a, <8 x double> %b) {
46 ; ALL-LABEL: shuffle_v8f64_00040000:
48 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,4,0,0,0,0]
49 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
51 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0>
52 ret <8 x double> %shuffle
55 define <8 x double> @shuffle_v8f64_00500000(<8 x double> %a, <8 x double> %b) {
56 ; ALL-LABEL: shuffle_v8f64_00500000:
58 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,5,0,0,0,0,0]
59 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
61 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0>
62 ret <8 x double> %shuffle
65 define <8 x double> @shuffle_v8f64_06000000(<8 x double> %a, <8 x double> %b) {
66 ; ALL-LABEL: shuffle_v8f64_06000000:
68 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,6,0,0,0,0,0,0]
69 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
71 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
72 ret <8 x double> %shuffle
75 define <8 x double> @shuffle_v8f64_70000000(<8 x double> %a, <8 x double> %b) {
76 ; ALL-LABEL: shuffle_v8f64_70000000:
78 ; ALL-NEXT: vpxord %zmm1, %zmm1, %zmm1
79 ; ALL-NEXT: movl $7, %eax
80 ; ALL-NEXT: vpinsrq $0, %rax, %xmm1, %xmm2
81 ; ALL-NEXT: vinserti32x4 $0, %xmm2, %zmm1, %zmm1
82 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
84 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
85 ret <8 x double> %shuffle
88 define <8 x double> @shuffle_v8f64_01014545(<8 x double> %a, <8 x double> %b) {
89 ; ALL-LABEL: shuffle_v8f64_01014545:
91 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,1,0,1,4,5,4,5]
92 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
94 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 4, i32 5, i32 4, i32 5>
95 ret <8 x double> %shuffle
98 define <8 x double> @shuffle_v8f64_00112233(<8 x double> %a, <8 x double> %b) {
99 ; ALL-LABEL: shuffle_v8f64_00112233:
101 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,1,1,2,2,3,3]
102 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
104 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>
105 ret <8 x double> %shuffle
108 define <8 x double> @shuffle_v8f64_00001111(<8 x double> %a, <8 x double> %b) {
109 ; ALL-LABEL: shuffle_v8f64_00001111:
111 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,0,1,1,1,1]
112 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
114 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1>
115 ret <8 x double> %shuffle
118 define <8 x double> @shuffle_v8f64_81a3c5e7(<8 x double> %a, <8 x double> %b) {
119 ; ALL-LABEL: shuffle_v8f64_81a3c5e7:
121 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,9,2,11,4,13,6,15]
122 ; ALL-NEXT: vpermt2pd %zmm0, %zmm2, %zmm1
123 ; ALL-NEXT: vmovaps %zmm1, %zmm0
125 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 8, i32 1, i32 10, i32 3, i32 12, i32 5, i32 14, i32 7>
126 ret <8 x double> %shuffle
129 define <8 x double> @shuffle_v8f64_08080808(<8 x double> %a, <8 x double> %b) {
130 ; ALL-LABEL: shuffle_v8f64_08080808:
132 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,8,0,8,0,8,0,8]
133 ; ALL-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
135 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8>
136 ret <8 x double> %shuffle
139 define <8 x double> @shuffle_v8f64_08084c4c(<8 x double> %a, <8 x double> %b) {
140 ; ALL-LABEL: shuffle_v8f64_08084c4c:
142 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,8,0,8,4,12,4,12]
143 ; ALL-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
145 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 8, i32 0, i32 8, i32 4, i32 12, i32 4, i32 12>
146 ret <8 x double> %shuffle
149 define <8 x double> @shuffle_v8f64_8823cc67(<8 x double> %a, <8 x double> %b) {
150 ; ALL-LABEL: shuffle_v8f64_8823cc67:
152 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,0,10,11,4,4,14,15]
153 ; ALL-NEXT: vpermt2pd %zmm0, %zmm2, %zmm1
154 ; ALL-NEXT: vmovaps %zmm1, %zmm0
156 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 8, i32 8, i32 2, i32 3, i32 12, i32 12, i32 6, i32 7>
157 ret <8 x double> %shuffle
160 define <8 x double> @shuffle_v8f64_9832dc76(<8 x double> %a, <8 x double> %b) {
161 ; ALL-LABEL: shuffle_v8f64_9832dc76:
163 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [1,0,11,10,5,4,15,14]
164 ; ALL-NEXT: vpermt2pd %zmm0, %zmm2, %zmm1
165 ; ALL-NEXT: vmovaps %zmm1, %zmm0
167 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 9, i32 8, i32 3, i32 2, i32 13, i32 12, i32 7, i32 6>
168 ret <8 x double> %shuffle
171 define <8 x double> @shuffle_v8f64_9810dc54(<8 x double> %a, <8 x double> %b) {
172 ; ALL-LABEL: shuffle_v8f64_9810dc54:
174 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [1,0,9,8,5,4,13,12]
175 ; ALL-NEXT: vpermt2pd %zmm0, %zmm2, %zmm1
176 ; ALL-NEXT: vmovaps %zmm1, %zmm0
178 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 9, i32 8, i32 1, i32 0, i32 13, i32 12, i32 5, i32 4>
179 ret <8 x double> %shuffle
182 define <8 x double> @shuffle_v8f64_08194c5d(<8 x double> %a, <8 x double> %b) {
183 ; ALL-LABEL: shuffle_v8f64_08194c5d:
185 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,8,1,9,4,12,5,13]
186 ; ALL-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
188 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
189 ret <8 x double> %shuffle
192 define <8 x double> @shuffle_v8f64_2a3b6e7f(<8 x double> %a, <8 x double> %b) {
193 ; ALL-LABEL: shuffle_v8f64_2a3b6e7f:
195 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [2,10,3,11,6,14,7,15]
196 ; ALL-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
198 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
199 ret <8 x double> %shuffle
202 define <8 x double> @shuffle_v8f64_08192a3b(<8 x double> %a, <8 x double> %b) {
203 ; ALL-LABEL: shuffle_v8f64_08192a3b:
205 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,8,1,9,2,10,3,11]
206 ; ALL-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
208 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
209 ret <8 x double> %shuffle
212 define <8 x double> @shuffle_v8f64_08991abb(<8 x double> %a, <8 x double> %b) {
213 ; ALL-LABEL: shuffle_v8f64_08991abb:
215 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [8,0,1,1,9,2,3,3]
216 ; ALL-NEXT: vpermt2pd %zmm0, %zmm2, %zmm1
217 ; ALL-NEXT: vmovaps %zmm1, %zmm0
219 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 8, i32 9, i32 9, i32 1, i32 10, i32 11, i32 11>
220 ret <8 x double> %shuffle
223 define <8 x double> @shuffle_v8f64_091b2d3f(<8 x double> %a, <8 x double> %b) {
224 ; ALL-LABEL: shuffle_v8f64_091b2d3f:
226 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,9,1,11,2,13,3,15]
227 ; ALL-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
229 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 9, i32 1, i32 11, i32 2, i32 13, i32 3, i32 15>
230 ret <8 x double> %shuffle
233 define <8 x double> @shuffle_v8f64_09ab1def(<8 x double> %a, <8 x double> %b) {
234 ; ALL-LABEL: shuffle_v8f64_09ab1def:
236 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [8,1,2,3,9,5,6,7]
237 ; ALL-NEXT: vpermt2pd %zmm0, %zmm2, %zmm1
238 ; ALL-NEXT: vmovaps %zmm1, %zmm0
240 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 9, i32 10, i32 11, i32 1, i32 13, i32 14, i32 15>
241 ret <8 x double> %shuffle
244 define <8 x double> @shuffle_v8f64_00014445(<8 x double> %a, <8 x double> %b) {
245 ; ALL-LABEL: shuffle_v8f64_00014445:
247 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,1,4,4,4,5]
248 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
250 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 1, i32 4, i32 4, i32 4, i32 5>
251 ret <8 x double> %shuffle
254 define <8 x double> @shuffle_v8f64_00204464(<8 x double> %a, <8 x double> %b) {
255 ; ALL-LABEL: shuffle_v8f64_00204464:
257 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,2,0,4,4,6,4]
258 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
260 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 0, i32 4, i32 4, i32 6, i32 4>
261 ret <8 x double> %shuffle
264 define <8 x double> @shuffle_v8f64_03004744(<8 x double> %a, <8 x double> %b) {
265 ; ALL-LABEL: shuffle_v8f64_03004744:
267 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,3,0,0,4,7,4,4]
268 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
270 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 3, i32 0, i32 0, i32 4, i32 7, i32 4, i32 4>
271 ret <8 x double> %shuffle
274 define <8 x double> @shuffle_v8f64_10005444(<8 x double> %a, <8 x double> %b) {
275 ; ALL-LABEL: shuffle_v8f64_10005444:
277 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,0,0,0,5,4,4,4]
278 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
280 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4>
281 ret <8 x double> %shuffle
284 define <8 x double> @shuffle_v8f64_22006644(<8 x double> %a, <8 x double> %b) {
285 ; ALL-LABEL: shuffle_v8f64_22006644:
287 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [2,2,0,0,6,6,4,4]
288 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
290 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 2, i32 2, i32 0, i32 0, i32 6, i32 6, i32 4, i32 4>
291 ret <8 x double> %shuffle
294 define <8 x double> @shuffle_v8f64_33307774(<8 x double> %a, <8 x double> %b) {
295 ; ALL-LABEL: shuffle_v8f64_33307774:
297 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [3,3,3,0,7,7,7,4]
298 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
300 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 3, i32 3, i32 3, i32 0, i32 7, i32 7, i32 7, i32 4>
301 ret <8 x double> %shuffle
304 define <8 x double> @shuffle_v8f64_32107654(<8 x double> %a, <8 x double> %b) {
305 ; ALL-LABEL: shuffle_v8f64_32107654:
307 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [3,2,1,0,7,6,5,4]
308 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
310 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
311 ret <8 x double> %shuffle
314 define <8 x double> @shuffle_v8f64_00234467(<8 x double> %a, <8 x double> %b) {
315 ; ALL-LABEL: shuffle_v8f64_00234467:
317 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,2,3,4,4,6,7]
318 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
320 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 3, i32 4, i32 4, i32 6, i32 7>
321 ret <8 x double> %shuffle
324 define <8 x double> @shuffle_v8f64_00224466(<8 x double> %a, <8 x double> %b) {
325 ; ALL-LABEL: shuffle_v8f64_00224466:
327 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,2,2,4,4,6,6]
328 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
330 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
331 ret <8 x double> %shuffle
334 define <8 x double> @shuffle_v8f64_10325476(<8 x double> %a, <8 x double> %b) {
335 ; ALL-LABEL: shuffle_v8f64_10325476:
337 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,0,3,2,5,4,7,6]
338 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
340 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6>
341 ret <8 x double> %shuffle
344 define <8 x double> @shuffle_v8f64_11335577(<8 x double> %a, <8 x double> %b) {
345 ; ALL-LABEL: shuffle_v8f64_11335577:
347 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,1,3,3,5,5,7,7]
348 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
350 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>
351 ret <8 x double> %shuffle
354 define <8 x double> @shuffle_v8f64_10235467(<8 x double> %a, <8 x double> %b) {
355 ; ALL-LABEL: shuffle_v8f64_10235467:
357 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,0,2,3,5,4,6,7]
358 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
360 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 1, i32 0, i32 2, i32 3, i32 5, i32 4, i32 6, i32 7>
361 ret <8 x double> %shuffle
364 define <8 x double> @shuffle_v8f64_10225466(<8 x double> %a, <8 x double> %b) {
365 ; ALL-LABEL: shuffle_v8f64_10225466:
367 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,0,2,2,5,4,6,6]
368 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
370 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 1, i32 0, i32 2, i32 2, i32 5, i32 4, i32 6, i32 6>
371 ret <8 x double> %shuffle
374 define <8 x double> @shuffle_v8f64_00015444(<8 x double> %a, <8 x double> %b) {
375 ; ALL-LABEL: shuffle_v8f64_00015444:
377 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,1,5,4,4,4]
378 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
380 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 1, i32 5, i32 4, i32 4, i32 4>
381 ret <8 x double> %shuffle
384 define <8 x double> @shuffle_v8f64_00204644(<8 x double> %a, <8 x double> %b) {
385 ; ALL-LABEL: shuffle_v8f64_00204644:
387 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,2,0,4,6,4,4]
388 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
390 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 0, i32 4, i32 6, i32 4, i32 4>
391 ret <8 x double> %shuffle
394 define <8 x double> @shuffle_v8f64_03004474(<8 x double> %a, <8 x double> %b) {
395 ; ALL-LABEL: shuffle_v8f64_03004474:
397 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,3,0,0,4,4,7,4]
398 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
400 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 3, i32 0, i32 0, i32 4, i32 4, i32 7, i32 4>
401 ret <8 x double> %shuffle
404 define <8 x double> @shuffle_v8f64_10004444(<8 x double> %a, <8 x double> %b) {
405 ; ALL-LABEL: shuffle_v8f64_10004444:
407 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,0,0,0,4,4,4,4]
408 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
410 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 1, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
411 ret <8 x double> %shuffle
414 define <8 x double> @shuffle_v8f64_22006446(<8 x double> %a, <8 x double> %b) {
415 ; ALL-LABEL: shuffle_v8f64_22006446:
417 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [2,2,0,0,6,4,4,6]
418 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
420 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 2, i32 2, i32 0, i32 0, i32 6, i32 4, i32 4, i32 6>
421 ret <8 x double> %shuffle
424 define <8 x double> @shuffle_v8f64_33307474(<8 x double> %a, <8 x double> %b) {
425 ; ALL-LABEL: shuffle_v8f64_33307474:
427 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [3,3,3,0,7,4,7,4]
428 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
430 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 3, i32 3, i32 3, i32 0, i32 7, i32 4, i32 7, i32 4>
431 ret <8 x double> %shuffle
434 define <8 x double> @shuffle_v8f64_32104567(<8 x double> %a, <8 x double> %b) {
435 ; ALL-LABEL: shuffle_v8f64_32104567:
437 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [3,2,1,0,4,5,6,7]
438 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
440 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 4, i32 5, i32 6, i32 7>
441 ret <8 x double> %shuffle
444 define <8 x double> @shuffle_v8f64_00236744(<8 x double> %a, <8 x double> %b) {
445 ; ALL-LABEL: shuffle_v8f64_00236744:
447 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,2,3,6,7,4,4]
448 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
450 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 3, i32 6, i32 7, i32 4, i32 4>
451 ret <8 x double> %shuffle
454 define <8 x double> @shuffle_v8f64_00226644(<8 x double> %a, <8 x double> %b) {
455 ; ALL-LABEL: shuffle_v8f64_00226644:
457 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,2,2,6,6,4,4]
458 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
460 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 6, i32 6, i32 4, i32 4>
461 ret <8 x double> %shuffle
464 define <8 x double> @shuffle_v8f64_10324567(<8 x double> %a, <8 x double> %b) {
465 ; ALL-LABEL: shuffle_v8f64_10324567:
467 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,0,3,2,4,5,6,7]
468 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
470 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 4, i32 5, i32 6, i32 7>
471 ret <8 x double> %shuffle
474 define <8 x double> @shuffle_v8f64_11334567(<8 x double> %a, <8 x double> %b) {
475 ; ALL-LABEL: shuffle_v8f64_11334567:
477 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,1,3,3,4,5,6,7]
478 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
480 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 4, i32 5, i32 6, i32 7>
481 ret <8 x double> %shuffle
484 define <8 x double> @shuffle_v8f64_01235467(<8 x double> %a, <8 x double> %b) {
485 ; ALL-LABEL: shuffle_v8f64_01235467:
487 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,1,2,3,5,4,6,7]
488 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
490 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 4, i32 6, i32 7>
491 ret <8 x double> %shuffle
494 define <8 x double> @shuffle_v8f64_01235466(<8 x double> %a, <8 x double> %b) {
495 ; ALL-LABEL: shuffle_v8f64_01235466:
497 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,1,2,3,5,4,6,6]
498 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
500 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 4, i32 6, i32 6>
501 ret <8 x double> %shuffle
504 define <8 x double> @shuffle_v8f64_002u6u44(<8 x double> %a, <8 x double> %b) {
505 ; ALL-LABEL: shuffle_v8f64_002u6u44:
507 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = <0,0,2,u,6,u,4,4>
508 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
510 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 undef, i32 6, i32 undef, i32 4, i32 4>
511 ret <8 x double> %shuffle
514 define <8 x double> @shuffle_v8f64_00uu66uu(<8 x double> %a, <8 x double> %b) {
515 ; ALL-LABEL: shuffle_v8f64_00uu66uu:
517 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = <0,0,u,u,6,6,u,u>
518 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
520 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 0, i32 undef, i32 undef, i32 6, i32 6, i32 undef, i32 undef>
521 ret <8 x double> %shuffle
524 define <8 x double> @shuffle_v8f64_103245uu(<8 x double> %a, <8 x double> %b) {
525 ; ALL-LABEL: shuffle_v8f64_103245uu:
527 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = <1,0,3,2,4,5,u,u>
528 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
530 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 4, i32 5, i32 undef, i32 undef>
531 ret <8 x double> %shuffle
534 define <8 x double> @shuffle_v8f64_1133uu67(<8 x double> %a, <8 x double> %b) {
535 ; ALL-LABEL: shuffle_v8f64_1133uu67:
537 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = <1,1,3,3,u,u,6,7>
538 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
540 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 undef, i32 undef, i32 6, i32 7>
541 ret <8 x double> %shuffle
544 define <8 x double> @shuffle_v8f64_0uu354uu(<8 x double> %a, <8 x double> %b) {
545 ; ALL-LABEL: shuffle_v8f64_0uu354uu:
547 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = <0,u,u,3,5,4,u,u>
548 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
550 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 0, i32 undef, i32 undef, i32 3, i32 5, i32 4, i32 undef, i32 undef>
551 ret <8 x double> %shuffle
554 define <8 x double> @shuffle_v8f64_uuu3uu66(<8 x double> %a, <8 x double> %b) {
555 ; ALL-LABEL: shuffle_v8f64_uuu3uu66:
557 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = <u,u,u,3,u,u,6,6>
558 ; ALL-NEXT: vpermpd %zmm0, %zmm1, %zmm0
560 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 undef, i32 undef, i32 undef, i32 3, i32 undef, i32 undef, i32 6, i32 6>
561 ret <8 x double> %shuffle
564 define <8 x double> @shuffle_v8f64_c348cda0(<8 x double> %a, <8 x double> %b) {
565 ; ALL-LABEL: shuffle_v8f64_c348cda0:
567 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [4,11,12,0,4,5,2,8]
568 ; ALL-NEXT: vpermt2pd %zmm0, %zmm2, %zmm1
569 ; ALL-NEXT: vmovaps %zmm1, %zmm0
571 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 12, i32 3, i32 4, i32 8, i32 12, i32 13, i32 10, i32 0>
572 ret <8 x double> %shuffle
575 define <8 x double> @shuffle_v8f64_f511235a(<8 x double> %a, <8 x double> %b) {
576 ; ALL-LABEL: shuffle_v8f64_f511235a:
578 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [15,5,1,1,2,3,5,10]
579 ; ALL-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
581 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32> <i32 15, i32 5, i32 1, i32 1, i32 2, i32 3, i32 5, i32 10>
582 ret <8 x double> %shuffle
585 define <8 x i64> @shuffle_v8i64_00000000(<8 x i64> %a, <8 x i64> %b) {
586 ; ALL-LABEL: shuffle_v8i64_00000000:
588 ; ALL-NEXT: vpbroadcastq %xmm0, %zmm0
590 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
591 ret <8 x i64> %shuffle
594 define <8 x i64> @shuffle_v8i64_00000010(<8 x i64> %a, <8 x i64> %b) {
595 ; ALL-LABEL: shuffle_v8i64_00000010:
597 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,0,0,0,1,0]
598 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
600 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 0>
601 ret <8 x i64> %shuffle
604 define <8 x i64> @shuffle_v8i64_00000200(<8 x i64> %a, <8 x i64> %b) {
605 ; ALL-LABEL: shuffle_v8i64_00000200:
607 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,0,0,2,0,0]
608 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
610 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 2, i32 0, i32 0>
611 ret <8 x i64> %shuffle
614 define <8 x i64> @shuffle_v8i64_00003000(<8 x i64> %a, <8 x i64> %b) {
615 ; ALL-LABEL: shuffle_v8i64_00003000:
617 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,0,3,0,0,0]
618 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
620 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0>
621 ret <8 x i64> %shuffle
624 define <8 x i64> @shuffle_v8i64_00040000(<8 x i64> %a, <8 x i64> %b) {
625 ; ALL-LABEL: shuffle_v8i64_00040000:
627 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,4,0,0,0,0]
628 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
630 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 4, i32 0, i32 0, i32 0, i32 0>
631 ret <8 x i64> %shuffle
634 define <8 x i64> @shuffle_v8i64_00500000(<8 x i64> %a, <8 x i64> %b) {
635 ; ALL-LABEL: shuffle_v8i64_00500000:
637 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,5,0,0,0,0,0]
638 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
640 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 5, i32 0, i32 0, i32 0, i32 0, i32 0>
641 ret <8 x i64> %shuffle
644 define <8 x i64> @shuffle_v8i64_06000000(<8 x i64> %a, <8 x i64> %b) {
645 ; ALL-LABEL: shuffle_v8i64_06000000:
647 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,6,0,0,0,0,0,0]
648 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
650 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 6, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
651 ret <8 x i64> %shuffle
654 define <8 x i64> @shuffle_v8i64_70000000(<8 x i64> %a, <8 x i64> %b) {
655 ; ALL-LABEL: shuffle_v8i64_70000000:
657 ; ALL-NEXT: vpxord %zmm1, %zmm1, %zmm1
658 ; ALL-NEXT: movl $7, %eax
659 ; ALL-NEXT: vpinsrq $0, %rax, %xmm1, %xmm2
660 ; ALL-NEXT: vinserti32x4 $0, %xmm2, %zmm1, %zmm1
661 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
663 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 7, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
664 ret <8 x i64> %shuffle
667 define <8 x i64> @shuffle_v8i64_01014545(<8 x i64> %a, <8 x i64> %b) {
668 ; ALL-LABEL: shuffle_v8i64_01014545:
670 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,1,0,1,4,5,4,5]
671 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
673 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 4, i32 5, i32 4, i32 5>
674 ret <8 x i64> %shuffle
677 define <8 x i64> @shuffle_v8i64_00112233(<8 x i64> %a, <8 x i64> %b) {
678 ; ALL-LABEL: shuffle_v8i64_00112233:
680 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,1,1,2,2,3,3]
681 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
683 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>
684 ret <8 x i64> %shuffle
687 define <8 x i64> @shuffle_v8i64_00001111(<8 x i64> %a, <8 x i64> %b) {
688 ; ALL-LABEL: shuffle_v8i64_00001111:
690 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,0,1,1,1,1]
691 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
693 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1>
694 ret <8 x i64> %shuffle
697 define <8 x i64> @shuffle_v8i64_81a3c5e7(<8 x i64> %a, <8 x i64> %b) {
698 ; ALL-LABEL: shuffle_v8i64_81a3c5e7:
700 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,9,2,11,4,13,6,15]
701 ; ALL-NEXT: vpermt2q %zmm0, %zmm2, %zmm1
702 ; ALL-NEXT: vmovaps %zmm1, %zmm0
704 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 8, i32 1, i32 10, i32 3, i32 12, i32 5, i32 14, i32 7>
705 ret <8 x i64> %shuffle
708 define <8 x i64> @shuffle_v8i64_08080808(<8 x i64> %a, <8 x i64> %b) {
709 ; ALL-LABEL: shuffle_v8i64_08080808:
711 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,8,0,8,0,8,0,8]
712 ; ALL-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
714 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 8, i32 0, i32 8, i32 0, i32 8, i32 0, i32 8>
715 ret <8 x i64> %shuffle
718 define <8 x i64> @shuffle_v8i64_08084c4c(<8 x i64> %a, <8 x i64> %b) {
719 ; ALL-LABEL: shuffle_v8i64_08084c4c:
721 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,8,0,8,4,12,4,12]
722 ; ALL-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
724 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 8, i32 0, i32 8, i32 4, i32 12, i32 4, i32 12>
725 ret <8 x i64> %shuffle
728 define <8 x i64> @shuffle_v8i64_8823cc67(<8 x i64> %a, <8 x i64> %b) {
729 ; ALL-LABEL: shuffle_v8i64_8823cc67:
731 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,0,10,11,4,4,14,15]
732 ; ALL-NEXT: vpermt2q %zmm0, %zmm2, %zmm1
733 ; ALL-NEXT: vmovaps %zmm1, %zmm0
735 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 8, i32 8, i32 2, i32 3, i32 12, i32 12, i32 6, i32 7>
736 ret <8 x i64> %shuffle
739 define <8 x i64> @shuffle_v8i64_9832dc76(<8 x i64> %a, <8 x i64> %b) {
740 ; ALL-LABEL: shuffle_v8i64_9832dc76:
742 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [1,0,11,10,5,4,15,14]
743 ; ALL-NEXT: vpermt2q %zmm0, %zmm2, %zmm1
744 ; ALL-NEXT: vmovaps %zmm1, %zmm0
746 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 9, i32 8, i32 3, i32 2, i32 13, i32 12, i32 7, i32 6>
747 ret <8 x i64> %shuffle
750 define <8 x i64> @shuffle_v8i64_9810dc54(<8 x i64> %a, <8 x i64> %b) {
751 ; ALL-LABEL: shuffle_v8i64_9810dc54:
753 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [1,0,9,8,5,4,13,12]
754 ; ALL-NEXT: vpermt2q %zmm0, %zmm2, %zmm1
755 ; ALL-NEXT: vmovaps %zmm1, %zmm0
757 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 9, i32 8, i32 1, i32 0, i32 13, i32 12, i32 5, i32 4>
758 ret <8 x i64> %shuffle
761 define <8 x i64> @shuffle_v8i64_08194c5d(<8 x i64> %a, <8 x i64> %b) {
762 ; ALL-LABEL: shuffle_v8i64_08194c5d:
764 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,8,1,9,4,12,5,13]
765 ; ALL-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
767 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>
768 ret <8 x i64> %shuffle
771 define <8 x i64> @shuffle_v8i64_2a3b6e7f(<8 x i64> %a, <8 x i64> %b) {
772 ; ALL-LABEL: shuffle_v8i64_2a3b6e7f:
774 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [2,10,3,11,6,14,7,15]
775 ; ALL-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
777 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>
778 ret <8 x i64> %shuffle
781 define <8 x i64> @shuffle_v8i64_08192a3b(<8 x i64> %a, <8 x i64> %b) {
782 ; ALL-LABEL: shuffle_v8i64_08192a3b:
784 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,8,1,9,2,10,3,11]
785 ; ALL-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
787 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
788 ret <8 x i64> %shuffle
791 define <8 x i64> @shuffle_v8i64_08991abb(<8 x i64> %a, <8 x i64> %b) {
792 ; ALL-LABEL: shuffle_v8i64_08991abb:
794 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [8,0,1,1,9,2,3,3]
795 ; ALL-NEXT: vpermt2q %zmm0, %zmm2, %zmm1
796 ; ALL-NEXT: vmovaps %zmm1, %zmm0
798 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 8, i32 9, i32 9, i32 1, i32 10, i32 11, i32 11>
799 ret <8 x i64> %shuffle
802 define <8 x i64> @shuffle_v8i64_091b2d3f(<8 x i64> %a, <8 x i64> %b) {
803 ; ALL-LABEL: shuffle_v8i64_091b2d3f:
805 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,9,1,11,2,13,3,15]
806 ; ALL-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
808 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 9, i32 1, i32 11, i32 2, i32 13, i32 3, i32 15>
809 ret <8 x i64> %shuffle
812 define <8 x i64> @shuffle_v8i64_09ab1def(<8 x i64> %a, <8 x i64> %b) {
813 ; ALL-LABEL: shuffle_v8i64_09ab1def:
815 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [8,1,2,3,9,5,6,7]
816 ; ALL-NEXT: vpermt2q %zmm0, %zmm2, %zmm1
817 ; ALL-NEXT: vmovaps %zmm1, %zmm0
819 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 9, i32 10, i32 11, i32 1, i32 13, i32 14, i32 15>
820 ret <8 x i64> %shuffle
823 define <8 x i64> @shuffle_v8i64_00014445(<8 x i64> %a, <8 x i64> %b) {
824 ; ALL-LABEL: shuffle_v8i64_00014445:
826 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,1,4,4,4,5]
827 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
829 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 1, i32 4, i32 4, i32 4, i32 5>
830 ret <8 x i64> %shuffle
833 define <8 x i64> @shuffle_v8i64_00204464(<8 x i64> %a, <8 x i64> %b) {
834 ; ALL-LABEL: shuffle_v8i64_00204464:
836 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,2,0,4,4,6,4]
837 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
839 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 0, i32 4, i32 4, i32 6, i32 4>
840 ret <8 x i64> %shuffle
843 define <8 x i64> @shuffle_v8i64_03004744(<8 x i64> %a, <8 x i64> %b) {
844 ; ALL-LABEL: shuffle_v8i64_03004744:
846 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,3,0,0,4,7,4,4]
847 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
849 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 3, i32 0, i32 0, i32 4, i32 7, i32 4, i32 4>
850 ret <8 x i64> %shuffle
853 define <8 x i64> @shuffle_v8i64_10005444(<8 x i64> %a, <8 x i64> %b) {
854 ; ALL-LABEL: shuffle_v8i64_10005444:
856 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,0,0,0,5,4,4,4]
857 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
859 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4>
860 ret <8 x i64> %shuffle
863 define <8 x i64> @shuffle_v8i64_22006644(<8 x i64> %a, <8 x i64> %b) {
864 ; ALL-LABEL: shuffle_v8i64_22006644:
866 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [2,2,0,0,6,6,4,4]
867 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
869 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 2, i32 2, i32 0, i32 0, i32 6, i32 6, i32 4, i32 4>
870 ret <8 x i64> %shuffle
873 define <8 x i64> @shuffle_v8i64_33307774(<8 x i64> %a, <8 x i64> %b) {
874 ; ALL-LABEL: shuffle_v8i64_33307774:
876 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [3,3,3,0,7,7,7,4]
877 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
879 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 3, i32 3, i32 3, i32 0, i32 7, i32 7, i32 7, i32 4>
880 ret <8 x i64> %shuffle
883 define <8 x i64> @shuffle_v8i64_32107654(<8 x i64> %a, <8 x i64> %b) {
884 ; ALL-LABEL: shuffle_v8i64_32107654:
886 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [3,2,1,0,7,6,5,4]
887 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
889 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>
890 ret <8 x i64> %shuffle
893 define <8 x i64> @shuffle_v8i64_00234467(<8 x i64> %a, <8 x i64> %b) {
894 ; ALL-LABEL: shuffle_v8i64_00234467:
896 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,2,3,4,4,6,7]
897 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
899 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 3, i32 4, i32 4, i32 6, i32 7>
900 ret <8 x i64> %shuffle
903 define <8 x i64> @shuffle_v8i64_00224466(<8 x i64> %a, <8 x i64> %b) {
904 ; ALL-LABEL: shuffle_v8i64_00224466:
906 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,2,2,4,4,6,6]
907 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
909 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
910 ret <8 x i64> %shuffle
913 define <8 x i64> @shuffle_v8i64_10325476(<8 x i64> %a, <8 x i64> %b) {
914 ; ALL-LABEL: shuffle_v8i64_10325476:
916 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,0,3,2,5,4,7,6]
917 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
919 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6>
920 ret <8 x i64> %shuffle
923 define <8 x i64> @shuffle_v8i64_11335577(<8 x i64> %a, <8 x i64> %b) {
924 ; ALL-LABEL: shuffle_v8i64_11335577:
926 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,1,3,3,5,5,7,7]
927 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
929 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>
930 ret <8 x i64> %shuffle
933 define <8 x i64> @shuffle_v8i64_10235467(<8 x i64> %a, <8 x i64> %b) {
934 ; ALL-LABEL: shuffle_v8i64_10235467:
936 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,0,2,3,5,4,6,7]
937 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
939 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 0, i32 2, i32 3, i32 5, i32 4, i32 6, i32 7>
940 ret <8 x i64> %shuffle
943 define <8 x i64> @shuffle_v8i64_10225466(<8 x i64> %a, <8 x i64> %b) {
944 ; ALL-LABEL: shuffle_v8i64_10225466:
946 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,0,2,2,5,4,6,6]
947 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
949 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 0, i32 2, i32 2, i32 5, i32 4, i32 6, i32 6>
950 ret <8 x i64> %shuffle
953 define <8 x i64> @shuffle_v8i64_00015444(<8 x i64> %a, <8 x i64> %b) {
954 ; ALL-LABEL: shuffle_v8i64_00015444:
956 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,0,1,5,4,4,4]
957 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
959 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 0, i32 1, i32 5, i32 4, i32 4, i32 4>
960 ret <8 x i64> %shuffle
963 define <8 x i64> @shuffle_v8i64_00204644(<8 x i64> %a, <8 x i64> %b) {
964 ; ALL-LABEL: shuffle_v8i64_00204644:
966 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,2,0,4,6,4,4]
967 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
969 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 0, i32 4, i32 6, i32 4, i32 4>
970 ret <8 x i64> %shuffle
973 define <8 x i64> @shuffle_v8i64_03004474(<8 x i64> %a, <8 x i64> %b) {
974 ; ALL-LABEL: shuffle_v8i64_03004474:
976 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,3,0,0,4,4,7,4]
977 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
979 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 3, i32 0, i32 0, i32 4, i32 4, i32 7, i32 4>
980 ret <8 x i64> %shuffle
983 define <8 x i64> @shuffle_v8i64_10004444(<8 x i64> %a, <8 x i64> %b) {
984 ; ALL-LABEL: shuffle_v8i64_10004444:
986 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,0,0,0,4,4,4,4]
987 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
989 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
990 ret <8 x i64> %shuffle
993 define <8 x i64> @shuffle_v8i64_22006446(<8 x i64> %a, <8 x i64> %b) {
994 ; ALL-LABEL: shuffle_v8i64_22006446:
996 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [2,2,0,0,6,4,4,6]
997 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
999 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 2, i32 2, i32 0, i32 0, i32 6, i32 4, i32 4, i32 6>
1000 ret <8 x i64> %shuffle
1003 define <8 x i64> @shuffle_v8i64_33307474(<8 x i64> %a, <8 x i64> %b) {
1004 ; ALL-LABEL: shuffle_v8i64_33307474:
1006 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [3,3,3,0,7,4,7,4]
1007 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1009 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 3, i32 3, i32 3, i32 0, i32 7, i32 4, i32 7, i32 4>
1010 ret <8 x i64> %shuffle
1013 define <8 x i64> @shuffle_v8i64_32104567(<8 x i64> %a, <8 x i64> %b) {
1014 ; ALL-LABEL: shuffle_v8i64_32104567:
1016 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [3,2,1,0,4,5,6,7]
1017 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1019 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 4, i32 5, i32 6, i32 7>
1020 ret <8 x i64> %shuffle
1023 define <8 x i64> @shuffle_v8i64_00236744(<8 x i64> %a, <8 x i64> %b) {
1024 ; ALL-LABEL: shuffle_v8i64_00236744:
1026 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,2,3,6,7,4,4]
1027 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1029 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 3, i32 6, i32 7, i32 4, i32 4>
1030 ret <8 x i64> %shuffle
1033 define <8 x i64> @shuffle_v8i64_00226644(<8 x i64> %a, <8 x i64> %b) {
1034 ; ALL-LABEL: shuffle_v8i64_00226644:
1036 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,0,2,2,6,6,4,4]
1037 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1039 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 6, i32 6, i32 4, i32 4>
1040 ret <8 x i64> %shuffle
1043 define <8 x i64> @shuffle_v8i64_10324567(<8 x i64> %a, <8 x i64> %b) {
1044 ; ALL-LABEL: shuffle_v8i64_10324567:
1046 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,0,3,2,4,5,6,7]
1047 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1049 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 4, i32 5, i32 6, i32 7>
1050 ret <8 x i64> %shuffle
1053 define <8 x i64> @shuffle_v8i64_11334567(<8 x i64> %a, <8 x i64> %b) {
1054 ; ALL-LABEL: shuffle_v8i64_11334567:
1056 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [1,1,3,3,4,5,6,7]
1057 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1059 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 4, i32 5, i32 6, i32 7>
1060 ret <8 x i64> %shuffle
1063 define <8 x i64> @shuffle_v8i64_01235467(<8 x i64> %a, <8 x i64> %b) {
1064 ; ALL-LABEL: shuffle_v8i64_01235467:
1066 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,1,2,3,5,4,6,7]
1067 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1069 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 4, i32 6, i32 7>
1070 ret <8 x i64> %shuffle
1073 define <8 x i64> @shuffle_v8i64_01235466(<8 x i64> %a, <8 x i64> %b) {
1074 ; ALL-LABEL: shuffle_v8i64_01235466:
1076 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = [0,1,2,3,5,4,6,6]
1077 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1079 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 4, i32 6, i32 6>
1080 ret <8 x i64> %shuffle
1083 define <8 x i64> @shuffle_v8i64_002u6u44(<8 x i64> %a, <8 x i64> %b) {
1084 ; ALL-LABEL: shuffle_v8i64_002u6u44:
1086 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = <0,0,2,u,6,u,4,4>
1087 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1089 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 2, i32 undef, i32 6, i32 undef, i32 4, i32 4>
1090 ret <8 x i64> %shuffle
1093 define <8 x i64> @shuffle_v8i64_00uu66uu(<8 x i64> %a, <8 x i64> %b) {
1094 ; ALL-LABEL: shuffle_v8i64_00uu66uu:
1096 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = <0,0,u,u,6,6,u,u>
1097 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1099 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 0, i32 undef, i32 undef, i32 6, i32 6, i32 undef, i32 undef>
1100 ret <8 x i64> %shuffle
1103 define <8 x i64> @shuffle_v8i64_103245uu(<8 x i64> %a, <8 x i64> %b) {
1104 ; ALL-LABEL: shuffle_v8i64_103245uu:
1106 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = <1,0,3,2,4,5,u,u>
1107 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1109 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 0, i32 3, i32 2, i32 4, i32 5, i32 undef, i32 undef>
1110 ret <8 x i64> %shuffle
1113 define <8 x i64> @shuffle_v8i64_1133uu67(<8 x i64> %a, <8 x i64> %b) {
1114 ; ALL-LABEL: shuffle_v8i64_1133uu67:
1116 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = <1,1,3,3,u,u,6,7>
1117 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1119 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 undef, i32 undef, i32 6, i32 7>
1120 ret <8 x i64> %shuffle
1123 define <8 x i64> @shuffle_v8i64_0uu354uu(<8 x i64> %a, <8 x i64> %b) {
1124 ; ALL-LABEL: shuffle_v8i64_0uu354uu:
1126 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = <0,u,u,3,5,4,u,u>
1127 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1129 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 0, i32 undef, i32 undef, i32 3, i32 5, i32 4, i32 undef, i32 undef>
1130 ret <8 x i64> %shuffle
1133 define <8 x i64> @shuffle_v8i64_uuu3uu66(<8 x i64> %a, <8 x i64> %b) {
1134 ; ALL-LABEL: shuffle_v8i64_uuu3uu66:
1136 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm1 = <u,u,u,3,u,u,6,6>
1137 ; ALL-NEXT: vpermq %zmm0, %zmm1, %zmm0
1139 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 undef, i32 undef, i32 undef, i32 3, i32 undef, i32 undef, i32 6, i32 6>
1140 ret <8 x i64> %shuffle
1143 define <8 x i64> @shuffle_v8i64_6caa87e5(<8 x i64> %a, <8 x i64> %b) {
1144 ; ALL-LABEL: shuffle_v8i64_6caa87e5:
1146 ; ALL-NEXT: vmovdqa64 {{.*#+}} zmm2 = [14,4,2,2,0,15,6,13]
1147 ; ALL-NEXT: vpermt2q %zmm0, %zmm2, %zmm1
1148 ; ALL-NEXT: vmovaps %zmm1, %zmm0
1150 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32> <i32 6, i32 12, i32 10, i32 10, i32 8, i32 7, i32 14, i32 5>
1151 ret <8 x i64> %shuffle
1154 define <8 x double> @shuffle_v8f64_082a4c6e(<8 x double> %a, <8 x double> %b) {
1155 ; ALL-LABEL: shuffle_v8f64_082a4c6e:
1157 ; ALL-NEXT: vunpcklpd {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6]
1159 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32><i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1160 ret <8 x double> %shuffle
1163 define <8 x i64> @shuffle_v8i64_082a4c6e(<8 x i64> %a, <8 x i64> %b) {
1164 ; ALL-LABEL: shuffle_v8i64_082a4c6e:
1166 ; ALL-NEXT: vpunpcklqdq {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[2],zmm1[2],zmm0[4],zmm1[4],zmm0[6],zmm1[6]
1168 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32><i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1169 ret <8 x i64> %shuffle
1172 define <8 x double> @shuffle_v8f64_193b5d7f(<8 x double> %a, <8 x double> %b) {
1173 ; ALL-LABEL: shuffle_v8f64_193b5d7f:
1175 ; ALL-NEXT: vunpckhpd {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7]
1177 %shuffle = shufflevector <8 x double> %a, <8 x double> %b, <8 x i32><i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1178 ret <8 x double> %shuffle
1181 define <8 x i64> @shuffle_v8i64_193b5d7f(<8 x i64> %a, <8 x i64> %b) {
1182 ; ALL-LABEL: shuffle_v8i64_193b5d7f:
1184 ; ALL-NEXT: vpunpckhqdq {{.*#+}} zmm0 = zmm0[1],zmm1[1],zmm0[3],zmm1[3],zmm0[5],zmm1[5],zmm0[7],zmm1[7]
1186 %shuffle = shufflevector <8 x i64> %a, <8 x i64> %b, <8 x i32><i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1187 ret <8 x i64> %shuffle