Lines Matching refs:AVX2

2 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2             | FileCheck %s --check-prefixes=AVX2
7 ; AVX2-LABEL: fadd_v4f32:
8 ; AVX2: # %bb.0:
9 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
10 ; AVX2-NEXT: vbroadcastss {{.*#+}} xmm3 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0]
11 ; AVX2-NEXT: vblendvps %xmm0, %xmm2, %xmm3, %xmm0
12 ; AVX2-NEXT: vaddps %xmm0, %xmm1, %xmm0
13 ; AVX2-NEXT: retq
39 ; AVX2-LABEL: fadd_v8f32_commute:
40 ; AVX2: # %bb.0:
41 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
42 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
43 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E…
44 ; AVX2-NEXT: vblendvps %ymm0, %ymm2, %ymm3, %ymm0
45 ; AVX2-NEXT: vaddps %ymm1, %ymm0, %ymm0
46 ; AVX2-NEXT: retq
73 ; AVX2-LABEL: fadd_v16f32_swap:
74 ; AVX2: # %bb.0:
75 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
76 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
77 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
78 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm6 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E…
79 ; AVX2-NEXT: vblendvps %ymm5, %ymm6, %ymm3, %ymm3
80 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
81 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
82 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
83 ; AVX2-NEXT: vblendvps %ymm0, %ymm6, %ymm4, %ymm4
84 ; AVX2-NEXT: vaddps %ymm3, %ymm1, %ymm0
85 ; AVX2-NEXT: vaddps %ymm4, %ymm2, %ymm1
86 ; AVX2-NEXT: retq
102 ; AVX2-LABEL: fadd_v16f32_commute_swap:
103 ; AVX2: # %bb.0:
104 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
105 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
106 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
107 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm6 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E…
108 ; AVX2-NEXT: vblendvps %ymm5, %ymm6, %ymm3, %ymm3
109 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
110 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
111 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
112 ; AVX2-NEXT: vblendvps %ymm0, %ymm6, %ymm4, %ymm4
113 ; AVX2-NEXT: vaddps %ymm1, %ymm3, %ymm0
114 ; AVX2-NEXT: vaddps %ymm2, %ymm4, %ymm1
115 ; AVX2-NEXT: retq
131 ; AVX2-LABEL: fsub_v4f32:
132 ; AVX2: # %bb.0:
133 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
134 ; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0
135 ; AVX2-NEXT: vpand %xmm2, %xmm0, %xmm0
136 ; AVX2-NEXT: vsubps %xmm0, %xmm1, %xmm0
137 ; AVX2-NEXT: retq
164 ; AVX2-LABEL: fsub_v8f32_commute:
165 ; AVX2: # %bb.0:
166 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
167 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
168 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
169 ; AVX2-NEXT: vpand %ymm2, %ymm0, %ymm0
170 ; AVX2-NEXT: vsubps %ymm1, %ymm0, %ymm0
171 ; AVX2-NEXT: retq
197 ; AVX2-LABEL: fsub_v16f32_swap:
198 ; AVX2: # %bb.0:
199 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
200 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
201 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
202 ; AVX2-NEXT: vpsrad $31, %ymm5, %ymm5
203 ; AVX2-NEXT: vpandn %ymm4, %ymm5, %ymm4
204 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
205 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
206 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
207 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
208 ; AVX2-NEXT: vpandn %ymm3, %ymm0, %ymm0
209 ; AVX2-NEXT: vsubps %ymm0, %ymm1, %ymm0
210 ; AVX2-NEXT: vsubps %ymm4, %ymm2, %ymm1
211 ; AVX2-NEXT: retq
229 ; AVX2-LABEL: fsub_v16f32_commute_swap:
230 ; AVX2: # %bb.0:
231 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
232 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
233 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
234 ; AVX2-NEXT: vpsrad $31, %ymm5, %ymm5
235 ; AVX2-NEXT: vpandn %ymm4, %ymm5, %ymm4
236 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
237 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
238 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
239 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
240 ; AVX2-NEXT: vpandn %ymm3, %ymm0, %ymm0
241 ; AVX2-NEXT: vsubps %ymm1, %ymm0, %ymm0
242 ; AVX2-NEXT: vsubps %ymm2, %ymm4, %ymm1
243 ; AVX2-NEXT: retq
259 ; AVX2-LABEL: fmul_v4f32:
260 ; AVX2: # %bb.0:
261 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
262 ; AVX2-NEXT: vbroadcastss {{.*#+}} xmm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
263 ; AVX2-NEXT: vblendvps %xmm0, %xmm2, %xmm3, %xmm0
264 ; AVX2-NEXT: vmulps %xmm0, %xmm1, %xmm0
265 ; AVX2-NEXT: retq
291 ; AVX2-LABEL: fmul_v8f32_commute:
292 ; AVX2: # %bb.0:
293 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
294 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
295 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E…
296 ; AVX2-NEXT: vblendvps %ymm0, %ymm2, %ymm3, %ymm0
297 ; AVX2-NEXT: vmulps %ymm1, %ymm0, %ymm0
298 ; AVX2-NEXT: retq
325 ; AVX2-LABEL: fmul_v16f32_swap:
326 ; AVX2: # %bb.0:
327 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
328 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
329 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
330 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm6 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E…
331 ; AVX2-NEXT: vblendvps %ymm5, %ymm6, %ymm3, %ymm3
332 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
333 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
334 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
335 ; AVX2-NEXT: vblendvps %ymm0, %ymm6, %ymm4, %ymm4
336 ; AVX2-NEXT: vmulps %ymm3, %ymm1, %ymm0
337 ; AVX2-NEXT: vmulps %ymm4, %ymm2, %ymm1
338 ; AVX2-NEXT: retq
354 ; AVX2-LABEL: fmul_v16f32_commute_swap:
355 ; AVX2: # %bb.0:
356 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
357 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
358 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
359 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm6 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E…
360 ; AVX2-NEXT: vblendvps %ymm5, %ymm6, %ymm3, %ymm3
361 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
362 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
363 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
364 ; AVX2-NEXT: vblendvps %ymm0, %ymm6, %ymm4, %ymm4
365 ; AVX2-NEXT: vmulps %ymm1, %ymm3, %ymm0
366 ; AVX2-NEXT: vmulps %ymm2, %ymm4, %ymm1
367 ; AVX2-NEXT: retq
383 ; AVX2-LABEL: fdiv_v4f32:
384 ; AVX2: # %bb.0:
385 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
386 ; AVX2-NEXT: vbroadcastss {{.*#+}} xmm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
387 ; AVX2-NEXT: vblendvps %xmm0, %xmm2, %xmm3, %xmm0
388 ; AVX2-NEXT: vdivps %xmm0, %xmm1, %xmm0
389 ; AVX2-NEXT: retq
415 ; AVX2-LABEL: fdiv_v8f32_commute:
416 ; AVX2: # %bb.0:
417 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
418 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
419 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E…
420 ; AVX2-NEXT: vblendvps %ymm0, %ymm2, %ymm3, %ymm0
421 ; AVX2-NEXT: vdivps %ymm1, %ymm0, %ymm0
422 ; AVX2-NEXT: retq
450 ; AVX2-LABEL: fdiv_v16f32_swap:
451 ; AVX2: # %bb.0:
452 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
453 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
454 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
455 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm6 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E…
456 ; AVX2-NEXT: vblendvps %ymm5, %ymm6, %ymm3, %ymm3
457 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
458 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
459 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
460 ; AVX2-NEXT: vblendvps %ymm0, %ymm6, %ymm4, %ymm4
461 ; AVX2-NEXT: vdivps %ymm3, %ymm1, %ymm0
462 ; AVX2-NEXT: vdivps %ymm4, %ymm2, %ymm1
463 ; AVX2-NEXT: retq
479 ; AVX2-LABEL: fdiv_v16f32_commute_swap:
480 ; AVX2: # %bb.0:
481 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
482 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
483 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
484 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm6 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E…
485 ; AVX2-NEXT: vblendvps %ymm5, %ymm6, %ymm3, %ymm3
486 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
487 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
488 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
489 ; AVX2-NEXT: vblendvps %ymm0, %ymm6, %ymm4, %ymm4
490 ; AVX2-NEXT: vdivps %ymm1, %ymm3, %ymm0
491 ; AVX2-NEXT: vdivps %ymm2, %ymm4, %ymm1
492 ; AVX2-NEXT: retq
508 ; AVX2-LABEL: fadd_v8f32_cast_cond:
509 ; AVX2: # %bb.0:
510 ; AVX2-NEXT: vmovd %edi, %xmm2
511 ; AVX2-NEXT: vpbroadcastb %xmm2, %ymm2
512 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128]
513 ; AVX2-NEXT: vpand %ymm3, %ymm2, %ymm2
514 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm2, %ymm2
515 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E…
516 ; AVX2-NEXT: vblendvps %ymm2, %ymm1, %ymm3, %ymm1
517 ; AVX2-NEXT: vaddps %ymm1, %ymm0, %ymm0
518 ; AVX2-NEXT: retq
541 ; AVX2-LABEL: fadd_v8f64_cast_cond:
542 ; AVX2: # %bb.0:
543 ; AVX2-NEXT: vmovd %edi, %xmm4
544 ; AVX2-NEXT: vpbroadcastb %xmm4, %ymm4
545 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [16,32,64,128]
546 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm6
547 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm6, %ymm5
548 ; AVX2-NEXT: vbroadcastsd {{.*#+}} ymm6 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0]
549 ; AVX2-NEXT: vblendvpd %ymm5, %ymm3, %ymm6, %ymm3
550 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [1,2,4,8]
551 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm4
552 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm4, %ymm4
553 ; AVX2-NEXT: vblendvpd %ymm4, %ymm2, %ymm6, %ymm2
554 ; AVX2-NEXT: vaddpd %ymm2, %ymm0, %ymm0
555 ; AVX2-NEXT: vaddpd %ymm3, %ymm1, %ymm1
556 ; AVX2-NEXT: retq
570 ; AVX2-LABEL: fsub_v8f32_cast_cond:
571 ; AVX2: # %bb.0:
572 ; AVX2-NEXT: vmovd %edi, %xmm2
573 ; AVX2-NEXT: vpbroadcastb %xmm2, %ymm2
574 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128]
575 ; AVX2-NEXT: vpand %ymm3, %ymm2, %ymm2
576 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm2, %ymm2
577 ; AVX2-NEXT: vpand %ymm1, %ymm2, %ymm1
578 ; AVX2-NEXT: vsubps %ymm1, %ymm0, %ymm0
579 ; AVX2-NEXT: retq
601 ; AVX2-LABEL: fsub_v8f64_cast_cond:
602 ; AVX2: # %bb.0:
603 ; AVX2-NEXT: vmovd %edi, %xmm4
604 ; AVX2-NEXT: vpbroadcastb %xmm4, %ymm4
605 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [16,32,64,128]
606 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm6
607 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm6, %ymm5
608 ; AVX2-NEXT: vpand %ymm3, %ymm5, %ymm3
609 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [1,2,4,8]
610 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm4
611 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm4, %ymm4
612 ; AVX2-NEXT: vpand %ymm2, %ymm4, %ymm2
613 ; AVX2-NEXT: vsubpd %ymm2, %ymm0, %ymm0
614 ; AVX2-NEXT: vsubpd %ymm3, %ymm1, %ymm1
615 ; AVX2-NEXT: retq
629 ; AVX2-LABEL: fmul_v8f32_cast_cond:
630 ; AVX2: # %bb.0:
631 ; AVX2-NEXT: vmovd %edi, %xmm2
632 ; AVX2-NEXT: vpbroadcastb %xmm2, %ymm2
633 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128]
634 ; AVX2-NEXT: vpand %ymm3, %ymm2, %ymm2
635 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm2, %ymm2
636 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E…
637 ; AVX2-NEXT: vblendvps %ymm2, %ymm1, %ymm3, %ymm1
638 ; AVX2-NEXT: vmulps %ymm1, %ymm0, %ymm0
639 ; AVX2-NEXT: retq
662 ; AVX2-LABEL: fmul_v8f64_cast_cond:
663 ; AVX2: # %bb.0:
664 ; AVX2-NEXT: vmovd %edi, %xmm4
665 ; AVX2-NEXT: vpbroadcastb %xmm4, %ymm4
666 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [16,32,64,128]
667 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm6
668 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm6, %ymm5
669 ; AVX2-NEXT: vbroadcastsd {{.*#+}} ymm6 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
670 ; AVX2-NEXT: vblendvpd %ymm5, %ymm3, %ymm6, %ymm3
671 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [1,2,4,8]
672 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm4
673 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm4, %ymm4
674 ; AVX2-NEXT: vblendvpd %ymm4, %ymm2, %ymm6, %ymm2
675 ; AVX2-NEXT: vmulpd %ymm2, %ymm0, %ymm0
676 ; AVX2-NEXT: vmulpd %ymm3, %ymm1, %ymm1
677 ; AVX2-NEXT: retq
691 ; AVX2-LABEL: fdiv_v8f32_cast_cond:
692 ; AVX2: # %bb.0:
693 ; AVX2-NEXT: vmovd %edi, %xmm2
694 ; AVX2-NEXT: vpbroadcastb %xmm2, %ymm2
695 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128]
696 ; AVX2-NEXT: vpand %ymm3, %ymm2, %ymm2
697 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm2, %ymm2
698 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E…
699 ; AVX2-NEXT: vblendvps %ymm2, %ymm1, %ymm3, %ymm1
700 ; AVX2-NEXT: vdivps %ymm1, %ymm0, %ymm0
701 ; AVX2-NEXT: retq
724 ; AVX2-LABEL: fdiv_v8f64_cast_cond:
725 ; AVX2: # %bb.0:
726 ; AVX2-NEXT: vmovd %edi, %xmm4
727 ; AVX2-NEXT: vpbroadcastb %xmm4, %ymm4
728 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [16,32,64,128]
729 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm6
730 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm6, %ymm5
731 ; AVX2-NEXT: vbroadcastsd {{.*#+}} ymm6 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
732 ; AVX2-NEXT: vblendvpd %ymm5, %ymm3, %ymm6, %ymm3
733 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [1,2,4,8]
734 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm4
735 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm4, %ymm4
736 ; AVX2-NEXT: vblendvpd %ymm4, %ymm2, %ymm6, %ymm2
737 ; AVX2-NEXT: vdivpd %ymm2, %ymm0, %ymm0
738 ; AVX2-NEXT: vdivpd %ymm3, %ymm1, %ymm1
739 ; AVX2-NEXT: retq
753 ; AVX2-LABEL: add_v4i32:
754 ; AVX2: # %bb.0:
755 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
756 ; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0
757 ; AVX2-NEXT: vpand %xmm2, %xmm0, %xmm0
758 ; AVX2-NEXT: vpaddd %xmm0, %xmm1, %xmm0
759 ; AVX2-NEXT: retq
784 ; AVX2-LABEL: add_v8i32_commute:
785 ; AVX2: # %bb.0:
786 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
787 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
788 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
789 ; AVX2-NEXT: vpand %ymm2, %ymm0, %ymm0
790 ; AVX2-NEXT: vpaddd %ymm1, %ymm0, %ymm0
791 ; AVX2-NEXT: retq
817 ; AVX2-LABEL: add_v8i32_cast_cond:
818 ; AVX2: # %bb.0:
819 ; AVX2-NEXT: vmovd %edi, %xmm2
820 ; AVX2-NEXT: vpbroadcastb %xmm2, %ymm2
821 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128]
822 ; AVX2-NEXT: vpand %ymm3, %ymm2, %ymm2
823 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm2, %ymm2
824 ; AVX2-NEXT: vpand %ymm1, %ymm2, %ymm1
825 ; AVX2-NEXT: vpaddd %ymm1, %ymm0, %ymm0
826 ; AVX2-NEXT: retq
848 ; AVX2-LABEL: add_v8i64_cast_cond:
849 ; AVX2: # %bb.0:
850 ; AVX2-NEXT: vmovd %edi, %xmm4
851 ; AVX2-NEXT: vpbroadcastb %xmm4, %ymm4
852 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [16,32,64,128]
853 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm6
854 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm6, %ymm5
855 ; AVX2-NEXT: vpand %ymm3, %ymm5, %ymm3
856 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [1,2,4,8]
857 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm4
858 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm4, %ymm4
859 ; AVX2-NEXT: vpand %ymm2, %ymm4, %ymm2
860 ; AVX2-NEXT: vpaddq %ymm2, %ymm0, %ymm0
861 ; AVX2-NEXT: vpaddq %ymm3, %ymm1, %ymm1
862 ; AVX2-NEXT: retq
876 ; AVX2-LABEL: sub_v4i32:
877 ; AVX2: # %bb.0:
878 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
879 ; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0
880 ; AVX2-NEXT: vpand %xmm2, %xmm0, %xmm0
881 ; AVX2-NEXT: vpsubd %xmm0, %xmm1, %xmm0
882 ; AVX2-NEXT: retq
909 ; AVX2-LABEL: sub_v8i32_commute:
910 ; AVX2: # %bb.0:
911 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
912 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
913 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
914 ; AVX2-NEXT: vpand %ymm2, %ymm0, %ymm0
915 ; AVX2-NEXT: vpsubd %ymm1, %ymm0, %ymm0
916 ; AVX2-NEXT: retq
942 ; AVX2-LABEL: sub_v16i32_swap:
943 ; AVX2: # %bb.0:
944 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
945 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
946 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
947 ; AVX2-NEXT: vpsrad $31, %ymm5, %ymm5
948 ; AVX2-NEXT: vpandn %ymm4, %ymm5, %ymm4
949 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
950 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
951 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
952 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
953 ; AVX2-NEXT: vpandn %ymm3, %ymm0, %ymm0
954 ; AVX2-NEXT: vpsubd %ymm0, %ymm1, %ymm0
955 ; AVX2-NEXT: vpsubd %ymm4, %ymm2, %ymm1
956 ; AVX2-NEXT: retq
974 ; AVX2-LABEL: sub_v16i32_commute_swap:
975 ; AVX2: # %bb.0:
976 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
977 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
978 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
979 ; AVX2-NEXT: vpsrad $31, %ymm5, %ymm5
980 ; AVX2-NEXT: vpandn %ymm4, %ymm5, %ymm4
981 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
982 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
983 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
984 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
985 ; AVX2-NEXT: vpandn %ymm3, %ymm0, %ymm0
986 ; AVX2-NEXT: vpsubd %ymm1, %ymm0, %ymm0
987 ; AVX2-NEXT: vpsubd %ymm2, %ymm4, %ymm1
988 ; AVX2-NEXT: retq
1004 ; AVX2-LABEL: sub_v8i32_cast_cond:
1005 ; AVX2: # %bb.0:
1006 ; AVX2-NEXT: vmovd %edi, %xmm2
1007 ; AVX2-NEXT: vpbroadcastb %xmm2, %ymm2
1008 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128]
1009 ; AVX2-NEXT: vpand %ymm3, %ymm2, %ymm2
1010 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm2, %ymm2
1011 ; AVX2-NEXT: vpand %ymm1, %ymm2, %ymm1
1012 ; AVX2-NEXT: vpsubd %ymm1, %ymm0, %ymm0
1013 ; AVX2-NEXT: retq
1035 ; AVX2-LABEL: sub_v8i64_cast_cond:
1036 ; AVX2: # %bb.0:
1037 ; AVX2-NEXT: vmovd %edi, %xmm4
1038 ; AVX2-NEXT: vpbroadcastb %xmm4, %ymm4
1039 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [16,32,64,128]
1040 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm6
1041 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm6, %ymm5
1042 ; AVX2-NEXT: vpand %ymm3, %ymm5, %ymm3
1043 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [1,2,4,8]
1044 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm4
1045 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm4, %ymm4
1046 ; AVX2-NEXT: vpand %ymm2, %ymm4, %ymm2
1047 ; AVX2-NEXT: vpsubq %ymm2, %ymm0, %ymm0
1048 ; AVX2-NEXT: vpsubq %ymm3, %ymm1, %ymm1
1049 ; AVX2-NEXT: retq
1063 ; AVX2-LABEL: mul_v4i32:
1064 ; AVX2: # %bb.0:
1065 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
1066 ; AVX2-NEXT: vbroadcastss {{.*#+}} xmm3 = [1,1,1,1]
1067 ; AVX2-NEXT: vblendvps %xmm0, %xmm2, %xmm3, %xmm0
1068 ; AVX2-NEXT: vpmulld %xmm0, %xmm1, %xmm0
1069 ; AVX2-NEXT: retq
1095 ; AVX2-LABEL: mul_v8i32_commute:
1096 ; AVX2: # %bb.0:
1097 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1098 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
1099 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [1,1,1,1,1,1,1,1]
1100 ; AVX2-NEXT: vblendvps %ymm0, %ymm2, %ymm3, %ymm0
1101 ; AVX2-NEXT: vpmulld %ymm1, %ymm0, %ymm0
1102 ; AVX2-NEXT: retq
1129 ; AVX2-LABEL: mul_v8i32_cast_cond:
1130 ; AVX2: # %bb.0:
1131 ; AVX2-NEXT: vmovd %edi, %xmm2
1132 ; AVX2-NEXT: vpbroadcastb %xmm2, %ymm2
1133 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128]
1134 ; AVX2-NEXT: vpand %ymm3, %ymm2, %ymm2
1135 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm2, %ymm2
1136 ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [1,1,1,1,1,1,1,1]
1137 ; AVX2-NEXT: vblendvps %ymm2, %ymm1, %ymm3, %ymm1
1138 ; AVX2-NEXT: vpmulld %ymm1, %ymm0, %ymm0
1139 ; AVX2-NEXT: retq
1162 ; AVX2-LABEL: mul_v8i64_cast_cond:
1163 ; AVX2: # %bb.0:
1164 ; AVX2-NEXT: vmovd %edi, %xmm4
1165 ; AVX2-NEXT: vpbroadcastb %xmm4, %ymm4
1166 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [16,32,64,128]
1167 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm6
1168 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm6, %ymm5
1169 ; AVX2-NEXT: vbroadcastsd {{.*#+}} ymm6 = [1,1,1,1]
1170 ; AVX2-NEXT: vblendvpd %ymm5, %ymm3, %ymm6, %ymm3
1171 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [1,2,4,8]
1172 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm4
1173 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm4, %ymm4
1174 ; AVX2-NEXT: vblendvpd %ymm4, %ymm2, %ymm6, %ymm2
1175 ; AVX2-NEXT: vpsrlq $32, %ymm0, %ymm4
1176 ; AVX2-NEXT: vpmuludq %ymm2, %ymm4, %ymm4
1177 ; AVX2-NEXT: vpsrlq $32, %ymm2, %ymm5
1178 ; AVX2-NEXT: vpmuludq %ymm5, %ymm0, %ymm5
1179 ; AVX2-NEXT: vpaddq %ymm4, %ymm5, %ymm4
1180 ; AVX2-NEXT: vpsllq $32, %ymm4, %ymm4
1181 ; AVX2-NEXT: vpmuludq %ymm2, %ymm0, %ymm0
1182 ; AVX2-NEXT: vpaddq %ymm4, %ymm0, %ymm0
1183 ; AVX2-NEXT: vpsrlq $32, %ymm1, %ymm2
1184 ; AVX2-NEXT: vpmuludq %ymm3, %ymm2, %ymm2
1185 ; AVX2-NEXT: vpsrlq $32, %ymm3, %ymm4
1186 ; AVX2-NEXT: vpmuludq %ymm4, %ymm1, %ymm4
1187 ; AVX2-NEXT: vpaddq %ymm2, %ymm4, %ymm2
1188 ; AVX2-NEXT: vpsllq $32, %ymm2, %ymm2
1189 ; AVX2-NEXT: vpmuludq %ymm3, %ymm1, %ymm1
1190 ; AVX2-NEXT: vpaddq %ymm2, %ymm1, %ymm1
1191 ; AVX2-NEXT: retq
1212 ; AVX2-LABEL: shl_v4i32:
1213 ; AVX2: # %bb.0:
1214 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
1215 ; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0
1216 ; AVX2-NEXT: vpand %xmm2, %xmm0, %xmm0
1217 ; AVX2-NEXT: vpsllvd %xmm0, %xmm1, %xmm0
1218 ; AVX2-NEXT: retq
1245 ; AVX2-LABEL: shl_v8i32_commute:
1246 ; AVX2: # %bb.0:
1247 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1248 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
1249 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
1250 ; AVX2-NEXT: vpand %ymm2, %ymm0, %ymm0
1251 ; AVX2-NEXT: vpsllvd %ymm1, %ymm0, %ymm0
1252 ; AVX2-NEXT: retq
1278 ; AVX2-LABEL: shl_v16i32_swap:
1279 ; AVX2: # %bb.0:
1280 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1281 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
1282 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
1283 ; AVX2-NEXT: vpsrad $31, %ymm5, %ymm5
1284 ; AVX2-NEXT: vpandn %ymm4, %ymm5, %ymm4
1285 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1286 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1287 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
1288 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
1289 ; AVX2-NEXT: vpandn %ymm3, %ymm0, %ymm0
1290 ; AVX2-NEXT: vpsllvd %ymm0, %ymm1, %ymm0
1291 ; AVX2-NEXT: vpsllvd %ymm4, %ymm2, %ymm1
1292 ; AVX2-NEXT: retq
1310 ; AVX2-LABEL: shl_v16i32_commute_swap:
1311 ; AVX2: # %bb.0:
1312 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1313 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
1314 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
1315 ; AVX2-NEXT: vpsrad $31, %ymm5, %ymm5
1316 ; AVX2-NEXT: vpandn %ymm4, %ymm5, %ymm4
1317 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1318 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1319 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
1320 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
1321 ; AVX2-NEXT: vpandn %ymm3, %ymm0, %ymm0
1322 ; AVX2-NEXT: vpsllvd %ymm1, %ymm0, %ymm0
1323 ; AVX2-NEXT: vpsllvd %ymm2, %ymm4, %ymm1
1324 ; AVX2-NEXT: retq
1340 ; AVX2-LABEL: shl_v8i32_cast_cond:
1341 ; AVX2: # %bb.0:
1342 ; AVX2-NEXT: vmovd %edi, %xmm2
1343 ; AVX2-NEXT: vpbroadcastb %xmm2, %ymm2
1344 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128]
1345 ; AVX2-NEXT: vpand %ymm3, %ymm2, %ymm2
1346 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm2, %ymm2
1347 ; AVX2-NEXT: vpand %ymm1, %ymm2, %ymm1
1348 ; AVX2-NEXT: vpsllvd %ymm1, %ymm0, %ymm0
1349 ; AVX2-NEXT: retq
1371 ; AVX2-LABEL: shl_v8i64_cast_cond:
1372 ; AVX2: # %bb.0:
1373 ; AVX2-NEXT: vmovd %edi, %xmm4
1374 ; AVX2-NEXT: vpbroadcastb %xmm4, %ymm4
1375 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [16,32,64,128]
1376 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm6
1377 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm6, %ymm5
1378 ; AVX2-NEXT: vpand %ymm3, %ymm5, %ymm3
1379 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [1,2,4,8]
1380 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm4
1381 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm4, %ymm4
1382 ; AVX2-NEXT: vpand %ymm2, %ymm4, %ymm2
1383 ; AVX2-NEXT: vpsllvq %ymm2, %ymm0, %ymm0
1384 ; AVX2-NEXT: vpsllvq %ymm3, %ymm1, %ymm1
1385 ; AVX2-NEXT: retq
1399 ; AVX2-LABEL: lshr_v4i32:
1400 ; AVX2: # %bb.0:
1401 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
1402 ; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0
1403 ; AVX2-NEXT: vpand %xmm2, %xmm0, %xmm0
1404 ; AVX2-NEXT: vpsrlvd %xmm0, %xmm1, %xmm0
1405 ; AVX2-NEXT: retq
1432 ; AVX2-LABEL: lshr_v8i32_commute:
1433 ; AVX2: # %bb.0:
1434 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1435 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
1436 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
1437 ; AVX2-NEXT: vpand %ymm2, %ymm0, %ymm0
1438 ; AVX2-NEXT: vpsrlvd %ymm1, %ymm0, %ymm0
1439 ; AVX2-NEXT: retq
1465 ; AVX2-LABEL: lshr_v16i32_swap:
1466 ; AVX2: # %bb.0:
1467 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1468 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
1469 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
1470 ; AVX2-NEXT: vpsrad $31, %ymm5, %ymm5
1471 ; AVX2-NEXT: vpandn %ymm4, %ymm5, %ymm4
1472 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1473 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1474 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
1475 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
1476 ; AVX2-NEXT: vpandn %ymm3, %ymm0, %ymm0
1477 ; AVX2-NEXT: vpsrlvd %ymm0, %ymm1, %ymm0
1478 ; AVX2-NEXT: vpsrlvd %ymm4, %ymm2, %ymm1
1479 ; AVX2-NEXT: retq
1497 ; AVX2-LABEL: lshr_v16i32_commute_swap:
1498 ; AVX2: # %bb.0:
1499 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1500 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
1501 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
1502 ; AVX2-NEXT: vpsrad $31, %ymm5, %ymm5
1503 ; AVX2-NEXT: vpandn %ymm4, %ymm5, %ymm4
1504 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1505 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1506 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
1507 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
1508 ; AVX2-NEXT: vpandn %ymm3, %ymm0, %ymm0
1509 ; AVX2-NEXT: vpsrlvd %ymm1, %ymm0, %ymm0
1510 ; AVX2-NEXT: vpsrlvd %ymm2, %ymm4, %ymm1
1511 ; AVX2-NEXT: retq
1527 ; AVX2-LABEL: lshr_v8i32_cast_cond:
1528 ; AVX2: # %bb.0:
1529 ; AVX2-NEXT: vmovd %edi, %xmm2
1530 ; AVX2-NEXT: vpbroadcastb %xmm2, %ymm2
1531 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128]
1532 ; AVX2-NEXT: vpand %ymm3, %ymm2, %ymm2
1533 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm2, %ymm2
1534 ; AVX2-NEXT: vpand %ymm1, %ymm2, %ymm1
1535 ; AVX2-NEXT: vpsrlvd %ymm1, %ymm0, %ymm0
1536 ; AVX2-NEXT: retq
1558 ; AVX2-LABEL: lshr_v8i64_cast_cond:
1559 ; AVX2: # %bb.0:
1560 ; AVX2-NEXT: vmovd %edi, %xmm4
1561 ; AVX2-NEXT: vpbroadcastb %xmm4, %ymm4
1562 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [16,32,64,128]
1563 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm6
1564 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm6, %ymm5
1565 ; AVX2-NEXT: vpand %ymm3, %ymm5, %ymm3
1566 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [1,2,4,8]
1567 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm4
1568 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm4, %ymm4
1569 ; AVX2-NEXT: vpand %ymm2, %ymm4, %ymm2
1570 ; AVX2-NEXT: vpsrlvq %ymm2, %ymm0, %ymm0
1571 ; AVX2-NEXT: vpsrlvq %ymm3, %ymm1, %ymm1
1572 ; AVX2-NEXT: retq
1586 ; AVX2-LABEL: ashr_v4i32:
1587 ; AVX2: # %bb.0:
1588 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
1589 ; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0
1590 ; AVX2-NEXT: vpand %xmm2, %xmm0, %xmm0
1591 ; AVX2-NEXT: vpsravd %xmm0, %xmm1, %xmm0
1592 ; AVX2-NEXT: retq
1619 ; AVX2-LABEL: ashr_v8i32_commute:
1620 ; AVX2: # %bb.0:
1621 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1622 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
1623 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
1624 ; AVX2-NEXT: vpand %ymm2, %ymm0, %ymm0
1625 ; AVX2-NEXT: vpsravd %ymm1, %ymm0, %ymm0
1626 ; AVX2-NEXT: retq
1652 ; AVX2-LABEL: ashr_v16i32_swap:
1653 ; AVX2: # %bb.0:
1654 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1655 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
1656 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
1657 ; AVX2-NEXT: vpsrad $31, %ymm5, %ymm5
1658 ; AVX2-NEXT: vpandn %ymm4, %ymm5, %ymm4
1659 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1660 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1661 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
1662 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
1663 ; AVX2-NEXT: vpandn %ymm3, %ymm0, %ymm0
1664 ; AVX2-NEXT: vpsravd %ymm0, %ymm1, %ymm0
1665 ; AVX2-NEXT: vpsravd %ymm4, %ymm2, %ymm1
1666 ; AVX2-NEXT: retq
1684 ; AVX2-LABEL: ashr_v16i32_commute_swap:
1685 ; AVX2: # %bb.0:
1686 ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm5 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1687 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[…
1688 ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
1689 ; AVX2-NEXT: vpsrad $31, %ymm5, %ymm5
1690 ; AVX2-NEXT: vpandn %ymm4, %ymm5, %ymm4
1691 ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1692 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
1693 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
1694 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
1695 ; AVX2-NEXT: vpandn %ymm3, %ymm0, %ymm0
1696 ; AVX2-NEXT: vpsravd %ymm1, %ymm0, %ymm0
1697 ; AVX2-NEXT: vpsravd %ymm2, %ymm4, %ymm1
1698 ; AVX2-NEXT: retq
1714 ; AVX2-LABEL: ashr_v8i32_cast_cond:
1715 ; AVX2: # %bb.0:
1716 ; AVX2-NEXT: vmovd %edi, %xmm2
1717 ; AVX2-NEXT: vpbroadcastb %xmm2, %ymm2
1718 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128]
1719 ; AVX2-NEXT: vpand %ymm3, %ymm2, %ymm2
1720 ; AVX2-NEXT: vpcmpeqd %ymm3, %ymm2, %ymm2
1721 ; AVX2-NEXT: vpand %ymm1, %ymm2, %ymm1
1722 ; AVX2-NEXT: vpsravd %ymm1, %ymm0, %ymm0
1723 ; AVX2-NEXT: retq
1745 ; AVX2-LABEL: ashr_v8i64_cast_cond:
1746 ; AVX2: # %bb.0:
1747 ; AVX2-NEXT: vmovd %edi, %xmm4
1748 ; AVX2-NEXT: vpbroadcastb %xmm4, %ymm4
1749 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [16,32,64,128]
1750 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm6
1751 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm6, %ymm5
1752 ; AVX2-NEXT: vpand %ymm3, %ymm5, %ymm3
1753 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [1,2,4,8]
1754 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm4
1755 ; AVX2-NEXT: vpcmpeqq %ymm5, %ymm4, %ymm4
1756 ; AVX2-NEXT: vpand %ymm2, %ymm4, %ymm2
1757 ; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm4 = [9223372036854775808,9223372036854775808,9223372036854…
1758 ; AVX2-NEXT: vpsrlvq %ymm2, %ymm4, %ymm5
1759 ; AVX2-NEXT: vpsrlvq %ymm2, %ymm0, %ymm0
1760 ; AVX2-NEXT: vpxor %ymm5, %ymm0, %ymm0
1761 ; AVX2-NEXT: vpsubq %ymm5, %ymm0, %ymm0
1762 ; AVX2-NEXT: vpsrlvq %ymm3, %ymm4, %ymm2
1763 ; AVX2-NEXT: vpsrlvq %ymm3, %ymm1, %ymm1
1764 ; AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm1
1765 ; AVX2-NEXT: vpsubq %ymm2, %ymm1, %ymm1
1766 ; AVX2-NEXT: retq