Lines Matching refs:AVX2
3 …-mtriple=x86_64-apple-darwin -mattr=avx2 < %s | FileCheck %s --check-prefix=AVX --check-prefix=AVX2
27 ; AVX2-LABEL: test1:
28 ; AVX2: ## BB#0:
29 ; AVX2-NEXT: vpxor %ymm2, %ymm2, %ymm2
30 ; AVX2-NEXT: vpcmpeqd %ymm2, %ymm0, %ymm0
31 ; AVX2-NEXT: vpcmpeqd %ymm2, %ymm1, %ymm1
32 ; AVX2-NEXT: vpmaskmovd 32(%rdi), %ymm1, %ymm1
33 ; AVX2-NEXT: vpmaskmovd (%rdi), %ymm0, %ymm0
34 ; AVX2-NEXT: retq
63 ; AVX2-LABEL: test2:
64 ; AVX2: ## BB#0:
65 ; AVX2-NEXT: vpxor %ymm2, %ymm2, %ymm2
66 ; AVX2-NEXT: vpcmpeqd %ymm2, %ymm0, %ymm0
67 ; AVX2-NEXT: vpcmpeqd %ymm2, %ymm1, %ymm1
68 ; AVX2-NEXT: vpmaskmovd 32(%rdi), %ymm1, %ymm1
69 ; AVX2-NEXT: vpmaskmovd (%rdi), %ymm0, %ymm0
70 ; AVX2-NEXT: retq
100 ; AVX2-LABEL: test3:
101 ; AVX2: ## BB#0:
102 ; AVX2-NEXT: vpxor %ymm4, %ymm4, %ymm4
103 ; AVX2-NEXT: vpcmpeqd %ymm4, %ymm0, %ymm0
104 ; AVX2-NEXT: vpcmpeqd %ymm4, %ymm1, %ymm1
105 ; AVX2-NEXT: vpmaskmovd %ymm3, %ymm1, 32(%rdi)
106 ; AVX2-NEXT: vpmaskmovd %ymm2, %ymm0, (%rdi)
107 ; AVX2-NEXT: vzeroupper
108 ; AVX2-NEXT: retq
139 ; AVX2-LABEL: test4:
140 ; AVX2: ## BB#0:
141 ; AVX2-NEXT: vpxor %ymm4, %ymm4, %ymm4
142 ; AVX2-NEXT: vpcmpeqd %ymm4, %ymm1, %ymm1
143 ; AVX2-NEXT: vpcmpeqd %ymm4, %ymm0, %ymm0
144 ; AVX2-NEXT: vmaskmovps (%rdi), %ymm0, %ymm4
145 ; AVX2-NEXT: vblendvps %ymm0, %ymm4, %ymm2, %ymm0
146 ; AVX2-NEXT: vmaskmovps 32(%rdi), %ymm1, %ymm2
147 ; AVX2-NEXT: vblendvps %ymm1, %ymm2, %ymm3, %ymm1
148 ; AVX2-NEXT: retq
183 ; AVX2-LABEL: test5:
184 ; AVX2: ## BB#0:
185 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm3
186 ; AVX2-NEXT: vpxor %xmm4, %xmm4, %xmm4
187 ; AVX2-NEXT: vpcmpeqd %xmm4, %xmm3, %xmm3
188 ; AVX2-NEXT: vpmovsxdq %xmm3, %ymm3
189 ; AVX2-NEXT: vpcmpeqd %xmm4, %xmm0, %xmm0
190 ; AVX2-NEXT: vpmovsxdq %xmm0, %ymm0
191 ; AVX2-NEXT: vmaskmovpd (%rdi), %ymm0, %ymm4
192 ; AVX2-NEXT: vblendvpd %ymm0, %ymm4, %ymm1, %ymm0
193 ; AVX2-NEXT: vmaskmovpd 32(%rdi), %ymm3, %ymm1
194 ; AVX2-NEXT: vblendvpd %ymm3, %ymm1, %ymm2, %ymm1
195 ; AVX2-NEXT: retq
285 ; AVX2-LABEL: test8:
286 ; AVX2: ## BB#0:
287 ; AVX2-NEXT: vpxor %xmm2, %xmm2, %xmm2
288 ; AVX2-NEXT: vpcmpeqd %xmm2, %xmm0, %xmm0
289 ; AVX2-NEXT: vpmaskmovd (%rdi), %xmm0, %xmm2
290 ; AVX2-NEXT: vblendvps %xmm0, %xmm2, %xmm1, %xmm0
291 ; AVX2-NEXT: retq
321 ; AVX2-LABEL: test9:
322 ; AVX2: ## BB#0:
323 ; AVX2-NEXT: vpxor %xmm2, %xmm2, %xmm2
324 ; AVX2-NEXT: vpcmpeqd %xmm2, %xmm0, %xmm0
325 ; AVX2-NEXT: vpmaskmovd %xmm1, %xmm0, (%rdi)
326 ; AVX2-NEXT: retq
359 ; AVX2-LABEL: test10:
360 ; AVX2: ## BB#0:
361 ; AVX2-NEXT: vpxor %xmm2, %xmm2, %xmm2
362 ; AVX2-NEXT: vpcmpeqd %xmm2, %xmm0, %xmm0
363 ; AVX2-NEXT: vpmovsxdq %xmm0, %ymm0
364 ; AVX2-NEXT: vmaskmovpd (%rdi), %ymm0, %ymm2
365 ; AVX2-NEXT: vblendvpd %ymm0, %ymm2, %ymm1, %ymm0
366 ; AVX2-NEXT: retq
401 ; AVX2-LABEL: test10b:
402 ; AVX2: ## BB#0:
403 ; AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1
404 ; AVX2-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
405 ; AVX2-NEXT: vpmovsxdq %xmm0, %ymm0
406 ; AVX2-NEXT: vmaskmovpd (%rdi), %ymm0, %ymm0
407 ; AVX2-NEXT: retq
440 ; AVX2-LABEL: test11a:
441 ; AVX2: ## BB#0:
442 ; AVX2-NEXT: vpxor %ymm2, %ymm2, %ymm2
443 ; AVX2-NEXT: vpcmpeqd %ymm2, %ymm0, %ymm0
444 ; AVX2-NEXT: vmaskmovps (%rdi), %ymm0, %ymm2
445 ; AVX2-NEXT: vblendvps %ymm0, %ymm2, %ymm1, %ymm0
446 ; AVX2-NEXT: retq
486 ; AVX2-LABEL: test11b:
487 ; AVX2: ## BB#0:
488 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
489 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
490 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
491 ; AVX2-NEXT: vpmaskmovd (%rdi), %ymm0, %ymm2
492 ; AVX2-NEXT: vblendvps %ymm0, %ymm2, %ymm1, %ymm0
493 ; AVX2-NEXT: retq
531 ; AVX2-LABEL: test11c:
532 ; AVX2: ## BB#0:
533 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
534 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
535 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
536 ; AVX2-NEXT: vmaskmovps (%rdi), %ymm0, %ymm0
537 ; AVX2-NEXT: retq
573 ; AVX2-LABEL: test11d:
574 ; AVX2: ## BB#0:
575 ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
576 ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
577 ; AVX2-NEXT: vpsrad $31, %ymm0, %ymm0
578 ; AVX2-NEXT: vpmaskmovd (%rdi), %ymm0, %ymm0
579 ; AVX2-NEXT: retq
614 ; AVX2-LABEL: test12:
615 ; AVX2: ## BB#0:
616 ; AVX2-NEXT: vpxor %ymm2, %ymm2, %ymm2
617 ; AVX2-NEXT: vpcmpeqd %ymm2, %ymm0, %ymm0
618 ; AVX2-NEXT: vpmaskmovd %ymm1, %ymm0, (%rdi)
619 ; AVX2-NEXT: vzeroupper
620 ; AVX2-NEXT: retq
661 ; AVX2-LABEL: test13:
662 ; AVX2: ## BB#0:
663 ; AVX2-NEXT: vpxor %ymm4, %ymm4, %ymm4
664 ; AVX2-NEXT: vpcmpeqd %ymm4, %ymm0, %ymm0
665 ; AVX2-NEXT: vpcmpeqd %ymm4, %ymm1, %ymm1
666 ; AVX2-NEXT: vmaskmovps %ymm3, %ymm1, 32(%rdi)
667 ; AVX2-NEXT: vmaskmovps %ymm2, %ymm0, (%rdi)
668 ; AVX2-NEXT: vzeroupper
669 ; AVX2-NEXT: retq
693 ; AVX2-LABEL: test14:
694 ; AVX2: ## BB#0:
695 ; AVX2-NEXT: vpxor %xmm2, %xmm2, %xmm2
696 ; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
697 ; AVX2-NEXT: vpcmpeqq %xmm2, %xmm0, %xmm0
698 ; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
699 ; AVX2-NEXT: vmovq {{.*#+}} xmm0 = xmm0[0],zero
700 ; AVX2-NEXT: vmaskmovps %xmm1, %xmm0, (%rdi)
701 ; AVX2-NEXT: retq
739 ; AVX2-LABEL: test15:
740 ; AVX2: ## BB#0:
741 ; AVX2-NEXT: vpxor %xmm2, %xmm2, %xmm2
742 ; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
743 ; AVX2-NEXT: vpcmpeqq %xmm2, %xmm0, %xmm0
744 ; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
745 ; AVX2-NEXT: vmovq {{.*#+}} xmm0 = xmm0[0],zero
746 ; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
747 ; AVX2-NEXT: vpmaskmovd %xmm1, %xmm0, (%rdi)
748 ; AVX2-NEXT: retq
785 ; AVX2-LABEL: test16:
786 ; AVX2: ## BB#0:
787 ; AVX2-NEXT: vpxor %xmm2, %xmm2, %xmm2
788 ; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
789 ; AVX2-NEXT: vpcmpeqq %xmm2, %xmm0, %xmm0
790 ; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
791 ; AVX2-NEXT: vmovq {{.*#+}} xmm0 = xmm0[0],zero
792 ; AVX2-NEXT: vmaskmovps (%rdi), %xmm0, %xmm2
793 ; AVX2-NEXT: vblendvps %xmm0, %xmm2, %xmm1, %xmm0
794 ; AVX2-NEXT: retq
836 ; AVX2-LABEL: test17:
837 ; AVX2: ## BB#0:
838 ; AVX2-NEXT: vpxor %xmm2, %xmm2, %xmm2
839 ; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0],xmm2[1],xmm0[2],xmm2[3]
840 ; AVX2-NEXT: vpcmpeqq %xmm2, %xmm0, %xmm0
841 ; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
842 ; AVX2-NEXT: vmovq {{.*#+}} xmm0 = xmm0[0],zero
843 ; AVX2-NEXT: vpmaskmovd (%rdi), %xmm0, %xmm2
844 ; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
845 ; AVX2-NEXT: vblendvps %xmm0, %xmm2, %xmm1, %xmm0
846 ; AVX2-NEXT: vpmovsxdq %xmm0, %xmm0
847 ; AVX2-NEXT: retq
889 ; AVX2-LABEL: test18:
890 ; AVX2: ## BB#0:
891 ; AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1
892 ; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]
893 ; AVX2-NEXT: vpcmpeqq %xmm1, %xmm0, %xmm0
894 ; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
895 ; AVX2-NEXT: vmovq {{.*#+}} xmm0 = xmm0[0],zero
896 ; AVX2-NEXT: vmaskmovps (%rdi), %xmm0, %xmm0
897 ; AVX2-NEXT: retq
972 ; 128-bit integer vectors are supported with AVX2.
982 ; AVX2-LABEL: mload_constmask_v4i32:
983 ; AVX2: ## BB#0:
984 ; AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [0,4294967295,4294967295,4294967295]
985 ; AVX2-NEXT: vpmaskmovd (%rdi), %xmm1, %xmm1
986 ; AVX2-NEXT: vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1,2,3]
987 ; AVX2-NEXT: retq
1060 ; 256-bit integer vectors are supported with AVX2.
1068 ; AVX2-LABEL: mload_constmask_v8i32:
1069 ; AVX2: ## BB#0:
1070 ; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = mem[0,1,2],ymm0[3,4,5,6],mem[7]
1071 ; AVX2-NEXT: retq
1098 ; AVX2-LABEL: mload_constmask_v4i64:
1099 ; AVX2: ## BB#0:
1100 ; AVX2-NEXT: vpblendd {{.*#+}} ymm0 = mem[0,1],ymm0[2,3,4,5],mem[6,7]
1101 ; AVX2-NEXT: retq
1171 ; AVX2-LABEL: mload_constmask_v4i64_undef_passthrough:
1172 ; AVX2: ## BB#0:
1173 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm0 = [0,18446744073709551615,18446744073709551615,0]
1174 ; AVX2-NEXT: vpmaskmovq (%rdi), %ymm0, %ymm0
1175 ; AVX2-NEXT: retq
1200 ; AVX2-LABEL: test21:
1201 ; AVX2: ## BB#0:
1202 ; AVX2-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
1203 ; AVX2-NEXT: vpmaskmovd %xmm1, %xmm0, (%rdi)
1204 ; AVX2-NEXT: retq
1365 ; AVX2-LABEL: load_one_mask_bit_set3:
1366 ; AVX2: ## BB#0:
1367 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
1368 ; AVX2-NEXT: vpinsrq $0, 16(%rdi), %xmm1, %xmm1
1369 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
1370 ; AVX2-NEXT: retq
1490 ; AVX2-LABEL: test23:
1491 ; AVX2: ## BB#0:
1492 ; AVX2-NEXT: vpxor %ymm4, %ymm4, %ymm4
1493 ; AVX2-NEXT: vpcmpeqq %ymm4, %ymm0, %ymm0
1494 ; AVX2-NEXT: vpcmpeqq %ymm4, %ymm1, %ymm1
1495 ; AVX2-NEXT: vpcmpeqq %ymm4, %ymm2, %ymm2
1496 ; AVX2-NEXT: vpcmpeqq %ymm4, %ymm3, %ymm3
1497 ; AVX2-NEXT: vpmaskmovq 96(%rdi), %ymm3, %ymm3
1498 ; AVX2-NEXT: vpmaskmovq 64(%rdi), %ymm2, %ymm2
1499 ; AVX2-NEXT: vpmaskmovq 32(%rdi), %ymm1, %ymm1
1500 ; AVX2-NEXT: vpmaskmovq (%rdi), %ymm0, %ymm0
1501 ; AVX2-NEXT: retq
1561 ; AVX2-LABEL: test24:
1562 ; AVX2: ## BB#0:
1563 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zer…
1564 ; AVX2-NEXT: vpslld $31, %xmm1, %xmm1
1565 ; AVX2-NEXT: vpsrad $31, %xmm1, %xmm1
1566 ; AVX2-NEXT: vpmovsxdq %xmm1, %ymm1
1567 ; AVX2-NEXT: vpmaskmovq (%rdi), %ymm1, %ymm4
1568 ; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
1569 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zer…
1570 ; AVX2-NEXT: vpslld $31, %xmm1, %xmm1
1571 ; AVX2-NEXT: vpsrad $31, %xmm1, %xmm1
1572 ; AVX2-NEXT: vpmovsxdq %xmm1, %ymm1
1573 ; AVX2-NEXT: vpmaskmovq 96(%rdi), %ymm1, %ymm3
1574 ; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
1575 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zer…
1576 ; AVX2-NEXT: vpslld $31, %xmm1, %xmm1
1577 ; AVX2-NEXT: vpsrad $31, %xmm1, %xmm1
1578 ; AVX2-NEXT: vpmovsxdq %xmm1, %ymm1
1579 ; AVX2-NEXT: vpmaskmovq 64(%rdi), %ymm1, %ymm2
1580 ; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
1581 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zer…
1582 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
1583 ; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0
1584 ; AVX2-NEXT: vpmovsxdq %xmm0, %ymm0
1585 ; AVX2-NEXT: vpmaskmovq 32(%rdi), %ymm0, %ymm1
1586 ; AVX2-NEXT: vmovdqa %ymm4, %ymm0
1587 ; AVX2-NEXT: retq
1652 ; AVX2-LABEL: test_store_16i64:
1653 ; AVX2: ## BB#0:
1654 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm5 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zer…
1655 ; AVX2-NEXT: vpslld $31, %xmm5, %xmm5
1656 ; AVX2-NEXT: vpsrad $31, %xmm5, %xmm5
1657 ; AVX2-NEXT: vpmovsxdq %xmm5, %ymm5
1658 ; AVX2-NEXT: vpmaskmovq %ymm1, %ymm5, (%rdi)
1659 ; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
1660 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zer…
1661 ; AVX2-NEXT: vpslld $31, %xmm1, %xmm1
1662 ; AVX2-NEXT: vpsrad $31, %xmm1, %xmm1
1663 ; AVX2-NEXT: vpmovsxdq %xmm1, %ymm1
1664 ; AVX2-NEXT: vpmaskmovq %ymm4, %ymm1, 96(%rdi)
1665 ; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
1666 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zer…
1667 ; AVX2-NEXT: vpslld $31, %xmm1, %xmm1
1668 ; AVX2-NEXT: vpsrad $31, %xmm1, %xmm1
1669 ; AVX2-NEXT: vpmovsxdq %xmm1, %ymm1
1670 ; AVX2-NEXT: vpmaskmovq %ymm3, %ymm1, 64(%rdi)
1671 ; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
1672 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zer…
1673 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
1674 ; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0
1675 ; AVX2-NEXT: vpmovsxdq %xmm0, %ymm0
1676 ; AVX2-NEXT: vpmaskmovq %ymm2, %ymm0, 32(%rdi)
1677 ; AVX2-NEXT: vzeroupper
1678 ; AVX2-NEXT: retq
1744 ; AVX2-LABEL: test_store_16f64:
1745 ; AVX2: ## BB#0:
1746 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm5 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zer…
1747 ; AVX2-NEXT: vpslld $31, %xmm5, %xmm5
1748 ; AVX2-NEXT: vpsrad $31, %xmm5, %xmm5
1749 ; AVX2-NEXT: vpmovsxdq %xmm5, %ymm5
1750 ; AVX2-NEXT: vmaskmovpd %ymm1, %ymm5, (%rdi)
1751 ; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
1752 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zer…
1753 ; AVX2-NEXT: vpslld $31, %xmm1, %xmm1
1754 ; AVX2-NEXT: vpsrad $31, %xmm1, %xmm1
1755 ; AVX2-NEXT: vpmovsxdq %xmm1, %ymm1
1756 ; AVX2-NEXT: vmaskmovpd %ymm4, %ymm1, 96(%rdi)
1757 ; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,0,1]
1758 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zer…
1759 ; AVX2-NEXT: vpslld $31, %xmm1, %xmm1
1760 ; AVX2-NEXT: vpsrad $31, %xmm1, %xmm1
1761 ; AVX2-NEXT: vpmovsxdq %xmm1, %ymm1
1762 ; AVX2-NEXT: vmaskmovpd %ymm3, %ymm1, 64(%rdi)
1763 ; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
1764 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zer…
1765 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
1766 ; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0
1767 ; AVX2-NEXT: vpmovsxdq %xmm0, %ymm0
1768 ; AVX2-NEXT: vmaskmovpd %ymm2, %ymm0, 32(%rdi)
1769 ; AVX2-NEXT: vzeroupper
1770 ; AVX2-NEXT: retq
1840 ; AVX2-LABEL: test_load_16i64:
1841 ; AVX2: ## BB#0:
1842 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm5 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zer…
1843 ; AVX2-NEXT: vpslld $31, %xmm5, %xmm5
1844 ; AVX2-NEXT: vpsrad $31, %xmm5, %xmm5
1845 ; AVX2-NEXT: vpmovsxdq %xmm5, %ymm5
1846 ; AVX2-NEXT: vpmaskmovq (%rdi), %ymm5, %ymm6
1847 ; AVX2-NEXT: vblendvpd %ymm5, %ymm6, %ymm1, %ymm5
1848 ; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
1849 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zer…
1850 ; AVX2-NEXT: vpslld $31, %xmm1, %xmm1
1851 ; AVX2-NEXT: vpsrad $31, %xmm1, %xmm1
1852 ; AVX2-NEXT: vpmovsxdq %xmm1, %ymm1
1853 ; AVX2-NEXT: vpmaskmovq 32(%rdi), %ymm1, %ymm6
1854 ; AVX2-NEXT: vblendvpd %ymm1, %ymm6, %ymm2, %ymm1
1855 ; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[2,3,0,1]
1856 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zer…
1857 ; AVX2-NEXT: vpslld $31, %xmm2, %xmm2
1858 ; AVX2-NEXT: vpsrad $31, %xmm2, %xmm2
1859 ; AVX2-NEXT: vpmovsxdq %xmm2, %ymm2
1860 ; AVX2-NEXT: vpmaskmovq 64(%rdi), %ymm2, %ymm6
1861 ; AVX2-NEXT: vblendvpd %ymm2, %ymm6, %ymm3, %ymm2
1862 ; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[3,1,2,3]
1863 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zer…
1864 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
1865 ; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0
1866 ; AVX2-NEXT: vpmovsxdq %xmm0, %ymm0
1867 ; AVX2-NEXT: vpmaskmovq 96(%rdi), %ymm0, %ymm3
1868 ; AVX2-NEXT: vblendvpd %ymm0, %ymm3, %ymm4, %ymm3
1869 ; AVX2-NEXT: vmovapd %ymm5, %ymm0
1870 ; AVX2-NEXT: retq
1944 ; AVX2-LABEL: test_load_16f64:
1945 ; AVX2: ## BB#0:
1946 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm5 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zer…
1947 ; AVX2-NEXT: vpslld $31, %xmm5, %xmm5
1948 ; AVX2-NEXT: vpsrad $31, %xmm5, %xmm5
1949 ; AVX2-NEXT: vpmovsxdq %xmm5, %ymm5
1950 ; AVX2-NEXT: vmaskmovpd (%rdi), %ymm5, %ymm6
1951 ; AVX2-NEXT: vblendvpd %ymm5, %ymm6, %ymm1, %ymm5
1952 ; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,2,3]
1953 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero,xmm1[2],zer…
1954 ; AVX2-NEXT: vpslld $31, %xmm1, %xmm1
1955 ; AVX2-NEXT: vpsrad $31, %xmm1, %xmm1
1956 ; AVX2-NEXT: vpmovsxdq %xmm1, %ymm1
1957 ; AVX2-NEXT: vmaskmovpd 32(%rdi), %ymm1, %ymm6
1958 ; AVX2-NEXT: vblendvpd %ymm1, %ymm6, %ymm2, %ymm1
1959 ; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[2,3,0,1]
1960 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zer…
1961 ; AVX2-NEXT: vpslld $31, %xmm2, %xmm2
1962 ; AVX2-NEXT: vpsrad $31, %xmm2, %xmm2
1963 ; AVX2-NEXT: vpmovsxdq %xmm2, %ymm2
1964 ; AVX2-NEXT: vmaskmovpd 64(%rdi), %ymm2, %ymm6
1965 ; AVX2-NEXT: vblendvpd %ymm2, %ymm6, %ymm3, %ymm2
1966 ; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[3,1,2,3]
1967 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zer…
1968 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
1969 ; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0
1970 ; AVX2-NEXT: vpmovsxdq %xmm0, %ymm0
1971 ; AVX2-NEXT: vmaskmovpd 96(%rdi), %ymm0, %ymm3
1972 ; AVX2-NEXT: vblendvpd %ymm0, %ymm3, %ymm4, %ymm3
1973 ; AVX2-NEXT: vmovapd %ymm5, %ymm0
1974 ; AVX2-NEXT: retq
2110 ; AVX2-LABEL: test_load_32f64:
2111 ; AVX2: ## BB#0:
2112 ; AVX2-NEXT: pushq %rbp
2113 ; AVX2-NEXT: Ltmp0:
2114 ; AVX2-NEXT: .cfi_def_cfa_offset 16
2115 ; AVX2-NEXT: Ltmp1:
2116 ; AVX2-NEXT: .cfi_offset %rbp, -16
2117 ; AVX2-NEXT: movq %rsp, %rbp
2118 ; AVX2-NEXT: Ltmp2:
2119 ; AVX2-NEXT: .cfi_def_cfa_register %rbp
2120 ; AVX2-NEXT: andq $-32, %rsp
2121 ; AVX2-NEXT: subq $32, %rsp
2122 ; AVX2-NEXT: vmovapd 16(%rbp), %ymm8
2123 ; AVX2-NEXT: vpshufd {{.*#+}} xmm9 = xmm0[1,1,2,3]
2124 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm9 = xmm9[0],zero,zero,zero,xmm9[1],zero,zero,zero,xmm9[2],zer…
2125 ; AVX2-NEXT: vpslld $31, %xmm9, %xmm9
2126 ; AVX2-NEXT: vpsrad $31, %xmm9, %xmm9
2127 ; AVX2-NEXT: vpmovsxdq %xmm9, %ymm9
2128 ; AVX2-NEXT: vmaskmovpd 32(%rsi), %ymm9, %ymm10
2129 ; AVX2-NEXT: vblendvpd %ymm9, %ymm10, %ymm2, %ymm9
2130 ; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[2,3,0,1]
2131 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zer…
2132 ; AVX2-NEXT: vpslld $31, %xmm2, %xmm2
2133 ; AVX2-NEXT: vpsrad $31, %xmm2, %xmm2
2134 ; AVX2-NEXT: vpmovsxdq %xmm2, %ymm2
2135 ; AVX2-NEXT: vmaskmovpd 64(%rsi), %ymm2, %ymm10
2136 ; AVX2-NEXT: vblendvpd %ymm2, %ymm10, %ymm3, %ymm11
2137 ; AVX2-NEXT: vpshufd {{.*#+}} xmm2 = xmm0[3,1,2,3]
2138 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm2 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zer…
2139 ; AVX2-NEXT: vpslld $31, %xmm2, %xmm2
2140 ; AVX2-NEXT: vpsrad $31, %xmm2, %xmm2
2141 ; AVX2-NEXT: vpmovsxdq %xmm2, %ymm2
2142 ; AVX2-NEXT: vmaskmovpd 96(%rsi), %ymm2, %ymm10
2143 ; AVX2-NEXT: vblendvpd %ymm2, %ymm10, %ymm4, %ymm4
2144 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
2145 ; AVX2-NEXT: vpshufd {{.*#+}} xmm3 = xmm2[1,1,2,3]
2146 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm3 = xmm3[0],zero,zero,zero,xmm3[1],zero,zero,zero,xmm3[2],zer…
2147 ; AVX2-NEXT: vpslld $31, %xmm3, %xmm3
2148 ; AVX2-NEXT: vpsrad $31, %xmm3, %xmm3
2149 ; AVX2-NEXT: vpmovsxdq %xmm3, %ymm3
2150 ; AVX2-NEXT: vmaskmovpd 160(%rsi), %ymm3, %ymm10
2151 ; AVX2-NEXT: vblendvpd %ymm3, %ymm10, %ymm6, %ymm3
2152 ; AVX2-NEXT: vpshufd {{.*#+}} xmm6 = xmm2[2,3,0,1]
2153 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm6 = xmm6[0],zero,zero,zero,xmm6[1],zero,zero,zero,xmm6[2],zer…
2154 ; AVX2-NEXT: vpslld $31, %xmm6, %xmm6
2155 ; AVX2-NEXT: vpsrad $31, %xmm6, %xmm6
2156 ; AVX2-NEXT: vpmovsxdq %xmm6, %ymm6
2157 ; AVX2-NEXT: vmaskmovpd 192(%rsi), %ymm6, %ymm10
2158 ; AVX2-NEXT: vblendvpd %ymm6, %ymm10, %ymm7, %ymm6
2159 ; AVX2-NEXT: vpshufd {{.*#+}} xmm7 = xmm2[3,1,2,3]
2160 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm7 = xmm7[0],zero,zero,zero,xmm7[1],zero,zero,zero,xmm7[2],zer…
2161 ; AVX2-NEXT: vpslld $31, %xmm7, %xmm7
2162 ; AVX2-NEXT: vpsrad $31, %xmm7, %xmm7
2163 ; AVX2-NEXT: vpmovsxdq %xmm7, %ymm7
2164 ; AVX2-NEXT: vmaskmovpd 224(%rsi), %ymm7, %ymm10
2165 ; AVX2-NEXT: vblendvpd %ymm7, %ymm10, %ymm8, %ymm7
2166 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zer…
2167 ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
2168 ; AVX2-NEXT: vpsrad $31, %xmm0, %xmm0
2169 ; AVX2-NEXT: vpmovsxdq %xmm0, %ymm0
2170 ; AVX2-NEXT: vmaskmovpd (%rsi), %ymm0, %ymm8
2171 ; AVX2-NEXT: vblendvpd %ymm0, %ymm8, %ymm1, %ymm0
2172 ; AVX2-NEXT: vpmovzxbd {{.*#+}} xmm1 = xmm2[0],zero,zero,zero,xmm2[1],zero,zero,zero,xmm2[2],zer…
2173 ; AVX2-NEXT: vpslld $31, %xmm1, %xmm1
2174 ; AVX2-NEXT: vpsrad $31, %xmm1, %xmm1
2175 ; AVX2-NEXT: vpmovsxdq %xmm1, %ymm1
2176 ; AVX2-NEXT: vmaskmovpd 128(%rsi), %ymm1, %ymm2
2177 ; AVX2-NEXT: vblendvpd %ymm1, %ymm2, %ymm5, %ymm1
2178 ; AVX2-NEXT: vmovapd %ymm1, 128(%rdi)
2179 ; AVX2-NEXT: vmovapd %ymm0, (%rdi)
2180 ; AVX2-NEXT: vmovapd %ymm7, 224(%rdi)
2181 ; AVX2-NEXT: vmovapd %ymm6, 192(%rdi)
2182 ; AVX2-NEXT: vmovapd %ymm3, 160(%rdi)
2183 ; AVX2-NEXT: vmovapd %ymm4, 96(%rdi)
2184 ; AVX2-NEXT: vmovapd %ymm11, 64(%rdi)
2185 ; AVX2-NEXT: vmovapd %ymm9, 32(%rdi)
2186 ; AVX2-NEXT: movq %rdi, %rax
2187 ; AVX2-NEXT: movq %rbp, %rsp
2188 ; AVX2-NEXT: popq %rbp
2189 ; AVX2-NEXT: vzeroupper
2190 ; AVX2-NEXT: retq
2750 ; AVX2-LABEL: test_mask_load_32xi8:
2751 ; AVX2: ## BB#0:
2752 ; AVX2-NEXT: vpextrb $0, %xmm0, %eax
2753 ; AVX2-NEXT: ## implicit-def: %YMM1
2754 ; AVX2-NEXT: testb $1, %al
2755 ; AVX2-NEXT: je LBB51_2
2756 ; AVX2-NEXT: ## BB#1: ## %cond.load
2757 ; AVX2-NEXT: movzbl (%rdi), %eax
2758 ; AVX2-NEXT: vmovd %eax, %xmm1
2759 ; AVX2-NEXT: LBB51_2: ## %else
2760 ; AVX2-NEXT: vpextrb $1, %xmm0, %eax
2761 ; AVX2-NEXT: testb $1, %al
2762 ; AVX2-NEXT: je LBB51_4
2763 ; AVX2-NEXT: ## BB#3: ## %cond.load1
2764 ; AVX2-NEXT: vpinsrb $1, 1(%rdi), %xmm1, %xmm2
2765 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2766 ; AVX2-NEXT: LBB51_4: ## %else2
2767 ; AVX2-NEXT: vpextrb $2, %xmm0, %eax
2768 ; AVX2-NEXT: testb $1, %al
2769 ; AVX2-NEXT: je LBB51_6
2770 ; AVX2-NEXT: ## BB#5: ## %cond.load4
2771 ; AVX2-NEXT: vpinsrb $2, 2(%rdi), %xmm1, %xmm2
2772 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2773 ; AVX2-NEXT: LBB51_6: ## %else5
2774 ; AVX2-NEXT: vpextrb $3, %xmm0, %eax
2775 ; AVX2-NEXT: testb $1, %al
2776 ; AVX2-NEXT: je LBB51_8
2777 ; AVX2-NEXT: ## BB#7: ## %cond.load7
2778 ; AVX2-NEXT: vpinsrb $3, 3(%rdi), %xmm1, %xmm2
2779 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2780 ; AVX2-NEXT: LBB51_8: ## %else8
2781 ; AVX2-NEXT: vpextrb $4, %xmm0, %eax
2782 ; AVX2-NEXT: testb $1, %al
2783 ; AVX2-NEXT: je LBB51_10
2784 ; AVX2-NEXT: ## BB#9: ## %cond.load10
2785 ; AVX2-NEXT: vpinsrb $4, 4(%rdi), %xmm1, %xmm2
2786 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2787 ; AVX2-NEXT: LBB51_10: ## %else11
2788 ; AVX2-NEXT: vpextrb $5, %xmm0, %eax
2789 ; AVX2-NEXT: testb $1, %al
2790 ; AVX2-NEXT: je LBB51_12
2791 ; AVX2-NEXT: ## BB#11: ## %cond.load13
2792 ; AVX2-NEXT: vpinsrb $5, 5(%rdi), %xmm1, %xmm2
2793 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2794 ; AVX2-NEXT: LBB51_12: ## %else14
2795 ; AVX2-NEXT: vpextrb $6, %xmm0, %eax
2796 ; AVX2-NEXT: testb $1, %al
2797 ; AVX2-NEXT: je LBB51_14
2798 ; AVX2-NEXT: ## BB#13: ## %cond.load16
2799 ; AVX2-NEXT: vpinsrb $6, 6(%rdi), %xmm1, %xmm2
2800 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2801 ; AVX2-NEXT: LBB51_14: ## %else17
2802 ; AVX2-NEXT: vpextrb $7, %xmm0, %eax
2803 ; AVX2-NEXT: testb $1, %al
2804 ; AVX2-NEXT: je LBB51_16
2805 ; AVX2-NEXT: ## BB#15: ## %cond.load19
2806 ; AVX2-NEXT: vpinsrb $7, 7(%rdi), %xmm1, %xmm2
2807 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2808 ; AVX2-NEXT: LBB51_16: ## %else20
2809 ; AVX2-NEXT: vpextrb $8, %xmm0, %eax
2810 ; AVX2-NEXT: testb $1, %al
2811 ; AVX2-NEXT: je LBB51_18
2812 ; AVX2-NEXT: ## BB#17: ## %cond.load22
2813 ; AVX2-NEXT: vpinsrb $8, 8(%rdi), %xmm1, %xmm2
2814 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2815 ; AVX2-NEXT: LBB51_18: ## %else23
2816 ; AVX2-NEXT: vpextrb $9, %xmm0, %eax
2817 ; AVX2-NEXT: testb $1, %al
2818 ; AVX2-NEXT: je LBB51_20
2819 ; AVX2-NEXT: ## BB#19: ## %cond.load25
2820 ; AVX2-NEXT: vpinsrb $9, 9(%rdi), %xmm1, %xmm2
2821 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2822 ; AVX2-NEXT: LBB51_20: ## %else26
2823 ; AVX2-NEXT: vpextrb $10, %xmm0, %eax
2824 ; AVX2-NEXT: testb $1, %al
2825 ; AVX2-NEXT: je LBB51_22
2826 ; AVX2-NEXT: ## BB#21: ## %cond.load28
2827 ; AVX2-NEXT: vpinsrb $10, 10(%rdi), %xmm1, %xmm2
2828 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2829 ; AVX2-NEXT: LBB51_22: ## %else29
2830 ; AVX2-NEXT: vpextrb $11, %xmm0, %eax
2831 ; AVX2-NEXT: testb $1, %al
2832 ; AVX2-NEXT: je LBB51_24
2833 ; AVX2-NEXT: ## BB#23: ## %cond.load31
2834 ; AVX2-NEXT: vpinsrb $11, 11(%rdi), %xmm1, %xmm2
2835 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2836 ; AVX2-NEXT: LBB51_24: ## %else32
2837 ; AVX2-NEXT: vpextrb $12, %xmm0, %eax
2838 ; AVX2-NEXT: testb $1, %al
2839 ; AVX2-NEXT: je LBB51_26
2840 ; AVX2-NEXT: ## BB#25: ## %cond.load34
2841 ; AVX2-NEXT: vpinsrb $12, 12(%rdi), %xmm1, %xmm2
2842 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2843 ; AVX2-NEXT: LBB51_26: ## %else35
2844 ; AVX2-NEXT: vpextrb $13, %xmm0, %eax
2845 ; AVX2-NEXT: testb $1, %al
2846 ; AVX2-NEXT: je LBB51_28
2847 ; AVX2-NEXT: ## BB#27: ## %cond.load37
2848 ; AVX2-NEXT: vpinsrb $13, 13(%rdi), %xmm1, %xmm2
2849 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2850 ; AVX2-NEXT: LBB51_28: ## %else38
2851 ; AVX2-NEXT: vpextrb $14, %xmm0, %eax
2852 ; AVX2-NEXT: testb $1, %al
2853 ; AVX2-NEXT: je LBB51_30
2854 ; AVX2-NEXT: ## BB#29: ## %cond.load40
2855 ; AVX2-NEXT: vpinsrb $14, 14(%rdi), %xmm1, %xmm2
2856 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2857 ; AVX2-NEXT: LBB51_30: ## %else41
2858 ; AVX2-NEXT: vpextrb $15, %xmm0, %eax
2859 ; AVX2-NEXT: testb $1, %al
2860 ; AVX2-NEXT: je LBB51_32
2861 ; AVX2-NEXT: ## BB#31: ## %cond.load43
2862 ; AVX2-NEXT: vpinsrb $15, 15(%rdi), %xmm1, %xmm2
2863 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
2864 ; AVX2-NEXT: LBB51_32: ## %else44
2865 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
2866 ; AVX2-NEXT: vpextrb $0, %xmm2, %eax
2867 ; AVX2-NEXT: testb $1, %al
2868 ; AVX2-NEXT: je LBB51_34
2869 ; AVX2-NEXT: ## BB#33: ## %cond.load46
2870 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2871 ; AVX2-NEXT: vpinsrb $0, 16(%rdi), %xmm3, %xmm3
2872 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2873 ; AVX2-NEXT: LBB51_34: ## %else47
2874 ; AVX2-NEXT: vpextrb $1, %xmm2, %eax
2875 ; AVX2-NEXT: testb $1, %al
2876 ; AVX2-NEXT: je LBB51_36
2877 ; AVX2-NEXT: ## BB#35: ## %cond.load49
2878 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2879 ; AVX2-NEXT: vpinsrb $1, 17(%rdi), %xmm3, %xmm3
2880 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2881 ; AVX2-NEXT: LBB51_36: ## %else50
2882 ; AVX2-NEXT: vpextrb $2, %xmm2, %eax
2883 ; AVX2-NEXT: testb $1, %al
2884 ; AVX2-NEXT: je LBB51_38
2885 ; AVX2-NEXT: ## BB#37: ## %cond.load52
2886 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2887 ; AVX2-NEXT: vpinsrb $2, 18(%rdi), %xmm3, %xmm3
2888 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2889 ; AVX2-NEXT: LBB51_38: ## %else53
2890 ; AVX2-NEXT: vpextrb $3, %xmm2, %eax
2891 ; AVX2-NEXT: testb $1, %al
2892 ; AVX2-NEXT: je LBB51_40
2893 ; AVX2-NEXT: ## BB#39: ## %cond.load55
2894 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2895 ; AVX2-NEXT: vpinsrb $3, 19(%rdi), %xmm3, %xmm3
2896 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2897 ; AVX2-NEXT: LBB51_40: ## %else56
2898 ; AVX2-NEXT: vpextrb $4, %xmm2, %eax
2899 ; AVX2-NEXT: testb $1, %al
2900 ; AVX2-NEXT: je LBB51_42
2901 ; AVX2-NEXT: ## BB#41: ## %cond.load58
2902 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2903 ; AVX2-NEXT: vpinsrb $4, 20(%rdi), %xmm3, %xmm3
2904 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2905 ; AVX2-NEXT: LBB51_42: ## %else59
2906 ; AVX2-NEXT: vpextrb $5, %xmm2, %eax
2907 ; AVX2-NEXT: testb $1, %al
2908 ; AVX2-NEXT: je LBB51_44
2909 ; AVX2-NEXT: ## BB#43: ## %cond.load61
2910 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2911 ; AVX2-NEXT: vpinsrb $5, 21(%rdi), %xmm3, %xmm3
2912 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2913 ; AVX2-NEXT: LBB51_44: ## %else62
2914 ; AVX2-NEXT: vpextrb $6, %xmm2, %eax
2915 ; AVX2-NEXT: testb $1, %al
2916 ; AVX2-NEXT: je LBB51_46
2917 ; AVX2-NEXT: ## BB#45: ## %cond.load64
2918 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2919 ; AVX2-NEXT: vpinsrb $6, 22(%rdi), %xmm3, %xmm3
2920 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2921 ; AVX2-NEXT: LBB51_46: ## %else65
2922 ; AVX2-NEXT: vpextrb $7, %xmm2, %eax
2923 ; AVX2-NEXT: testb $1, %al
2924 ; AVX2-NEXT: je LBB51_48
2925 ; AVX2-NEXT: ## BB#47: ## %cond.load67
2926 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2927 ; AVX2-NEXT: vpinsrb $7, 23(%rdi), %xmm3, %xmm3
2928 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2929 ; AVX2-NEXT: LBB51_48: ## %else68
2930 ; AVX2-NEXT: vpextrb $8, %xmm2, %eax
2931 ; AVX2-NEXT: testb $1, %al
2932 ; AVX2-NEXT: je LBB51_50
2933 ; AVX2-NEXT: ## BB#49: ## %cond.load70
2934 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2935 ; AVX2-NEXT: vpinsrb $8, 24(%rdi), %xmm3, %xmm3
2936 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2937 ; AVX2-NEXT: LBB51_50: ## %else71
2938 ; AVX2-NEXT: vpextrb $9, %xmm2, %eax
2939 ; AVX2-NEXT: testb $1, %al
2940 ; AVX2-NEXT: je LBB51_52
2941 ; AVX2-NEXT: ## BB#51: ## %cond.load73
2942 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2943 ; AVX2-NEXT: vpinsrb $9, 25(%rdi), %xmm3, %xmm3
2944 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2945 ; AVX2-NEXT: LBB51_52: ## %else74
2946 ; AVX2-NEXT: vpextrb $10, %xmm2, %eax
2947 ; AVX2-NEXT: testb $1, %al
2948 ; AVX2-NEXT: je LBB51_54
2949 ; AVX2-NEXT: ## BB#53: ## %cond.load76
2950 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2951 ; AVX2-NEXT: vpinsrb $10, 26(%rdi), %xmm3, %xmm3
2952 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2953 ; AVX2-NEXT: LBB51_54: ## %else77
2954 ; AVX2-NEXT: vpextrb $11, %xmm2, %eax
2955 ; AVX2-NEXT: testb $1, %al
2956 ; AVX2-NEXT: je LBB51_56
2957 ; AVX2-NEXT: ## BB#55: ## %cond.load79
2958 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2959 ; AVX2-NEXT: vpinsrb $11, 27(%rdi), %xmm3, %xmm3
2960 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2961 ; AVX2-NEXT: LBB51_56: ## %else80
2962 ; AVX2-NEXT: vpextrb $12, %xmm2, %eax
2963 ; AVX2-NEXT: testb $1, %al
2964 ; AVX2-NEXT: je LBB51_58
2965 ; AVX2-NEXT: ## BB#57: ## %cond.load82
2966 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2967 ; AVX2-NEXT: vpinsrb $12, 28(%rdi), %xmm3, %xmm3
2968 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2969 ; AVX2-NEXT: LBB51_58: ## %else83
2970 ; AVX2-NEXT: vpextrb $13, %xmm2, %eax
2971 ; AVX2-NEXT: testb $1, %al
2972 ; AVX2-NEXT: je LBB51_60
2973 ; AVX2-NEXT: ## BB#59: ## %cond.load85
2974 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2975 ; AVX2-NEXT: vpinsrb $13, 29(%rdi), %xmm3, %xmm3
2976 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2977 ; AVX2-NEXT: LBB51_60: ## %else86
2978 ; AVX2-NEXT: vpextrb $14, %xmm2, %eax
2979 ; AVX2-NEXT: testb $1, %al
2980 ; AVX2-NEXT: je LBB51_62
2981 ; AVX2-NEXT: ## BB#61: ## %cond.load88
2982 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
2983 ; AVX2-NEXT: vpinsrb $14, 30(%rdi), %xmm3, %xmm3
2984 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
2985 ; AVX2-NEXT: LBB51_62: ## %else89
2986 ; AVX2-NEXT: vpextrb $15, %xmm2, %eax
2987 ; AVX2-NEXT: testb $1, %al
2988 ; AVX2-NEXT: je LBB51_64
2989 ; AVX2-NEXT: ## BB#63: ## %cond.load91
2990 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
2991 ; AVX2-NEXT: vpinsrb $15, 31(%rdi), %xmm2, %xmm2
2992 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
2993 ; AVX2-NEXT: LBB51_64: ## %else92
2994 ; AVX2-NEXT: vpsllw $7, %ymm0, %ymm0
2995 ; AVX2-NEXT: vpand {{.*}}(%rip), %ymm0, %ymm0
2996 ; AVX2-NEXT: vpxor %ymm2, %ymm2, %ymm2
2997 ; AVX2-NEXT: vpcmpgtb %ymm0, %ymm2, %ymm0
2998 ; AVX2-NEXT: vpand %ymm1, %ymm0, %ymm0
2999 ; AVX2-NEXT: retq
3924 ; AVX2-LABEL: test_mask_load_64xi8:
3925 ; AVX2: ## BB#0:
3926 ; AVX2-NEXT: pushq %rbp
3927 ; AVX2-NEXT: Ltmp3:
3928 ; AVX2-NEXT: .cfi_def_cfa_offset 16
3929 ; AVX2-NEXT: pushq %r15
3930 ; AVX2-NEXT: Ltmp4:
3931 ; AVX2-NEXT: .cfi_def_cfa_offset 24
3932 ; AVX2-NEXT: pushq %r14
3933 ; AVX2-NEXT: Ltmp5:
3934 ; AVX2-NEXT: .cfi_def_cfa_offset 32
3935 ; AVX2-NEXT: pushq %r13
3936 ; AVX2-NEXT: Ltmp6:
3937 ; AVX2-NEXT: .cfi_def_cfa_offset 40
3938 ; AVX2-NEXT: pushq %r12
3939 ; AVX2-NEXT: Ltmp7:
3940 ; AVX2-NEXT: .cfi_def_cfa_offset 48
3941 ; AVX2-NEXT: pushq %rbx
3942 ; AVX2-NEXT: Ltmp8:
3943 ; AVX2-NEXT: .cfi_def_cfa_offset 56
3944 ; AVX2-NEXT: pushq %rax
3945 ; AVX2-NEXT: Ltmp9:
3946 ; AVX2-NEXT: .cfi_def_cfa_offset 64
3947 ; AVX2-NEXT: Ltmp10:
3948 ; AVX2-NEXT: .cfi_offset %rbx, -56
3949 ; AVX2-NEXT: Ltmp11:
3950 ; AVX2-NEXT: .cfi_offset %r12, -48
3951 ; AVX2-NEXT: Ltmp12:
3952 ; AVX2-NEXT: .cfi_offset %r13, -40
3953 ; AVX2-NEXT: Ltmp13:
3954 ; AVX2-NEXT: .cfi_offset %r14, -32
3955 ; AVX2-NEXT: Ltmp14:
3956 ; AVX2-NEXT: .cfi_offset %r15, -24
3957 ; AVX2-NEXT: Ltmp15:
3958 ; AVX2-NEXT: .cfi_offset %rbp, -16
3959 ; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax
3960 ; AVX2-NEXT: movl %edi, -{{[0-9]+}}(%rsp) ## 4-byte Spill
3961 ; AVX2-NEXT: testb $1, %dil
3962 ; AVX2-NEXT: je LBB52_2
3963 ; AVX2-NEXT: ## BB#1: ## %cond.load
3964 ; AVX2-NEXT: movzbl (%rax), %ebp
3965 ; AVX2-NEXT: vmovd %ebp, %xmm2
3966 ; AVX2-NEXT: LBB52_2: ## %else
3967 ; AVX2-NEXT: testb $1, %sil
3968 ; AVX2-NEXT: je LBB52_4
3969 ; AVX2-NEXT: ## BB#3: ## %cond.load1
3970 ; AVX2-NEXT: vpinsrb $1, 1(%rax), %xmm2, %xmm3
3971 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3972 ; AVX2-NEXT: LBB52_4: ## %else2
3973 ; AVX2-NEXT: testb $1, %dl
3974 ; AVX2-NEXT: je LBB52_6
3975 ; AVX2-NEXT: ## BB#5: ## %cond.load4
3976 ; AVX2-NEXT: vpinsrb $2, 2(%rax), %xmm2, %xmm3
3977 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3978 ; AVX2-NEXT: LBB52_6: ## %else5
3979 ; AVX2-NEXT: testb $1, %cl
3980 ; AVX2-NEXT: je LBB52_8
3981 ; AVX2-NEXT: ## BB#7: ## %cond.load7
3982 ; AVX2-NEXT: vpinsrb $3, 3(%rax), %xmm2, %xmm3
3983 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3984 ; AVX2-NEXT: LBB52_8: ## %else8
3985 ; AVX2-NEXT: testb $1, %r8b
3986 ; AVX2-NEXT: je LBB52_10
3987 ; AVX2-NEXT: ## BB#9: ## %cond.load10
3988 ; AVX2-NEXT: vpinsrb $4, 4(%rax), %xmm2, %xmm3
3989 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3990 ; AVX2-NEXT: LBB52_10: ## %else11
3991 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %r10b
3992 ; AVX2-NEXT: testb $1, %r9b
3993 ; AVX2-NEXT: je LBB52_12
3994 ; AVX2-NEXT: ## BB#11: ## %cond.load13
3995 ; AVX2-NEXT: vpinsrb $5, 5(%rax), %xmm2, %xmm3
3996 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
3997 ; AVX2-NEXT: LBB52_12: ## %else14
3998 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %r11b
3999 ; AVX2-NEXT: testb $1, %r10b
4000 ; AVX2-NEXT: je LBB52_14
4001 ; AVX2-NEXT: ## BB#13: ## %cond.load16
4002 ; AVX2-NEXT: vpinsrb $6, 6(%rax), %xmm2, %xmm3
4003 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
4004 ; AVX2-NEXT: LBB52_14: ## %else17
4005 ; AVX2-NEXT: testb $1, %r11b
4006 ; AVX2-NEXT: je LBB52_16
4007 ; AVX2-NEXT: ## BB#15: ## %cond.load19
4008 ; AVX2-NEXT: vpinsrb $7, 7(%rax), %xmm2, %xmm3
4009 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
4010 ; AVX2-NEXT: LBB52_16: ## %else20
4011 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4012 ; AVX2-NEXT: je LBB52_18
4013 ; AVX2-NEXT: ## BB#17: ## %cond.load22
4014 ; AVX2-NEXT: vpinsrb $8, 8(%rax), %xmm2, %xmm3
4015 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
4016 ; AVX2-NEXT: LBB52_18: ## %else23
4017 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4018 ; AVX2-NEXT: je LBB52_20
4019 ; AVX2-NEXT: ## BB#19: ## %cond.load25
4020 ; AVX2-NEXT: vpinsrb $9, 9(%rax), %xmm2, %xmm3
4021 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
4022 ; AVX2-NEXT: LBB52_20: ## %else26
4023 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4024 ; AVX2-NEXT: je LBB52_22
4025 ; AVX2-NEXT: ## BB#21: ## %cond.load28
4026 ; AVX2-NEXT: vpinsrb $10, 10(%rax), %xmm2, %xmm3
4027 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
4028 ; AVX2-NEXT: LBB52_22: ## %else29
4029 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %bpl
4030 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4031 ; AVX2-NEXT: je LBB52_24
4032 ; AVX2-NEXT: ## BB#23: ## %cond.load31
4033 ; AVX2-NEXT: vpinsrb $11, 11(%rax), %xmm2, %xmm3
4034 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
4035 ; AVX2-NEXT: LBB52_24: ## %else32
4036 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %bl
4037 ; AVX2-NEXT: testb $1, %bpl
4038 ; AVX2-NEXT: je LBB52_26
4039 ; AVX2-NEXT: ## BB#25: ## %cond.load34
4040 ; AVX2-NEXT: vpinsrb $12, 12(%rax), %xmm2, %xmm3
4041 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
4042 ; AVX2-NEXT: LBB52_26: ## %else35
4043 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %r14b
4044 ; AVX2-NEXT: testb $1, %bl
4045 ; AVX2-NEXT: je LBB52_28
4046 ; AVX2-NEXT: ## BB#27: ## %cond.load37
4047 ; AVX2-NEXT: vpinsrb $13, 13(%rax), %xmm2, %xmm3
4048 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
4049 ; AVX2-NEXT: LBB52_28: ## %else38
4050 ; AVX2-NEXT: testb $1, %r14b
4051 ; AVX2-NEXT: je LBB52_30
4052 ; AVX2-NEXT: ## BB#29: ## %cond.load40
4053 ; AVX2-NEXT: vpinsrb $14, 14(%rax), %xmm2, %xmm3
4054 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
4055 ; AVX2-NEXT: LBB52_30: ## %else41
4056 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %r13b
4057 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4058 ; AVX2-NEXT: je LBB52_32
4059 ; AVX2-NEXT: ## BB#31: ## %cond.load43
4060 ; AVX2-NEXT: vpinsrb $15, 15(%rax), %xmm2, %xmm3
4061 ; AVX2-NEXT: vpblendd {{.*#+}} ymm2 = ymm3[0,1,2,3],ymm2[4,5,6,7]
4062 ; AVX2-NEXT: LBB52_32: ## %else44
4063 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %r12b
4064 ; AVX2-NEXT: testb $1, %r13b
4065 ; AVX2-NEXT: je LBB52_34
4066 ; AVX2-NEXT: ## BB#33: ## %cond.load46
4067 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4068 ; AVX2-NEXT: vpinsrb $0, 16(%rax), %xmm3, %xmm3
4069 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4070 ; AVX2-NEXT: LBB52_34: ## %else47
4071 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %r15b
4072 ; AVX2-NEXT: testb $1, %r12b
4073 ; AVX2-NEXT: je LBB52_36
4074 ; AVX2-NEXT: ## BB#35: ## %cond.load49
4075 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4076 ; AVX2-NEXT: vpinsrb $1, 17(%rax), %xmm3, %xmm3
4077 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4078 ; AVX2-NEXT: LBB52_36: ## %else50
4079 ; AVX2-NEXT: testb $1, %r15b
4080 ; AVX2-NEXT: je LBB52_38
4081 ; AVX2-NEXT: ## BB#37: ## %cond.load52
4082 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4083 ; AVX2-NEXT: vpinsrb $2, 18(%rax), %xmm3, %xmm3
4084 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4085 ; AVX2-NEXT: LBB52_38: ## %else53
4086 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4087 ; AVX2-NEXT: je LBB52_40
4088 ; AVX2-NEXT: ## BB#39: ## %cond.load55
4089 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4090 ; AVX2-NEXT: vpinsrb $3, 19(%rax), %xmm3, %xmm3
4091 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4092 ; AVX2-NEXT: LBB52_40: ## %else56
4093 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4094 ; AVX2-NEXT: je LBB52_42
4095 ; AVX2-NEXT: ## BB#41: ## %cond.load58
4096 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4097 ; AVX2-NEXT: vpinsrb $4, 20(%rax), %xmm3, %xmm3
4098 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4099 ; AVX2-NEXT: LBB52_42: ## %else59
4100 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4101 ; AVX2-NEXT: je LBB52_44
4102 ; AVX2-NEXT: ## BB#43: ## %cond.load61
4103 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4104 ; AVX2-NEXT: vpinsrb $5, 21(%rax), %xmm3, %xmm3
4105 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4106 ; AVX2-NEXT: LBB52_44: ## %else62
4107 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4108 ; AVX2-NEXT: je LBB52_46
4109 ; AVX2-NEXT: ## BB#45: ## %cond.load64
4110 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4111 ; AVX2-NEXT: vpinsrb $6, 22(%rax), %xmm3, %xmm3
4112 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4113 ; AVX2-NEXT: LBB52_46: ## %else65
4114 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4115 ; AVX2-NEXT: je LBB52_48
4116 ; AVX2-NEXT: ## BB#47: ## %cond.load67
4117 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4118 ; AVX2-NEXT: vpinsrb $7, 23(%rax), %xmm3, %xmm3
4119 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4120 ; AVX2-NEXT: LBB52_48: ## %else68
4121 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4122 ; AVX2-NEXT: je LBB52_50
4123 ; AVX2-NEXT: ## BB#49: ## %cond.load70
4124 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4125 ; AVX2-NEXT: vpinsrb $8, 24(%rax), %xmm3, %xmm3
4126 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4127 ; AVX2-NEXT: LBB52_50: ## %else71
4128 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4129 ; AVX2-NEXT: je LBB52_52
4130 ; AVX2-NEXT: ## BB#51: ## %cond.load73
4131 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4132 ; AVX2-NEXT: vpinsrb $9, 25(%rax), %xmm3, %xmm3
4133 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4134 ; AVX2-NEXT: LBB52_52: ## %else74
4135 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4136 ; AVX2-NEXT: je LBB52_54
4137 ; AVX2-NEXT: ## BB#53: ## %cond.load76
4138 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4139 ; AVX2-NEXT: vpinsrb $10, 26(%rax), %xmm3, %xmm3
4140 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4141 ; AVX2-NEXT: LBB52_54: ## %else77
4142 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4143 ; AVX2-NEXT: je LBB52_56
4144 ; AVX2-NEXT: ## BB#55: ## %cond.load79
4145 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4146 ; AVX2-NEXT: vpinsrb $11, 27(%rax), %xmm3, %xmm3
4147 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4148 ; AVX2-NEXT: LBB52_56: ## %else80
4149 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4150 ; AVX2-NEXT: je LBB52_58
4151 ; AVX2-NEXT: ## BB#57: ## %cond.load82
4152 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4153 ; AVX2-NEXT: vpinsrb $12, 28(%rax), %xmm3, %xmm3
4154 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4155 ; AVX2-NEXT: LBB52_58: ## %else83
4156 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4157 ; AVX2-NEXT: je LBB52_60
4158 ; AVX2-NEXT: ## BB#59: ## %cond.load85
4159 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4160 ; AVX2-NEXT: vpinsrb $13, 29(%rax), %xmm3, %xmm3
4161 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4162 ; AVX2-NEXT: LBB52_60: ## %else86
4163 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4164 ; AVX2-NEXT: je LBB52_62
4165 ; AVX2-NEXT: ## BB#61: ## %cond.load88
4166 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4167 ; AVX2-NEXT: vpinsrb $14, 30(%rax), %xmm3, %xmm3
4168 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4169 ; AVX2-NEXT: LBB52_62: ## %else89
4170 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4171 ; AVX2-NEXT: je LBB52_64
4172 ; AVX2-NEXT: ## BB#63: ## %cond.load91
4173 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm3
4174 ; AVX2-NEXT: vpinsrb $15, 31(%rax), %xmm3, %xmm3
4175 ; AVX2-NEXT: vinserti128 $1, %xmm3, %ymm2, %ymm2
4176 ; AVX2-NEXT: LBB52_64: ## %else92
4177 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4178 ; AVX2-NEXT: je LBB52_66
4179 ; AVX2-NEXT: ## BB#65: ## %cond.load94
4180 ; AVX2-NEXT: vpinsrb $0, 32(%rax), %xmm0, %xmm3
4181 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm3[0,1,2,3],ymm0[4,5,6,7]
4182 ; AVX2-NEXT: LBB52_66: ## %else95
4183 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4184 ; AVX2-NEXT: je LBB52_68
4185 ; AVX2-NEXT: ## BB#67: ## %cond.load97
4186 ; AVX2-NEXT: vpinsrb $1, 33(%rax), %xmm3, %xmm4
4187 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4188 ; AVX2-NEXT: LBB52_68: ## %else98
4189 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4190 ; AVX2-NEXT: je LBB52_70
4191 ; AVX2-NEXT: ## BB#69: ## %cond.load100
4192 ; AVX2-NEXT: vpinsrb $2, 34(%rax), %xmm3, %xmm4
4193 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4194 ; AVX2-NEXT: LBB52_70: ## %else101
4195 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4196 ; AVX2-NEXT: je LBB52_72
4197 ; AVX2-NEXT: ## BB#71: ## %cond.load103
4198 ; AVX2-NEXT: vpinsrb $3, 35(%rax), %xmm3, %xmm4
4199 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4200 ; AVX2-NEXT: LBB52_72: ## %else104
4201 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4202 ; AVX2-NEXT: je LBB52_74
4203 ; AVX2-NEXT: ## BB#73: ## %cond.load106
4204 ; AVX2-NEXT: vpinsrb $4, 36(%rax), %xmm3, %xmm4
4205 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4206 ; AVX2-NEXT: LBB52_74: ## %else107
4207 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4208 ; AVX2-NEXT: je LBB52_76
4209 ; AVX2-NEXT: ## BB#75: ## %cond.load109
4210 ; AVX2-NEXT: vpinsrb $5, 37(%rax), %xmm3, %xmm4
4211 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4212 ; AVX2-NEXT: LBB52_76: ## %else110
4213 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4214 ; AVX2-NEXT: je LBB52_78
4215 ; AVX2-NEXT: ## BB#77: ## %cond.load112
4216 ; AVX2-NEXT: vpinsrb $6, 38(%rax), %xmm3, %xmm4
4217 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4218 ; AVX2-NEXT: LBB52_78: ## %else113
4219 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4220 ; AVX2-NEXT: je LBB52_80
4221 ; AVX2-NEXT: ## BB#79: ## %cond.load115
4222 ; AVX2-NEXT: vpinsrb $7, 39(%rax), %xmm3, %xmm4
4223 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4224 ; AVX2-NEXT: LBB52_80: ## %else116
4225 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4226 ; AVX2-NEXT: je LBB52_82
4227 ; AVX2-NEXT: ## BB#81: ## %cond.load118
4228 ; AVX2-NEXT: vpinsrb $8, 40(%rax), %xmm3, %xmm4
4229 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4230 ; AVX2-NEXT: LBB52_82: ## %else119
4231 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4232 ; AVX2-NEXT: je LBB52_84
4233 ; AVX2-NEXT: ## BB#83: ## %cond.load121
4234 ; AVX2-NEXT: vpinsrb $9, 41(%rax), %xmm3, %xmm4
4235 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4236 ; AVX2-NEXT: LBB52_84: ## %else122
4237 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4238 ; AVX2-NEXT: je LBB52_86
4239 ; AVX2-NEXT: ## BB#85: ## %cond.load124
4240 ; AVX2-NEXT: vpinsrb $10, 42(%rax), %xmm3, %xmm4
4241 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4242 ; AVX2-NEXT: LBB52_86: ## %else125
4243 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4244 ; AVX2-NEXT: je LBB52_88
4245 ; AVX2-NEXT: ## BB#87: ## %cond.load127
4246 ; AVX2-NEXT: vpinsrb $11, 43(%rax), %xmm3, %xmm4
4247 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4248 ; AVX2-NEXT: LBB52_88: ## %else128
4249 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4250 ; AVX2-NEXT: je LBB52_90
4251 ; AVX2-NEXT: ## BB#89: ## %cond.load130
4252 ; AVX2-NEXT: vpinsrb $12, 44(%rax), %xmm3, %xmm4
4253 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4254 ; AVX2-NEXT: LBB52_90: ## %else131
4255 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4256 ; AVX2-NEXT: je LBB52_92
4257 ; AVX2-NEXT: ## BB#91: ## %cond.load133
4258 ; AVX2-NEXT: vpinsrb $13, 45(%rax), %xmm3, %xmm4
4259 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4260 ; AVX2-NEXT: LBB52_92: ## %else134
4261 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4262 ; AVX2-NEXT: je LBB52_94
4263 ; AVX2-NEXT: ## BB#93: ## %cond.load136
4264 ; AVX2-NEXT: vpinsrb $14, 46(%rax), %xmm3, %xmm4
4265 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4266 ; AVX2-NEXT: LBB52_94: ## %else137
4267 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4268 ; AVX2-NEXT: je LBB52_96
4269 ; AVX2-NEXT: ## BB#95: ## %cond.load139
4270 ; AVX2-NEXT: vpinsrb $15, 47(%rax), %xmm3, %xmm4
4271 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
4272 ; AVX2-NEXT: LBB52_96: ## %else140
4273 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4274 ; AVX2-NEXT: je LBB52_98
4275 ; AVX2-NEXT: ## BB#97: ## %cond.load142
4276 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4277 ; AVX2-NEXT: vpinsrb $0, 48(%rax), %xmm4, %xmm4
4278 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4279 ; AVX2-NEXT: LBB52_98: ## %else143
4280 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4281 ; AVX2-NEXT: je LBB52_100
4282 ; AVX2-NEXT: ## BB#99: ## %cond.load145
4283 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4284 ; AVX2-NEXT: vpinsrb $1, 49(%rax), %xmm4, %xmm4
4285 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4286 ; AVX2-NEXT: LBB52_100: ## %else146
4287 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4288 ; AVX2-NEXT: je LBB52_102
4289 ; AVX2-NEXT: ## BB#101: ## %cond.load148
4290 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4291 ; AVX2-NEXT: vpinsrb $2, 50(%rax), %xmm4, %xmm4
4292 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4293 ; AVX2-NEXT: LBB52_102: ## %else149
4294 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4295 ; AVX2-NEXT: je LBB52_104
4296 ; AVX2-NEXT: ## BB#103: ## %cond.load151
4297 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4298 ; AVX2-NEXT: vpinsrb $3, 51(%rax), %xmm4, %xmm4
4299 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4300 ; AVX2-NEXT: LBB52_104: ## %else152
4301 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4302 ; AVX2-NEXT: je LBB52_106
4303 ; AVX2-NEXT: ## BB#105: ## %cond.load154
4304 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4305 ; AVX2-NEXT: vpinsrb $4, 52(%rax), %xmm4, %xmm4
4306 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4307 ; AVX2-NEXT: LBB52_106: ## %else155
4308 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4309 ; AVX2-NEXT: je LBB52_108
4310 ; AVX2-NEXT: ## BB#107: ## %cond.load157
4311 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4312 ; AVX2-NEXT: vpinsrb $5, 53(%rax), %xmm4, %xmm4
4313 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4314 ; AVX2-NEXT: LBB52_108: ## %else158
4315 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4316 ; AVX2-NEXT: je LBB52_110
4317 ; AVX2-NEXT: ## BB#109: ## %cond.load160
4318 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4319 ; AVX2-NEXT: vpinsrb $6, 54(%rax), %xmm4, %xmm4
4320 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4321 ; AVX2-NEXT: LBB52_110: ## %else161
4322 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4323 ; AVX2-NEXT: je LBB52_112
4324 ; AVX2-NEXT: ## BB#111: ## %cond.load163
4325 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4326 ; AVX2-NEXT: vpinsrb $7, 55(%rax), %xmm4, %xmm4
4327 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4328 ; AVX2-NEXT: LBB52_112: ## %else164
4329 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4330 ; AVX2-NEXT: je LBB52_114
4331 ; AVX2-NEXT: ## BB#113: ## %cond.load166
4332 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4333 ; AVX2-NEXT: vpinsrb $8, 56(%rax), %xmm4, %xmm4
4334 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4335 ; AVX2-NEXT: LBB52_114: ## %else167
4336 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4337 ; AVX2-NEXT: je LBB52_116
4338 ; AVX2-NEXT: ## BB#115: ## %cond.load169
4339 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4340 ; AVX2-NEXT: vpinsrb $9, 57(%rax), %xmm4, %xmm4
4341 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4342 ; AVX2-NEXT: LBB52_116: ## %else170
4343 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4344 ; AVX2-NEXT: je LBB52_118
4345 ; AVX2-NEXT: ## BB#117: ## %cond.load172
4346 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4347 ; AVX2-NEXT: vpinsrb $10, 58(%rax), %xmm4, %xmm4
4348 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4349 ; AVX2-NEXT: LBB52_118: ## %else173
4350 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4351 ; AVX2-NEXT: je LBB52_120
4352 ; AVX2-NEXT: ## BB#119: ## %cond.load175
4353 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4354 ; AVX2-NEXT: vpinsrb $11, 59(%rax), %xmm4, %xmm4
4355 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4356 ; AVX2-NEXT: LBB52_120: ## %else176
4357 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4358 ; AVX2-NEXT: je LBB52_122
4359 ; AVX2-NEXT: ## BB#121: ## %cond.load178
4360 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4361 ; AVX2-NEXT: vpinsrb $12, 60(%rax), %xmm4, %xmm4
4362 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4363 ; AVX2-NEXT: LBB52_122: ## %else179
4364 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4365 ; AVX2-NEXT: je LBB52_124
4366 ; AVX2-NEXT: ## BB#123: ## %cond.load181
4367 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4368 ; AVX2-NEXT: vpinsrb $13, 61(%rax), %xmm4, %xmm4
4369 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4370 ; AVX2-NEXT: LBB52_124: ## %else182
4371 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4372 ; AVX2-NEXT: jne LBB52_126
4373 ; AVX2-NEXT: ## BB#125:
4374 ; AVX2-NEXT: movq %rax, %rdi
4375 ; AVX2-NEXT: jmp LBB52_127
4376 ; AVX2-NEXT: LBB52_126: ## %cond.load184
4377 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4378 ; AVX2-NEXT: movq %rax, %rdi
4379 ; AVX2-NEXT: vpinsrb $14, 62(%rax), %xmm4, %xmm4
4380 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4381 ; AVX2-NEXT: LBB52_127: ## %else185
4382 ; AVX2-NEXT: movl %ebp, %eax
4383 ; AVX2-NEXT: testb $1, {{[0-9]+}}(%rsp)
4384 ; AVX2-NEXT: movl %r9d, {{[0-9]+}}(%rsp) ## 4-byte Spill
4385 ; AVX2-NEXT: movl %r8d, (%rsp) ## 4-byte Spill
4386 ; AVX2-NEXT: movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4387 ; AVX2-NEXT: movl %edx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4388 ; AVX2-NEXT: movl %esi, %ebp
4389 ; AVX2-NEXT: je LBB52_129
4390 ; AVX2-NEXT: ## BB#128: ## %cond.load187
4391 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
4392 ; AVX2-NEXT: vpinsrb $15, 63(%rdi), %xmm4, %xmm4
4393 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
4394 ; AVX2-NEXT: LBB52_129: ## %else188
4395 ; AVX2-NEXT: movzbl %r10b, %ecx
4396 ; AVX2-NEXT: movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4397 ; AVX2-NEXT: movzbl %r11b, %ecx
4398 ; AVX2-NEXT: movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4399 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx
4400 ; AVX2-NEXT: movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4401 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx
4402 ; AVX2-NEXT: movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4403 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx
4404 ; AVX2-NEXT: movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4405 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx
4406 ; AVX2-NEXT: movl %ecx, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4407 ; AVX2-NEXT: movzbl %al, %eax
4408 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4409 ; AVX2-NEXT: movzbl %bl, %eax
4410 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4411 ; AVX2-NEXT: movzbl %r14b, %eax
4412 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4413 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4414 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4415 ; AVX2-NEXT: movzbl %r12b, %eax
4416 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4417 ; AVX2-NEXT: movzbl %r13b, %eax
4418 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4419 ; AVX2-NEXT: movzbl %r15b, %eax
4420 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4421 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4422 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4423 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4424 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4425 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4426 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4427 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4428 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4429 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4430 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4431 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4432 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4433 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4434 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4435 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4436 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4437 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4438 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4439 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4440 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4441 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4442 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4443 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4444 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4445 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4446 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4447 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4448 ; AVX2-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4449 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r12d
4450 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r15d
4451 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r14d
4452 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %ebx
4453 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r11d
4454 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r9d
4455 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %esi
4456 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4457 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx
4458 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %edx
4459 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r8d
4460 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d
4461 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %edi
4462 ; AVX2-NEXT: movl %edi, -{{[0-9]+}}(%rsp) ## 4-byte Spill
4463 ; AVX2-NEXT: movl -{{[0-9]+}}(%rsp), %edi ## 4-byte Reload
4464 ; AVX2-NEXT: movzbl %dil, %r13d
4465 ; AVX2-NEXT: vmovd %r13d, %xmm4
4466 ; AVX2-NEXT: movzbl %bpl, %ebp
4467 ; AVX2-NEXT: vpinsrb $1, %ebp, %xmm4, %xmm4
4468 ; AVX2-NEXT: movl -{{[0-9]+}}(%rsp), %ebp ## 4-byte Reload
4469 ; AVX2-NEXT: movzbl %bpl, %ebp
4470 ; AVX2-NEXT: vpinsrb $2, %ebp, %xmm4, %xmm4
4471 ; AVX2-NEXT: movl -{{[0-9]+}}(%rsp), %ebp ## 4-byte Reload
4472 ; AVX2-NEXT: movzbl %bpl, %ebp
4473 ; AVX2-NEXT: vpinsrb $3, %ebp, %xmm4, %xmm4
4474 ; AVX2-NEXT: movl (%rsp), %ebp ## 4-byte Reload
4475 ; AVX2-NEXT: movzbl %bpl, %ebp
4476 ; AVX2-NEXT: vpinsrb $4, %ebp, %xmm4, %xmm4
4477 ; AVX2-NEXT: movl {{[0-9]+}}(%rsp), %ebp ## 4-byte Reload
4478 ; AVX2-NEXT: movzbl %bpl, %ebp
4479 ; AVX2-NEXT: vpinsrb $5, %ebp, %xmm4, %xmm4
4480 ; AVX2-NEXT: vpinsrb $6, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
4481 ; AVX2-NEXT: vpinsrb $7, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
4482 ; AVX2-NEXT: vpinsrb $8, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
4483 ; AVX2-NEXT: vpinsrb $9, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
4484 ; AVX2-NEXT: vpinsrb $10, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
4485 ; AVX2-NEXT: vpinsrb $11, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
4486 ; AVX2-NEXT: vpinsrb $12, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
4487 ; AVX2-NEXT: vpinsrb $13, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
4488 ; AVX2-NEXT: vpinsrb $14, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
4489 ; AVX2-NEXT: vpinsrb $15, -{{[0-9]+}}(%rsp), %xmm4, %xmm4 ## 4-byte Folded Reload
4490 ; AVX2-NEXT: vmovd -{{[0-9]+}}(%rsp), %xmm5 ## 4-byte Folded Reload
4491 ; AVX2-NEXT: ## xmm5 = mem[0],zero,zero,zero
4492 ; AVX2-NEXT: vpinsrb $1, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4493 ; AVX2-NEXT: vpinsrb $2, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4494 ; AVX2-NEXT: vpinsrb $3, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4495 ; AVX2-NEXT: vpinsrb $4, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4496 ; AVX2-NEXT: vpinsrb $5, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4497 ; AVX2-NEXT: vpinsrb $6, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4498 ; AVX2-NEXT: vpinsrb $7, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4499 ; AVX2-NEXT: vpinsrb $8, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4500 ; AVX2-NEXT: vpinsrb $9, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4501 ; AVX2-NEXT: vpinsrb $10, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4502 ; AVX2-NEXT: vpinsrb $11, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4503 ; AVX2-NEXT: vpinsrb $12, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4504 ; AVX2-NEXT: vpinsrb $13, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4505 ; AVX2-NEXT: vpinsrb $14, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4506 ; AVX2-NEXT: vpinsrb $15, -{{[0-9]+}}(%rsp), %xmm5, %xmm5 ## 4-byte Folded Reload
4507 ; AVX2-NEXT: vmovd %r12d, %xmm6
4508 ; AVX2-NEXT: vpinsrb $1, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
4509 ; AVX2-NEXT: vpinsrb $2, %r15d, %xmm6, %xmm6
4510 ; AVX2-NEXT: vpinsrb $3, %r14d, %xmm6, %xmm6
4511 ; AVX2-NEXT: vpinsrb $4, %ebx, %xmm6, %xmm6
4512 ; AVX2-NEXT: vpinsrb $5, %r11d, %xmm6, %xmm6
4513 ; AVX2-NEXT: vpinsrb $6, %r9d, %xmm6, %xmm6
4514 ; AVX2-NEXT: vpinsrb $7, %esi, %xmm6, %xmm6
4515 ; AVX2-NEXT: vpinsrb $8, %eax, %xmm6, %xmm6
4516 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4517 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r15d
4518 ; AVX2-NEXT: vpinsrb $9, %ecx, %xmm6, %xmm6
4519 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r9d
4520 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r12d
4521 ; AVX2-NEXT: vpinsrb $10, %edx, %xmm6, %xmm6
4522 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r11d
4523 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r14d
4524 ; AVX2-NEXT: vpinsrb $11, %r8d, %xmm6, %xmm6
4525 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r13d
4526 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx
4527 ; AVX2-NEXT: vpinsrb $12, %r10d, %xmm6, %xmm6
4528 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r8d
4529 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %ebx
4530 ; AVX2-NEXT: vpinsrb $13, -{{[0-9]+}}(%rsp), %xmm6, %xmm6 ## 4-byte Folded Reload
4531 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d
4532 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %ebp
4533 ; AVX2-NEXT: vpinsrb $14, %eax, %xmm6, %xmm6
4534 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %eax
4535 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %edi
4536 ; AVX2-NEXT: vpinsrb $15, %r15d, %xmm6, %xmm6
4537 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r15d
4538 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %esi
4539 ; AVX2-NEXT: vmovd %r12d, %xmm7
4540 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %r12d
4541 ; AVX2-NEXT: movzbl {{[0-9]+}}(%rsp), %edx
4542 ; AVX2-NEXT: vpinsrb $1, %r9d, %xmm7, %xmm7
4543 ; AVX2-NEXT: vpinsrb $2, %r11d, %xmm7, %xmm7
4544 ; AVX2-NEXT: vpinsrb $3, %r14d, %xmm7, %xmm7
4545 ; AVX2-NEXT: vpinsrb $4, %r13d, %xmm7, %xmm7
4546 ; AVX2-NEXT: vpinsrb $5, %ecx, %xmm7, %xmm7
4547 ; AVX2-NEXT: vpinsrb $6, %r8d, %xmm7, %xmm7
4548 ; AVX2-NEXT: vpinsrb $7, %ebx, %xmm7, %xmm7
4549 ; AVX2-NEXT: vpinsrb $8, %r10d, %xmm7, %xmm7
4550 ; AVX2-NEXT: vpinsrb $9, %ebp, %xmm7, %xmm7
4551 ; AVX2-NEXT: vpinsrb $10, %eax, %xmm7, %xmm7
4552 ; AVX2-NEXT: vpinsrb $11, %edi, %xmm7, %xmm7
4553 ; AVX2-NEXT: vpinsrb $12, %r15d, %xmm7, %xmm7
4554 ; AVX2-NEXT: vpinsrb $13, %esi, %xmm7, %xmm7
4555 ; AVX2-NEXT: vpinsrb $14, %r12d, %xmm7, %xmm7
4556 ; AVX2-NEXT: vpinsrb $15, %edx, %xmm7, %xmm7
4557 ; AVX2-NEXT: vinserti128 $1, %xmm5, %ymm4, %ymm4
4558 ; AVX2-NEXT: vpsllw $7, %ymm4, %ymm4
4559 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm5 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,12…
4560 ; AVX2-NEXT: vpand %ymm5, %ymm4, %ymm4
4561 ; AVX2-NEXT: vpblendvb %ymm4, %ymm2, %ymm0, %ymm0
4562 ; AVX2-NEXT: vinserti128 $1, %xmm7, %ymm6, %ymm2
4563 ; AVX2-NEXT: vpsllw $7, %ymm2, %ymm2
4564 ; AVX2-NEXT: vpand %ymm5, %ymm2, %ymm2
4565 ; AVX2-NEXT: vpblendvb %ymm2, %ymm3, %ymm1, %ymm1
4566 ; AVX2-NEXT: addq $8, %rsp
4567 ; AVX2-NEXT: popq %rbx
4568 ; AVX2-NEXT: popq %r12
4569 ; AVX2-NEXT: popq %r13
4570 ; AVX2-NEXT: popq %r14
4571 ; AVX2-NEXT: popq %r15
4572 ; AVX2-NEXT: popq %rbp
4573 ; AVX2-NEXT: retq
5834 ; AVX2-LABEL: test_mask_load_16xi16:
5835 ; AVX2: ## BB#0:
5836 ; AVX2-NEXT: vpextrb $0, %xmm0, %eax
5837 ; AVX2-NEXT: ## implicit-def: %YMM1
5838 ; AVX2-NEXT: testb $1, %al
5839 ; AVX2-NEXT: je LBB54_2
5840 ; AVX2-NEXT: ## BB#1: ## %cond.load
5841 ; AVX2-NEXT: movzwl (%rdi), %eax
5842 ; AVX2-NEXT: vmovd %eax, %xmm1
5843 ; AVX2-NEXT: LBB54_2: ## %else
5844 ; AVX2-NEXT: vpextrb $1, %xmm0, %eax
5845 ; AVX2-NEXT: testb $1, %al
5846 ; AVX2-NEXT: je LBB54_4
5847 ; AVX2-NEXT: ## BB#3: ## %cond.load1
5848 ; AVX2-NEXT: vpinsrw $1, 2(%rdi), %xmm1, %xmm2
5849 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
5850 ; AVX2-NEXT: LBB54_4: ## %else2
5851 ; AVX2-NEXT: vpextrb $2, %xmm0, %eax
5852 ; AVX2-NEXT: testb $1, %al
5853 ; AVX2-NEXT: je LBB54_6
5854 ; AVX2-NEXT: ## BB#5: ## %cond.load4
5855 ; AVX2-NEXT: vpinsrw $2, 4(%rdi), %xmm1, %xmm2
5856 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
5857 ; AVX2-NEXT: LBB54_6: ## %else5
5858 ; AVX2-NEXT: vpextrb $3, %xmm0, %eax
5859 ; AVX2-NEXT: testb $1, %al
5860 ; AVX2-NEXT: je LBB54_8
5861 ; AVX2-NEXT: ## BB#7: ## %cond.load7
5862 ; AVX2-NEXT: vpinsrw $3, 6(%rdi), %xmm1, %xmm2
5863 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
5864 ; AVX2-NEXT: LBB54_8: ## %else8
5865 ; AVX2-NEXT: vpextrb $4, %xmm0, %eax
5866 ; AVX2-NEXT: testb $1, %al
5867 ; AVX2-NEXT: je LBB54_10
5868 ; AVX2-NEXT: ## BB#9: ## %cond.load10
5869 ; AVX2-NEXT: vpinsrw $4, 8(%rdi), %xmm1, %xmm2
5870 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
5871 ; AVX2-NEXT: LBB54_10: ## %else11
5872 ; AVX2-NEXT: vpextrb $5, %xmm0, %eax
5873 ; AVX2-NEXT: testb $1, %al
5874 ; AVX2-NEXT: je LBB54_12
5875 ; AVX2-NEXT: ## BB#11: ## %cond.load13
5876 ; AVX2-NEXT: vpinsrw $5, 10(%rdi), %xmm1, %xmm2
5877 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
5878 ; AVX2-NEXT: LBB54_12: ## %else14
5879 ; AVX2-NEXT: vpextrb $6, %xmm0, %eax
5880 ; AVX2-NEXT: testb $1, %al
5881 ; AVX2-NEXT: je LBB54_14
5882 ; AVX2-NEXT: ## BB#13: ## %cond.load16
5883 ; AVX2-NEXT: vpinsrw $6, 12(%rdi), %xmm1, %xmm2
5884 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
5885 ; AVX2-NEXT: LBB54_14: ## %else17
5886 ; AVX2-NEXT: vpextrb $7, %xmm0, %eax
5887 ; AVX2-NEXT: testb $1, %al
5888 ; AVX2-NEXT: je LBB54_16
5889 ; AVX2-NEXT: ## BB#15: ## %cond.load19
5890 ; AVX2-NEXT: vpinsrw $7, 14(%rdi), %xmm1, %xmm2
5891 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm2[0,1,2,3],ymm1[4,5,6,7]
5892 ; AVX2-NEXT: LBB54_16: ## %else20
5893 ; AVX2-NEXT: vpextrb $8, %xmm0, %eax
5894 ; AVX2-NEXT: testb $1, %al
5895 ; AVX2-NEXT: je LBB54_18
5896 ; AVX2-NEXT: ## BB#17: ## %cond.load22
5897 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
5898 ; AVX2-NEXT: vpinsrw $0, 16(%rdi), %xmm2, %xmm2
5899 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
5900 ; AVX2-NEXT: LBB54_18: ## %else23
5901 ; AVX2-NEXT: vpextrb $9, %xmm0, %eax
5902 ; AVX2-NEXT: testb $1, %al
5903 ; AVX2-NEXT: je LBB54_20
5904 ; AVX2-NEXT: ## BB#19: ## %cond.load25
5905 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
5906 ; AVX2-NEXT: vpinsrw $1, 18(%rdi), %xmm2, %xmm2
5907 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
5908 ; AVX2-NEXT: LBB54_20: ## %else26
5909 ; AVX2-NEXT: vpextrb $10, %xmm0, %eax
5910 ; AVX2-NEXT: testb $1, %al
5911 ; AVX2-NEXT: je LBB54_22
5912 ; AVX2-NEXT: ## BB#21: ## %cond.load28
5913 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
5914 ; AVX2-NEXT: vpinsrw $2, 20(%rdi), %xmm2, %xmm2
5915 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
5916 ; AVX2-NEXT: LBB54_22: ## %else29
5917 ; AVX2-NEXT: vpextrb $11, %xmm0, %eax
5918 ; AVX2-NEXT: testb $1, %al
5919 ; AVX2-NEXT: je LBB54_24
5920 ; AVX2-NEXT: ## BB#23: ## %cond.load31
5921 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
5922 ; AVX2-NEXT: vpinsrw $3, 22(%rdi), %xmm2, %xmm2
5923 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
5924 ; AVX2-NEXT: LBB54_24: ## %else32
5925 ; AVX2-NEXT: vpextrb $12, %xmm0, %eax
5926 ; AVX2-NEXT: testb $1, %al
5927 ; AVX2-NEXT: je LBB54_26
5928 ; AVX2-NEXT: ## BB#25: ## %cond.load34
5929 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
5930 ; AVX2-NEXT: vpinsrw $4, 24(%rdi), %xmm2, %xmm2
5931 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
5932 ; AVX2-NEXT: LBB54_26: ## %else35
5933 ; AVX2-NEXT: vpextrb $13, %xmm0, %eax
5934 ; AVX2-NEXT: testb $1, %al
5935 ; AVX2-NEXT: je LBB54_28
5936 ; AVX2-NEXT: ## BB#27: ## %cond.load37
5937 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
5938 ; AVX2-NEXT: vpinsrw $5, 26(%rdi), %xmm2, %xmm2
5939 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
5940 ; AVX2-NEXT: LBB54_28: ## %else38
5941 ; AVX2-NEXT: vpextrb $14, %xmm0, %eax
5942 ; AVX2-NEXT: testb $1, %al
5943 ; AVX2-NEXT: je LBB54_30
5944 ; AVX2-NEXT: ## BB#29: ## %cond.load40
5945 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
5946 ; AVX2-NEXT: vpinsrw $6, 28(%rdi), %xmm2, %xmm2
5947 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
5948 ; AVX2-NEXT: LBB54_30: ## %else41
5949 ; AVX2-NEXT: vpextrb $15, %xmm0, %eax
5950 ; AVX2-NEXT: testb $1, %al
5951 ; AVX2-NEXT: je LBB54_32
5952 ; AVX2-NEXT: ## BB#31: ## %cond.load43
5953 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
5954 ; AVX2-NEXT: vpinsrw $7, 30(%rdi), %xmm2, %xmm2
5955 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
5956 ; AVX2-NEXT: LBB54_32: ## %else44
5957 ; AVX2-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
5958 ; AVX2-NEXT: vpsllw $15, %ymm0, %ymm0
5959 ; AVX2-NEXT: vpsraw $15, %ymm0, %ymm0
5960 ; AVX2-NEXT: vpand %ymm1, %ymm0, %ymm0
5961 ; AVX2-NEXT: retq
6404 ; AVX2-LABEL: test_mask_load_32xi16:
6405 ; AVX2: ## BB#0:
6406 ; AVX2-NEXT: vpextrb $0, %xmm0, %eax
6407 ; AVX2-NEXT: testb $1, %al
6408 ; AVX2-NEXT: je LBB55_2
6409 ; AVX2-NEXT: ## BB#1: ## %cond.load
6410 ; AVX2-NEXT: movzwl (%rdi), %eax
6411 ; AVX2-NEXT: vmovd %eax, %xmm3
6412 ; AVX2-NEXT: LBB55_2: ## %else
6413 ; AVX2-NEXT: vpextrb $1, %xmm0, %eax
6414 ; AVX2-NEXT: testb $1, %al
6415 ; AVX2-NEXT: je LBB55_4
6416 ; AVX2-NEXT: ## BB#3: ## %cond.load1
6417 ; AVX2-NEXT: vpinsrw $1, 2(%rdi), %xmm3, %xmm4
6418 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
6419 ; AVX2-NEXT: LBB55_4: ## %else2
6420 ; AVX2-NEXT: vpextrb $2, %xmm0, %eax
6421 ; AVX2-NEXT: testb $1, %al
6422 ; AVX2-NEXT: je LBB55_6
6423 ; AVX2-NEXT: ## BB#5: ## %cond.load4
6424 ; AVX2-NEXT: vpinsrw $2, 4(%rdi), %xmm3, %xmm4
6425 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
6426 ; AVX2-NEXT: LBB55_6: ## %else5
6427 ; AVX2-NEXT: vpextrb $3, %xmm0, %eax
6428 ; AVX2-NEXT: testb $1, %al
6429 ; AVX2-NEXT: je LBB55_8
6430 ; AVX2-NEXT: ## BB#7: ## %cond.load7
6431 ; AVX2-NEXT: vpinsrw $3, 6(%rdi), %xmm3, %xmm4
6432 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
6433 ; AVX2-NEXT: LBB55_8: ## %else8
6434 ; AVX2-NEXT: vpextrb $4, %xmm0, %eax
6435 ; AVX2-NEXT: testb $1, %al
6436 ; AVX2-NEXT: je LBB55_10
6437 ; AVX2-NEXT: ## BB#9: ## %cond.load10
6438 ; AVX2-NEXT: vpinsrw $4, 8(%rdi), %xmm3, %xmm4
6439 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
6440 ; AVX2-NEXT: LBB55_10: ## %else11
6441 ; AVX2-NEXT: vpextrb $5, %xmm0, %eax
6442 ; AVX2-NEXT: testb $1, %al
6443 ; AVX2-NEXT: je LBB55_12
6444 ; AVX2-NEXT: ## BB#11: ## %cond.load13
6445 ; AVX2-NEXT: vpinsrw $5, 10(%rdi), %xmm3, %xmm4
6446 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
6447 ; AVX2-NEXT: LBB55_12: ## %else14
6448 ; AVX2-NEXT: vpextrb $6, %xmm0, %eax
6449 ; AVX2-NEXT: testb $1, %al
6450 ; AVX2-NEXT: je LBB55_14
6451 ; AVX2-NEXT: ## BB#13: ## %cond.load16
6452 ; AVX2-NEXT: vpinsrw $6, 12(%rdi), %xmm3, %xmm4
6453 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
6454 ; AVX2-NEXT: LBB55_14: ## %else17
6455 ; AVX2-NEXT: vpextrb $7, %xmm0, %eax
6456 ; AVX2-NEXT: testb $1, %al
6457 ; AVX2-NEXT: je LBB55_16
6458 ; AVX2-NEXT: ## BB#15: ## %cond.load19
6459 ; AVX2-NEXT: vpinsrw $7, 14(%rdi), %xmm3, %xmm4
6460 ; AVX2-NEXT: vpblendd {{.*#+}} ymm3 = ymm4[0,1,2,3],ymm3[4,5,6,7]
6461 ; AVX2-NEXT: LBB55_16: ## %else20
6462 ; AVX2-NEXT: vpextrb $8, %xmm0, %eax
6463 ; AVX2-NEXT: testb $1, %al
6464 ; AVX2-NEXT: je LBB55_18
6465 ; AVX2-NEXT: ## BB#17: ## %cond.load22
6466 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
6467 ; AVX2-NEXT: vpinsrw $0, 16(%rdi), %xmm4, %xmm4
6468 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
6469 ; AVX2-NEXT: LBB55_18: ## %else23
6470 ; AVX2-NEXT: vpextrb $9, %xmm0, %eax
6471 ; AVX2-NEXT: testb $1, %al
6472 ; AVX2-NEXT: je LBB55_20
6473 ; AVX2-NEXT: ## BB#19: ## %cond.load25
6474 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
6475 ; AVX2-NEXT: vpinsrw $1, 18(%rdi), %xmm4, %xmm4
6476 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
6477 ; AVX2-NEXT: LBB55_20: ## %else26
6478 ; AVX2-NEXT: vpextrb $10, %xmm0, %eax
6479 ; AVX2-NEXT: testb $1, %al
6480 ; AVX2-NEXT: je LBB55_22
6481 ; AVX2-NEXT: ## BB#21: ## %cond.load28
6482 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
6483 ; AVX2-NEXT: vpinsrw $2, 20(%rdi), %xmm4, %xmm4
6484 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
6485 ; AVX2-NEXT: LBB55_22: ## %else29
6486 ; AVX2-NEXT: vpextrb $11, %xmm0, %eax
6487 ; AVX2-NEXT: testb $1, %al
6488 ; AVX2-NEXT: je LBB55_24
6489 ; AVX2-NEXT: ## BB#23: ## %cond.load31
6490 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
6491 ; AVX2-NEXT: vpinsrw $3, 22(%rdi), %xmm4, %xmm4
6492 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
6493 ; AVX2-NEXT: LBB55_24: ## %else32
6494 ; AVX2-NEXT: vpextrb $12, %xmm0, %eax
6495 ; AVX2-NEXT: testb $1, %al
6496 ; AVX2-NEXT: je LBB55_26
6497 ; AVX2-NEXT: ## BB#25: ## %cond.load34
6498 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
6499 ; AVX2-NEXT: vpinsrw $4, 24(%rdi), %xmm4, %xmm4
6500 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
6501 ; AVX2-NEXT: LBB55_26: ## %else35
6502 ; AVX2-NEXT: vpextrb $13, %xmm0, %eax
6503 ; AVX2-NEXT: testb $1, %al
6504 ; AVX2-NEXT: je LBB55_28
6505 ; AVX2-NEXT: ## BB#27: ## %cond.load37
6506 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
6507 ; AVX2-NEXT: vpinsrw $5, 26(%rdi), %xmm4, %xmm4
6508 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
6509 ; AVX2-NEXT: LBB55_28: ## %else38
6510 ; AVX2-NEXT: vpextrb $14, %xmm0, %eax
6511 ; AVX2-NEXT: testb $1, %al
6512 ; AVX2-NEXT: je LBB55_30
6513 ; AVX2-NEXT: ## BB#29: ## %cond.load40
6514 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
6515 ; AVX2-NEXT: vpinsrw $6, 28(%rdi), %xmm4, %xmm4
6516 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
6517 ; AVX2-NEXT: LBB55_30: ## %else41
6518 ; AVX2-NEXT: vpextrb $15, %xmm0, %eax
6519 ; AVX2-NEXT: testb $1, %al
6520 ; AVX2-NEXT: je LBB55_32
6521 ; AVX2-NEXT: ## BB#31: ## %cond.load43
6522 ; AVX2-NEXT: vextracti128 $1, %ymm3, %xmm4
6523 ; AVX2-NEXT: vpinsrw $7, 30(%rdi), %xmm4, %xmm4
6524 ; AVX2-NEXT: vinserti128 $1, %xmm4, %ymm3, %ymm3
6525 ; AVX2-NEXT: LBB55_32: ## %else44
6526 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm4
6527 ; AVX2-NEXT: vpextrb $0, %xmm4, %eax
6528 ; AVX2-NEXT: testb $1, %al
6529 ; AVX2-NEXT: je LBB55_34
6530 ; AVX2-NEXT: ## BB#33: ## %cond.load46
6531 ; AVX2-NEXT: vpinsrw $0, 32(%rdi), %xmm0, %xmm5
6532 ; AVX2-NEXT: vpblendd {{.*#+}} ymm5 = ymm5[0,1,2,3],ymm0[4,5,6,7]
6533 ; AVX2-NEXT: LBB55_34: ## %else47
6534 ; AVX2-NEXT: vpextrb $1, %xmm4, %eax
6535 ; AVX2-NEXT: testb $1, %al
6536 ; AVX2-NEXT: je LBB55_36
6537 ; AVX2-NEXT: ## BB#35: ## %cond.load49
6538 ; AVX2-NEXT: vpinsrw $1, 34(%rdi), %xmm5, %xmm6
6539 ; AVX2-NEXT: vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
6540 ; AVX2-NEXT: LBB55_36: ## %else50
6541 ; AVX2-NEXT: vpextrb $2, %xmm4, %eax
6542 ; AVX2-NEXT: testb $1, %al
6543 ; AVX2-NEXT: je LBB55_38
6544 ; AVX2-NEXT: ## BB#37: ## %cond.load52
6545 ; AVX2-NEXT: vpinsrw $2, 36(%rdi), %xmm5, %xmm6
6546 ; AVX2-NEXT: vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
6547 ; AVX2-NEXT: LBB55_38: ## %else53
6548 ; AVX2-NEXT: vpextrb $3, %xmm4, %eax
6549 ; AVX2-NEXT: testb $1, %al
6550 ; AVX2-NEXT: je LBB55_40
6551 ; AVX2-NEXT: ## BB#39: ## %cond.load55
6552 ; AVX2-NEXT: vpinsrw $3, 38(%rdi), %xmm5, %xmm6
6553 ; AVX2-NEXT: vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
6554 ; AVX2-NEXT: LBB55_40: ## %else56
6555 ; AVX2-NEXT: vpextrb $4, %xmm4, %eax
6556 ; AVX2-NEXT: testb $1, %al
6557 ; AVX2-NEXT: je LBB55_42
6558 ; AVX2-NEXT: ## BB#41: ## %cond.load58
6559 ; AVX2-NEXT: vpinsrw $4, 40(%rdi), %xmm5, %xmm6
6560 ; AVX2-NEXT: vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
6561 ; AVX2-NEXT: LBB55_42: ## %else59
6562 ; AVX2-NEXT: vpextrb $5, %xmm4, %eax
6563 ; AVX2-NEXT: testb $1, %al
6564 ; AVX2-NEXT: je LBB55_44
6565 ; AVX2-NEXT: ## BB#43: ## %cond.load61
6566 ; AVX2-NEXT: vpinsrw $5, 42(%rdi), %xmm5, %xmm6
6567 ; AVX2-NEXT: vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
6568 ; AVX2-NEXT: LBB55_44: ## %else62
6569 ; AVX2-NEXT: vpextrb $6, %xmm4, %eax
6570 ; AVX2-NEXT: testb $1, %al
6571 ; AVX2-NEXT: je LBB55_46
6572 ; AVX2-NEXT: ## BB#45: ## %cond.load64
6573 ; AVX2-NEXT: vpinsrw $6, 44(%rdi), %xmm5, %xmm6
6574 ; AVX2-NEXT: vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
6575 ; AVX2-NEXT: LBB55_46: ## %else65
6576 ; AVX2-NEXT: vpextrb $7, %xmm4, %eax
6577 ; AVX2-NEXT: testb $1, %al
6578 ; AVX2-NEXT: je LBB55_48
6579 ; AVX2-NEXT: ## BB#47: ## %cond.load67
6580 ; AVX2-NEXT: vpinsrw $7, 46(%rdi), %xmm5, %xmm6
6581 ; AVX2-NEXT: vpblendd {{.*#+}} ymm5 = ymm6[0,1,2,3],ymm5[4,5,6,7]
6582 ; AVX2-NEXT: LBB55_48: ## %else68
6583 ; AVX2-NEXT: vpextrb $8, %xmm4, %eax
6584 ; AVX2-NEXT: testb $1, %al
6585 ; AVX2-NEXT: je LBB55_50
6586 ; AVX2-NEXT: ## BB#49: ## %cond.load70
6587 ; AVX2-NEXT: vextracti128 $1, %ymm5, %xmm6
6588 ; AVX2-NEXT: vpinsrw $0, 48(%rdi), %xmm6, %xmm6
6589 ; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm5, %ymm5
6590 ; AVX2-NEXT: LBB55_50: ## %else71
6591 ; AVX2-NEXT: vpextrb $9, %xmm4, %eax
6592 ; AVX2-NEXT: testb $1, %al
6593 ; AVX2-NEXT: je LBB55_52
6594 ; AVX2-NEXT: ## BB#51: ## %cond.load73
6595 ; AVX2-NEXT: vextracti128 $1, %ymm5, %xmm6
6596 ; AVX2-NEXT: vpinsrw $1, 50(%rdi), %xmm6, %xmm6
6597 ; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm5, %ymm5
6598 ; AVX2-NEXT: LBB55_52: ## %else74
6599 ; AVX2-NEXT: vpextrb $10, %xmm4, %eax
6600 ; AVX2-NEXT: testb $1, %al
6601 ; AVX2-NEXT: je LBB55_54
6602 ; AVX2-NEXT: ## BB#53: ## %cond.load76
6603 ; AVX2-NEXT: vextracti128 $1, %ymm5, %xmm6
6604 ; AVX2-NEXT: vpinsrw $2, 52(%rdi), %xmm6, %xmm6
6605 ; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm5, %ymm5
6606 ; AVX2-NEXT: LBB55_54: ## %else77
6607 ; AVX2-NEXT: vpextrb $11, %xmm4, %eax
6608 ; AVX2-NEXT: testb $1, %al
6609 ; AVX2-NEXT: je LBB55_56
6610 ; AVX2-NEXT: ## BB#55: ## %cond.load79
6611 ; AVX2-NEXT: vextracti128 $1, %ymm5, %xmm6
6612 ; AVX2-NEXT: vpinsrw $3, 54(%rdi), %xmm6, %xmm6
6613 ; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm5, %ymm5
6614 ; AVX2-NEXT: LBB55_56: ## %else80
6615 ; AVX2-NEXT: vpextrb $12, %xmm4, %eax
6616 ; AVX2-NEXT: testb $1, %al
6617 ; AVX2-NEXT: je LBB55_58
6618 ; AVX2-NEXT: ## BB#57: ## %cond.load82
6619 ; AVX2-NEXT: vextracti128 $1, %ymm5, %xmm6
6620 ; AVX2-NEXT: vpinsrw $4, 56(%rdi), %xmm6, %xmm6
6621 ; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm5, %ymm5
6622 ; AVX2-NEXT: LBB55_58: ## %else83
6623 ; AVX2-NEXT: vpextrb $13, %xmm4, %eax
6624 ; AVX2-NEXT: testb $1, %al
6625 ; AVX2-NEXT: je LBB55_60
6626 ; AVX2-NEXT: ## BB#59: ## %cond.load85
6627 ; AVX2-NEXT: vextracti128 $1, %ymm5, %xmm6
6628 ; AVX2-NEXT: vpinsrw $5, 58(%rdi), %xmm6, %xmm6
6629 ; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm5, %ymm5
6630 ; AVX2-NEXT: LBB55_60: ## %else86
6631 ; AVX2-NEXT: vpextrb $14, %xmm4, %eax
6632 ; AVX2-NEXT: testb $1, %al
6633 ; AVX2-NEXT: je LBB55_62
6634 ; AVX2-NEXT: ## BB#61: ## %cond.load88
6635 ; AVX2-NEXT: vextracti128 $1, %ymm5, %xmm6
6636 ; AVX2-NEXT: vpinsrw $6, 60(%rdi), %xmm6, %xmm6
6637 ; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm5, %ymm5
6638 ; AVX2-NEXT: LBB55_62: ## %else89
6639 ; AVX2-NEXT: vpextrb $15, %xmm4, %eax
6640 ; AVX2-NEXT: testb $1, %al
6641 ; AVX2-NEXT: je LBB55_64
6642 ; AVX2-NEXT: ## BB#63: ## %cond.load91
6643 ; AVX2-NEXT: vextracti128 $1, %ymm5, %xmm6
6644 ; AVX2-NEXT: vpinsrw $7, 62(%rdi), %xmm6, %xmm6
6645 ; AVX2-NEXT: vinserti128 $1, %xmm6, %ymm5, %ymm5
6646 ; AVX2-NEXT: LBB55_64: ## %else92
6647 ; AVX2-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
6648 ; AVX2-NEXT: vpsllw $15, %ymm0, %ymm0
6649 ; AVX2-NEXT: vpsraw $15, %ymm0, %ymm0
6650 ; AVX2-NEXT: vpblendvb %ymm0, %ymm3, %ymm1, %ymm0
6651 ; AVX2-NEXT: vpmovzxbw {{.*#+}} ymm1 = xmm4[0],zero,xmm4[1],zero,xmm4[2],zero,xmm4[3],zero,xmm4[…
6652 ; AVX2-NEXT: vpsllw $15, %ymm1, %ymm1
6653 ; AVX2-NEXT: vpsraw $15, %ymm1, %ymm1
6654 ; AVX2-NEXT: vpblendvb %ymm1, %ymm5, %ymm2, %ymm1
6655 ; AVX2-NEXT: retq
7384 ; AVX2-LABEL: test_mask_store_32xi8:
7385 ; AVX2: ## BB#0:
7386 ; AVX2-NEXT: vpextrb $0, %xmm0, %eax
7387 ; AVX2-NEXT: testb $1, %al
7388 ; AVX2-NEXT: je LBB57_2
7389 ; AVX2-NEXT: ## BB#1: ## %cond.store
7390 ; AVX2-NEXT: vpextrb $0, %xmm1, (%rdi)
7391 ; AVX2-NEXT: LBB57_2: ## %else
7392 ; AVX2-NEXT: vpextrb $1, %xmm0, %eax
7393 ; AVX2-NEXT: testb $1, %al
7394 ; AVX2-NEXT: je LBB57_4
7395 ; AVX2-NEXT: ## BB#3: ## %cond.store1
7396 ; AVX2-NEXT: vpextrb $1, %xmm1, 1(%rdi)
7397 ; AVX2-NEXT: LBB57_4: ## %else2
7398 ; AVX2-NEXT: vpextrb $2, %xmm0, %eax
7399 ; AVX2-NEXT: testb $1, %al
7400 ; AVX2-NEXT: je LBB57_6
7401 ; AVX2-NEXT: ## BB#5: ## %cond.store3
7402 ; AVX2-NEXT: vpextrb $2, %xmm1, 2(%rdi)
7403 ; AVX2-NEXT: LBB57_6: ## %else4
7404 ; AVX2-NEXT: vpextrb $3, %xmm0, %eax
7405 ; AVX2-NEXT: testb $1, %al
7406 ; AVX2-NEXT: je LBB57_8
7407 ; AVX2-NEXT: ## BB#7: ## %cond.store5
7408 ; AVX2-NEXT: vpextrb $3, %xmm1, 3(%rdi)
7409 ; AVX2-NEXT: LBB57_8: ## %else6
7410 ; AVX2-NEXT: vpextrb $4, %xmm0, %eax
7411 ; AVX2-NEXT: testb $1, %al
7412 ; AVX2-NEXT: je LBB57_10
7413 ; AVX2-NEXT: ## BB#9: ## %cond.store7
7414 ; AVX2-NEXT: vpextrb $4, %xmm1, 4(%rdi)
7415 ; AVX2-NEXT: LBB57_10: ## %else8
7416 ; AVX2-NEXT: vpextrb $5, %xmm0, %eax
7417 ; AVX2-NEXT: testb $1, %al
7418 ; AVX2-NEXT: je LBB57_12
7419 ; AVX2-NEXT: ## BB#11: ## %cond.store9
7420 ; AVX2-NEXT: vpextrb $5, %xmm1, 5(%rdi)
7421 ; AVX2-NEXT: LBB57_12: ## %else10
7422 ; AVX2-NEXT: vpextrb $6, %xmm0, %eax
7423 ; AVX2-NEXT: testb $1, %al
7424 ; AVX2-NEXT: je LBB57_14
7425 ; AVX2-NEXT: ## BB#13: ## %cond.store11
7426 ; AVX2-NEXT: vpextrb $6, %xmm1, 6(%rdi)
7427 ; AVX2-NEXT: LBB57_14: ## %else12
7428 ; AVX2-NEXT: vpextrb $7, %xmm0, %eax
7429 ; AVX2-NEXT: testb $1, %al
7430 ; AVX2-NEXT: je LBB57_16
7431 ; AVX2-NEXT: ## BB#15: ## %cond.store13
7432 ; AVX2-NEXT: vpextrb $7, %xmm1, 7(%rdi)
7433 ; AVX2-NEXT: LBB57_16: ## %else14
7434 ; AVX2-NEXT: vpextrb $8, %xmm0, %eax
7435 ; AVX2-NEXT: testb $1, %al
7436 ; AVX2-NEXT: je LBB57_18
7437 ; AVX2-NEXT: ## BB#17: ## %cond.store15
7438 ; AVX2-NEXT: vpextrb $8, %xmm1, 8(%rdi)
7439 ; AVX2-NEXT: LBB57_18: ## %else16
7440 ; AVX2-NEXT: vpextrb $9, %xmm0, %eax
7441 ; AVX2-NEXT: testb $1, %al
7442 ; AVX2-NEXT: je LBB57_20
7443 ; AVX2-NEXT: ## BB#19: ## %cond.store17
7444 ; AVX2-NEXT: vpextrb $9, %xmm1, 9(%rdi)
7445 ; AVX2-NEXT: LBB57_20: ## %else18
7446 ; AVX2-NEXT: vpextrb $10, %xmm0, %eax
7447 ; AVX2-NEXT: testb $1, %al
7448 ; AVX2-NEXT: je LBB57_22
7449 ; AVX2-NEXT: ## BB#21: ## %cond.store19
7450 ; AVX2-NEXT: vpextrb $10, %xmm1, 10(%rdi)
7451 ; AVX2-NEXT: LBB57_22: ## %else20
7452 ; AVX2-NEXT: vpextrb $11, %xmm0, %eax
7453 ; AVX2-NEXT: testb $1, %al
7454 ; AVX2-NEXT: je LBB57_24
7455 ; AVX2-NEXT: ## BB#23: ## %cond.store21
7456 ; AVX2-NEXT: vpextrb $11, %xmm1, 11(%rdi)
7457 ; AVX2-NEXT: LBB57_24: ## %else22
7458 ; AVX2-NEXT: vpextrb $12, %xmm0, %eax
7459 ; AVX2-NEXT: testb $1, %al
7460 ; AVX2-NEXT: je LBB57_26
7461 ; AVX2-NEXT: ## BB#25: ## %cond.store23
7462 ; AVX2-NEXT: vpextrb $12, %xmm1, 12(%rdi)
7463 ; AVX2-NEXT: LBB57_26: ## %else24
7464 ; AVX2-NEXT: vpextrb $13, %xmm0, %eax
7465 ; AVX2-NEXT: testb $1, %al
7466 ; AVX2-NEXT: je LBB57_28
7467 ; AVX2-NEXT: ## BB#27: ## %cond.store25
7468 ; AVX2-NEXT: vpextrb $13, %xmm1, 13(%rdi)
7469 ; AVX2-NEXT: LBB57_28: ## %else26
7470 ; AVX2-NEXT: vpextrb $14, %xmm0, %eax
7471 ; AVX2-NEXT: testb $1, %al
7472 ; AVX2-NEXT: je LBB57_30
7473 ; AVX2-NEXT: ## BB#29: ## %cond.store27
7474 ; AVX2-NEXT: vpextrb $14, %xmm1, 14(%rdi)
7475 ; AVX2-NEXT: LBB57_30: ## %else28
7476 ; AVX2-NEXT: vpextrb $15, %xmm0, %eax
7477 ; AVX2-NEXT: testb $1, %al
7478 ; AVX2-NEXT: je LBB57_32
7479 ; AVX2-NEXT: ## BB#31: ## %cond.store29
7480 ; AVX2-NEXT: vpextrb $15, %xmm1, 15(%rdi)
7481 ; AVX2-NEXT: LBB57_32: ## %else30
7482 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm0
7483 ; AVX2-NEXT: vpextrb $0, %xmm0, %eax
7484 ; AVX2-NEXT: testb $1, %al
7485 ; AVX2-NEXT: je LBB57_34
7486 ; AVX2-NEXT: ## BB#33: ## %cond.store31
7487 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7488 ; AVX2-NEXT: vpextrb $0, %xmm2, 16(%rdi)
7489 ; AVX2-NEXT: LBB57_34: ## %else32
7490 ; AVX2-NEXT: vpextrb $1, %xmm0, %eax
7491 ; AVX2-NEXT: testb $1, %al
7492 ; AVX2-NEXT: je LBB57_36
7493 ; AVX2-NEXT: ## BB#35: ## %cond.store33
7494 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7495 ; AVX2-NEXT: vpextrb $1, %xmm2, 17(%rdi)
7496 ; AVX2-NEXT: LBB57_36: ## %else34
7497 ; AVX2-NEXT: vpextrb $2, %xmm0, %eax
7498 ; AVX2-NEXT: testb $1, %al
7499 ; AVX2-NEXT: je LBB57_38
7500 ; AVX2-NEXT: ## BB#37: ## %cond.store35
7501 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7502 ; AVX2-NEXT: vpextrb $2, %xmm2, 18(%rdi)
7503 ; AVX2-NEXT: LBB57_38: ## %else36
7504 ; AVX2-NEXT: vpextrb $3, %xmm0, %eax
7505 ; AVX2-NEXT: testb $1, %al
7506 ; AVX2-NEXT: je LBB57_40
7507 ; AVX2-NEXT: ## BB#39: ## %cond.store37
7508 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7509 ; AVX2-NEXT: vpextrb $3, %xmm2, 19(%rdi)
7510 ; AVX2-NEXT: LBB57_40: ## %else38
7511 ; AVX2-NEXT: vpextrb $4, %xmm0, %eax
7512 ; AVX2-NEXT: testb $1, %al
7513 ; AVX2-NEXT: je LBB57_42
7514 ; AVX2-NEXT: ## BB#41: ## %cond.store39
7515 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7516 ; AVX2-NEXT: vpextrb $4, %xmm2, 20(%rdi)
7517 ; AVX2-NEXT: LBB57_42: ## %else40
7518 ; AVX2-NEXT: vpextrb $5, %xmm0, %eax
7519 ; AVX2-NEXT: testb $1, %al
7520 ; AVX2-NEXT: je LBB57_44
7521 ; AVX2-NEXT: ## BB#43: ## %cond.store41
7522 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7523 ; AVX2-NEXT: vpextrb $5, %xmm2, 21(%rdi)
7524 ; AVX2-NEXT: LBB57_44: ## %else42
7525 ; AVX2-NEXT: vpextrb $6, %xmm0, %eax
7526 ; AVX2-NEXT: testb $1, %al
7527 ; AVX2-NEXT: je LBB57_46
7528 ; AVX2-NEXT: ## BB#45: ## %cond.store43
7529 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7530 ; AVX2-NEXT: vpextrb $6, %xmm2, 22(%rdi)
7531 ; AVX2-NEXT: LBB57_46: ## %else44
7532 ; AVX2-NEXT: vpextrb $7, %xmm0, %eax
7533 ; AVX2-NEXT: testb $1, %al
7534 ; AVX2-NEXT: je LBB57_48
7535 ; AVX2-NEXT: ## BB#47: ## %cond.store45
7536 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7537 ; AVX2-NEXT: vpextrb $7, %xmm2, 23(%rdi)
7538 ; AVX2-NEXT: LBB57_48: ## %else46
7539 ; AVX2-NEXT: vpextrb $8, %xmm0, %eax
7540 ; AVX2-NEXT: testb $1, %al
7541 ; AVX2-NEXT: je LBB57_50
7542 ; AVX2-NEXT: ## BB#49: ## %cond.store47
7543 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7544 ; AVX2-NEXT: vpextrb $8, %xmm2, 24(%rdi)
7545 ; AVX2-NEXT: LBB57_50: ## %else48
7546 ; AVX2-NEXT: vpextrb $9, %xmm0, %eax
7547 ; AVX2-NEXT: testb $1, %al
7548 ; AVX2-NEXT: je LBB57_52
7549 ; AVX2-NEXT: ## BB#51: ## %cond.store49
7550 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7551 ; AVX2-NEXT: vpextrb $9, %xmm2, 25(%rdi)
7552 ; AVX2-NEXT: LBB57_52: ## %else50
7553 ; AVX2-NEXT: vpextrb $10, %xmm0, %eax
7554 ; AVX2-NEXT: testb $1, %al
7555 ; AVX2-NEXT: je LBB57_54
7556 ; AVX2-NEXT: ## BB#53: ## %cond.store51
7557 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7558 ; AVX2-NEXT: vpextrb $10, %xmm2, 26(%rdi)
7559 ; AVX2-NEXT: LBB57_54: ## %else52
7560 ; AVX2-NEXT: vpextrb $11, %xmm0, %eax
7561 ; AVX2-NEXT: testb $1, %al
7562 ; AVX2-NEXT: je LBB57_56
7563 ; AVX2-NEXT: ## BB#55: ## %cond.store53
7564 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7565 ; AVX2-NEXT: vpextrb $11, %xmm2, 27(%rdi)
7566 ; AVX2-NEXT: LBB57_56: ## %else54
7567 ; AVX2-NEXT: vpextrb $12, %xmm0, %eax
7568 ; AVX2-NEXT: testb $1, %al
7569 ; AVX2-NEXT: je LBB57_58
7570 ; AVX2-NEXT: ## BB#57: ## %cond.store55
7571 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7572 ; AVX2-NEXT: vpextrb $12, %xmm2, 28(%rdi)
7573 ; AVX2-NEXT: LBB57_58: ## %else56
7574 ; AVX2-NEXT: vpextrb $13, %xmm0, %eax
7575 ; AVX2-NEXT: testb $1, %al
7576 ; AVX2-NEXT: je LBB57_60
7577 ; AVX2-NEXT: ## BB#59: ## %cond.store57
7578 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7579 ; AVX2-NEXT: vpextrb $13, %xmm2, 29(%rdi)
7580 ; AVX2-NEXT: LBB57_60: ## %else58
7581 ; AVX2-NEXT: vpextrb $14, %xmm0, %eax
7582 ; AVX2-NEXT: testb $1, %al
7583 ; AVX2-NEXT: je LBB57_62
7584 ; AVX2-NEXT: ## BB#61: ## %cond.store59
7585 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
7586 ; AVX2-NEXT: vpextrb $14, %xmm2, 30(%rdi)
7587 ; AVX2-NEXT: LBB57_62: ## %else60
7588 ; AVX2-NEXT: vpextrb $15, %xmm0, %eax
7589 ; AVX2-NEXT: testb $1, %al
7590 ; AVX2-NEXT: je LBB57_64
7591 ; AVX2-NEXT: ## BB#63: ## %cond.store61
7592 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
7593 ; AVX2-NEXT: vpextrb $15, %xmm0, 31(%rdi)
7594 ; AVX2-NEXT: LBB57_64: ## %else62
7595 ; AVX2-NEXT: vzeroupper
7596 ; AVX2-NEXT: retq
8239 ; AVX2-LABEL: test_mask_store_64xi8:
8240 ; AVX2: ## BB#0:
8241 ; AVX2-NEXT: movq {{[0-9]+}}(%rsp), %rax
8242 ; AVX2-NEXT: testb $1, %dil
8243 ; AVX2-NEXT: je LBB58_2
8244 ; AVX2-NEXT: ## BB#1: ## %cond.store
8245 ; AVX2-NEXT: vpextrb $0, %xmm0, (%rax)
8246 ; AVX2-NEXT: LBB58_2: ## %else
8247 ; AVX2-NEXT: testb $1, %sil
8248 ; AVX2-NEXT: je LBB58_4
8249 ; AVX2-NEXT: ## BB#3: ## %cond.store1
8250 ; AVX2-NEXT: vpextrb $1, %xmm0, 1(%rax)
8251 ; AVX2-NEXT: LBB58_4: ## %else2
8252 ; AVX2-NEXT: testb $1, %dl
8253 ; AVX2-NEXT: je LBB58_6
8254 ; AVX2-NEXT: ## BB#5: ## %cond.store3
8255 ; AVX2-NEXT: vpextrb $2, %xmm0, 2(%rax)
8256 ; AVX2-NEXT: LBB58_6: ## %else4
8257 ; AVX2-NEXT: testb $1, %cl
8258 ; AVX2-NEXT: je LBB58_8
8259 ; AVX2-NEXT: ## BB#7: ## %cond.store5
8260 ; AVX2-NEXT: vpextrb $3, %xmm0, 3(%rax)
8261 ; AVX2-NEXT: LBB58_8: ## %else6
8262 ; AVX2-NEXT: testb $1, %r8b
8263 ; AVX2-NEXT: je LBB58_10
8264 ; AVX2-NEXT: ## BB#9: ## %cond.store7
8265 ; AVX2-NEXT: vpextrb $4, %xmm0, 4(%rax)
8266 ; AVX2-NEXT: LBB58_10: ## %else8
8267 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8268 ; AVX2-NEXT: testb $1, %r9b
8269 ; AVX2-NEXT: je LBB58_12
8270 ; AVX2-NEXT: ## BB#11: ## %cond.store9
8271 ; AVX2-NEXT: vpextrb $5, %xmm0, 5(%rax)
8272 ; AVX2-NEXT: LBB58_12: ## %else10
8273 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8274 ; AVX2-NEXT: testb $1, %cl
8275 ; AVX2-NEXT: je LBB58_14
8276 ; AVX2-NEXT: ## BB#13: ## %cond.store11
8277 ; AVX2-NEXT: vpextrb $6, %xmm0, 6(%rax)
8278 ; AVX2-NEXT: LBB58_14: ## %else12
8279 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8280 ; AVX2-NEXT: testb $1, %dl
8281 ; AVX2-NEXT: je LBB58_16
8282 ; AVX2-NEXT: ## BB#15: ## %cond.store13
8283 ; AVX2-NEXT: vpextrb $7, %xmm0, 7(%rax)
8284 ; AVX2-NEXT: LBB58_16: ## %else14
8285 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8286 ; AVX2-NEXT: testb $1, %cl
8287 ; AVX2-NEXT: je LBB58_18
8288 ; AVX2-NEXT: ## BB#17: ## %cond.store15
8289 ; AVX2-NEXT: vpextrb $8, %xmm0, 8(%rax)
8290 ; AVX2-NEXT: LBB58_18: ## %else16
8291 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8292 ; AVX2-NEXT: testb $1, %dl
8293 ; AVX2-NEXT: je LBB58_20
8294 ; AVX2-NEXT: ## BB#19: ## %cond.store17
8295 ; AVX2-NEXT: vpextrb $9, %xmm0, 9(%rax)
8296 ; AVX2-NEXT: LBB58_20: ## %else18
8297 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8298 ; AVX2-NEXT: testb $1, %cl
8299 ; AVX2-NEXT: je LBB58_22
8300 ; AVX2-NEXT: ## BB#21: ## %cond.store19
8301 ; AVX2-NEXT: vpextrb $10, %xmm0, 10(%rax)
8302 ; AVX2-NEXT: LBB58_22: ## %else20
8303 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8304 ; AVX2-NEXT: testb $1, %dl
8305 ; AVX2-NEXT: je LBB58_24
8306 ; AVX2-NEXT: ## BB#23: ## %cond.store21
8307 ; AVX2-NEXT: vpextrb $11, %xmm0, 11(%rax)
8308 ; AVX2-NEXT: LBB58_24: ## %else22
8309 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8310 ; AVX2-NEXT: testb $1, %cl
8311 ; AVX2-NEXT: je LBB58_26
8312 ; AVX2-NEXT: ## BB#25: ## %cond.store23
8313 ; AVX2-NEXT: vpextrb $12, %xmm0, 12(%rax)
8314 ; AVX2-NEXT: LBB58_26: ## %else24
8315 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8316 ; AVX2-NEXT: testb $1, %dl
8317 ; AVX2-NEXT: je LBB58_28
8318 ; AVX2-NEXT: ## BB#27: ## %cond.store25
8319 ; AVX2-NEXT: vpextrb $13, %xmm0, 13(%rax)
8320 ; AVX2-NEXT: LBB58_28: ## %else26
8321 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8322 ; AVX2-NEXT: testb $1, %cl
8323 ; AVX2-NEXT: je LBB58_30
8324 ; AVX2-NEXT: ## BB#29: ## %cond.store27
8325 ; AVX2-NEXT: vpextrb $14, %xmm0, 14(%rax)
8326 ; AVX2-NEXT: LBB58_30: ## %else28
8327 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8328 ; AVX2-NEXT: testb $1, %dl
8329 ; AVX2-NEXT: je LBB58_32
8330 ; AVX2-NEXT: ## BB#31: ## %cond.store29
8331 ; AVX2-NEXT: vpextrb $15, %xmm0, 15(%rax)
8332 ; AVX2-NEXT: LBB58_32: ## %else30
8333 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8334 ; AVX2-NEXT: testb $1, %cl
8335 ; AVX2-NEXT: je LBB58_34
8336 ; AVX2-NEXT: ## BB#33: ## %cond.store31
8337 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8338 ; AVX2-NEXT: vpextrb $0, %xmm2, 16(%rax)
8339 ; AVX2-NEXT: LBB58_34: ## %else32
8340 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8341 ; AVX2-NEXT: testb $1, %dl
8342 ; AVX2-NEXT: je LBB58_36
8343 ; AVX2-NEXT: ## BB#35: ## %cond.store33
8344 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8345 ; AVX2-NEXT: vpextrb $1, %xmm2, 17(%rax)
8346 ; AVX2-NEXT: LBB58_36: ## %else34
8347 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8348 ; AVX2-NEXT: testb $1, %cl
8349 ; AVX2-NEXT: je LBB58_38
8350 ; AVX2-NEXT: ## BB#37: ## %cond.store35
8351 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8352 ; AVX2-NEXT: vpextrb $2, %xmm2, 18(%rax)
8353 ; AVX2-NEXT: LBB58_38: ## %else36
8354 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8355 ; AVX2-NEXT: testb $1, %dl
8356 ; AVX2-NEXT: je LBB58_40
8357 ; AVX2-NEXT: ## BB#39: ## %cond.store37
8358 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8359 ; AVX2-NEXT: vpextrb $3, %xmm2, 19(%rax)
8360 ; AVX2-NEXT: LBB58_40: ## %else38
8361 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8362 ; AVX2-NEXT: testb $1, %cl
8363 ; AVX2-NEXT: je LBB58_42
8364 ; AVX2-NEXT: ## BB#41: ## %cond.store39
8365 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8366 ; AVX2-NEXT: vpextrb $4, %xmm2, 20(%rax)
8367 ; AVX2-NEXT: LBB58_42: ## %else40
8368 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8369 ; AVX2-NEXT: testb $1, %dl
8370 ; AVX2-NEXT: je LBB58_44
8371 ; AVX2-NEXT: ## BB#43: ## %cond.store41
8372 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8373 ; AVX2-NEXT: vpextrb $5, %xmm2, 21(%rax)
8374 ; AVX2-NEXT: LBB58_44: ## %else42
8375 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8376 ; AVX2-NEXT: testb $1, %cl
8377 ; AVX2-NEXT: je LBB58_46
8378 ; AVX2-NEXT: ## BB#45: ## %cond.store43
8379 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8380 ; AVX2-NEXT: vpextrb $6, %xmm2, 22(%rax)
8381 ; AVX2-NEXT: LBB58_46: ## %else44
8382 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8383 ; AVX2-NEXT: testb $1, %dl
8384 ; AVX2-NEXT: je LBB58_48
8385 ; AVX2-NEXT: ## BB#47: ## %cond.store45
8386 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8387 ; AVX2-NEXT: vpextrb $7, %xmm2, 23(%rax)
8388 ; AVX2-NEXT: LBB58_48: ## %else46
8389 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8390 ; AVX2-NEXT: testb $1, %cl
8391 ; AVX2-NEXT: je LBB58_50
8392 ; AVX2-NEXT: ## BB#49: ## %cond.store47
8393 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8394 ; AVX2-NEXT: vpextrb $8, %xmm2, 24(%rax)
8395 ; AVX2-NEXT: LBB58_50: ## %else48
8396 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8397 ; AVX2-NEXT: testb $1, %dl
8398 ; AVX2-NEXT: je LBB58_52
8399 ; AVX2-NEXT: ## BB#51: ## %cond.store49
8400 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8401 ; AVX2-NEXT: vpextrb $9, %xmm2, 25(%rax)
8402 ; AVX2-NEXT: LBB58_52: ## %else50
8403 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8404 ; AVX2-NEXT: testb $1, %cl
8405 ; AVX2-NEXT: je LBB58_54
8406 ; AVX2-NEXT: ## BB#53: ## %cond.store51
8407 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8408 ; AVX2-NEXT: vpextrb $10, %xmm2, 26(%rax)
8409 ; AVX2-NEXT: LBB58_54: ## %else52
8410 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8411 ; AVX2-NEXT: testb $1, %dl
8412 ; AVX2-NEXT: je LBB58_56
8413 ; AVX2-NEXT: ## BB#55: ## %cond.store53
8414 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8415 ; AVX2-NEXT: vpextrb $11, %xmm2, 27(%rax)
8416 ; AVX2-NEXT: LBB58_56: ## %else54
8417 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8418 ; AVX2-NEXT: testb $1, %cl
8419 ; AVX2-NEXT: je LBB58_58
8420 ; AVX2-NEXT: ## BB#57: ## %cond.store55
8421 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8422 ; AVX2-NEXT: vpextrb $12, %xmm2, 28(%rax)
8423 ; AVX2-NEXT: LBB58_58: ## %else56
8424 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8425 ; AVX2-NEXT: testb $1, %dl
8426 ; AVX2-NEXT: je LBB58_60
8427 ; AVX2-NEXT: ## BB#59: ## %cond.store57
8428 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8429 ; AVX2-NEXT: vpextrb $13, %xmm2, 29(%rax)
8430 ; AVX2-NEXT: LBB58_60: ## %else58
8431 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8432 ; AVX2-NEXT: testb $1, %cl
8433 ; AVX2-NEXT: je LBB58_62
8434 ; AVX2-NEXT: ## BB#61: ## %cond.store59
8435 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
8436 ; AVX2-NEXT: vpextrb $14, %xmm2, 30(%rax)
8437 ; AVX2-NEXT: LBB58_62: ## %else60
8438 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8439 ; AVX2-NEXT: testb $1, %dl
8440 ; AVX2-NEXT: je LBB58_64
8441 ; AVX2-NEXT: ## BB#63: ## %cond.store61
8442 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm0
8443 ; AVX2-NEXT: vpextrb $15, %xmm0, 31(%rax)
8444 ; AVX2-NEXT: LBB58_64: ## %else62
8445 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8446 ; AVX2-NEXT: testb $1, %cl
8447 ; AVX2-NEXT: je LBB58_66
8448 ; AVX2-NEXT: ## BB#65: ## %cond.store63
8449 ; AVX2-NEXT: vpextrb $0, %xmm1, 32(%rax)
8450 ; AVX2-NEXT: LBB58_66: ## %else64
8451 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8452 ; AVX2-NEXT: testb $1, %dl
8453 ; AVX2-NEXT: je LBB58_68
8454 ; AVX2-NEXT: ## BB#67: ## %cond.store65
8455 ; AVX2-NEXT: vpextrb $1, %xmm1, 33(%rax)
8456 ; AVX2-NEXT: LBB58_68: ## %else66
8457 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8458 ; AVX2-NEXT: testb $1, %cl
8459 ; AVX2-NEXT: je LBB58_70
8460 ; AVX2-NEXT: ## BB#69: ## %cond.store67
8461 ; AVX2-NEXT: vpextrb $2, %xmm1, 34(%rax)
8462 ; AVX2-NEXT: LBB58_70: ## %else68
8463 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8464 ; AVX2-NEXT: testb $1, %dl
8465 ; AVX2-NEXT: je LBB58_72
8466 ; AVX2-NEXT: ## BB#71: ## %cond.store69
8467 ; AVX2-NEXT: vpextrb $3, %xmm1, 35(%rax)
8468 ; AVX2-NEXT: LBB58_72: ## %else70
8469 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8470 ; AVX2-NEXT: testb $1, %cl
8471 ; AVX2-NEXT: je LBB58_74
8472 ; AVX2-NEXT: ## BB#73: ## %cond.store71
8473 ; AVX2-NEXT: vpextrb $4, %xmm1, 36(%rax)
8474 ; AVX2-NEXT: LBB58_74: ## %else72
8475 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8476 ; AVX2-NEXT: testb $1, %dl
8477 ; AVX2-NEXT: je LBB58_76
8478 ; AVX2-NEXT: ## BB#75: ## %cond.store73
8479 ; AVX2-NEXT: vpextrb $5, %xmm1, 37(%rax)
8480 ; AVX2-NEXT: LBB58_76: ## %else74
8481 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8482 ; AVX2-NEXT: testb $1, %cl
8483 ; AVX2-NEXT: je LBB58_78
8484 ; AVX2-NEXT: ## BB#77: ## %cond.store75
8485 ; AVX2-NEXT: vpextrb $6, %xmm1, 38(%rax)
8486 ; AVX2-NEXT: LBB58_78: ## %else76
8487 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8488 ; AVX2-NEXT: testb $1, %dl
8489 ; AVX2-NEXT: je LBB58_80
8490 ; AVX2-NEXT: ## BB#79: ## %cond.store77
8491 ; AVX2-NEXT: vpextrb $7, %xmm1, 39(%rax)
8492 ; AVX2-NEXT: LBB58_80: ## %else78
8493 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8494 ; AVX2-NEXT: testb $1, %cl
8495 ; AVX2-NEXT: je LBB58_82
8496 ; AVX2-NEXT: ## BB#81: ## %cond.store79
8497 ; AVX2-NEXT: vpextrb $8, %xmm1, 40(%rax)
8498 ; AVX2-NEXT: LBB58_82: ## %else80
8499 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8500 ; AVX2-NEXT: testb $1, %dl
8501 ; AVX2-NEXT: je LBB58_84
8502 ; AVX2-NEXT: ## BB#83: ## %cond.store81
8503 ; AVX2-NEXT: vpextrb $9, %xmm1, 41(%rax)
8504 ; AVX2-NEXT: LBB58_84: ## %else82
8505 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8506 ; AVX2-NEXT: testb $1, %cl
8507 ; AVX2-NEXT: je LBB58_86
8508 ; AVX2-NEXT: ## BB#85: ## %cond.store83
8509 ; AVX2-NEXT: vpextrb $10, %xmm1, 42(%rax)
8510 ; AVX2-NEXT: LBB58_86: ## %else84
8511 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8512 ; AVX2-NEXT: testb $1, %dl
8513 ; AVX2-NEXT: je LBB58_88
8514 ; AVX2-NEXT: ## BB#87: ## %cond.store85
8515 ; AVX2-NEXT: vpextrb $11, %xmm1, 43(%rax)
8516 ; AVX2-NEXT: LBB58_88: ## %else86
8517 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8518 ; AVX2-NEXT: testb $1, %cl
8519 ; AVX2-NEXT: je LBB58_90
8520 ; AVX2-NEXT: ## BB#89: ## %cond.store87
8521 ; AVX2-NEXT: vpextrb $12, %xmm1, 44(%rax)
8522 ; AVX2-NEXT: LBB58_90: ## %else88
8523 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8524 ; AVX2-NEXT: testb $1, %dl
8525 ; AVX2-NEXT: je LBB58_92
8526 ; AVX2-NEXT: ## BB#91: ## %cond.store89
8527 ; AVX2-NEXT: vpextrb $13, %xmm1, 45(%rax)
8528 ; AVX2-NEXT: LBB58_92: ## %else90
8529 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8530 ; AVX2-NEXT: testb $1, %cl
8531 ; AVX2-NEXT: je LBB58_94
8532 ; AVX2-NEXT: ## BB#93: ## %cond.store91
8533 ; AVX2-NEXT: vpextrb $14, %xmm1, 46(%rax)
8534 ; AVX2-NEXT: LBB58_94: ## %else92
8535 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8536 ; AVX2-NEXT: testb $1, %dl
8537 ; AVX2-NEXT: je LBB58_96
8538 ; AVX2-NEXT: ## BB#95: ## %cond.store93
8539 ; AVX2-NEXT: vpextrb $15, %xmm1, 47(%rax)
8540 ; AVX2-NEXT: LBB58_96: ## %else94
8541 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8542 ; AVX2-NEXT: testb $1, %cl
8543 ; AVX2-NEXT: je LBB58_98
8544 ; AVX2-NEXT: ## BB#97: ## %cond.store95
8545 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8546 ; AVX2-NEXT: vpextrb $0, %xmm0, 48(%rax)
8547 ; AVX2-NEXT: LBB58_98: ## %else96
8548 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8549 ; AVX2-NEXT: testb $1, %dl
8550 ; AVX2-NEXT: je LBB58_100
8551 ; AVX2-NEXT: ## BB#99: ## %cond.store97
8552 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8553 ; AVX2-NEXT: vpextrb $1, %xmm0, 49(%rax)
8554 ; AVX2-NEXT: LBB58_100: ## %else98
8555 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8556 ; AVX2-NEXT: testb $1, %cl
8557 ; AVX2-NEXT: je LBB58_102
8558 ; AVX2-NEXT: ## BB#101: ## %cond.store99
8559 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8560 ; AVX2-NEXT: vpextrb $2, %xmm0, 50(%rax)
8561 ; AVX2-NEXT: LBB58_102: ## %else100
8562 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8563 ; AVX2-NEXT: testb $1, %dl
8564 ; AVX2-NEXT: je LBB58_104
8565 ; AVX2-NEXT: ## BB#103: ## %cond.store101
8566 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8567 ; AVX2-NEXT: vpextrb $3, %xmm0, 51(%rax)
8568 ; AVX2-NEXT: LBB58_104: ## %else102
8569 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8570 ; AVX2-NEXT: testb $1, %cl
8571 ; AVX2-NEXT: je LBB58_106
8572 ; AVX2-NEXT: ## BB#105: ## %cond.store103
8573 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8574 ; AVX2-NEXT: vpextrb $4, %xmm0, 52(%rax)
8575 ; AVX2-NEXT: LBB58_106: ## %else104
8576 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8577 ; AVX2-NEXT: testb $1, %dl
8578 ; AVX2-NEXT: je LBB58_108
8579 ; AVX2-NEXT: ## BB#107: ## %cond.store105
8580 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8581 ; AVX2-NEXT: vpextrb $5, %xmm0, 53(%rax)
8582 ; AVX2-NEXT: LBB58_108: ## %else106
8583 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8584 ; AVX2-NEXT: testb $1, %cl
8585 ; AVX2-NEXT: je LBB58_110
8586 ; AVX2-NEXT: ## BB#109: ## %cond.store107
8587 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8588 ; AVX2-NEXT: vpextrb $6, %xmm0, 54(%rax)
8589 ; AVX2-NEXT: LBB58_110: ## %else108
8590 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8591 ; AVX2-NEXT: testb $1, %dl
8592 ; AVX2-NEXT: je LBB58_112
8593 ; AVX2-NEXT: ## BB#111: ## %cond.store109
8594 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8595 ; AVX2-NEXT: vpextrb $7, %xmm0, 55(%rax)
8596 ; AVX2-NEXT: LBB58_112: ## %else110
8597 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8598 ; AVX2-NEXT: testb $1, %cl
8599 ; AVX2-NEXT: je LBB58_114
8600 ; AVX2-NEXT: ## BB#113: ## %cond.store111
8601 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8602 ; AVX2-NEXT: vpextrb $8, %xmm0, 56(%rax)
8603 ; AVX2-NEXT: LBB58_114: ## %else112
8604 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8605 ; AVX2-NEXT: testb $1, %dl
8606 ; AVX2-NEXT: je LBB58_116
8607 ; AVX2-NEXT: ## BB#115: ## %cond.store113
8608 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8609 ; AVX2-NEXT: vpextrb $9, %xmm0, 57(%rax)
8610 ; AVX2-NEXT: LBB58_116: ## %else114
8611 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8612 ; AVX2-NEXT: testb $1, %cl
8613 ; AVX2-NEXT: je LBB58_118
8614 ; AVX2-NEXT: ## BB#117: ## %cond.store115
8615 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8616 ; AVX2-NEXT: vpextrb $10, %xmm0, 58(%rax)
8617 ; AVX2-NEXT: LBB58_118: ## %else116
8618 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8619 ; AVX2-NEXT: testb $1, %dl
8620 ; AVX2-NEXT: je LBB58_120
8621 ; AVX2-NEXT: ## BB#119: ## %cond.store117
8622 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8623 ; AVX2-NEXT: vpextrb $11, %xmm0, 59(%rax)
8624 ; AVX2-NEXT: LBB58_120: ## %else118
8625 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8626 ; AVX2-NEXT: testb $1, %cl
8627 ; AVX2-NEXT: je LBB58_122
8628 ; AVX2-NEXT: ## BB#121: ## %cond.store119
8629 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8630 ; AVX2-NEXT: vpextrb $12, %xmm0, 60(%rax)
8631 ; AVX2-NEXT: LBB58_122: ## %else120
8632 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %cl
8633 ; AVX2-NEXT: testb $1, %dl
8634 ; AVX2-NEXT: je LBB58_124
8635 ; AVX2-NEXT: ## BB#123: ## %cond.store121
8636 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8637 ; AVX2-NEXT: vpextrb $13, %xmm0, 61(%rax)
8638 ; AVX2-NEXT: LBB58_124: ## %else122
8639 ; AVX2-NEXT: movb {{[0-9]+}}(%rsp), %dl
8640 ; AVX2-NEXT: testb $1, %cl
8641 ; AVX2-NEXT: je LBB58_126
8642 ; AVX2-NEXT: ## BB#125: ## %cond.store123
8643 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8644 ; AVX2-NEXT: vpextrb $14, %xmm0, 62(%rax)
8645 ; AVX2-NEXT: LBB58_126: ## %else124
8646 ; AVX2-NEXT: testb $1, %dl
8647 ; AVX2-NEXT: je LBB58_128
8648 ; AVX2-NEXT: ## BB#127: ## %cond.store125
8649 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
8650 ; AVX2-NEXT: vpextrb $15, %xmm0, 63(%rax)
8651 ; AVX2-NEXT: LBB58_128: ## %else126
8652 ; AVX2-NEXT: vzeroupper
8653 ; AVX2-NEXT: retq
9475 ; AVX2-LABEL: test_mask_store_16xi16:
9476 ; AVX2: ## BB#0:
9477 ; AVX2-NEXT: vpextrb $0, %xmm0, %eax
9478 ; AVX2-NEXT: testb $1, %al
9479 ; AVX2-NEXT: je LBB60_2
9480 ; AVX2-NEXT: ## BB#1: ## %cond.store
9481 ; AVX2-NEXT: vmovd %xmm1, %eax
9482 ; AVX2-NEXT: movw %ax, (%rdi)
9483 ; AVX2-NEXT: LBB60_2: ## %else
9484 ; AVX2-NEXT: vpextrb $1, %xmm0, %eax
9485 ; AVX2-NEXT: testb $1, %al
9486 ; AVX2-NEXT: je LBB60_4
9487 ; AVX2-NEXT: ## BB#3: ## %cond.store1
9488 ; AVX2-NEXT: vpextrw $1, %xmm1, 2(%rdi)
9489 ; AVX2-NEXT: LBB60_4: ## %else2
9490 ; AVX2-NEXT: vpextrb $2, %xmm0, %eax
9491 ; AVX2-NEXT: testb $1, %al
9492 ; AVX2-NEXT: je LBB60_6
9493 ; AVX2-NEXT: ## BB#5: ## %cond.store3
9494 ; AVX2-NEXT: vpextrw $2, %xmm1, 4(%rdi)
9495 ; AVX2-NEXT: LBB60_6: ## %else4
9496 ; AVX2-NEXT: vpextrb $3, %xmm0, %eax
9497 ; AVX2-NEXT: testb $1, %al
9498 ; AVX2-NEXT: je LBB60_8
9499 ; AVX2-NEXT: ## BB#7: ## %cond.store5
9500 ; AVX2-NEXT: vpextrw $3, %xmm1, 6(%rdi)
9501 ; AVX2-NEXT: LBB60_8: ## %else6
9502 ; AVX2-NEXT: vpextrb $4, %xmm0, %eax
9503 ; AVX2-NEXT: testb $1, %al
9504 ; AVX2-NEXT: je LBB60_10
9505 ; AVX2-NEXT: ## BB#9: ## %cond.store7
9506 ; AVX2-NEXT: vpextrw $4, %xmm1, 8(%rdi)
9507 ; AVX2-NEXT: LBB60_10: ## %else8
9508 ; AVX2-NEXT: vpextrb $5, %xmm0, %eax
9509 ; AVX2-NEXT: testb $1, %al
9510 ; AVX2-NEXT: je LBB60_12
9511 ; AVX2-NEXT: ## BB#11: ## %cond.store9
9512 ; AVX2-NEXT: vpextrw $5, %xmm1, 10(%rdi)
9513 ; AVX2-NEXT: LBB60_12: ## %else10
9514 ; AVX2-NEXT: vpextrb $6, %xmm0, %eax
9515 ; AVX2-NEXT: testb $1, %al
9516 ; AVX2-NEXT: je LBB60_14
9517 ; AVX2-NEXT: ## BB#13: ## %cond.store11
9518 ; AVX2-NEXT: vpextrw $6, %xmm1, 12(%rdi)
9519 ; AVX2-NEXT: LBB60_14: ## %else12
9520 ; AVX2-NEXT: vpextrb $7, %xmm0, %eax
9521 ; AVX2-NEXT: testb $1, %al
9522 ; AVX2-NEXT: je LBB60_16
9523 ; AVX2-NEXT: ## BB#15: ## %cond.store13
9524 ; AVX2-NEXT: vpextrw $7, %xmm1, 14(%rdi)
9525 ; AVX2-NEXT: LBB60_16: ## %else14
9526 ; AVX2-NEXT: vpextrb $8, %xmm0, %eax
9527 ; AVX2-NEXT: testb $1, %al
9528 ; AVX2-NEXT: je LBB60_18
9529 ; AVX2-NEXT: ## BB#17: ## %cond.store15
9530 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
9531 ; AVX2-NEXT: vmovd %xmm2, %eax
9532 ; AVX2-NEXT: movw %ax, 16(%rdi)
9533 ; AVX2-NEXT: LBB60_18: ## %else16
9534 ; AVX2-NEXT: vpextrb $9, %xmm0, %eax
9535 ; AVX2-NEXT: testb $1, %al
9536 ; AVX2-NEXT: je LBB60_20
9537 ; AVX2-NEXT: ## BB#19: ## %cond.store17
9538 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
9539 ; AVX2-NEXT: vpextrw $1, %xmm2, 18(%rdi)
9540 ; AVX2-NEXT: LBB60_20: ## %else18
9541 ; AVX2-NEXT: vpextrb $10, %xmm0, %eax
9542 ; AVX2-NEXT: testb $1, %al
9543 ; AVX2-NEXT: je LBB60_22
9544 ; AVX2-NEXT: ## BB#21: ## %cond.store19
9545 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
9546 ; AVX2-NEXT: vpextrw $2, %xmm2, 20(%rdi)
9547 ; AVX2-NEXT: LBB60_22: ## %else20
9548 ; AVX2-NEXT: vpextrb $11, %xmm0, %eax
9549 ; AVX2-NEXT: testb $1, %al
9550 ; AVX2-NEXT: je LBB60_24
9551 ; AVX2-NEXT: ## BB#23: ## %cond.store21
9552 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
9553 ; AVX2-NEXT: vpextrw $3, %xmm2, 22(%rdi)
9554 ; AVX2-NEXT: LBB60_24: ## %else22
9555 ; AVX2-NEXT: vpextrb $12, %xmm0, %eax
9556 ; AVX2-NEXT: testb $1, %al
9557 ; AVX2-NEXT: je LBB60_26
9558 ; AVX2-NEXT: ## BB#25: ## %cond.store23
9559 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
9560 ; AVX2-NEXT: vpextrw $4, %xmm2, 24(%rdi)
9561 ; AVX2-NEXT: LBB60_26: ## %else24
9562 ; AVX2-NEXT: vpextrb $13, %xmm0, %eax
9563 ; AVX2-NEXT: testb $1, %al
9564 ; AVX2-NEXT: je LBB60_28
9565 ; AVX2-NEXT: ## BB#27: ## %cond.store25
9566 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
9567 ; AVX2-NEXT: vpextrw $5, %xmm2, 26(%rdi)
9568 ; AVX2-NEXT: LBB60_28: ## %else26
9569 ; AVX2-NEXT: vpextrb $14, %xmm0, %eax
9570 ; AVX2-NEXT: testb $1, %al
9571 ; AVX2-NEXT: je LBB60_30
9572 ; AVX2-NEXT: ## BB#29: ## %cond.store27
9573 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
9574 ; AVX2-NEXT: vpextrw $6, %xmm2, 28(%rdi)
9575 ; AVX2-NEXT: LBB60_30: ## %else28
9576 ; AVX2-NEXT: vpextrb $15, %xmm0, %eax
9577 ; AVX2-NEXT: testb $1, %al
9578 ; AVX2-NEXT: je LBB60_32
9579 ; AVX2-NEXT: ## BB#31: ## %cond.store29
9580 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm0
9581 ; AVX2-NEXT: vpextrw $7, %xmm0, 30(%rdi)
9582 ; AVX2-NEXT: LBB60_32: ## %else30
9583 ; AVX2-NEXT: vzeroupper
9584 ; AVX2-NEXT: retq
9961 ; AVX2-LABEL: test_mask_store_32xi16:
9962 ; AVX2: ## BB#0:
9963 ; AVX2-NEXT: vpextrb $0, %xmm0, %eax
9964 ; AVX2-NEXT: testb $1, %al
9965 ; AVX2-NEXT: je LBB61_2
9966 ; AVX2-NEXT: ## BB#1: ## %cond.store
9967 ; AVX2-NEXT: vmovd %xmm1, %eax
9968 ; AVX2-NEXT: movw %ax, (%rdi)
9969 ; AVX2-NEXT: LBB61_2: ## %else
9970 ; AVX2-NEXT: vpextrb $1, %xmm0, %eax
9971 ; AVX2-NEXT: testb $1, %al
9972 ; AVX2-NEXT: je LBB61_4
9973 ; AVX2-NEXT: ## BB#3: ## %cond.store1
9974 ; AVX2-NEXT: vpextrw $1, %xmm1, 2(%rdi)
9975 ; AVX2-NEXT: LBB61_4: ## %else2
9976 ; AVX2-NEXT: vpextrb $2, %xmm0, %eax
9977 ; AVX2-NEXT: testb $1, %al
9978 ; AVX2-NEXT: je LBB61_6
9979 ; AVX2-NEXT: ## BB#5: ## %cond.store3
9980 ; AVX2-NEXT: vpextrw $2, %xmm1, 4(%rdi)
9981 ; AVX2-NEXT: LBB61_6: ## %else4
9982 ; AVX2-NEXT: vpextrb $3, %xmm0, %eax
9983 ; AVX2-NEXT: testb $1, %al
9984 ; AVX2-NEXT: je LBB61_8
9985 ; AVX2-NEXT: ## BB#7: ## %cond.store5
9986 ; AVX2-NEXT: vpextrw $3, %xmm1, 6(%rdi)
9987 ; AVX2-NEXT: LBB61_8: ## %else6
9988 ; AVX2-NEXT: vpextrb $4, %xmm0, %eax
9989 ; AVX2-NEXT: testb $1, %al
9990 ; AVX2-NEXT: je LBB61_10
9991 ; AVX2-NEXT: ## BB#9: ## %cond.store7
9992 ; AVX2-NEXT: vpextrw $4, %xmm1, 8(%rdi)
9993 ; AVX2-NEXT: LBB61_10: ## %else8
9994 ; AVX2-NEXT: vpextrb $5, %xmm0, %eax
9995 ; AVX2-NEXT: testb $1, %al
9996 ; AVX2-NEXT: je LBB61_12
9997 ; AVX2-NEXT: ## BB#11: ## %cond.store9
9998 ; AVX2-NEXT: vpextrw $5, %xmm1, 10(%rdi)
9999 ; AVX2-NEXT: LBB61_12: ## %else10
10000 ; AVX2-NEXT: vpextrb $6, %xmm0, %eax
10001 ; AVX2-NEXT: testb $1, %al
10002 ; AVX2-NEXT: je LBB61_14
10003 ; AVX2-NEXT: ## BB#13: ## %cond.store11
10004 ; AVX2-NEXT: vpextrw $6, %xmm1, 12(%rdi)
10005 ; AVX2-NEXT: LBB61_14: ## %else12
10006 ; AVX2-NEXT: vpextrb $7, %xmm0, %eax
10007 ; AVX2-NEXT: testb $1, %al
10008 ; AVX2-NEXT: je LBB61_16
10009 ; AVX2-NEXT: ## BB#15: ## %cond.store13
10010 ; AVX2-NEXT: vpextrw $7, %xmm1, 14(%rdi)
10011 ; AVX2-NEXT: LBB61_16: ## %else14
10012 ; AVX2-NEXT: vpextrb $8, %xmm0, %eax
10013 ; AVX2-NEXT: testb $1, %al
10014 ; AVX2-NEXT: je LBB61_18
10015 ; AVX2-NEXT: ## BB#17: ## %cond.store15
10016 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
10017 ; AVX2-NEXT: vmovd %xmm3, %eax
10018 ; AVX2-NEXT: movw %ax, 16(%rdi)
10019 ; AVX2-NEXT: LBB61_18: ## %else16
10020 ; AVX2-NEXT: vpextrb $9, %xmm0, %eax
10021 ; AVX2-NEXT: testb $1, %al
10022 ; AVX2-NEXT: je LBB61_20
10023 ; AVX2-NEXT: ## BB#19: ## %cond.store17
10024 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
10025 ; AVX2-NEXT: vpextrw $1, %xmm3, 18(%rdi)
10026 ; AVX2-NEXT: LBB61_20: ## %else18
10027 ; AVX2-NEXT: vpextrb $10, %xmm0, %eax
10028 ; AVX2-NEXT: testb $1, %al
10029 ; AVX2-NEXT: je LBB61_22
10030 ; AVX2-NEXT: ## BB#21: ## %cond.store19
10031 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
10032 ; AVX2-NEXT: vpextrw $2, %xmm3, 20(%rdi)
10033 ; AVX2-NEXT: LBB61_22: ## %else20
10034 ; AVX2-NEXT: vpextrb $11, %xmm0, %eax
10035 ; AVX2-NEXT: testb $1, %al
10036 ; AVX2-NEXT: je LBB61_24
10037 ; AVX2-NEXT: ## BB#23: ## %cond.store21
10038 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
10039 ; AVX2-NEXT: vpextrw $3, %xmm3, 22(%rdi)
10040 ; AVX2-NEXT: LBB61_24: ## %else22
10041 ; AVX2-NEXT: vpextrb $12, %xmm0, %eax
10042 ; AVX2-NEXT: testb $1, %al
10043 ; AVX2-NEXT: je LBB61_26
10044 ; AVX2-NEXT: ## BB#25: ## %cond.store23
10045 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
10046 ; AVX2-NEXT: vpextrw $4, %xmm3, 24(%rdi)
10047 ; AVX2-NEXT: LBB61_26: ## %else24
10048 ; AVX2-NEXT: vpextrb $13, %xmm0, %eax
10049 ; AVX2-NEXT: testb $1, %al
10050 ; AVX2-NEXT: je LBB61_28
10051 ; AVX2-NEXT: ## BB#27: ## %cond.store25
10052 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
10053 ; AVX2-NEXT: vpextrw $5, %xmm3, 26(%rdi)
10054 ; AVX2-NEXT: LBB61_28: ## %else26
10055 ; AVX2-NEXT: vpextrb $14, %xmm0, %eax
10056 ; AVX2-NEXT: testb $1, %al
10057 ; AVX2-NEXT: je LBB61_30
10058 ; AVX2-NEXT: ## BB#29: ## %cond.store27
10059 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
10060 ; AVX2-NEXT: vpextrw $6, %xmm3, 28(%rdi)
10061 ; AVX2-NEXT: LBB61_30: ## %else28
10062 ; AVX2-NEXT: vpextrb $15, %xmm0, %eax
10063 ; AVX2-NEXT: testb $1, %al
10064 ; AVX2-NEXT: je LBB61_32
10065 ; AVX2-NEXT: ## BB#31: ## %cond.store29
10066 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm1
10067 ; AVX2-NEXT: vpextrw $7, %xmm1, 30(%rdi)
10068 ; AVX2-NEXT: LBB61_32: ## %else30
10069 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm0
10070 ; AVX2-NEXT: vpextrb $0, %xmm0, %eax
10071 ; AVX2-NEXT: testb $1, %al
10072 ; AVX2-NEXT: je LBB61_34
10073 ; AVX2-NEXT: ## BB#33: ## %cond.store31
10074 ; AVX2-NEXT: vmovd %xmm2, %eax
10075 ; AVX2-NEXT: movw %ax, 32(%rdi)
10076 ; AVX2-NEXT: LBB61_34: ## %else32
10077 ; AVX2-NEXT: vpextrb $1, %xmm0, %eax
10078 ; AVX2-NEXT: testb $1, %al
10079 ; AVX2-NEXT: je LBB61_36
10080 ; AVX2-NEXT: ## BB#35: ## %cond.store33
10081 ; AVX2-NEXT: vpextrw $1, %xmm2, 34(%rdi)
10082 ; AVX2-NEXT: LBB61_36: ## %else34
10083 ; AVX2-NEXT: vpextrb $2, %xmm0, %eax
10084 ; AVX2-NEXT: testb $1, %al
10085 ; AVX2-NEXT: je LBB61_38
10086 ; AVX2-NEXT: ## BB#37: ## %cond.store35
10087 ; AVX2-NEXT: vpextrw $2, %xmm2, 36(%rdi)
10088 ; AVX2-NEXT: LBB61_38: ## %else36
10089 ; AVX2-NEXT: vpextrb $3, %xmm0, %eax
10090 ; AVX2-NEXT: testb $1, %al
10091 ; AVX2-NEXT: je LBB61_40
10092 ; AVX2-NEXT: ## BB#39: ## %cond.store37
10093 ; AVX2-NEXT: vpextrw $3, %xmm2, 38(%rdi)
10094 ; AVX2-NEXT: LBB61_40: ## %else38
10095 ; AVX2-NEXT: vpextrb $4, %xmm0, %eax
10096 ; AVX2-NEXT: testb $1, %al
10097 ; AVX2-NEXT: je LBB61_42
10098 ; AVX2-NEXT: ## BB#41: ## %cond.store39
10099 ; AVX2-NEXT: vpextrw $4, %xmm2, 40(%rdi)
10100 ; AVX2-NEXT: LBB61_42: ## %else40
10101 ; AVX2-NEXT: vpextrb $5, %xmm0, %eax
10102 ; AVX2-NEXT: testb $1, %al
10103 ; AVX2-NEXT: je LBB61_44
10104 ; AVX2-NEXT: ## BB#43: ## %cond.store41
10105 ; AVX2-NEXT: vpextrw $5, %xmm2, 42(%rdi)
10106 ; AVX2-NEXT: LBB61_44: ## %else42
10107 ; AVX2-NEXT: vpextrb $6, %xmm0, %eax
10108 ; AVX2-NEXT: testb $1, %al
10109 ; AVX2-NEXT: je LBB61_46
10110 ; AVX2-NEXT: ## BB#45: ## %cond.store43
10111 ; AVX2-NEXT: vpextrw $6, %xmm2, 44(%rdi)
10112 ; AVX2-NEXT: LBB61_46: ## %else44
10113 ; AVX2-NEXT: vpextrb $7, %xmm0, %eax
10114 ; AVX2-NEXT: testb $1, %al
10115 ; AVX2-NEXT: je LBB61_48
10116 ; AVX2-NEXT: ## BB#47: ## %cond.store45
10117 ; AVX2-NEXT: vpextrw $7, %xmm2, 46(%rdi)
10118 ; AVX2-NEXT: LBB61_48: ## %else46
10119 ; AVX2-NEXT: vpextrb $8, %xmm0, %eax
10120 ; AVX2-NEXT: testb $1, %al
10121 ; AVX2-NEXT: je LBB61_50
10122 ; AVX2-NEXT: ## BB#49: ## %cond.store47
10123 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm1
10124 ; AVX2-NEXT: vmovd %xmm1, %eax
10125 ; AVX2-NEXT: movw %ax, 48(%rdi)
10126 ; AVX2-NEXT: LBB61_50: ## %else48
10127 ; AVX2-NEXT: vpextrb $9, %xmm0, %eax
10128 ; AVX2-NEXT: testb $1, %al
10129 ; AVX2-NEXT: je LBB61_52
10130 ; AVX2-NEXT: ## BB#51: ## %cond.store49
10131 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm1
10132 ; AVX2-NEXT: vpextrw $1, %xmm1, 50(%rdi)
10133 ; AVX2-NEXT: LBB61_52: ## %else50
10134 ; AVX2-NEXT: vpextrb $10, %xmm0, %eax
10135 ; AVX2-NEXT: testb $1, %al
10136 ; AVX2-NEXT: je LBB61_54
10137 ; AVX2-NEXT: ## BB#53: ## %cond.store51
10138 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm1
10139 ; AVX2-NEXT: vpextrw $2, %xmm1, 52(%rdi)
10140 ; AVX2-NEXT: LBB61_54: ## %else52
10141 ; AVX2-NEXT: vpextrb $11, %xmm0, %eax
10142 ; AVX2-NEXT: testb $1, %al
10143 ; AVX2-NEXT: je LBB61_56
10144 ; AVX2-NEXT: ## BB#55: ## %cond.store53
10145 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm1
10146 ; AVX2-NEXT: vpextrw $3, %xmm1, 54(%rdi)
10147 ; AVX2-NEXT: LBB61_56: ## %else54
10148 ; AVX2-NEXT: vpextrb $12, %xmm0, %eax
10149 ; AVX2-NEXT: testb $1, %al
10150 ; AVX2-NEXT: je LBB61_58
10151 ; AVX2-NEXT: ## BB#57: ## %cond.store55
10152 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm1
10153 ; AVX2-NEXT: vpextrw $4, %xmm1, 56(%rdi)
10154 ; AVX2-NEXT: LBB61_58: ## %else56
10155 ; AVX2-NEXT: vpextrb $13, %xmm0, %eax
10156 ; AVX2-NEXT: testb $1, %al
10157 ; AVX2-NEXT: je LBB61_60
10158 ; AVX2-NEXT: ## BB#59: ## %cond.store57
10159 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm1
10160 ; AVX2-NEXT: vpextrw $5, %xmm1, 58(%rdi)
10161 ; AVX2-NEXT: LBB61_60: ## %else58
10162 ; AVX2-NEXT: vpextrb $14, %xmm0, %eax
10163 ; AVX2-NEXT: testb $1, %al
10164 ; AVX2-NEXT: je LBB61_62
10165 ; AVX2-NEXT: ## BB#61: ## %cond.store59
10166 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm1
10167 ; AVX2-NEXT: vpextrw $6, %xmm1, 60(%rdi)
10168 ; AVX2-NEXT: LBB61_62: ## %else60
10169 ; AVX2-NEXT: vpextrb $15, %xmm0, %eax
10170 ; AVX2-NEXT: testb $1, %al
10171 ; AVX2-NEXT: je LBB61_64
10172 ; AVX2-NEXT: ## BB#63: ## %cond.store61
10173 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm0
10174 ; AVX2-NEXT: vpextrw $7, %xmm0, 62(%rdi)
10175 ; AVX2-NEXT: LBB61_64: ## %else62
10176 ; AVX2-NEXT: vzeroupper
10177 ; AVX2-NEXT: retq