@@ -1683,33 +1683,32 @@ define void @interleave_24i32_in(ptr %p, ptr %q1, ptr %q2, ptr %q3) nounwind {
1683
1683
;
1684
1684
; AVX1-LABEL: interleave_24i32_in:
1685
1685
; AVX1: # %bb.0:
1686
- ; AVX1-NEXT: vmovupd (%rcx), %ymm0
1687
- ; AVX1-NEXT: vmovups (%rdx), %xmm1
1688
- ; AVX1-NEXT: vmovups 16(%rdx), %xmm2
1689
- ; AVX1-NEXT: vmovups (%rsi), %xmm3
1690
- ; AVX1-NEXT: vmovups 16(%rsi), %xmm4
1691
- ; AVX1-NEXT: vshufps {{.*#+}} xmm5 = xmm4[3,3],xmm2[3,3]
1692
- ; AVX1-NEXT: vunpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]
1693
- ; AVX1-NEXT: vshufps {{.*#+}} xmm2 = xmm2[1,1],xmm4[0,2]
1694
- ; AVX1-NEXT: vinsertf128 $1, %xmm5, %ymm2, %ymm2
1695
- ; AVX1-NEXT: vperm2f128 {{.*#+}} ymm4 = ymm0[2,3,2,3]
1696
- ; AVX1-NEXT: vshufpd {{.*#+}} ymm4 = ymm4[0,0,3,3]
1697
- ; AVX1-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0],ymm4[1],ymm2[2,3],ymm4[4],ymm2[5,6],ymm4[7]
1698
- ; AVX1-NEXT: vunpckhpd {{.*#+}} xmm4 = xmm3[1],xmm1[1]
1699
- ; AVX1-NEXT: vshufps {{.*#+}} xmm4 = xmm1[1,1],xmm4[0,2]
1700
- ; AVX1-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm3[0]
1701
- ; AVX1-NEXT: vshufps {{.*#+}} xmm1 = xmm1[2,0],xmm3[2,1]
1686
+ ; AVX1-NEXT: vmovups (%rdx), %xmm0
1687
+ ; AVX1-NEXT: vmovups 16(%rdx), %xmm1
1688
+ ; AVX1-NEXT: vmovups (%rsi), %xmm2
1689
+ ; AVX1-NEXT: vmovups 16(%rsi), %xmm3
1690
+ ; AVX1-NEXT: vshufps {{.*#+}} xmm4 = xmm3[3,3],xmm1[3,3]
1691
+ ; AVX1-NEXT: vunpckhpd {{.*#+}} xmm3 = xmm3[1],xmm1[1]
1692
+ ; AVX1-NEXT: vshufps {{.*#+}} xmm1 = xmm1[1,1],xmm3[0,2]
1702
1693
; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm1, %ymm1
1703
- ; AVX1-NEXT: vbroadcastsd (%rcx), %ymm3
1704
- ; AVX1-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm3[2],ymm1[3,4],ymm3[5],ymm1[6,7]
1705
- ; AVX1-NEXT: vpermilps {{.*#+}} ymm3 = mem[0,0,3,3,4,4,7,7]
1706
- ; AVX1-NEXT: vpermilpd {{.*#+}} ymm4 = mem[1,0,2,2]
1707
- ; AVX1-NEXT: vblendps {{.*#+}} ymm3 = ymm4[0,1],ymm3[2],ymm4[3,4],ymm3[5],ymm4[6,7]
1708
- ; AVX1-NEXT: vshufpd {{.*#+}} ymm0 = ymm0[1,1,2,2]
1709
- ; AVX1-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0],ymm3[1,2],ymm0[3],ymm3[4,5],ymm0[6],ymm3[7]
1710
- ; AVX1-NEXT: vmovups %ymm0, 32(%rdi)
1711
- ; AVX1-NEXT: vmovups %ymm1, (%rdi)
1712
- ; AVX1-NEXT: vmovups %ymm2, 64(%rdi)
1694
+ ; AVX1-NEXT: vbroadcastf128 {{.*#+}} ymm3 = mem[0,1,0,1]
1695
+ ; AVX1-NEXT: vshufpd {{.*#+}} ymm3 = ymm3[0,0,3,3]
1696
+ ; AVX1-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0],ymm3[1],ymm1[2,3],ymm3[4],ymm1[5,6],ymm3[7]
1697
+ ; AVX1-NEXT: vunpckhpd {{.*#+}} xmm3 = xmm2[1],xmm0[1]
1698
+ ; AVX1-NEXT: vshufps {{.*#+}} xmm3 = xmm0[1,1],xmm3[0,2]
1699
+ ; AVX1-NEXT: vmovlhps {{.*#+}} xmm0 = xmm0[0],xmm2[0]
1700
+ ; AVX1-NEXT: vshufps {{.*#+}} xmm0 = xmm0[2,0],xmm2[2,1]
1701
+ ; AVX1-NEXT: vinsertf128 $1, %xmm3, %ymm0, %ymm0
1702
+ ; AVX1-NEXT: vbroadcastsd (%rcx), %ymm2
1703
+ ; AVX1-NEXT: vblendps {{.*#+}} ymm0 = ymm0[0,1],ymm2[2],ymm0[3,4],ymm2[5],ymm0[6,7]
1704
+ ; AVX1-NEXT: vpermilps {{.*#+}} ymm2 = mem[0,0,3,3,4,4,7,7]
1705
+ ; AVX1-NEXT: vpermilpd {{.*#+}} ymm3 = mem[1,0,2,2]
1706
+ ; AVX1-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0,1],ymm2[2],ymm3[3,4],ymm2[5],ymm3[6,7]
1707
+ ; AVX1-NEXT: vpermilpd {{.*#+}} ymm3 = mem[1,1,2,2]
1708
+ ; AVX1-NEXT: vblendps {{.*#+}} ymm2 = ymm3[0],ymm2[1,2],ymm3[3],ymm2[4,5],ymm3[6],ymm2[7]
1709
+ ; AVX1-NEXT: vmovups %ymm2, 32(%rdi)
1710
+ ; AVX1-NEXT: vmovups %ymm0, (%rdi)
1711
+ ; AVX1-NEXT: vmovups %ymm1, 64(%rdi)
1713
1712
; AVX1-NEXT: vzeroupper
1714
1713
; AVX1-NEXT: retq
1715
1714
;
@@ -1804,30 +1803,29 @@ define void @interleave_24i32_in(ptr %p, ptr %q1, ptr %q2, ptr %q3) nounwind {
1804
1803
; XOP-NEXT: vmovups (%rsi), %ymm0
1805
1804
; XOP-NEXT: vmovups (%rdx), %ymm1
1806
1805
; XOP-NEXT: vpermil2ps {{.*#+}} ymm0 = ymm0[u,3],ymm1[3],ymm0[u,4],ymm1[4],ymm0[u,5]
1807
- ; XOP-NEXT: vmovups (%rcx), %ymm1
1808
- ; XOP-NEXT: vmovups (%rdx), %xmm2
1809
- ; XOP-NEXT: vmovups 16(%rdx), %xmm3
1810
- ; XOP-NEXT: vmovups (%rsi), %xmm4
1811
- ; XOP-NEXT: vmovups 16(%rsi), %xmm5
1812
- ; XOP-NEXT: vshufps {{.*#+}} xmm6 = xmm5[3,3],xmm3[3,3]
1813
- ; XOP-NEXT: vunpckhpd {{.*#+}} xmm5 = xmm5[1],xmm3[1]
1814
- ; XOP-NEXT: vshufps {{.*#+}} xmm3 = xmm3[1,1],xmm5[0,2]
1815
- ; XOP-NEXT: vinsertf128 $1, %xmm6, %ymm3, %ymm3
1816
- ; XOP-NEXT: vperm2f128 {{.*#+}} ymm5 = ymm1[2,3,2,3]
1817
- ; XOP-NEXT: vshufpd {{.*#+}} ymm5 = ymm5[0,0,3,3]
1818
- ; XOP-NEXT: vblendps {{.*#+}} ymm3 = ymm3[0],ymm5[1],ymm3[2,3],ymm5[4],ymm3[5,6],ymm5[7]
1819
- ; XOP-NEXT: vunpckhpd {{.*#+}} xmm5 = xmm4[1],xmm2[1]
1820
- ; XOP-NEXT: vshufps {{.*#+}} xmm5 = xmm2[1,1],xmm5[0,2]
1821
- ; XOP-NEXT: vmovlhps {{.*#+}} xmm2 = xmm2[0],xmm4[0]
1822
- ; XOP-NEXT: vshufps {{.*#+}} xmm2 = xmm2[2,0],xmm4[2,1]
1806
+ ; XOP-NEXT: vmovups (%rdx), %xmm1
1807
+ ; XOP-NEXT: vmovups 16(%rdx), %xmm2
1808
+ ; XOP-NEXT: vmovups (%rsi), %xmm3
1809
+ ; XOP-NEXT: vmovups 16(%rsi), %xmm4
1810
+ ; XOP-NEXT: vshufps {{.*#+}} xmm5 = xmm4[3,3],xmm2[3,3]
1811
+ ; XOP-NEXT: vunpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]
1812
+ ; XOP-NEXT: vshufps {{.*#+}} xmm2 = xmm2[1,1],xmm4[0,2]
1823
1813
; XOP-NEXT: vinsertf128 $1, %xmm5, %ymm2, %ymm2
1824
- ; XOP-NEXT: vbroadcastsd (%rcx), %ymm4
1825
- ; XOP-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0,1],ymm4[2],ymm2[3,4],ymm4[5],ymm2[6,7]
1826
- ; XOP-NEXT: vshufpd {{.*#+}} ymm1 = ymm1[1,1,2,2]
1827
- ; XOP-NEXT: vblendps {{.*#+}} ymm0 = ymm1[0],ymm0[1,2],ymm1[3],ymm0[4,5],ymm1[6],ymm0[7]
1814
+ ; XOP-NEXT: vbroadcastf128 {{.*#+}} ymm4 = mem[0,1,0,1]
1815
+ ; XOP-NEXT: vshufpd {{.*#+}} ymm4 = ymm4[0,0,3,3]
1816
+ ; XOP-NEXT: vblendps {{.*#+}} ymm2 = ymm2[0],ymm4[1],ymm2[2,3],ymm4[4],ymm2[5,6],ymm4[7]
1817
+ ; XOP-NEXT: vunpckhpd {{.*#+}} xmm4 = xmm3[1],xmm1[1]
1818
+ ; XOP-NEXT: vshufps {{.*#+}} xmm4 = xmm1[1,1],xmm4[0,2]
1819
+ ; XOP-NEXT: vmovlhps {{.*#+}} xmm1 = xmm1[0],xmm3[0]
1820
+ ; XOP-NEXT: vshufps {{.*#+}} xmm1 = xmm1[2,0],xmm3[2,1]
1821
+ ; XOP-NEXT: vinsertf128 $1, %xmm4, %ymm1, %ymm1
1822
+ ; XOP-NEXT: vbroadcastsd (%rcx), %ymm3
1823
+ ; XOP-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0,1],ymm3[2],ymm1[3,4],ymm3[5],ymm1[6,7]
1824
+ ; XOP-NEXT: vpermilpd {{.*#+}} ymm3 = mem[1,1,2,2]
1825
+ ; XOP-NEXT: vblendps {{.*#+}} ymm0 = ymm3[0],ymm0[1,2],ymm3[3],ymm0[4,5],ymm3[6],ymm0[7]
1828
1826
; XOP-NEXT: vmovups %ymm0, 32(%rdi)
1829
- ; XOP-NEXT: vmovups %ymm2 , (%rdi)
1830
- ; XOP-NEXT: vmovups %ymm3 , 64(%rdi)
1827
+ ; XOP-NEXT: vmovups %ymm1 , (%rdi)
1828
+ ; XOP-NEXT: vmovups %ymm2 , 64(%rdi)
1831
1829
; XOP-NEXT: vzeroupper
1832
1830
; XOP-NEXT: retq
1833
1831
%s1 = load <8 x i32 >, ptr %q1 , align 4
0 commit comments