@@ -1798,50 +1798,92 @@ vector.ph:
1798
1798
}
1799
1799
1800
1800
define <16 x i16 > @psubus_16i32_max (<16 x i16 > %x , <16 x i32 > %y ) nounwind {
1801
- ; SSE2OR3-LABEL: psubus_16i32_max:
1802
- ; SSE2OR3: # %bb.0: # %vector.ph
1803
- ; SSE2OR3-NEXT: movdqa {{.*#+}} xmm7 = [2147483648,2147483648,2147483648,2147483648]
1804
- ; SSE2OR3-NEXT: movdqa %xmm5, %xmm8
1805
- ; SSE2OR3-NEXT: pxor %xmm7, %xmm8
1806
- ; SSE2OR3-NEXT: movdqa {{.*#+}} xmm6 = [2147549183,2147549183,2147549183,2147549183]
1807
- ; SSE2OR3-NEXT: movdqa %xmm6, %xmm9
1808
- ; SSE2OR3-NEXT: pcmpgtd %xmm8, %xmm9
1809
- ; SSE2OR3-NEXT: pcmpeqd %xmm8, %xmm8
1810
- ; SSE2OR3-NEXT: pand %xmm9, %xmm5
1811
- ; SSE2OR3-NEXT: pxor %xmm8, %xmm9
1812
- ; SSE2OR3-NEXT: por %xmm5, %xmm9
1813
- ; SSE2OR3-NEXT: pslld $16, %xmm9
1814
- ; SSE2OR3-NEXT: psrad $16, %xmm9
1815
- ; SSE2OR3-NEXT: movdqa %xmm4, %xmm10
1816
- ; SSE2OR3-NEXT: pxor %xmm7, %xmm10
1817
- ; SSE2OR3-NEXT: movdqa %xmm6, %xmm5
1818
- ; SSE2OR3-NEXT: pcmpgtd %xmm10, %xmm5
1819
- ; SSE2OR3-NEXT: pand %xmm5, %xmm4
1820
- ; SSE2OR3-NEXT: pxor %xmm8, %xmm5
1821
- ; SSE2OR3-NEXT: por %xmm4, %xmm5
1822
- ; SSE2OR3-NEXT: pslld $16, %xmm5
1823
- ; SSE2OR3-NEXT: psrad $16, %xmm5
1824
- ; SSE2OR3-NEXT: packssdw %xmm9, %xmm5
1825
- ; SSE2OR3-NEXT: movdqa %xmm3, %xmm4
1826
- ; SSE2OR3-NEXT: pxor %xmm7, %xmm4
1827
- ; SSE2OR3-NEXT: movdqa %xmm6, %xmm9
1828
- ; SSE2OR3-NEXT: pcmpgtd %xmm4, %xmm9
1829
- ; SSE2OR3-NEXT: pand %xmm9, %xmm3
1830
- ; SSE2OR3-NEXT: pxor %xmm8, %xmm9
1831
- ; SSE2OR3-NEXT: por %xmm3, %xmm9
1832
- ; SSE2OR3-NEXT: pslld $16, %xmm9
1833
- ; SSE2OR3-NEXT: psrad $16, %xmm9
1834
- ; SSE2OR3-NEXT: pxor %xmm2, %xmm7
1835
- ; SSE2OR3-NEXT: pcmpgtd %xmm7, %xmm6
1836
- ; SSE2OR3-NEXT: pxor %xmm6, %xmm8
1837
- ; SSE2OR3-NEXT: pand %xmm2, %xmm6
1838
- ; SSE2OR3-NEXT: por %xmm8, %xmm6
1839
- ; SSE2OR3-NEXT: pslld $16, %xmm6
1840
- ; SSE2OR3-NEXT: psrad $16, %xmm6
1841
- ; SSE2OR3-NEXT: packssdw %xmm9, %xmm6
1842
- ; SSE2OR3-NEXT: psubusw %xmm6, %xmm0
1843
- ; SSE2OR3-NEXT: psubusw %xmm5, %xmm1
1844
- ; SSE2OR3-NEXT: retq
1801
+ ; SSE2-LABEL: psubus_16i32_max:
1802
+ ; SSE2: # %bb.0: # %vector.ph
1803
+ ; SSE2-NEXT: movdqa {{.*#+}} xmm7 = [2147483648,2147483648,2147483648,2147483648]
1804
+ ; SSE2-NEXT: movdqa %xmm3, %xmm8
1805
+ ; SSE2-NEXT: pxor %xmm7, %xmm8
1806
+ ; SSE2-NEXT: movdqa {{.*#+}} xmm6 = [2147549183,2147549183,2147549183,2147549183]
1807
+ ; SSE2-NEXT: movdqa %xmm6, %xmm9
1808
+ ; SSE2-NEXT: pcmpgtd %xmm8, %xmm9
1809
+ ; SSE2-NEXT: pcmpeqd %xmm8, %xmm8
1810
+ ; SSE2-NEXT: pand %xmm9, %xmm3
1811
+ ; SSE2-NEXT: pxor %xmm8, %xmm9
1812
+ ; SSE2-NEXT: por %xmm3, %xmm9
1813
+ ; SSE2-NEXT: pslld $16, %xmm9
1814
+ ; SSE2-NEXT: psrad $16, %xmm9
1815
+ ; SSE2-NEXT: movdqa %xmm2, %xmm3
1816
+ ; SSE2-NEXT: pxor %xmm7, %xmm3
1817
+ ; SSE2-NEXT: movdqa %xmm6, %xmm10
1818
+ ; SSE2-NEXT: pcmpgtd %xmm3, %xmm10
1819
+ ; SSE2-NEXT: pand %xmm10, %xmm2
1820
+ ; SSE2-NEXT: pxor %xmm8, %xmm10
1821
+ ; SSE2-NEXT: por %xmm2, %xmm10
1822
+ ; SSE2-NEXT: pslld $16, %xmm10
1823
+ ; SSE2-NEXT: psrad $16, %xmm10
1824
+ ; SSE2-NEXT: packssdw %xmm9, %xmm10
1825
+ ; SSE2-NEXT: psubusw %xmm10, %xmm0
1826
+ ; SSE2-NEXT: movdqa %xmm5, %xmm2
1827
+ ; SSE2-NEXT: pxor %xmm7, %xmm2
1828
+ ; SSE2-NEXT: movdqa %xmm6, %xmm3
1829
+ ; SSE2-NEXT: pcmpgtd %xmm2, %xmm3
1830
+ ; SSE2-NEXT: pand %xmm3, %xmm5
1831
+ ; SSE2-NEXT: pxor %xmm8, %xmm3
1832
+ ; SSE2-NEXT: por %xmm5, %xmm3
1833
+ ; SSE2-NEXT: pslld $16, %xmm3
1834
+ ; SSE2-NEXT: psrad $16, %xmm3
1835
+ ; SSE2-NEXT: pxor %xmm4, %xmm7
1836
+ ; SSE2-NEXT: pcmpgtd %xmm7, %xmm6
1837
+ ; SSE2-NEXT: pxor %xmm6, %xmm8
1838
+ ; SSE2-NEXT: pand %xmm4, %xmm6
1839
+ ; SSE2-NEXT: por %xmm8, %xmm6
1840
+ ; SSE2-NEXT: pslld $16, %xmm6
1841
+ ; SSE2-NEXT: psrad $16, %xmm6
1842
+ ; SSE2-NEXT: packssdw %xmm3, %xmm6
1843
+ ; SSE2-NEXT: psubusw %xmm6, %xmm1
1844
+ ; SSE2-NEXT: retq
1845
+ ;
1846
+ ; SSSE3-LABEL: psubus_16i32_max:
1847
+ ; SSSE3: # %bb.0: # %vector.ph
1848
+ ; SSSE3-NEXT: movdqa {{.*#+}} xmm7 = [2147483648,2147483648,2147483648,2147483648]
1849
+ ; SSSE3-NEXT: movdqa %xmm3, %xmm8
1850
+ ; SSSE3-NEXT: pxor %xmm7, %xmm8
1851
+ ; SSSE3-NEXT: movdqa {{.*#+}} xmm6 = [2147549183,2147549183,2147549183,2147549183]
1852
+ ; SSSE3-NEXT: movdqa %xmm6, %xmm9
1853
+ ; SSSE3-NEXT: pcmpgtd %xmm8, %xmm9
1854
+ ; SSSE3-NEXT: pcmpeqd %xmm8, %xmm8
1855
+ ; SSSE3-NEXT: pand %xmm9, %xmm3
1856
+ ; SSSE3-NEXT: pxor %xmm8, %xmm9
1857
+ ; SSSE3-NEXT: por %xmm3, %xmm9
1858
+ ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15]
1859
+ ; SSSE3-NEXT: pshufb %xmm3, %xmm9
1860
+ ; SSSE3-NEXT: movdqa %xmm2, %xmm10
1861
+ ; SSSE3-NEXT: pxor %xmm7, %xmm10
1862
+ ; SSSE3-NEXT: movdqa %xmm6, %xmm11
1863
+ ; SSSE3-NEXT: pcmpgtd %xmm10, %xmm11
1864
+ ; SSSE3-NEXT: pand %xmm11, %xmm2
1865
+ ; SSSE3-NEXT: pxor %xmm8, %xmm11
1866
+ ; SSSE3-NEXT: por %xmm2, %xmm11
1867
+ ; SSSE3-NEXT: pshufb %xmm3, %xmm11
1868
+ ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm11 = xmm11[0],xmm9[0]
1869
+ ; SSSE3-NEXT: psubusw %xmm11, %xmm0
1870
+ ; SSSE3-NEXT: movdqa %xmm5, %xmm2
1871
+ ; SSSE3-NEXT: pxor %xmm7, %xmm2
1872
+ ; SSSE3-NEXT: movdqa %xmm6, %xmm9
1873
+ ; SSSE3-NEXT: pcmpgtd %xmm2, %xmm9
1874
+ ; SSSE3-NEXT: pand %xmm9, %xmm5
1875
+ ; SSSE3-NEXT: pxor %xmm8, %xmm9
1876
+ ; SSSE3-NEXT: por %xmm5, %xmm9
1877
+ ; SSSE3-NEXT: pshufb %xmm3, %xmm9
1878
+ ; SSSE3-NEXT: pxor %xmm4, %xmm7
1879
+ ; SSSE3-NEXT: pcmpgtd %xmm7, %xmm6
1880
+ ; SSSE3-NEXT: pxor %xmm6, %xmm8
1881
+ ; SSSE3-NEXT: pand %xmm4, %xmm6
1882
+ ; SSSE3-NEXT: por %xmm8, %xmm6
1883
+ ; SSSE3-NEXT: pshufb %xmm3, %xmm6
1884
+ ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm6 = xmm6[0],xmm9[0]
1885
+ ; SSSE3-NEXT: psubusw %xmm6, %xmm1
1886
+ ; SSSE3-NEXT: retq
1845
1887
;
1846
1888
; SSE41-LABEL: psubus_16i32_max:
1847
1889
; SSE41: # %bb.0: # %vector.ph
0 commit comments