• Home
  • Raw
  • Download

Lines Matching refs:AVX512F

2 …ple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefix=ALL --check-prefix=AVX512F
3 …=i386-unknown-linux-gnu -mattr=+avx512f | FileCheck %s --check-prefix=ALL --check-prefix=AVX512F-32
47 ; AVX512F-LABEL: shuffle_v8f64_00000010:
48 ; AVX512F: # %bb.0:
49 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,1,0]
50 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
51 ; AVX512F-NEXT: retq
53 ; AVX512F-32-LABEL: shuffle_v8f64_00000010:
54 ; AVX512F-32: # %bb.0:
55 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0]
56 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
57 ; AVX512F-32-NEXT: retl
63 ; AVX512F-LABEL: shuffle_v8f64_00000200:
64 ; AVX512F: # %bb.0:
65 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,2,0,0]
66 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
67 ; AVX512F-NEXT: retq
69 ; AVX512F-32-LABEL: shuffle_v8f64_00000200:
70 ; AVX512F-32: # %bb.0:
71 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0]
72 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
73 ; AVX512F-32-NEXT: retl
79 ; AVX512F-LABEL: shuffle_v8f64_00003000:
80 ; AVX512F: # %bb.0:
81 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,3,0,0,0]
82 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
83 ; AVX512F-NEXT: retq
85 ; AVX512F-32-LABEL: shuffle_v8f64_00003000:
86 ; AVX512F-32: # %bb.0:
87 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0]
88 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
89 ; AVX512F-32-NEXT: retl
95 ; AVX512F-LABEL: shuffle_v8f64_00040000:
96 ; AVX512F: # %bb.0:
97 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,4,0,0,0,0]
98 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
99 ; AVX512F-NEXT: retq
101 ; AVX512F-32-LABEL: shuffle_v8f64_00040000:
102 ; AVX512F-32: # %bb.0:
103 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0]
104 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
105 ; AVX512F-32-NEXT: retl
111 ; AVX512F-LABEL: shuffle_v8f64_00500000:
112 ; AVX512F: # %bb.0:
113 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,5,0,0,0,0,0]
114 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
115 ; AVX512F-NEXT: retq
117 ; AVX512F-32-LABEL: shuffle_v8f64_00500000:
118 ; AVX512F-32: # %bb.0:
119 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0]
120 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
121 ; AVX512F-32-NEXT: retl
127 ; AVX512F-LABEL: shuffle_v8f64_06000000:
128 ; AVX512F: # %bb.0:
129 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,6,0,0,0,0,0,0]
130 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
131 ; AVX512F-NEXT: retq
133 ; AVX512F-32-LABEL: shuffle_v8f64_06000000:
134 ; AVX512F-32: # %bb.0:
135 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0]
136 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
137 ; AVX512F-32-NEXT: retl
162 ; AVX512F-LABEL: shuffle_v8f64_00112233:
163 ; AVX512F: # %bb.0:
164 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,1,1,2,2,3,3]
165 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
166 ; AVX512F-NEXT: retq
168 ; AVX512F-32-LABEL: shuffle_v8f64_00112233:
169 ; AVX512F-32: # %bb.0:
170 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,1,0,1,0,2,0,2,0,3,0,3,0]
171 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
172 ; AVX512F-32-NEXT: retl
178 ; AVX512F-LABEL: shuffle_v8f64_00001111:
179 ; AVX512F: # %bb.0:
180 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,1,1,1,1]
181 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
182 ; AVX512F-NEXT: retq
184 ; AVX512F-32-LABEL: shuffle_v8f64_00001111:
185 ; AVX512F-32: # %bb.0:
186 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0]
187 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
188 ; AVX512F-32-NEXT: retl
203 ; AVX512F-LABEL: shuffle_v8f64_08080808:
204 ; AVX512F: # %bb.0:
205 ; AVX512F-NEXT: vbroadcasti32x4 {{.*#+}} zmm2 = [0,8,0,8,0,8,0,8]
206 ; AVX512F-NEXT: # zmm2 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
207 ; AVX512F-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
208 ; AVX512F-NEXT: retq
210 ; AVX512F-32-LABEL: shuffle_v8f64_08080808:
211 ; AVX512F-32: # %bb.0:
212 ; AVX512F-32-NEXT: vbroadcasti32x4 {{.*#+}} zmm2 = [0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0]
213 ; AVX512F-32-NEXT: # zmm2 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
214 ; AVX512F-32-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
215 ; AVX512F-32-NEXT: retl
221 ; AVX512F-LABEL: shuffle_v8f64_08084c4c:
222 ; AVX512F: # %bb.0:
223 ; AVX512F-NEXT: vmovapd {{.*#+}} zmm2 = [0,8,0,8,4,12,4,12]
224 ; AVX512F-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
225 ; AVX512F-NEXT: retq
227 ; AVX512F-32-LABEL: shuffle_v8f64_08084c4c:
228 ; AVX512F-32: # %bb.0:
229 ; AVX512F-32-NEXT: vmovapd {{.*#+}} zmm2 = [0,0,8,0,0,0,8,0,4,0,12,0,4,0,12,0]
230 ; AVX512F-32-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
231 ; AVX512F-32-NEXT: retl
237 ; AVX512F-LABEL: shuffle_v8f64_8823cc67:
238 ; AVX512F: # %bb.0:
239 ; AVX512F-NEXT: vmovapd {{.*#+}} zmm2 = [0,0,10,11,4,4,14,15]
240 ; AVX512F-NEXT: vpermi2pd %zmm0, %zmm1, %zmm2
241 ; AVX512F-NEXT: vmovapd %zmm2, %zmm0
242 ; AVX512F-NEXT: retq
244 ; AVX512F-32-LABEL: shuffle_v8f64_8823cc67:
245 ; AVX512F-32: # %bb.0:
246 ; AVX512F-32-NEXT: vmovapd {{.*#+}} zmm2 = [0,0,0,0,10,0,11,0,4,0,4,0,14,0,15,0]
247 ; AVX512F-32-NEXT: vpermi2pd %zmm0, %zmm1, %zmm2
248 ; AVX512F-32-NEXT: vmovapd %zmm2, %zmm0
249 ; AVX512F-32-NEXT: retl
255 ; AVX512F-LABEL: shuffle_v8f64_9832dc76:
256 ; AVX512F: # %bb.0:
257 ; AVX512F-NEXT: vmovapd {{.*#+}} zmm2 = [1,0,11,10,5,4,15,14]
258 ; AVX512F-NEXT: vpermi2pd %zmm0, %zmm1, %zmm2
259 ; AVX512F-NEXT: vmovapd %zmm2, %zmm0
260 ; AVX512F-NEXT: retq
262 ; AVX512F-32-LABEL: shuffle_v8f64_9832dc76:
263 ; AVX512F-32: # %bb.0:
264 ; AVX512F-32-NEXT: vmovapd {{.*#+}} zmm2 = [1,0,0,0,11,0,10,0,5,0,4,0,15,0,14,0]
265 ; AVX512F-32-NEXT: vpermi2pd %zmm0, %zmm1, %zmm2
266 ; AVX512F-32-NEXT: vmovapd %zmm2, %zmm0
267 ; AVX512F-32-NEXT: retl
273 ; AVX512F-LABEL: shuffle_v8f64_9810dc54:
274 ; AVX512F: # %bb.0:
275 ; AVX512F-NEXT: vmovapd {{.*#+}} zmm2 = [1,0,9,8,5,4,13,12]
276 ; AVX512F-NEXT: vpermi2pd %zmm0, %zmm1, %zmm2
277 ; AVX512F-NEXT: vmovapd %zmm2, %zmm0
278 ; AVX512F-NEXT: retq
280 ; AVX512F-32-LABEL: shuffle_v8f64_9810dc54:
281 ; AVX512F-32: # %bb.0:
282 ; AVX512F-32-NEXT: vmovapd {{.*#+}} zmm2 = [1,0,0,0,9,0,8,0,5,0,4,0,13,0,12,0]
283 ; AVX512F-32-NEXT: vpermi2pd %zmm0, %zmm1, %zmm2
284 ; AVX512F-32-NEXT: vmovapd %zmm2, %zmm0
285 ; AVX512F-32-NEXT: retl
291 ; AVX512F-LABEL: shuffle_v8f64_08194c5d:
292 ; AVX512F: # %bb.0:
293 ; AVX512F-NEXT: vmovapd {{.*#+}} zmm2 = [0,8,1,9,4,12,5,13]
294 ; AVX512F-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
295 ; AVX512F-NEXT: retq
297 ; AVX512F-32-LABEL: shuffle_v8f64_08194c5d:
298 ; AVX512F-32: # %bb.0:
299 ; AVX512F-32-NEXT: vmovapd {{.*#+}} zmm2 = [0,0,8,0,1,0,9,0,4,0,12,0,5,0,13,0]
300 ; AVX512F-32-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
301 ; AVX512F-32-NEXT: retl
307 ; AVX512F-LABEL: shuffle_v8f64_2a3b6e7f:
308 ; AVX512F: # %bb.0:
309 ; AVX512F-NEXT: vmovapd {{.*#+}} zmm2 = [2,10,3,11,6,14,7,15]
310 ; AVX512F-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
311 ; AVX512F-NEXT: retq
313 ; AVX512F-32-LABEL: shuffle_v8f64_2a3b6e7f:
314 ; AVX512F-32: # %bb.0:
315 ; AVX512F-32-NEXT: vmovapd {{.*#+}} zmm2 = [2,0,10,0,3,0,11,0,6,0,14,0,7,0,15,0]
316 ; AVX512F-32-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
317 ; AVX512F-32-NEXT: retl
323 ; AVX512F-LABEL: shuffle_v8f64_08192a3b:
324 ; AVX512F: # %bb.0:
325 ; AVX512F-NEXT: vmovapd {{.*#+}} zmm2 = [0,8,1,9,2,10,3,11]
326 ; AVX512F-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
327 ; AVX512F-NEXT: retq
329 ; AVX512F-32-LABEL: shuffle_v8f64_08192a3b:
330 ; AVX512F-32: # %bb.0:
331 ; AVX512F-32-NEXT: vmovapd {{.*#+}} zmm2 = [0,0,8,0,1,0,9,0,2,0,10,0,3,0,11,0]
332 ; AVX512F-32-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
333 ; AVX512F-32-NEXT: retl
339 ; AVX512F-LABEL: shuffle_v8f64_08991abb:
340 ; AVX512F: # %bb.0:
341 ; AVX512F-NEXT: vmovapd {{.*#+}} zmm2 = [8,0,1,1,9,2,3,3]
342 ; AVX512F-NEXT: vpermi2pd %zmm0, %zmm1, %zmm2
343 ; AVX512F-NEXT: vmovapd %zmm2, %zmm0
344 ; AVX512F-NEXT: retq
346 ; AVX512F-32-LABEL: shuffle_v8f64_08991abb:
347 ; AVX512F-32: # %bb.0:
348 ; AVX512F-32-NEXT: vmovapd {{.*#+}} zmm2 = [8,0,0,0,1,0,1,0,9,0,2,0,3,0,3,0]
349 ; AVX512F-32-NEXT: vpermi2pd %zmm0, %zmm1, %zmm2
350 ; AVX512F-32-NEXT: vmovapd %zmm2, %zmm0
351 ; AVX512F-32-NEXT: retl
357 ; AVX512F-LABEL: shuffle_v8f64_091b2d3f:
358 ; AVX512F: # %bb.0:
359 ; AVX512F-NEXT: vmovapd {{.*#+}} zmm2 = [0,9,1,11,2,13,3,15]
360 ; AVX512F-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
361 ; AVX512F-NEXT: retq
363 ; AVX512F-32-LABEL: shuffle_v8f64_091b2d3f:
364 ; AVX512F-32: # %bb.0:
365 ; AVX512F-32-NEXT: vmovapd {{.*#+}} zmm2 = [0,0,9,0,1,0,11,0,2,0,13,0,3,0,15,0]
366 ; AVX512F-32-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
367 ; AVX512F-32-NEXT: retl
373 ; AVX512F-LABEL: shuffle_v8f64_09ab1def:
374 ; AVX512F: # %bb.0:
375 ; AVX512F-NEXT: vmovapd {{.*#+}} zmm2 = [8,1,2,3,9,5,6,7]
376 ; AVX512F-NEXT: vpermi2pd %zmm0, %zmm1, %zmm2
377 ; AVX512F-NEXT: vmovapd %zmm2, %zmm0
378 ; AVX512F-NEXT: retq
380 ; AVX512F-32-LABEL: shuffle_v8f64_09ab1def:
381 ; AVX512F-32: # %bb.0:
382 ; AVX512F-32-NEXT: vmovapd {{.*#+}} zmm2 = [8,0,1,0,2,0,3,0,9,0,5,0,6,0,7,0]
383 ; AVX512F-32-NEXT: vpermi2pd %zmm0, %zmm1, %zmm2
384 ; AVX512F-32-NEXT: vmovapd %zmm2, %zmm0
385 ; AVX512F-32-NEXT: retl
508 ; AVX512F-LABEL: shuffle_v8f64_00015444:
509 ; AVX512F: # %bb.0:
510 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,1,5,4,4,4]
511 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
512 ; AVX512F-NEXT: retq
514 ; AVX512F-32-LABEL: shuffle_v8f64_00015444:
515 ; AVX512F-32: # %bb.0:
516 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,1,0,5,0,4,0,4,0,4,0]
517 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
518 ; AVX512F-32-NEXT: retl
524 ; AVX512F-LABEL: shuffle_v8f64_00204644:
525 ; AVX512F: # %bb.0:
526 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,2,0,4,6,4,4]
527 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
528 ; AVX512F-NEXT: retq
530 ; AVX512F-32-LABEL: shuffle_v8f64_00204644:
531 ; AVX512F-32: # %bb.0:
532 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,2,0,0,0,4,0,6,0,4,0,4,0]
533 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
534 ; AVX512F-32-NEXT: retl
540 ; AVX512F-LABEL: shuffle_v8f64_03004474:
541 ; AVX512F: # %bb.0:
542 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,3,0,0,4,4,7,4]
543 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
544 ; AVX512F-NEXT: retq
546 ; AVX512F-32-LABEL: shuffle_v8f64_03004474:
547 ; AVX512F-32: # %bb.0:
548 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,3,0,0,0,0,0,4,0,4,0,7,0,4,0]
549 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
550 ; AVX512F-32-NEXT: retl
556 ; AVX512F-LABEL: shuffle_v8f64_10004444:
557 ; AVX512F: # %bb.0:
558 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [1,0,0,0,4,4,4,4]
559 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
560 ; AVX512F-NEXT: retq
562 ; AVX512F-32-LABEL: shuffle_v8f64_10004444:
563 ; AVX512F-32: # %bb.0:
564 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [1,0,0,0,0,0,0,0,4,0,4,0,4,0,4,0]
565 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
566 ; AVX512F-32-NEXT: retl
572 ; AVX512F-LABEL: shuffle_v8f64_22006446:
573 ; AVX512F: # %bb.0:
574 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [2,2,0,0,6,4,4,6]
575 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
576 ; AVX512F-NEXT: retq
578 ; AVX512F-32-LABEL: shuffle_v8f64_22006446:
579 ; AVX512F-32: # %bb.0:
580 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [2,0,2,0,0,0,0,0,6,0,4,0,4,0,6,0]
581 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
582 ; AVX512F-32-NEXT: retl
588 ; AVX512F-LABEL: shuffle_v8f64_33307474:
589 ; AVX512F: # %bb.0:
590 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [3,3,3,0,7,4,7,4]
591 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
592 ; AVX512F-NEXT: retq
594 ; AVX512F-32-LABEL: shuffle_v8f64_33307474:
595 ; AVX512F-32: # %bb.0:
596 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [3,0,3,0,3,0,0,0,7,0,4,0,7,0,4,0]
597 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
598 ; AVX512F-32-NEXT: retl
604 ; AVX512F-LABEL: shuffle_v8f64_32104567:
605 ; AVX512F: # %bb.0:
606 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [3,2,1,0,4,5,6,7]
607 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
608 ; AVX512F-NEXT: retq
610 ; AVX512F-32-LABEL: shuffle_v8f64_32104567:
611 ; AVX512F-32: # %bb.0:
612 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [3,0,2,0,1,0,0,0,4,0,5,0,6,0,7,0]
613 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
614 ; AVX512F-32-NEXT: retl
620 ; AVX512F-LABEL: shuffle_v8f64_00236744:
621 ; AVX512F: # %bb.0:
622 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,2,3,6,7,4,4]
623 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
624 ; AVX512F-NEXT: retq
626 ; AVX512F-32-LABEL: shuffle_v8f64_00236744:
627 ; AVX512F-32: # %bb.0:
628 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,2,0,3,0,6,0,7,0,4,0,4,0]
629 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
630 ; AVX512F-32-NEXT: retl
636 ; AVX512F-LABEL: shuffle_v8f64_00226644:
637 ; AVX512F: # %bb.0:
638 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,2,2,6,6,4,4]
639 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
640 ; AVX512F-NEXT: retq
642 ; AVX512F-32-LABEL: shuffle_v8f64_00226644:
643 ; AVX512F-32: # %bb.0:
644 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,2,0,2,0,6,0,6,0,4,0,4,0]
645 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
646 ; AVX512F-32-NEXT: retl
688 ; AVX512F-LABEL: shuffle_v8f64_002u6u44:
689 ; AVX512F: # %bb.0:
690 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = <0,0,2,u,6,u,4,4>
691 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
692 ; AVX512F-NEXT: retq
694 ; AVX512F-32-LABEL: shuffle_v8f64_002u6u44:
695 ; AVX512F-32: # %bb.0:
696 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = <0,0,0,0,2,0,u,u,6,0,u,u,4,0,4,0>
697 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
698 ; AVX512F-32-NEXT: retl
704 ; AVX512F-LABEL: shuffle_v8f64_00uu66uu:
705 ; AVX512F: # %bb.0:
706 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = <0,0,u,u,6,6,u,u>
707 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
708 ; AVX512F-NEXT: retq
710 ; AVX512F-32-LABEL: shuffle_v8f64_00uu66uu:
711 ; AVX512F-32: # %bb.0:
712 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = <0,0,0,0,u,u,u,u,6,0,6,0,u,u,u,u>
713 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
714 ; AVX512F-32-NEXT: retl
756 ; AVX512F-LABEL: shuffle_v8f64_c348cda0:
757 ; AVX512F: # %bb.0:
758 ; AVX512F-NEXT: vmovapd {{.*#+}} zmm2 = [4,11,12,0,4,5,2,8]
759 ; AVX512F-NEXT: vpermi2pd %zmm0, %zmm1, %zmm2
760 ; AVX512F-NEXT: vmovapd %zmm2, %zmm0
761 ; AVX512F-NEXT: retq
763 ; AVX512F-32-LABEL: shuffle_v8f64_c348cda0:
764 ; AVX512F-32: # %bb.0:
765 ; AVX512F-32-NEXT: vmovapd {{.*#+}} zmm2 = [4,0,11,0,12,0,0,0,4,0,5,0,2,0,8,0]
766 ; AVX512F-32-NEXT: vpermi2pd %zmm0, %zmm1, %zmm2
767 ; AVX512F-32-NEXT: vmovapd %zmm2, %zmm0
768 ; AVX512F-32-NEXT: retl
774 ; AVX512F-LABEL: shuffle_v8f64_f511235a:
775 ; AVX512F: # %bb.0:
776 ; AVX512F-NEXT: vmovapd {{.*#+}} zmm2 = [15,5,1,1,2,3,5,10]
777 ; AVX512F-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
778 ; AVX512F-NEXT: retq
780 ; AVX512F-32-LABEL: shuffle_v8f64_f511235a:
781 ; AVX512F-32: # %bb.0:
782 ; AVX512F-32-NEXT: vmovapd {{.*#+}} zmm2 = [15,0,5,0,1,0,1,0,2,0,3,0,5,0,10,0]
783 ; AVX512F-32-NEXT: vpermt2pd %zmm1, %zmm2, %zmm0
784 ; AVX512F-32-NEXT: retl
865 ; AVX512F-LABEL: shuffle_v8i64_00000010:
866 ; AVX512F: # %bb.0:
867 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,1,0]
868 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
869 ; AVX512F-NEXT: retq
871 ; AVX512F-32-LABEL: shuffle_v8i64_00000010:
872 ; AVX512F-32: # %bb.0:
873 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0]
874 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
875 ; AVX512F-32-NEXT: retl
881 ; AVX512F-LABEL: shuffle_v8i64_00000200:
882 ; AVX512F: # %bb.0:
883 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,2,0,0]
884 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
885 ; AVX512F-NEXT: retq
887 ; AVX512F-32-LABEL: shuffle_v8i64_00000200:
888 ; AVX512F-32: # %bb.0:
889 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0]
890 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
891 ; AVX512F-32-NEXT: retl
897 ; AVX512F-LABEL: shuffle_v8i64_00003000:
898 ; AVX512F: # %bb.0:
899 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,3,0,0,0]
900 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
901 ; AVX512F-NEXT: retq
903 ; AVX512F-32-LABEL: shuffle_v8i64_00003000:
904 ; AVX512F-32: # %bb.0:
905 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0]
906 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
907 ; AVX512F-32-NEXT: retl
913 ; AVX512F-LABEL: shuffle_v8i64_00040000:
914 ; AVX512F: # %bb.0:
915 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,4,0,0,0,0]
916 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
917 ; AVX512F-NEXT: retq
919 ; AVX512F-32-LABEL: shuffle_v8i64_00040000:
920 ; AVX512F-32: # %bb.0:
921 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0]
922 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
923 ; AVX512F-32-NEXT: retl
929 ; AVX512F-LABEL: shuffle_v8i64_00500000:
930 ; AVX512F: # %bb.0:
931 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,5,0,0,0,0,0]
932 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
933 ; AVX512F-NEXT: retq
935 ; AVX512F-32-LABEL: shuffle_v8i64_00500000:
936 ; AVX512F-32: # %bb.0:
937 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0]
938 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
939 ; AVX512F-32-NEXT: retl
945 ; AVX512F-LABEL: shuffle_v8i64_06000000:
946 ; AVX512F: # %bb.0:
947 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,6,0,0,0,0,0,0]
948 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
949 ; AVX512F-NEXT: retq
951 ; AVX512F-32-LABEL: shuffle_v8i64_06000000:
952 ; AVX512F-32: # %bb.0:
953 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0]
954 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
955 ; AVX512F-32-NEXT: retl
981 ; AVX512F-LABEL: shuffle_v8i64_01014545_mem:
982 ; AVX512F: # %bb.0:
983 ; AVX512F-NEXT: vpermpd {{.*#+}} zmm0 = mem[0,1,0,1,4,5,4,5]
984 ; AVX512F-NEXT: retq
986 ; AVX512F-32-LABEL: shuffle_v8i64_01014545_mem:
987 ; AVX512F-32: # %bb.0:
988 ; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax
989 ; AVX512F-32-NEXT: vpermpd {{.*#+}} zmm0 = mem[0,1,0,1,4,5,4,5]
990 ; AVX512F-32-NEXT: retl
998 ; AVX512F-LABEL: shuffle_v8i64_00112233:
999 ; AVX512F: # %bb.0:
1000 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,1,1,2,2,3,3]
1001 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1002 ; AVX512F-NEXT: retq
1004 ; AVX512F-32-LABEL: shuffle_v8i64_00112233:
1005 ; AVX512F-32: # %bb.0:
1006 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,1,0,1,0,2,0,2,0,3,0,3,0]
1007 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1008 ; AVX512F-32-NEXT: retl
1014 ; AVX512F-LABEL: shuffle_v8i64_00001111:
1015 ; AVX512F: # %bb.0:
1016 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,1,1,1,1]
1017 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1018 ; AVX512F-NEXT: retq
1020 ; AVX512F-32-LABEL: shuffle_v8i64_00001111:
1021 ; AVX512F-32: # %bb.0:
1022 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0]
1023 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1024 ; AVX512F-32-NEXT: retl
1041 ; AVX512F-LABEL: shuffle_v8i64_08080808:
1042 ; AVX512F: # %bb.0:
1043 ; AVX512F-NEXT: vbroadcasti32x4 {{.*#+}} zmm2 = [0,8,0,8,0,8,0,8]
1044 ; AVX512F-NEXT: # zmm2 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
1045 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
1046 ; AVX512F-NEXT: retq
1048 ; AVX512F-32-LABEL: shuffle_v8i64_08080808:
1049 ; AVX512F-32: # %bb.0:
1050 ; AVX512F-32-NEXT: vbroadcasti32x4 {{.*#+}} zmm2 = [0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0]
1051 ; AVX512F-32-NEXT: # zmm2 = mem[0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3]
1052 ; AVX512F-32-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
1053 ; AVX512F-32-NEXT: retl
1059 ; AVX512F-LABEL: shuffle_v8i64_08084c4c:
1060 ; AVX512F: # %bb.0:
1061 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,8,0,8,4,12,4,12]
1062 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
1063 ; AVX512F-NEXT: retq
1065 ; AVX512F-32-LABEL: shuffle_v8i64_08084c4c:
1066 ; AVX512F-32: # %bb.0:
1067 ; AVX512F-32-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,0,8,0,0,0,8,0,4,0,12,0,4,0,12,0]
1068 ; AVX512F-32-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
1069 ; AVX512F-32-NEXT: retl
1075 ; AVX512F-LABEL: shuffle_v8i64_8823cc67:
1076 ; AVX512F: # %bb.0:
1077 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,0,10,11,4,4,14,15]
1078 ; AVX512F-NEXT: vpermi2q %zmm0, %zmm1, %zmm2
1079 ; AVX512F-NEXT: vmovdqa64 %zmm2, %zmm0
1080 ; AVX512F-NEXT: retq
1082 ; AVX512F-32-LABEL: shuffle_v8i64_8823cc67:
1083 ; AVX512F-32: # %bb.0:
1084 ; AVX512F-32-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,0,0,0,10,0,11,0,4,0,4,0,14,0,15,0]
1085 ; AVX512F-32-NEXT: vpermi2q %zmm0, %zmm1, %zmm2
1086 ; AVX512F-32-NEXT: vmovdqa64 %zmm2, %zmm0
1087 ; AVX512F-32-NEXT: retl
1093 ; AVX512F-LABEL: shuffle_v8i64_9832dc76:
1094 ; AVX512F: # %bb.0:
1095 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [1,0,11,10,5,4,15,14]
1096 ; AVX512F-NEXT: vpermi2q %zmm0, %zmm1, %zmm2
1097 ; AVX512F-NEXT: vmovdqa64 %zmm2, %zmm0
1098 ; AVX512F-NEXT: retq
1100 ; AVX512F-32-LABEL: shuffle_v8i64_9832dc76:
1101 ; AVX512F-32: # %bb.0:
1102 ; AVX512F-32-NEXT: vmovdqa64 {{.*#+}} zmm2 = [1,0,0,0,11,0,10,0,5,0,4,0,15,0,14,0]
1103 ; AVX512F-32-NEXT: vpermi2q %zmm0, %zmm1, %zmm2
1104 ; AVX512F-32-NEXT: vmovdqa64 %zmm2, %zmm0
1105 ; AVX512F-32-NEXT: retl
1111 ; AVX512F-LABEL: shuffle_v8i64_9810dc54:
1112 ; AVX512F: # %bb.0:
1113 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [1,0,9,8,5,4,13,12]
1114 ; AVX512F-NEXT: vpermi2q %zmm0, %zmm1, %zmm2
1115 ; AVX512F-NEXT: vmovdqa64 %zmm2, %zmm0
1116 ; AVX512F-NEXT: retq
1118 ; AVX512F-32-LABEL: shuffle_v8i64_9810dc54:
1119 ; AVX512F-32: # %bb.0:
1120 ; AVX512F-32-NEXT: vmovdqa64 {{.*#+}} zmm2 = [1,0,0,0,9,0,8,0,5,0,4,0,13,0,12,0]
1121 ; AVX512F-32-NEXT: vpermi2q %zmm0, %zmm1, %zmm2
1122 ; AVX512F-32-NEXT: vmovdqa64 %zmm2, %zmm0
1123 ; AVX512F-32-NEXT: retl
1129 ; AVX512F-LABEL: shuffle_v8i64_08194c5d:
1130 ; AVX512F: # %bb.0:
1131 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,8,1,9,4,12,5,13]
1132 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
1133 ; AVX512F-NEXT: retq
1135 ; AVX512F-32-LABEL: shuffle_v8i64_08194c5d:
1136 ; AVX512F-32: # %bb.0:
1137 ; AVX512F-32-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,0,8,0,1,0,9,0,4,0,12,0,5,0,13,0]
1138 ; AVX512F-32-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
1139 ; AVX512F-32-NEXT: retl
1145 ; AVX512F-LABEL: shuffle_v8i64_2a3b6e7f:
1146 ; AVX512F: # %bb.0:
1147 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [2,10,3,11,6,14,7,15]
1148 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
1149 ; AVX512F-NEXT: retq
1151 ; AVX512F-32-LABEL: shuffle_v8i64_2a3b6e7f:
1152 ; AVX512F-32: # %bb.0:
1153 ; AVX512F-32-NEXT: vmovdqa64 {{.*#+}} zmm2 = [2,0,10,0,3,0,11,0,6,0,14,0,7,0,15,0]
1154 ; AVX512F-32-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
1155 ; AVX512F-32-NEXT: retl
1161 ; AVX512F-LABEL: shuffle_v8i64_08192a3b:
1162 ; AVX512F: # %bb.0:
1163 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,8,1,9,2,10,3,11]
1164 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
1165 ; AVX512F-NEXT: retq
1167 ; AVX512F-32-LABEL: shuffle_v8i64_08192a3b:
1168 ; AVX512F-32: # %bb.0:
1169 ; AVX512F-32-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,0,8,0,1,0,9,0,2,0,10,0,3,0,11,0]
1170 ; AVX512F-32-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
1171 ; AVX512F-32-NEXT: retl
1177 ; AVX512F-LABEL: shuffle_v8i64_08991abb:
1178 ; AVX512F: # %bb.0:
1179 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [8,0,1,1,9,2,3,3]
1180 ; AVX512F-NEXT: vpermi2q %zmm0, %zmm1, %zmm2
1181 ; AVX512F-NEXT: vmovdqa64 %zmm2, %zmm0
1182 ; AVX512F-NEXT: retq
1184 ; AVX512F-32-LABEL: shuffle_v8i64_08991abb:
1185 ; AVX512F-32: # %bb.0:
1186 ; AVX512F-32-NEXT: vmovdqa64 {{.*#+}} zmm2 = [8,0,0,0,1,0,1,0,9,0,2,0,3,0,3,0]
1187 ; AVX512F-32-NEXT: vpermi2q %zmm0, %zmm1, %zmm2
1188 ; AVX512F-32-NEXT: vmovdqa64 %zmm2, %zmm0
1189 ; AVX512F-32-NEXT: retl
1195 ; AVX512F-LABEL: shuffle_v8i64_091b2d3f:
1196 ; AVX512F: # %bb.0:
1197 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,9,1,11,2,13,3,15]
1198 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
1199 ; AVX512F-NEXT: retq
1201 ; AVX512F-32-LABEL: shuffle_v8i64_091b2d3f:
1202 ; AVX512F-32: # %bb.0:
1203 ; AVX512F-32-NEXT: vmovdqa64 {{.*#+}} zmm2 = [0,0,9,0,1,0,11,0,2,0,13,0,3,0,15,0]
1204 ; AVX512F-32-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
1205 ; AVX512F-32-NEXT: retl
1211 ; AVX512F-LABEL: shuffle_v8i64_09ab1def:
1212 ; AVX512F: # %bb.0:
1213 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [8,1,2,3,9,5,6,7]
1214 ; AVX512F-NEXT: vpermi2q %zmm0, %zmm1, %zmm2
1215 ; AVX512F-NEXT: vmovdqa64 %zmm2, %zmm0
1216 ; AVX512F-NEXT: retq
1218 ; AVX512F-32-LABEL: shuffle_v8i64_09ab1def:
1219 ; AVX512F-32: # %bb.0:
1220 ; AVX512F-32-NEXT: vmovdqa64 {{.*#+}} zmm2 = [8,0,1,0,2,0,3,0,9,0,5,0,6,0,7,0]
1221 ; AVX512F-32-NEXT: vpermi2q %zmm0, %zmm1, %zmm2
1222 ; AVX512F-32-NEXT: vmovdqa64 %zmm2, %zmm0
1223 ; AVX512F-32-NEXT: retl
1346 ; AVX512F-LABEL: shuffle_v8i64_00015444:
1347 ; AVX512F: # %bb.0:
1348 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,1,5,4,4,4]
1349 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1350 ; AVX512F-NEXT: retq
1352 ; AVX512F-32-LABEL: shuffle_v8i64_00015444:
1353 ; AVX512F-32: # %bb.0:
1354 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,0,0,1,0,5,0,4,0,4,0,4,0]
1355 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1356 ; AVX512F-32-NEXT: retl
1362 ; AVX512F-LABEL: shuffle_v8i64_00204644:
1363 ; AVX512F: # %bb.0:
1364 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,2,0,4,6,4,4]
1365 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1366 ; AVX512F-NEXT: retq
1368 ; AVX512F-32-LABEL: shuffle_v8i64_00204644:
1369 ; AVX512F-32: # %bb.0:
1370 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,2,0,0,0,4,0,6,0,4,0,4,0]
1371 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1372 ; AVX512F-32-NEXT: retl
1378 ; AVX512F-LABEL: shuffle_v8i64_03004474:
1379 ; AVX512F: # %bb.0:
1380 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,3,0,0,4,4,7,4]
1381 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1382 ; AVX512F-NEXT: retq
1384 ; AVX512F-32-LABEL: shuffle_v8i64_03004474:
1385 ; AVX512F-32: # %bb.0:
1386 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,3,0,0,0,0,0,4,0,4,0,7,0,4,0]
1387 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1388 ; AVX512F-32-NEXT: retl
1394 ; AVX512F-LABEL: shuffle_v8i64_10004444:
1395 ; AVX512F: # %bb.0:
1396 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [1,0,0,0,4,4,4,4]
1397 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1398 ; AVX512F-NEXT: retq
1400 ; AVX512F-32-LABEL: shuffle_v8i64_10004444:
1401 ; AVX512F-32: # %bb.0:
1402 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [1,0,0,0,0,0,0,0,4,0,4,0,4,0,4,0]
1403 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1404 ; AVX512F-32-NEXT: retl
1410 ; AVX512F-LABEL: shuffle_v8i64_22006446:
1411 ; AVX512F: # %bb.0:
1412 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [2,2,0,0,6,4,4,6]
1413 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1414 ; AVX512F-NEXT: retq
1416 ; AVX512F-32-LABEL: shuffle_v8i64_22006446:
1417 ; AVX512F-32: # %bb.0:
1418 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [2,0,2,0,0,0,0,0,6,0,4,0,4,0,6,0]
1419 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1420 ; AVX512F-32-NEXT: retl
1426 ; AVX512F-LABEL: shuffle_v8i64_33307474:
1427 ; AVX512F: # %bb.0:
1428 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [3,3,3,0,7,4,7,4]
1429 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1430 ; AVX512F-NEXT: retq
1432 ; AVX512F-32-LABEL: shuffle_v8i64_33307474:
1433 ; AVX512F-32: # %bb.0:
1434 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [3,0,3,0,3,0,0,0,7,0,4,0,7,0,4,0]
1435 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1436 ; AVX512F-32-NEXT: retl
1442 ; AVX512F-LABEL: shuffle_v8i64_32104567:
1443 ; AVX512F: # %bb.0:
1444 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [3,2,1,0,4,5,6,7]
1445 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1446 ; AVX512F-NEXT: retq
1448 ; AVX512F-32-LABEL: shuffle_v8i64_32104567:
1449 ; AVX512F-32: # %bb.0:
1450 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [3,0,2,0,1,0,0,0,4,0,5,0,6,0,7,0]
1451 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1452 ; AVX512F-32-NEXT: retl
1458 ; AVX512F-LABEL: shuffle_v8i64_00236744:
1459 ; AVX512F: # %bb.0:
1460 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,2,3,6,7,4,4]
1461 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1462 ; AVX512F-NEXT: retq
1464 ; AVX512F-32-LABEL: shuffle_v8i64_00236744:
1465 ; AVX512F-32: # %bb.0:
1466 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,2,0,3,0,6,0,7,0,4,0,4,0]
1467 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1468 ; AVX512F-32-NEXT: retl
1474 ; AVX512F-LABEL: shuffle_v8i64_00226644:
1475 ; AVX512F: # %bb.0:
1476 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,2,2,6,6,4,4]
1477 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1478 ; AVX512F-NEXT: retq
1480 ; AVX512F-32-LABEL: shuffle_v8i64_00226644:
1481 ; AVX512F-32: # %bb.0:
1482 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,0,0,2,0,2,0,6,0,6,0,4,0,4,0]
1483 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1484 ; AVX512F-32-NEXT: retl
1490 ; AVX512F-LABEL: shuffle_v8i64_10324567:
1491 ; AVX512F: # %bb.0:
1492 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [1,0,3,2,4,5,6,7]
1493 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1494 ; AVX512F-NEXT: retq
1496 ; AVX512F-32-LABEL: shuffle_v8i64_10324567:
1497 ; AVX512F-32: # %bb.0:
1498 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [1,0,0,0,3,0,2,0,4,0,5,0,6,0,7,0]
1499 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1500 ; AVX512F-32-NEXT: retl
1506 ; AVX512F-LABEL: shuffle_v8i64_11334567:
1507 ; AVX512F: # %bb.0:
1508 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [1,1,3,3,4,5,6,7]
1509 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1510 ; AVX512F-NEXT: retq
1512 ; AVX512F-32-LABEL: shuffle_v8i64_11334567:
1513 ; AVX512F-32: # %bb.0:
1514 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [1,0,1,0,3,0,3,0,4,0,5,0,6,0,7,0]
1515 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1516 ; AVX512F-32-NEXT: retl
1522 ; AVX512F-LABEL: shuffle_v8i64_01235467:
1523 ; AVX512F: # %bb.0:
1524 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,1,2,3,5,4,6,7]
1525 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1526 ; AVX512F-NEXT: retq
1528 ; AVX512F-32-LABEL: shuffle_v8i64_01235467:
1529 ; AVX512F-32: # %bb.0:
1530 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,1,0,2,0,3,0,5,0,4,0,6,0,7,0]
1531 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1532 ; AVX512F-32-NEXT: retl
1538 ; AVX512F-LABEL: shuffle_v8i64_01235466:
1539 ; AVX512F: # %bb.0:
1540 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = [0,1,2,3,5,4,6,6]
1541 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1542 ; AVX512F-NEXT: retq
1544 ; AVX512F-32-LABEL: shuffle_v8i64_01235466:
1545 ; AVX512F-32: # %bb.0:
1546 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = [0,0,1,0,2,0,3,0,5,0,4,0,6,0,6,0]
1547 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1548 ; AVX512F-32-NEXT: retl
1554 ; AVX512F-LABEL: shuffle_v8i64_002u6u44:
1555 ; AVX512F: # %bb.0:
1556 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = <0,0,2,u,6,u,4,4>
1557 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1558 ; AVX512F-NEXT: retq
1560 ; AVX512F-32-LABEL: shuffle_v8i64_002u6u44:
1561 ; AVX512F-32: # %bb.0:
1562 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = <0,0,0,0,2,0,u,u,6,0,u,u,4,0,4,0>
1563 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1564 ; AVX512F-32-NEXT: retl
1570 ; AVX512F-LABEL: shuffle_v8i64_00uu66uu:
1571 ; AVX512F: # %bb.0:
1572 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = <0,0,u,u,6,6,u,u>
1573 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1574 ; AVX512F-NEXT: retq
1576 ; AVX512F-32-LABEL: shuffle_v8i64_00uu66uu:
1577 ; AVX512F-32: # %bb.0:
1578 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = <0,0,0,0,u,u,u,u,6,0,6,0,u,u,u,u>
1579 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1580 ; AVX512F-32-NEXT: retl
1586 ; AVX512F-LABEL: shuffle_v8i64_103245uu:
1587 ; AVX512F: # %bb.0:
1588 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = <1,0,3,2,4,5,u,u>
1589 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1590 ; AVX512F-NEXT: retq
1592 ; AVX512F-32-LABEL: shuffle_v8i64_103245uu:
1593 ; AVX512F-32: # %bb.0:
1594 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = <1,0,0,0,3,0,2,0,4,0,5,0,u,u,u,u>
1595 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1596 ; AVX512F-32-NEXT: retl
1602 ; AVX512F-LABEL: shuffle_v8i64_1133uu67:
1603 ; AVX512F: # %bb.0:
1604 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = <1,1,3,3,u,u,6,7>
1605 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1606 ; AVX512F-NEXT: retq
1608 ; AVX512F-32-LABEL: shuffle_v8i64_1133uu67:
1609 ; AVX512F-32: # %bb.0:
1610 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = <1,0,1,0,3,0,3,0,u,u,u,u,6,0,7,0>
1611 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1612 ; AVX512F-32-NEXT: retl
1618 ; AVX512F-LABEL: shuffle_v8i64_0uu354uu:
1619 ; AVX512F: # %bb.0:
1620 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = <0,u,u,3,5,4,u,u>
1621 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1622 ; AVX512F-NEXT: retq
1624 ; AVX512F-32-LABEL: shuffle_v8i64_0uu354uu:
1625 ; AVX512F-32: # %bb.0:
1626 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = <0,0,u,u,u,u,3,0,5,0,4,0,u,u,u,u>
1627 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1628 ; AVX512F-32-NEXT: retl
1634 ; AVX512F-LABEL: shuffle_v8i64_uuu3uu66:
1635 ; AVX512F: # %bb.0:
1636 ; AVX512F-NEXT: vmovaps {{.*#+}} zmm1 = <u,u,u,3,u,u,6,6>
1637 ; AVX512F-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1638 ; AVX512F-NEXT: retq
1640 ; AVX512F-32-LABEL: shuffle_v8i64_uuu3uu66:
1641 ; AVX512F-32: # %bb.0:
1642 ; AVX512F-32-NEXT: vmovaps {{.*#+}} zmm1 = <u,u,u,u,u,u,3,0,u,u,u,u,6,0,6,0>
1643 ; AVX512F-32-NEXT: vpermpd %zmm0, %zmm1, %zmm0
1644 ; AVX512F-32-NEXT: retl
1650 ; AVX512F-LABEL: shuffle_v8i64_6caa87e5:
1651 ; AVX512F: # %bb.0:
1652 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [14,4,2,2,0,15,6,13]
1653 ; AVX512F-NEXT: vpermi2q %zmm0, %zmm1, %zmm2
1654 ; AVX512F-NEXT: vmovdqa64 %zmm2, %zmm0
1655 ; AVX512F-NEXT: retq
1657 ; AVX512F-32-LABEL: shuffle_v8i64_6caa87e5:
1658 ; AVX512F-32: # %bb.0:
1659 ; AVX512F-32-NEXT: vmovdqa64 {{.*#+}} zmm2 = [14,0,4,0,2,0,2,0,0,0,15,0,6,0,13,0]
1660 ; AVX512F-32-NEXT: vpermi2q %zmm0, %zmm1, %zmm2
1661 ; AVX512F-32-NEXT: vmovdqa64 %zmm2, %zmm0
1662 ; AVX512F-32-NEXT: retl
1779 ; AVX512F-LABEL: test_vshuff64x2_512_mem:
1780 ; AVX512F: # %bb.0:
1781 ; AVX512F-NEXT: vshuff64x2 {{.*#+}} zmm0 = zmm0[0,1,4,5],mem[2,3,0,1]
1782 ; AVX512F-NEXT: retq
1784 ; AVX512F-32-LABEL: test_vshuff64x2_512_mem:
1785 ; AVX512F-32: # %bb.0:
1786 ; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax
1787 ; AVX512F-32-NEXT: vshuff64x2 {{.*#+}} zmm0 = zmm0[0,1,4,5],mem[2,3,0,1]
1788 ; AVX512F-32-NEXT: retl
1795 ; AVX512F-LABEL: test_vshuff64x2_512_mem_mask:
1796 ; AVX512F: # %bb.0:
1797 ; AVX512F-NEXT: vpmovsxwq %xmm1, %zmm1
1798 ; AVX512F-NEXT: vpsllq $63, %zmm1, %zmm1
1799 ; AVX512F-NEXT: vptestmq %zmm1, %zmm1, %k1
1800 ; AVX512F-NEXT: vshuff64x2 {{.*#+}} zmm0 {%k1} = zmm0[0,1,4,5],mem[2,3,0,1]
1801 ; AVX512F-NEXT: retq
1803 ; AVX512F-32-LABEL: test_vshuff64x2_512_mem_mask:
1804 ; AVX512F-32: # %bb.0:
1805 ; AVX512F-32-NEXT: vpmovsxwq %xmm1, %zmm1
1806 ; AVX512F-32-NEXT: vpsllq $63, %zmm1, %zmm1
1807 ; AVX512F-32-NEXT: vptestmq %zmm1, %zmm1, %k1
1808 ; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax
1809 ; AVX512F-32-NEXT: vshuff64x2 {{.*#+}} zmm0 {%k1} = zmm0[0,1,4,5],mem[2,3,0,1]
1810 ; AVX512F-32-NEXT: retl
1818 ; AVX512F-LABEL: test_vshuff64x2_512_mem_maskz:
1819 ; AVX512F: # %bb.0:
1820 ; AVX512F-NEXT: vpmovsxwq %xmm1, %zmm1
1821 ; AVX512F-NEXT: vpsllq $63, %zmm1, %zmm1
1822 ; AVX512F-NEXT: vptestmq %zmm1, %zmm1, %k1
1823 ; AVX512F-NEXT: vshuff64x2 {{.*#+}} zmm0 {%k1} {z} = zmm0[0,1,4,5],mem[2,3,0,1]
1824 ; AVX512F-NEXT: retq
1826 ; AVX512F-32-LABEL: test_vshuff64x2_512_mem_maskz:
1827 ; AVX512F-32: # %bb.0:
1828 ; AVX512F-32-NEXT: vpmovsxwq %xmm1, %zmm1
1829 ; AVX512F-32-NEXT: vpsllq $63, %zmm1, %zmm1
1830 ; AVX512F-32-NEXT: vptestmq %zmm1, %zmm1, %k1
1831 ; AVX512F-32-NEXT: movl {{[0-9]+}}(%esp), %eax
1832 ; AVX512F-32-NEXT: vshuff64x2 {{.*#+}} zmm0 {%k1} {z} = zmm0[0,1,4,5],mem[2,3,0,1]
1833 ; AVX512F-32-NEXT: retl
1913 ; AVX512F-LABEL: mask_shuffle_v8i64_12345678:
1914 ; AVX512F: # %bb.0:
1915 ; AVX512F-NEXT: kmovw %edi, %k1
1916 ; AVX512F-NEXT: valignq {{.*#+}} zmm2 {%k1} = zmm0[1,2,3,4,5,6,7],zmm1[0]
1917 ; AVX512F-NEXT: vmovdqa64 %zmm2, %zmm0
1918 ; AVX512F-NEXT: retq
1920 ; AVX512F-32-LABEL: mask_shuffle_v8i64_12345678:
1921 ; AVX512F-32: # %bb.0:
1922 ; AVX512F-32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
1923 ; AVX512F-32-NEXT: kmovw %eax, %k1
1924 ; AVX512F-32-NEXT: valignq {{.*#+}} zmm2 {%k1} = zmm0[1,2,3,4,5,6,7],zmm1[0]
1925 ; AVX512F-32-NEXT: vmovdqa64 %zmm2, %zmm0
1926 ; AVX512F-32-NEXT: retl
1934 ; AVX512F-LABEL: mask_shuffle_v8i64_12345670:
1935 ; AVX512F: # %bb.0:
1936 ; AVX512F-NEXT: kmovw %edi, %k1
1937 ; AVX512F-NEXT: valignq {{.*#+}} zmm1 {%k1} = zmm0[1,2,3,4,5,6,7,0]
1938 ; AVX512F-NEXT: vmovdqa64 %zmm1, %zmm0
1939 ; AVX512F-NEXT: retq
1941 ; AVX512F-32-LABEL: mask_shuffle_v8i64_12345670:
1942 ; AVX512F-32: # %bb.0:
1943 ; AVX512F-32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
1944 ; AVX512F-32-NEXT: kmovw %eax, %k1
1945 ; AVX512F-32-NEXT: valignq {{.*#+}} zmm1 {%k1} = zmm0[1,2,3,4,5,6,7,0]
1946 ; AVX512F-32-NEXT: vmovdqa64 %zmm1, %zmm0
1947 ; AVX512F-32-NEXT: retl
1955 ; AVX512F-LABEL: maskz_shuffle_v8i64_12345678:
1956 ; AVX512F: # %bb.0:
1957 ; AVX512F-NEXT: kmovw %edi, %k1
1958 ; AVX512F-NEXT: valignq {{.*#+}} zmm0 {%k1} {z} = zmm0[1,2,3,4,5,6,7],zmm1[0]
1959 ; AVX512F-NEXT: retq
1961 ; AVX512F-32-LABEL: maskz_shuffle_v8i64_12345678:
1962 ; AVX512F-32: # %bb.0:
1963 ; AVX512F-32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
1964 ; AVX512F-32-NEXT: kmovw %eax, %k1
1965 ; AVX512F-32-NEXT: valignq {{.*#+}} zmm0 {%k1} {z} = zmm0[1,2,3,4,5,6,7],zmm1[0]
1966 ; AVX512F-32-NEXT: retl
1974 ; AVX512F-LABEL: maskz_shuffle_v8i64_12345670:
1975 ; AVX512F: # %bb.0:
1976 ; AVX512F-NEXT: kmovw %edi, %k1
1977 ; AVX512F-NEXT: valignq {{.*#+}} zmm0 {%k1} {z} = zmm0[1,2,3,4,5,6,7,0]
1978 ; AVX512F-NEXT: retq
1980 ; AVX512F-32-LABEL: maskz_shuffle_v8i64_12345670:
1981 ; AVX512F-32: # %bb.0:
1982 ; AVX512F-32-NEXT: movzbl {{[0-9]+}}(%esp), %eax
1983 ; AVX512F-32-NEXT: kmovw %eax, %k1
1984 ; AVX512F-32-NEXT: valignq {{.*#+}} zmm0 {%k1} {z} = zmm0[1,2,3,4,5,6,7,0]
1985 ; AVX512F-32-NEXT: retl
2188 ; AVX512F-LABEL: test_v8f64_2346:
2189 ; AVX512F: # %bb.0:
2190 ; AVX512F-NEXT: vbroadcasti64x4 {{.*#+}} zmm1 = [2,3,4,6,2,3,4,6]
2191 ; AVX512F-NEXT: # zmm1 = mem[0,1,2,3,0,1,2,3]
2192 ; AVX512F-NEXT: vpermq %zmm0, %zmm1, %zmm0
2193 ; AVX512F-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
2194 ; AVX512F-NEXT: retq
2196 ; AVX512F-32-LABEL: test_v8f64_2346:
2197 ; AVX512F-32: # %bb.0:
2198 ; AVX512F-32-NEXT: vbroadcasti64x4 {{.*#+}} zmm1 = [2,0,3,0,4,0,6,0,2,0,3,0,4,0,6,0]
2199 ; AVX512F-32-NEXT: # zmm1 = mem[0,1,2,3,0,1,2,3]
2200 ; AVX512F-32-NEXT: vpermq %zmm0, %zmm1, %zmm0
2201 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
2202 ; AVX512F-32-NEXT: retl
2222 ; AVX512F-LABEL: test_v8i64_1257:
2223 ; AVX512F: # %bb.0:
2224 ; AVX512F-NEXT: vbroadcasti64x4 {{.*#+}} zmm1 = [1,2,5,7,1,2,5,7]
2225 ; AVX512F-NEXT: # zmm1 = mem[0,1,2,3,0,1,2,3]
2226 ; AVX512F-NEXT: vpermq %zmm0, %zmm1, %zmm0
2227 ; AVX512F-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
2228 ; AVX512F-NEXT: retq
2230 ; AVX512F-32-LABEL: test_v8i64_1257:
2231 ; AVX512F-32: # %bb.0:
2232 ; AVX512F-32-NEXT: vbroadcasti64x4 {{.*#+}} zmm1 = [1,0,2,0,5,0,7,0,1,0,2,0,5,0,7,0]
2233 ; AVX512F-32-NEXT: # zmm1 = mem[0,1,2,3,0,1,2,3]
2234 ; AVX512F-32-NEXT: vpermq %zmm0, %zmm1, %zmm0
2235 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
2236 ; AVX512F-32-NEXT: retl