@@ -1775,13 +1775,11 @@ define <4 x i64> @load_sext_4i1_to_4i64(ptr%ptr) {
1775
1775
; SSE2-NEXT: shrb $3, %al
1776
1776
; SSE2-NEXT: movzbl %al, %eax
1777
1777
; SSE2-NEXT: pinsrw $6, %eax, %xmm1
1778
- ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,1,1,3]
1779
- ; SSE2-NEXT: psllq $63, %xmm0
1780
- ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1778
+ ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,1,1]
1779
+ ; SSE2-NEXT: pslld $31, %xmm0
1781
1780
; SSE2-NEXT: psrad $31, %xmm0
1782
- ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,1,3,3]
1783
- ; SSE2-NEXT: psllq $63, %xmm1
1784
- ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1781
+ ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1782
+ ; SSE2-NEXT: pslld $31, %xmm1
1785
1783
; SSE2-NEXT: psrad $31, %xmm1
1786
1784
; SSE2-NEXT: retq
1787
1785
;
@@ -1805,13 +1803,11 @@ define <4 x i64> @load_sext_4i1_to_4i64(ptr%ptr) {
1805
1803
; SSSE3-NEXT: shrb $3, %al
1806
1804
; SSSE3-NEXT: movzbl %al, %eax
1807
1805
; SSSE3-NEXT: pinsrw $6, %eax, %xmm1
1808
- ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,1,1,3]
1809
- ; SSSE3-NEXT: psllq $63, %xmm0
1810
- ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1806
+ ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,1,1]
1807
+ ; SSSE3-NEXT: pslld $31, %xmm0
1811
1808
; SSSE3-NEXT: psrad $31, %xmm0
1812
- ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,1,3,3]
1813
- ; SSSE3-NEXT: psllq $63, %xmm1
1814
- ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1809
+ ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1810
+ ; SSSE3-NEXT: pslld $31, %xmm1
1815
1811
; SSSE3-NEXT: psrad $31, %xmm1
1816
1812
; SSSE3-NEXT: retq
1817
1813
;
@@ -1831,17 +1827,15 @@ define <4 x i64> @load_sext_4i1_to_4i64(ptr%ptr) {
1831
1827
; SSE41-NEXT: shrb $2, %cl
1832
1828
; SSE41-NEXT: andb $1, %cl
1833
1829
; SSE41-NEXT: movzbl %cl, %ecx
1834
- ; SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero
1835
1830
; SSE41-NEXT: pinsrb $8, %ecx, %xmm1
1836
1831
; SSE41-NEXT: shrb $3, %al
1837
1832
; SSE41-NEXT: movzbl %al, %eax
1833
+ ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,1,1]
1838
1834
; SSE41-NEXT: pinsrb $12, %eax, %xmm1
1839
- ; SSE41-NEXT: psllq $63, %xmm0
1840
- ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1835
+ ; SSE41-NEXT: pslld $31, %xmm0
1841
1836
; SSE41-NEXT: psrad $31, %xmm0
1842
1837
; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1843
- ; SSE41-NEXT: psllq $63, %xmm1
1844
- ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1838
+ ; SSE41-NEXT: pslld $31, %xmm1
1845
1839
; SSE41-NEXT: psrad $31, %xmm1
1846
1840
; SSE41-NEXT: retq
1847
1841
;
@@ -1939,13 +1933,11 @@ define <4 x i64> @load_sext_4i1_to_4i64(ptr%ptr) {
1939
1933
; X86-SSE2-NEXT: shrb $3, %al
1940
1934
; X86-SSE2-NEXT: movzbl %al, %eax
1941
1935
; X86-SSE2-NEXT: pinsrw $6, %eax, %xmm1
1942
- ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,1,1,3]
1943
- ; X86-SSE2-NEXT: psllq $63, %xmm0
1944
- ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1936
+ ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,1,1]
1937
+ ; X86-SSE2-NEXT: pslld $31, %xmm0
1945
1938
; X86-SSE2-NEXT: psrad $31, %xmm0
1946
- ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,1,3,3]
1947
- ; X86-SSE2-NEXT: psllq $63, %xmm1
1948
- ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1939
+ ; X86-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1940
+ ; X86-SSE2-NEXT: pslld $31, %xmm1
1949
1941
; X86-SSE2-NEXT: psrad $31, %xmm1
1950
1942
; X86-SSE2-NEXT: retl
1951
1943
;
@@ -1966,17 +1958,15 @@ define <4 x i64> @load_sext_4i1_to_4i64(ptr%ptr) {
1966
1958
; X86-SSE41-NEXT: shrb $2, %cl
1967
1959
; X86-SSE41-NEXT: andb $1, %cl
1968
1960
; X86-SSE41-NEXT: movzbl %cl, %ecx
1969
- ; X86-SSE41-NEXT: pmovzxdq {{.*#+}} xmm0 = xmm1[0],zero,xmm1[1],zero
1970
1961
; X86-SSE41-NEXT: pinsrb $8, %ecx, %xmm1
1971
1962
; X86-SSE41-NEXT: shrb $3, %al
1972
1963
; X86-SSE41-NEXT: movzbl %al, %eax
1964
+ ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[0,0,1,1]
1973
1965
; X86-SSE41-NEXT: pinsrb $12, %eax, %xmm1
1974
- ; X86-SSE41-NEXT: psllq $63, %xmm0
1975
- ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
1966
+ ; X86-SSE41-NEXT: pslld $31, %xmm0
1976
1967
; X86-SSE41-NEXT: psrad $31, %xmm0
1977
1968
; X86-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,2,3,3]
1978
- ; X86-SSE41-NEXT: psllq $63, %xmm1
1979
- ; X86-SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
1969
+ ; X86-SSE41-NEXT: pslld $31, %xmm1
1980
1970
; X86-SSE41-NEXT: psrad $31, %xmm1
1981
1971
; X86-SSE41-NEXT: retl
1982
1972
entry:
0 commit comments