@@ -1403,11 +1403,6 @@ define <8 x i16> @psubus_8i32_max(<8 x i16> %x, <8 x i32> %y) nounwind {
1403
1403
; SSE2-NEXT: psrad $16, %xmm5
1404
1404
; SSE2-NEXT: packssdw %xmm6, %xmm5
1405
1405
; SSE2-NEXT: psubusw %xmm5, %xmm0
1406
- ; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1407
- ; SSE2-NEXT: psrad $16, %xmm1
1408
- ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1409
- ; SSE2-NEXT: psrad $16, %xmm0
1410
- ; SSE2-NEXT: packssdw %xmm1, %xmm0
1411
1406
; SSE2-NEXT: retq
1412
1407
;
1413
1408
; SSSE3-LABEL: psubus_8i32_max:
@@ -1738,111 +1733,91 @@ define <16 x i16> @psubus_16i32_max(<16 x i16> %x, <16 x i32> %y) nounwind {
1738
1733
; SSE2-LABEL: psubus_16i32_max:
1739
1734
; SSE2: # %bb.0: # %vector.ph
1740
1735
; SSE2-NEXT: movdqa {{.*#+}} xmm9 = [2147483648,2147483648,2147483648,2147483648]
1741
- ; SSE2-NEXT: movdqa %xmm3 , %xmm8
1736
+ ; SSE2-NEXT: movdqa %xmm5 , %xmm8
1742
1737
; SSE2-NEXT: pxor %xmm9, %xmm8
1743
1738
; SSE2-NEXT: movdqa {{.*#+}} xmm7 = [2147549183,2147549183,2147549183,2147549183]
1744
1739
; SSE2-NEXT: movdqa %xmm7, %xmm6
1745
1740
; SSE2-NEXT: pcmpgtd %xmm8, %xmm6
1746
1741
; SSE2-NEXT: pcmpeqd %xmm8, %xmm8
1747
- ; SSE2-NEXT: pand %xmm6, %xmm3
1742
+ ; SSE2-NEXT: pand %xmm6, %xmm5
1748
1743
; SSE2-NEXT: pxor %xmm8, %xmm6
1749
- ; SSE2-NEXT: por %xmm3 , %xmm6
1744
+ ; SSE2-NEXT: por %xmm5 , %xmm6
1750
1745
; SSE2-NEXT: pslld $16, %xmm6
1751
1746
; SSE2-NEXT: psrad $16, %xmm6
1752
- ; SSE2-NEXT: movdqa %xmm2 , %xmm10
1747
+ ; SSE2-NEXT: movdqa %xmm4 , %xmm10
1753
1748
; SSE2-NEXT: pxor %xmm9, %xmm10
1754
- ; SSE2-NEXT: movdqa %xmm7, %xmm3
1755
- ; SSE2-NEXT: pcmpgtd %xmm10, %xmm3
1756
- ; SSE2-NEXT: pand %xmm3 , %xmm2
1757
- ; SSE2-NEXT: pxor %xmm8, %xmm3
1758
- ; SSE2-NEXT: por %xmm2 , %xmm3
1759
- ; SSE2-NEXT: pslld $16, %xmm3
1760
- ; SSE2-NEXT: psrad $16, %xmm3
1761
- ; SSE2-NEXT: packssdw %xmm6, %xmm3
1762
- ; SSE2-NEXT: movdqa %xmm5 , %xmm2
1763
- ; SSE2-NEXT: pxor %xmm9, %xmm2
1749
+ ; SSE2-NEXT: movdqa %xmm7, %xmm5
1750
+ ; SSE2-NEXT: pcmpgtd %xmm10, %xmm5
1751
+ ; SSE2-NEXT: pand %xmm5 , %xmm4
1752
+ ; SSE2-NEXT: pxor %xmm8, %xmm5
1753
+ ; SSE2-NEXT: por %xmm4 , %xmm5
1754
+ ; SSE2-NEXT: pslld $16, %xmm5
1755
+ ; SSE2-NEXT: psrad $16, %xmm5
1756
+ ; SSE2-NEXT: packssdw %xmm6, %xmm5
1757
+ ; SSE2-NEXT: movdqa %xmm3 , %xmm4
1758
+ ; SSE2-NEXT: pxor %xmm9, %xmm4
1764
1759
; SSE2-NEXT: movdqa %xmm7, %xmm6
1765
- ; SSE2-NEXT: pcmpgtd %xmm2 , %xmm6
1766
- ; SSE2-NEXT: pand %xmm6, %xmm5
1760
+ ; SSE2-NEXT: pcmpgtd %xmm4 , %xmm6
1761
+ ; SSE2-NEXT: pand %xmm6, %xmm3
1767
1762
; SSE2-NEXT: pxor %xmm8, %xmm6
1768
- ; SSE2-NEXT: por %xmm5 , %xmm6
1763
+ ; SSE2-NEXT: por %xmm3 , %xmm6
1769
1764
; SSE2-NEXT: pslld $16, %xmm6
1770
1765
; SSE2-NEXT: psrad $16, %xmm6
1771
- ; SSE2-NEXT: pxor %xmm4 , %xmm9
1766
+ ; SSE2-NEXT: pxor %xmm2 , %xmm9
1772
1767
; SSE2-NEXT: pcmpgtd %xmm9, %xmm7
1773
1768
; SSE2-NEXT: pxor %xmm7, %xmm8
1774
- ; SSE2-NEXT: pand %xmm4 , %xmm7
1769
+ ; SSE2-NEXT: pand %xmm2 , %xmm7
1775
1770
; SSE2-NEXT: por %xmm8, %xmm7
1776
1771
; SSE2-NEXT: pslld $16, %xmm7
1777
1772
; SSE2-NEXT: psrad $16, %xmm7
1778
1773
; SSE2-NEXT: packssdw %xmm6, %xmm7
1779
- ; SSE2-NEXT: psubusw %xmm7, %xmm1
1780
- ; SSE2-NEXT: psubusw %xmm3, %xmm0
1781
- ; SSE2-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
1782
- ; SSE2-NEXT: psrad $16, %xmm2
1783
- ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1784
- ; SSE2-NEXT: psrad $16, %xmm0
1785
- ; SSE2-NEXT: packssdw %xmm2, %xmm0
1786
- ; SSE2-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
1787
- ; SSE2-NEXT: psrad $16, %xmm2
1788
- ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3]
1789
- ; SSE2-NEXT: psrad $16, %xmm1
1790
- ; SSE2-NEXT: packssdw %xmm2, %xmm1
1774
+ ; SSE2-NEXT: psubusw %xmm7, %xmm0
1775
+ ; SSE2-NEXT: psubusw %xmm5, %xmm1
1791
1776
; SSE2-NEXT: retq
1792
1777
;
1793
1778
; SSSE3-LABEL: psubus_16i32_max:
1794
1779
; SSSE3: # %bb.0: # %vector.ph
1795
1780
; SSSE3-NEXT: movdqa {{.*#+}} xmm9 = [2147483648,2147483648,2147483648,2147483648]
1796
- ; SSSE3-NEXT: movdqa %xmm3 , %xmm8
1781
+ ; SSSE3-NEXT: movdqa %xmm5 , %xmm8
1797
1782
; SSSE3-NEXT: pxor %xmm9, %xmm8
1798
1783
; SSSE3-NEXT: movdqa {{.*#+}} xmm7 = [2147549183,2147549183,2147549183,2147549183]
1799
1784
; SSSE3-NEXT: movdqa %xmm7, %xmm6
1800
1785
; SSSE3-NEXT: pcmpgtd %xmm8, %xmm6
1801
1786
; SSSE3-NEXT: pcmpeqd %xmm8, %xmm8
1802
- ; SSSE3-NEXT: pand %xmm6, %xmm3
1787
+ ; SSSE3-NEXT: pand %xmm6, %xmm5
1803
1788
; SSSE3-NEXT: pxor %xmm8, %xmm6
1804
- ; SSSE3-NEXT: por %xmm3 , %xmm6
1789
+ ; SSSE3-NEXT: por %xmm5 , %xmm6
1805
1790
; SSSE3-NEXT: pslld $16, %xmm6
1806
1791
; SSSE3-NEXT: psrad $16, %xmm6
1807
- ; SSSE3-NEXT: movdqa %xmm2 , %xmm10
1792
+ ; SSSE3-NEXT: movdqa %xmm4 , %xmm10
1808
1793
; SSSE3-NEXT: pxor %xmm9, %xmm10
1809
- ; SSSE3-NEXT: movdqa %xmm7, %xmm3
1810
- ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm3
1811
- ; SSSE3-NEXT: pand %xmm3 , %xmm2
1812
- ; SSSE3-NEXT: pxor %xmm8, %xmm3
1813
- ; SSSE3-NEXT: por %xmm2 , %xmm3
1814
- ; SSSE3-NEXT: pslld $16, %xmm3
1815
- ; SSSE3-NEXT: psrad $16, %xmm3
1816
- ; SSSE3-NEXT: packssdw %xmm6, %xmm3
1817
- ; SSSE3-NEXT: movdqa %xmm5 , %xmm2
1818
- ; SSSE3-NEXT: pxor %xmm9, %xmm2
1794
+ ; SSSE3-NEXT: movdqa %xmm7, %xmm5
1795
+ ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm5
1796
+ ; SSSE3-NEXT: pand %xmm5 , %xmm4
1797
+ ; SSSE3-NEXT: pxor %xmm8, %xmm5
1798
+ ; SSSE3-NEXT: por %xmm4 , %xmm5
1799
+ ; SSSE3-NEXT: pslld $16, %xmm5
1800
+ ; SSSE3-NEXT: psrad $16, %xmm5
1801
+ ; SSSE3-NEXT: packssdw %xmm6, %xmm5
1802
+ ; SSSE3-NEXT: movdqa %xmm3 , %xmm4
1803
+ ; SSSE3-NEXT: pxor %xmm9, %xmm4
1819
1804
; SSSE3-NEXT: movdqa %xmm7, %xmm6
1820
- ; SSSE3-NEXT: pcmpgtd %xmm2 , %xmm6
1821
- ; SSSE3-NEXT: pand %xmm6, %xmm5
1805
+ ; SSSE3-NEXT: pcmpgtd %xmm4 , %xmm6
1806
+ ; SSSE3-NEXT: pand %xmm6, %xmm3
1822
1807
; SSSE3-NEXT: pxor %xmm8, %xmm6
1823
- ; SSSE3-NEXT: por %xmm5 , %xmm6
1808
+ ; SSSE3-NEXT: por %xmm3 , %xmm6
1824
1809
; SSSE3-NEXT: pslld $16, %xmm6
1825
1810
; SSSE3-NEXT: psrad $16, %xmm6
1826
- ; SSSE3-NEXT: pxor %xmm4 , %xmm9
1811
+ ; SSSE3-NEXT: pxor %xmm2 , %xmm9
1827
1812
; SSSE3-NEXT: pcmpgtd %xmm9, %xmm7
1828
1813
; SSSE3-NEXT: pxor %xmm7, %xmm8
1829
- ; SSSE3-NEXT: pand %xmm4 , %xmm7
1814
+ ; SSSE3-NEXT: pand %xmm2 , %xmm7
1830
1815
; SSSE3-NEXT: por %xmm8, %xmm7
1831
1816
; SSSE3-NEXT: pslld $16, %xmm7
1832
1817
; SSSE3-NEXT: psrad $16, %xmm7
1833
1818
; SSSE3-NEXT: packssdw %xmm6, %xmm7
1834
- ; SSSE3-NEXT: psubusw %xmm7, %xmm1
1835
- ; SSSE3-NEXT: psubusw %xmm3, %xmm0
1836
- ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
1837
- ; SSSE3-NEXT: psrad $16, %xmm2
1838
- ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1839
- ; SSSE3-NEXT: psrad $16, %xmm0
1840
- ; SSSE3-NEXT: packssdw %xmm2, %xmm0
1841
- ; SSSE3-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
1842
- ; SSSE3-NEXT: psrad $16, %xmm2
1843
- ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3]
1844
- ; SSSE3-NEXT: psrad $16, %xmm1
1845
- ; SSSE3-NEXT: packssdw %xmm2, %xmm1
1819
+ ; SSSE3-NEXT: psubusw %xmm7, %xmm0
1820
+ ; SSSE3-NEXT: psubusw %xmm5, %xmm1
1846
1821
; SSSE3-NEXT: retq
1847
1822
;
1848
1823
; SSE41-LABEL: psubus_16i32_max:
@@ -1923,11 +1898,6 @@ define <8 x i16> @psubus_i16_i32_max_swapped(<8 x i16> %x, <8 x i32> %y) nounwin
1923
1898
; SSE2-NEXT: psrad $16, %xmm5
1924
1899
; SSE2-NEXT: packssdw %xmm6, %xmm5
1925
1900
; SSE2-NEXT: psubusw %xmm5, %xmm0
1926
- ; SSE2-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1927
- ; SSE2-NEXT: psrad $16, %xmm1
1928
- ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
1929
- ; SSE2-NEXT: psrad $16, %xmm0
1930
- ; SSE2-NEXT: packssdw %xmm1, %xmm0
1931
1901
; SSE2-NEXT: retq
1932
1902
;
1933
1903
; SSSE3-LABEL: psubus_i16_i32_max_swapped:
0 commit comments