Lines Matching refs:SSE42
3 …able-peephole -mtriple=x86_64-apple-darwin -mattr=sse4.2 | FileCheck %s --check-prefixes=SSE,SSE42
38 ; SSE42-LABEL: expandload_v2f64_v2i64:
39 ; SSE42: ## %bb.0:
40 ; SSE42-NEXT: pxor %xmm2, %xmm2
41 ; SSE42-NEXT: pcmpeqq %xmm1, %xmm2
42 ; SSE42-NEXT: movmskpd %xmm2, %eax
43 ; SSE42-NEXT: testb $1, %al
44 ; SSE42-NEXT: jne LBB0_1
45 ; SSE42-NEXT: ## %bb.2: ## %else
46 ; SSE42-NEXT: testb $2, %al
47 ; SSE42-NEXT: jne LBB0_3
48 ; SSE42-NEXT: LBB0_4: ## %else2
49 ; SSE42-NEXT: retq
50 ; SSE42-NEXT: LBB0_1: ## %cond.load
51 ; SSE42-NEXT: movlps (%rdi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]
52 ; SSE42-NEXT: addq $8, %rdi
53 ; SSE42-NEXT: testb $2, %al
54 ; SSE42-NEXT: je LBB0_4
55 ; SSE42-NEXT: LBB0_3: ## %cond.load1
56 ; SSE42-NEXT: movhps (%rdi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]
57 ; SSE42-NEXT: retq
146 ; SSE42-LABEL: expandload_v4f64_v4i64:
147 ; SSE42: ## %bb.0:
148 ; SSE42-NEXT: pxor %xmm4, %xmm4
149 ; SSE42-NEXT: pcmpeqq %xmm4, %xmm3
150 ; SSE42-NEXT: pcmpeqq %xmm4, %xmm2
151 ; SSE42-NEXT: packssdw %xmm3, %xmm2
152 ; SSE42-NEXT: movmskps %xmm2, %eax
153 ; SSE42-NEXT: testb $1, %al
154 ; SSE42-NEXT: jne LBB1_1
155 ; SSE42-NEXT: ## %bb.2: ## %else
156 ; SSE42-NEXT: testb $2, %al
157 ; SSE42-NEXT: jne LBB1_3
158 ; SSE42-NEXT: LBB1_4: ## %else2
159 ; SSE42-NEXT: testb $4, %al
160 ; SSE42-NEXT: jne LBB1_5
161 ; SSE42-NEXT: LBB1_6: ## %else6
162 ; SSE42-NEXT: testb $8, %al
163 ; SSE42-NEXT: jne LBB1_7
164 ; SSE42-NEXT: LBB1_8: ## %else10
165 ; SSE42-NEXT: retq
166 ; SSE42-NEXT: LBB1_1: ## %cond.load
167 ; SSE42-NEXT: movlps (%rdi), %xmm0 ## xmm0 = mem[0,1],xmm0[2,3]
168 ; SSE42-NEXT: addq $8, %rdi
169 ; SSE42-NEXT: testb $2, %al
170 ; SSE42-NEXT: je LBB1_4
171 ; SSE42-NEXT: LBB1_3: ## %cond.load1
172 ; SSE42-NEXT: movhps (%rdi), %xmm0 ## xmm0 = xmm0[0,1],mem[0,1]
173 ; SSE42-NEXT: addq $8, %rdi
174 ; SSE42-NEXT: testb $4, %al
175 ; SSE42-NEXT: je LBB1_6
176 ; SSE42-NEXT: LBB1_5: ## %cond.load5
177 ; SSE42-NEXT: movlps (%rdi), %xmm1 ## xmm1 = mem[0,1],xmm1[2,3]
178 ; SSE42-NEXT: addq $8, %rdi
179 ; SSE42-NEXT: testb $8, %al
180 ; SSE42-NEXT: je LBB1_8
181 ; SSE42-NEXT: LBB1_7: ## %cond.load9
182 ; SSE42-NEXT: movhps (%rdi), %xmm1 ## xmm1 = xmm1[0,1],mem[0,1]
183 ; SSE42-NEXT: retq
1144 ; SSE42-LABEL: expandload_v2f32_v2i1:
1145 ; SSE42: ## %bb.0:
1146 ; SSE42-NEXT: pxor %xmm2, %xmm2
1147 ; SSE42-NEXT: pcmpeqd %xmm1, %xmm2
1148 ; SSE42-NEXT: pmovsxdq %xmm2, %xmm1
1149 ; SSE42-NEXT: movmskpd %xmm1, %eax
1150 ; SSE42-NEXT: testb $1, %al
1151 ; SSE42-NEXT: jne LBB4_1
1152 ; SSE42-NEXT: ## %bb.2: ## %else
1153 ; SSE42-NEXT: testb $2, %al
1154 ; SSE42-NEXT: jne LBB4_3
1155 ; SSE42-NEXT: LBB4_4: ## %else2
1156 ; SSE42-NEXT: retq
1157 ; SSE42-NEXT: LBB4_1: ## %cond.load
1158 ; SSE42-NEXT: movss (%rdi), %xmm1 ## xmm1 = mem[0],zero,zero,zero
1159 ; SSE42-NEXT: blendps {{.*#+}} xmm0 = xmm1[0],xmm0[1,2,3]
1160 ; SSE42-NEXT: addq $4, %rdi
1161 ; SSE42-NEXT: testb $2, %al
1162 ; SSE42-NEXT: je LBB4_4
1163 ; SSE42-NEXT: LBB4_3: ## %cond.load1
1164 ; SSE42-NEXT: insertps $16, (%rdi), %xmm0 ## xmm0 = xmm0[0],mem[0],xmm0[2,3]
1165 ; SSE42-NEXT: retq
1232 ; SSE42-LABEL: expandload_v4f32_const:
1233 ; SSE42: ## %bb.0:
1234 ; SSE42-NEXT: movsd (%rdi), %xmm1 ## xmm1 = mem[0],zero
1235 ; SSE42-NEXT: insertps $32, 8(%rdi), %xmm1 ## xmm1 = xmm1[0,1],mem[0],xmm1[3]
1236 ; SSE42-NEXT: blendps {{.*#+}} xmm0 = xmm1[0,1,2],xmm0[3]
1237 ; SSE42-NEXT: retq
1290 ; SSE42-LABEL: expandload_v16f32_const:
1291 ; SSE42: ## %bb.0:
1292 ; SSE42-NEXT: movsd 44(%rdi), %xmm4 ## xmm4 = mem[0],zero
1293 ; SSE42-NEXT: insertps $32, 52(%rdi), %xmm4 ## xmm4 = xmm4[0,1],mem[0],xmm4[3]
1294 ; SSE42-NEXT: movsd 32(%rdi), %xmm5 ## xmm5 = mem[0],zero
1295 ; SSE42-NEXT: insertps $32, 40(%rdi), %xmm5 ## xmm5 = xmm5[0,1],mem[0],xmm5[3]
1296 ; SSE42-NEXT: movups (%rdi), %xmm0
1297 ; SSE42-NEXT: movups 16(%rdi), %xmm1
1298 ; SSE42-NEXT: blendps {{.*#+}} xmm2 = xmm5[0,1,2],xmm2[3]
1299 ; SSE42-NEXT: blendps {{.*#+}} xmm3 = xmm4[0,1,2],xmm3[3]
1300 ; SSE42-NEXT: retq
1348 ; SSE42-LABEL: expandload_v16f32_const_undef:
1349 ; SSE42: ## %bb.0:
1350 ; SSE42-NEXT: movsd 32(%rdi), %xmm2 ## xmm2 = mem[0],zero
1351 ; SSE42-NEXT: insertps $32, 40(%rdi), %xmm2 ## xmm2 = xmm2[0,1],mem[0],xmm2[3]
1352 ; SSE42-NEXT: movups (%rdi), %xmm0
1353 ; SSE42-NEXT: movups 16(%rdi), %xmm1
1354 ; SSE42-NEXT: movups 44(%rdi), %xmm3
1355 ; SSE42-NEXT: retq
1748 ; SSE42-LABEL: expandload_v32f32_v32i32:
1749 ; SSE42: ## %bb.0:
1750 ; SSE42-NEXT: movq %rdi, %rax
1751 ; SSE42-NEXT: pxor %xmm8, %xmm8
1752 ; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9
1753 ; SSE42-NEXT: pcmpeqd %xmm8, %xmm9
1754 ; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm10
1755 ; SSE42-NEXT: pcmpeqd %xmm8, %xmm10
1756 ; SSE42-NEXT: packssdw %xmm9, %xmm10
1757 ; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9
1758 ; SSE42-NEXT: pcmpeqd %xmm8, %xmm9
1759 ; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm11
1760 ; SSE42-NEXT: pcmpeqd %xmm8, %xmm11
1761 ; SSE42-NEXT: packssdw %xmm9, %xmm11
1762 ; SSE42-NEXT: packsswb %xmm10, %xmm11
1763 ; SSE42-NEXT: pmovmskb %xmm11, %edx
1764 ; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9
1765 ; SSE42-NEXT: pcmpeqd %xmm8, %xmm9
1766 ; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm10
1767 ; SSE42-NEXT: pcmpeqd %xmm8, %xmm10
1768 ; SSE42-NEXT: packssdw %xmm9, %xmm10
1769 ; SSE42-NEXT: movdqa {{[0-9]+}}(%rsp), %xmm9
1770 ; SSE42-NEXT: pcmpeqd %xmm8, %xmm9
1771 ; SSE42-NEXT: pcmpeqd {{[0-9]+}}(%rsp), %xmm8
1772 ; SSE42-NEXT: packssdw %xmm9, %xmm8
1773 ; SSE42-NEXT: packsswb %xmm10, %xmm8
1774 ; SSE42-NEXT: pmovmskb %xmm8, %ecx
1775 ; SSE42-NEXT: shll $16, %ecx
1776 ; SSE42-NEXT: orl %edx, %ecx
1777 ; SSE42-NEXT: testb $1, %cl
1778 ; SSE42-NEXT: jne LBB8_1
1779 ; SSE42-NEXT: ## %bb.2: ## %else
1780 ; SSE42-NEXT: testb $2, %cl
1781 ; SSE42-NEXT: jne LBB8_3
1782 ; SSE42-NEXT: LBB8_4: ## %else2
1783 ; SSE42-NEXT: testb $4, %cl
1784 ; SSE42-NEXT: jne LBB8_5
1785 ; SSE42-NEXT: LBB8_6: ## %else6
1786 ; SSE42-NEXT: testb $8, %cl
1787 ; SSE42-NEXT: jne LBB8_7
1788 ; SSE42-NEXT: LBB8_8: ## %else10
1789 ; SSE42-NEXT: testb $16, %cl
1790 ; SSE42-NEXT: jne LBB8_9
1791 ; SSE42-NEXT: LBB8_10: ## %else14
1792 ; SSE42-NEXT: testb $32, %cl
1793 ; SSE42-NEXT: jne LBB8_11
1794 ; SSE42-NEXT: LBB8_12: ## %else18
1795 ; SSE42-NEXT: testb $64, %cl
1796 ; SSE42-NEXT: jne LBB8_13
1797 ; SSE42-NEXT: LBB8_14: ## %else22
1798 ; SSE42-NEXT: testb $-128, %cl
1799 ; SSE42-NEXT: jne LBB8_15
1800 ; SSE42-NEXT: LBB8_16: ## %else26
1801 ; SSE42-NEXT: testl $256, %ecx ## imm = 0x100
1802 ; SSE42-NEXT: jne LBB8_17
1803 ; SSE42-NEXT: LBB8_18: ## %else30
1804 ; SSE42-NEXT: testl $512, %ecx ## imm = 0x200
1805 ; SSE42-NEXT: jne LBB8_19
1806 ; SSE42-NEXT: LBB8_20: ## %else34
1807 ; SSE42-NEXT: testl $1024, %ecx ## imm = 0x400
1808 ; SSE42-NEXT: jne LBB8_21
1809 ; SSE42-NEXT: LBB8_22: ## %else38
1810 ; SSE42-NEXT: testl $2048, %ecx ## imm = 0x800
1811 ; SSE42-NEXT: jne LBB8_23
1812 ; SSE42-NEXT: LBB8_24: ## %else42
1813 ; SSE42-NEXT: testl $4096, %ecx ## imm = 0x1000
1814 ; SSE42-NEXT: jne LBB8_25
1815 ; SSE42-NEXT: LBB8_26: ## %else46
1816 ; SSE42-NEXT: testl $8192, %ecx ## imm = 0x2000
1817 ; SSE42-NEXT: jne LBB8_27
1818 ; SSE42-NEXT: LBB8_28: ## %else50
1819 ; SSE42-NEXT: testl $16384, %ecx ## imm = 0x4000
1820 ; SSE42-NEXT: jne LBB8_29
1821 ; SSE42-NEXT: LBB8_30: ## %else54
1822 ; SSE42-NEXT: testl $32768, %ecx ## imm = 0x8000
1823 ; SSE42-NEXT: jne LBB8_31
1824 ; SSE42-NEXT: LBB8_32: ## %else58
1825 ; SSE42-NEXT: testl $65536, %ecx ## imm = 0x10000
1826 ; SSE42-NEXT: jne LBB8_33
1827 ; SSE42-NEXT: LBB8_34: ## %else62
1828 ; SSE42-NEXT: testl $131072, %ecx ## imm = 0x20000
1829 ; SSE42-NEXT: jne LBB8_35
1830 ; SSE42-NEXT: LBB8_36: ## %else66
1831 ; SSE42-NEXT: testl $262144, %ecx ## imm = 0x40000
1832 ; SSE42-NEXT: jne LBB8_37
1833 ; SSE42-NEXT: LBB8_38: ## %else70
1834 ; SSE42-NEXT: testl $524288, %ecx ## imm = 0x80000
1835 ; SSE42-NEXT: jne LBB8_39
1836 ; SSE42-NEXT: LBB8_40: ## %else74
1837 ; SSE42-NEXT: testl $1048576, %ecx ## imm = 0x100000
1838 ; SSE42-NEXT: jne LBB8_41
1839 ; SSE42-NEXT: LBB8_42: ## %else78
1840 ; SSE42-NEXT: testl $2097152, %ecx ## imm = 0x200000
1841 ; SSE42-NEXT: jne LBB8_43
1842 ; SSE42-NEXT: LBB8_44: ## %else82
1843 ; SSE42-NEXT: testl $4194304, %ecx ## imm = 0x400000
1844 ; SSE42-NEXT: jne LBB8_45
1845 ; SSE42-NEXT: LBB8_46: ## %else86
1846 ; SSE42-NEXT: testl $8388608, %ecx ## imm = 0x800000
1847 ; SSE42-NEXT: jne LBB8_47
1848 ; SSE42-NEXT: LBB8_48: ## %else90
1849 ; SSE42-NEXT: testl $16777216, %ecx ## imm = 0x1000000
1850 ; SSE42-NEXT: jne LBB8_49
1851 ; SSE42-NEXT: LBB8_50: ## %else94
1852 ; SSE42-NEXT: testl $33554432, %ecx ## imm = 0x2000000
1853 ; SSE42-NEXT: jne LBB8_51
1854 ; SSE42-NEXT: LBB8_52: ## %else98
1855 ; SSE42-NEXT: testl $67108864, %ecx ## imm = 0x4000000
1856 ; SSE42-NEXT: jne LBB8_53
1857 ; SSE42-NEXT: LBB8_54: ## %else102
1858 ; SSE42-NEXT: testl $134217728, %ecx ## imm = 0x8000000
1859 ; SSE42-NEXT: jne LBB8_55
1860 ; SSE42-NEXT: LBB8_56: ## %else106
1861 ; SSE42-NEXT: testl $268435456, %ecx ## imm = 0x10000000
1862 ; SSE42-NEXT: jne LBB8_57
1863 ; SSE42-NEXT: LBB8_58: ## %else110
1864 ; SSE42-NEXT: testl $536870912, %ecx ## imm = 0x20000000
1865 ; SSE42-NEXT: jne LBB8_59
1866 ; SSE42-NEXT: LBB8_60: ## %else114
1867 ; SSE42-NEXT: testl $1073741824, %ecx ## imm = 0x40000000
1868 ; SSE42-NEXT: jne LBB8_61
1869 ; SSE42-NEXT: LBB8_62: ## %else118
1870 ; SSE42-NEXT: testl $-2147483648, %ecx ## imm = 0x80000000
1871 ; SSE42-NEXT: je LBB8_64
1872 ; SSE42-NEXT: LBB8_63: ## %cond.load121
1873 ; SSE42-NEXT: insertps $48, (%rsi), %xmm7 ## xmm7 = xmm7[0,1,2],mem[0]
1874 ; SSE42-NEXT: LBB8_64: ## %else122
1875 ; SSE42-NEXT: movaps %xmm0, (%rax)
1876 ; SSE42-NEXT: movaps %xmm1, 16(%rax)
1877 ; SSE42-NEXT: movaps %xmm2, 32(%rax)
1878 ; SSE42-NEXT: movaps %xmm3, 48(%rax)
1879 ; SSE42-NEXT: movaps %xmm4, 64(%rax)
1880 ; SSE42-NEXT: movaps %xmm5, 80(%rax)
1881 ; SSE42-NEXT: movaps %xmm6, 96(%rax)
1882 ; SSE42-NEXT: movaps %xmm7, 112(%rax)
1883 ; SSE42-NEXT: retq
1884 ; SSE42-NEXT: LBB8_1: ## %cond.load
1885 ; SSE42-NEXT: movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1886 ; SSE42-NEXT: pblendw {{.*#+}} xmm0 = xmm8[0,1],xmm0[2,3,4,5,6,7]
1887 ; SSE42-NEXT: addq $4, %rsi
1888 ; SSE42-NEXT: testb $2, %cl
1889 ; SSE42-NEXT: je LBB8_4
1890 ; SSE42-NEXT: LBB8_3: ## %cond.load1
1891 ; SSE42-NEXT: insertps $16, (%rsi), %xmm0 ## xmm0 = xmm0[0],mem[0],xmm0[2,3]
1892 ; SSE42-NEXT: addq $4, %rsi
1893 ; SSE42-NEXT: testb $4, %cl
1894 ; SSE42-NEXT: je LBB8_6
1895 ; SSE42-NEXT: LBB8_5: ## %cond.load5
1896 ; SSE42-NEXT: insertps $32, (%rsi), %xmm0 ## xmm0 = xmm0[0,1],mem[0],xmm0[3]
1897 ; SSE42-NEXT: addq $4, %rsi
1898 ; SSE42-NEXT: testb $8, %cl
1899 ; SSE42-NEXT: je LBB8_8
1900 ; SSE42-NEXT: LBB8_7: ## %cond.load9
1901 ; SSE42-NEXT: insertps $48, (%rsi), %xmm0 ## xmm0 = xmm0[0,1,2],mem[0]
1902 ; SSE42-NEXT: addq $4, %rsi
1903 ; SSE42-NEXT: testb $16, %cl
1904 ; SSE42-NEXT: je LBB8_10
1905 ; SSE42-NEXT: LBB8_9: ## %cond.load13
1906 ; SSE42-NEXT: movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1907 ; SSE42-NEXT: pblendw {{.*#+}} xmm1 = xmm8[0,1],xmm1[2,3,4,5,6,7]
1908 ; SSE42-NEXT: addq $4, %rsi
1909 ; SSE42-NEXT: testb $32, %cl
1910 ; SSE42-NEXT: je LBB8_12
1911 ; SSE42-NEXT: LBB8_11: ## %cond.load17
1912 ; SSE42-NEXT: insertps $16, (%rsi), %xmm1 ## xmm1 = xmm1[0],mem[0],xmm1[2,3]
1913 ; SSE42-NEXT: addq $4, %rsi
1914 ; SSE42-NEXT: testb $64, %cl
1915 ; SSE42-NEXT: je LBB8_14
1916 ; SSE42-NEXT: LBB8_13: ## %cond.load21
1917 ; SSE42-NEXT: insertps $32, (%rsi), %xmm1 ## xmm1 = xmm1[0,1],mem[0],xmm1[3]
1918 ; SSE42-NEXT: addq $4, %rsi
1919 ; SSE42-NEXT: testb $-128, %cl
1920 ; SSE42-NEXT: je LBB8_16
1921 ; SSE42-NEXT: LBB8_15: ## %cond.load25
1922 ; SSE42-NEXT: insertps $48, (%rsi), %xmm1 ## xmm1 = xmm1[0,1,2],mem[0]
1923 ; SSE42-NEXT: addq $4, %rsi
1924 ; SSE42-NEXT: testl $256, %ecx ## imm = 0x100
1925 ; SSE42-NEXT: je LBB8_18
1926 ; SSE42-NEXT: LBB8_17: ## %cond.load29
1927 ; SSE42-NEXT: movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1928 ; SSE42-NEXT: pblendw {{.*#+}} xmm2 = xmm8[0,1],xmm2[2,3,4,5,6,7]
1929 ; SSE42-NEXT: addq $4, %rsi
1930 ; SSE42-NEXT: testl $512, %ecx ## imm = 0x200
1931 ; SSE42-NEXT: je LBB8_20
1932 ; SSE42-NEXT: LBB8_19: ## %cond.load33
1933 ; SSE42-NEXT: insertps $16, (%rsi), %xmm2 ## xmm2 = xmm2[0],mem[0],xmm2[2,3]
1934 ; SSE42-NEXT: addq $4, %rsi
1935 ; SSE42-NEXT: testl $1024, %ecx ## imm = 0x400
1936 ; SSE42-NEXT: je LBB8_22
1937 ; SSE42-NEXT: LBB8_21: ## %cond.load37
1938 ; SSE42-NEXT: insertps $32, (%rsi), %xmm2 ## xmm2 = xmm2[0,1],mem[0],xmm2[3]
1939 ; SSE42-NEXT: addq $4, %rsi
1940 ; SSE42-NEXT: testl $2048, %ecx ## imm = 0x800
1941 ; SSE42-NEXT: je LBB8_24
1942 ; SSE42-NEXT: LBB8_23: ## %cond.load41
1943 ; SSE42-NEXT: insertps $48, (%rsi), %xmm2 ## xmm2 = xmm2[0,1,2],mem[0]
1944 ; SSE42-NEXT: addq $4, %rsi
1945 ; SSE42-NEXT: testl $4096, %ecx ## imm = 0x1000
1946 ; SSE42-NEXT: je LBB8_26
1947 ; SSE42-NEXT: LBB8_25: ## %cond.load45
1948 ; SSE42-NEXT: movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1949 ; SSE42-NEXT: pblendw {{.*#+}} xmm3 = xmm8[0,1],xmm3[2,3,4,5,6,7]
1950 ; SSE42-NEXT: addq $4, %rsi
1951 ; SSE42-NEXT: testl $8192, %ecx ## imm = 0x2000
1952 ; SSE42-NEXT: je LBB8_28
1953 ; SSE42-NEXT: LBB8_27: ## %cond.load49
1954 ; SSE42-NEXT: insertps $16, (%rsi), %xmm3 ## xmm3 = xmm3[0],mem[0],xmm3[2,3]
1955 ; SSE42-NEXT: addq $4, %rsi
1956 ; SSE42-NEXT: testl $16384, %ecx ## imm = 0x4000
1957 ; SSE42-NEXT: je LBB8_30
1958 ; SSE42-NEXT: LBB8_29: ## %cond.load53
1959 ; SSE42-NEXT: insertps $32, (%rsi), %xmm3 ## xmm3 = xmm3[0,1],mem[0],xmm3[3]
1960 ; SSE42-NEXT: addq $4, %rsi
1961 ; SSE42-NEXT: testl $32768, %ecx ## imm = 0x8000
1962 ; SSE42-NEXT: je LBB8_32
1963 ; SSE42-NEXT: LBB8_31: ## %cond.load57
1964 ; SSE42-NEXT: insertps $48, (%rsi), %xmm3 ## xmm3 = xmm3[0,1,2],mem[0]
1965 ; SSE42-NEXT: addq $4, %rsi
1966 ; SSE42-NEXT: testl $65536, %ecx ## imm = 0x10000
1967 ; SSE42-NEXT: je LBB8_34
1968 ; SSE42-NEXT: LBB8_33: ## %cond.load61
1969 ; SSE42-NEXT: movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1970 ; SSE42-NEXT: pblendw {{.*#+}} xmm4 = xmm8[0,1],xmm4[2,3,4,5,6,7]
1971 ; SSE42-NEXT: addq $4, %rsi
1972 ; SSE42-NEXT: testl $131072, %ecx ## imm = 0x20000
1973 ; SSE42-NEXT: je LBB8_36
1974 ; SSE42-NEXT: LBB8_35: ## %cond.load65
1975 ; SSE42-NEXT: insertps $16, (%rsi), %xmm4 ## xmm4 = xmm4[0],mem[0],xmm4[2,3]
1976 ; SSE42-NEXT: addq $4, %rsi
1977 ; SSE42-NEXT: testl $262144, %ecx ## imm = 0x40000
1978 ; SSE42-NEXT: je LBB8_38
1979 ; SSE42-NEXT: LBB8_37: ## %cond.load69
1980 ; SSE42-NEXT: insertps $32, (%rsi), %xmm4 ## xmm4 = xmm4[0,1],mem[0],xmm4[3]
1981 ; SSE42-NEXT: addq $4, %rsi
1982 ; SSE42-NEXT: testl $524288, %ecx ## imm = 0x80000
1983 ; SSE42-NEXT: je LBB8_40
1984 ; SSE42-NEXT: LBB8_39: ## %cond.load73
1985 ; SSE42-NEXT: insertps $48, (%rsi), %xmm4 ## xmm4 = xmm4[0,1,2],mem[0]
1986 ; SSE42-NEXT: addq $4, %rsi
1987 ; SSE42-NEXT: testl $1048576, %ecx ## imm = 0x100000
1988 ; SSE42-NEXT: je LBB8_42
1989 ; SSE42-NEXT: LBB8_41: ## %cond.load77
1990 ; SSE42-NEXT: movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
1991 ; SSE42-NEXT: pblendw {{.*#+}} xmm5 = xmm8[0,1],xmm5[2,3,4,5,6,7]
1992 ; SSE42-NEXT: addq $4, %rsi
1993 ; SSE42-NEXT: testl $2097152, %ecx ## imm = 0x200000
1994 ; SSE42-NEXT: je LBB8_44
1995 ; SSE42-NEXT: LBB8_43: ## %cond.load81
1996 ; SSE42-NEXT: insertps $16, (%rsi), %xmm5 ## xmm5 = xmm5[0],mem[0],xmm5[2,3]
1997 ; SSE42-NEXT: addq $4, %rsi
1998 ; SSE42-NEXT: testl $4194304, %ecx ## imm = 0x400000
1999 ; SSE42-NEXT: je LBB8_46
2000 ; SSE42-NEXT: LBB8_45: ## %cond.load85
2001 ; SSE42-NEXT: insertps $32, (%rsi), %xmm5 ## xmm5 = xmm5[0,1],mem[0],xmm5[3]
2002 ; SSE42-NEXT: addq $4, %rsi
2003 ; SSE42-NEXT: testl $8388608, %ecx ## imm = 0x800000
2004 ; SSE42-NEXT: je LBB8_48
2005 ; SSE42-NEXT: LBB8_47: ## %cond.load89
2006 ; SSE42-NEXT: insertps $48, (%rsi), %xmm5 ## xmm5 = xmm5[0,1,2],mem[0]
2007 ; SSE42-NEXT: addq $4, %rsi
2008 ; SSE42-NEXT: testl $16777216, %ecx ## imm = 0x1000000
2009 ; SSE42-NEXT: je LBB8_50
2010 ; SSE42-NEXT: LBB8_49: ## %cond.load93
2011 ; SSE42-NEXT: movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
2012 ; SSE42-NEXT: pblendw {{.*#+}} xmm6 = xmm8[0,1],xmm6[2,3,4,5,6,7]
2013 ; SSE42-NEXT: addq $4, %rsi
2014 ; SSE42-NEXT: testl $33554432, %ecx ## imm = 0x2000000
2015 ; SSE42-NEXT: je LBB8_52
2016 ; SSE42-NEXT: LBB8_51: ## %cond.load97
2017 ; SSE42-NEXT: insertps $16, (%rsi), %xmm6 ## xmm6 = xmm6[0],mem[0],xmm6[2,3]
2018 ; SSE42-NEXT: addq $4, %rsi
2019 ; SSE42-NEXT: testl $67108864, %ecx ## imm = 0x4000000
2020 ; SSE42-NEXT: je LBB8_54
2021 ; SSE42-NEXT: LBB8_53: ## %cond.load101
2022 ; SSE42-NEXT: insertps $32, (%rsi), %xmm6 ## xmm6 = xmm6[0,1],mem[0],xmm6[3]
2023 ; SSE42-NEXT: addq $4, %rsi
2024 ; SSE42-NEXT: testl $134217728, %ecx ## imm = 0x8000000
2025 ; SSE42-NEXT: je LBB8_56
2026 ; SSE42-NEXT: LBB8_55: ## %cond.load105
2027 ; SSE42-NEXT: insertps $48, (%rsi), %xmm6 ## xmm6 = xmm6[0,1,2],mem[0]
2028 ; SSE42-NEXT: addq $4, %rsi
2029 ; SSE42-NEXT: testl $268435456, %ecx ## imm = 0x10000000
2030 ; SSE42-NEXT: je LBB8_58
2031 ; SSE42-NEXT: LBB8_57: ## %cond.load109
2032 ; SSE42-NEXT: movd (%rsi), %xmm8 ## xmm8 = mem[0],zero,zero,zero
2033 ; SSE42-NEXT: pblendw {{.*#+}} xmm7 = xmm8[0,1],xmm7[2,3,4,5,6,7]
2034 ; SSE42-NEXT: addq $4, %rsi
2035 ; SSE42-NEXT: testl $536870912, %ecx ## imm = 0x20000000
2036 ; SSE42-NEXT: je LBB8_60
2037 ; SSE42-NEXT: LBB8_59: ## %cond.load113
2038 ; SSE42-NEXT: insertps $16, (%rsi), %xmm7 ## xmm7 = xmm7[0],mem[0],xmm7[2,3]
2039 ; SSE42-NEXT: addq $4, %rsi
2040 ; SSE42-NEXT: testl $1073741824, %ecx ## imm = 0x40000000
2041 ; SSE42-NEXT: je LBB8_62
2042 ; SSE42-NEXT: LBB8_61: ## %cond.load117
2043 ; SSE42-NEXT: insertps $32, (%rsi), %xmm7 ## xmm7 = xmm7[0,1],mem[0],xmm7[3]
2044 ; SSE42-NEXT: addq $4, %rsi
2045 ; SSE42-NEXT: testl $-2147483648, %ecx ## imm = 0x80000000
2046 ; SSE42-NEXT: jne LBB8_63
2047 ; SSE42-NEXT: jmp LBB8_64
2743 ; SSE42-LABEL: expandload_v2i64_const:
2744 ; SSE42: ## %bb.0:
2745 ; SSE42-NEXT: pinsrq $1, (%rdi), %xmm0
2746 ; SSE42-NEXT: retq
2830 ; SSE42-LABEL: expandload_v4i32_v4i32:
2831 ; SSE42: ## %bb.0:
2832 ; SSE42-NEXT: pxor %xmm2, %xmm2
2833 ; SSE42-NEXT: pcmpeqd %xmm1, %xmm2
2834 ; SSE42-NEXT: movmskps %xmm2, %eax
2835 ; SSE42-NEXT: testb $1, %al
2836 ; SSE42-NEXT: jne LBB10_1
2837 ; SSE42-NEXT: ## %bb.2: ## %else
2838 ; SSE42-NEXT: testb $2, %al
2839 ; SSE42-NEXT: jne LBB10_3
2840 ; SSE42-NEXT: LBB10_4: ## %else2
2841 ; SSE42-NEXT: testb $4, %al
2842 ; SSE42-NEXT: jne LBB10_5
2843 ; SSE42-NEXT: LBB10_6: ## %else6
2844 ; SSE42-NEXT: testb $8, %al
2845 ; SSE42-NEXT: jne LBB10_7
2846 ; SSE42-NEXT: LBB10_8: ## %else10
2847 ; SSE42-NEXT: retq
2848 ; SSE42-NEXT: LBB10_1: ## %cond.load
2849 ; SSE42-NEXT: pinsrd $0, (%rdi), %xmm0
2850 ; SSE42-NEXT: addq $4, %rdi
2851 ; SSE42-NEXT: testb $2, %al
2852 ; SSE42-NEXT: je LBB10_4
2853 ; SSE42-NEXT: LBB10_3: ## %cond.load1
2854 ; SSE42-NEXT: pinsrd $1, (%rdi), %xmm0
2855 ; SSE42-NEXT: addq $4, %rdi
2856 ; SSE42-NEXT: testb $4, %al
2857 ; SSE42-NEXT: je LBB10_6
2858 ; SSE42-NEXT: LBB10_5: ## %cond.load5
2859 ; SSE42-NEXT: pinsrd $2, (%rdi), %xmm0
2860 ; SSE42-NEXT: addq $4, %rdi
2861 ; SSE42-NEXT: testb $8, %al
2862 ; SSE42-NEXT: je LBB10_8
2863 ; SSE42-NEXT: LBB10_7: ## %cond.load9
2864 ; SSE42-NEXT: pinsrd $3, (%rdi), %xmm0
2865 ; SSE42-NEXT: retq
3520 ; SSE42-LABEL: expandload_v16i8_v16i8:
3521 ; SSE42: ## %bb.0:
3522 ; SSE42-NEXT: pxor %xmm2, %xmm2
3523 ; SSE42-NEXT: pcmpeqb %xmm1, %xmm2
3524 ; SSE42-NEXT: pmovmskb %xmm2, %eax
3525 ; SSE42-NEXT: testb $1, %al
3526 ; SSE42-NEXT: jne LBB12_1
3527 ; SSE42-NEXT: ## %bb.2: ## %else
3528 ; SSE42-NEXT: testb $2, %al
3529 ; SSE42-NEXT: jne LBB12_3
3530 ; SSE42-NEXT: LBB12_4: ## %else2
3531 ; SSE42-NEXT: testb $4, %al
3532 ; SSE42-NEXT: jne LBB12_5
3533 ; SSE42-NEXT: LBB12_6: ## %else6
3534 ; SSE42-NEXT: testb $8, %al
3535 ; SSE42-NEXT: jne LBB12_7
3536 ; SSE42-NEXT: LBB12_8: ## %else10
3537 ; SSE42-NEXT: testb $16, %al
3538 ; SSE42-NEXT: jne LBB12_9
3539 ; SSE42-NEXT: LBB12_10: ## %else14
3540 ; SSE42-NEXT: testb $32, %al
3541 ; SSE42-NEXT: jne LBB12_11
3542 ; SSE42-NEXT: LBB12_12: ## %else18
3543 ; SSE42-NEXT: testb $64, %al
3544 ; SSE42-NEXT: jne LBB12_13
3545 ; SSE42-NEXT: LBB12_14: ## %else22
3546 ; SSE42-NEXT: testb $-128, %al
3547 ; SSE42-NEXT: jne LBB12_15
3548 ; SSE42-NEXT: LBB12_16: ## %else26
3549 ; SSE42-NEXT: testl $256, %eax ## imm = 0x100
3550 ; SSE42-NEXT: jne LBB12_17
3551 ; SSE42-NEXT: LBB12_18: ## %else30
3552 ; SSE42-NEXT: testl $512, %eax ## imm = 0x200
3553 ; SSE42-NEXT: jne LBB12_19
3554 ; SSE42-NEXT: LBB12_20: ## %else34
3555 ; SSE42-NEXT: testl $1024, %eax ## imm = 0x400
3556 ; SSE42-NEXT: jne LBB12_21
3557 ; SSE42-NEXT: LBB12_22: ## %else38
3558 ; SSE42-NEXT: testl $2048, %eax ## imm = 0x800
3559 ; SSE42-NEXT: jne LBB12_23
3560 ; SSE42-NEXT: LBB12_24: ## %else42
3561 ; SSE42-NEXT: testl $4096, %eax ## imm = 0x1000
3562 ; SSE42-NEXT: jne LBB12_25
3563 ; SSE42-NEXT: LBB12_26: ## %else46
3564 ; SSE42-NEXT: testl $8192, %eax ## imm = 0x2000
3565 ; SSE42-NEXT: jne LBB12_27
3566 ; SSE42-NEXT: LBB12_28: ## %else50
3567 ; SSE42-NEXT: testl $16384, %eax ## imm = 0x4000
3568 ; SSE42-NEXT: jne LBB12_29
3569 ; SSE42-NEXT: LBB12_30: ## %else54
3570 ; SSE42-NEXT: testl $32768, %eax ## imm = 0x8000
3571 ; SSE42-NEXT: jne LBB12_31
3572 ; SSE42-NEXT: LBB12_32: ## %else58
3573 ; SSE42-NEXT: retq
3574 ; SSE42-NEXT: LBB12_1: ## %cond.load
3575 ; SSE42-NEXT: pinsrb $0, (%rdi), %xmm0
3576 ; SSE42-NEXT: incq %rdi
3577 ; SSE42-NEXT: testb $2, %al
3578 ; SSE42-NEXT: je LBB12_4
3579 ; SSE42-NEXT: LBB12_3: ## %cond.load1
3580 ; SSE42-NEXT: pinsrb $1, (%rdi), %xmm0
3581 ; SSE42-NEXT: incq %rdi
3582 ; SSE42-NEXT: testb $4, %al
3583 ; SSE42-NEXT: je LBB12_6
3584 ; SSE42-NEXT: LBB12_5: ## %cond.load5
3585 ; SSE42-NEXT: pinsrb $2, (%rdi), %xmm0
3586 ; SSE42-NEXT: incq %rdi
3587 ; SSE42-NEXT: testb $8, %al
3588 ; SSE42-NEXT: je LBB12_8
3589 ; SSE42-NEXT: LBB12_7: ## %cond.load9
3590 ; SSE42-NEXT: pinsrb $3, (%rdi), %xmm0
3591 ; SSE42-NEXT: incq %rdi
3592 ; SSE42-NEXT: testb $16, %al
3593 ; SSE42-NEXT: je LBB12_10
3594 ; SSE42-NEXT: LBB12_9: ## %cond.load13
3595 ; SSE42-NEXT: pinsrb $4, (%rdi), %xmm0
3596 ; SSE42-NEXT: incq %rdi
3597 ; SSE42-NEXT: testb $32, %al
3598 ; SSE42-NEXT: je LBB12_12
3599 ; SSE42-NEXT: LBB12_11: ## %cond.load17
3600 ; SSE42-NEXT: pinsrb $5, (%rdi), %xmm0
3601 ; SSE42-NEXT: incq %rdi
3602 ; SSE42-NEXT: testb $64, %al
3603 ; SSE42-NEXT: je LBB12_14
3604 ; SSE42-NEXT: LBB12_13: ## %cond.load21
3605 ; SSE42-NEXT: pinsrb $6, (%rdi), %xmm0
3606 ; SSE42-NEXT: incq %rdi
3607 ; SSE42-NEXT: testb $-128, %al
3608 ; SSE42-NEXT: je LBB12_16
3609 ; SSE42-NEXT: LBB12_15: ## %cond.load25
3610 ; SSE42-NEXT: pinsrb $7, (%rdi), %xmm0
3611 ; SSE42-NEXT: incq %rdi
3612 ; SSE42-NEXT: testl $256, %eax ## imm = 0x100
3613 ; SSE42-NEXT: je LBB12_18
3614 ; SSE42-NEXT: LBB12_17: ## %cond.load29
3615 ; SSE42-NEXT: pinsrb $8, (%rdi), %xmm0
3616 ; SSE42-NEXT: incq %rdi
3617 ; SSE42-NEXT: testl $512, %eax ## imm = 0x200
3618 ; SSE42-NEXT: je LBB12_20
3619 ; SSE42-NEXT: LBB12_19: ## %cond.load33
3620 ; SSE42-NEXT: pinsrb $9, (%rdi), %xmm0
3621 ; SSE42-NEXT: incq %rdi
3622 ; SSE42-NEXT: testl $1024, %eax ## imm = 0x400
3623 ; SSE42-NEXT: je LBB12_22
3624 ; SSE42-NEXT: LBB12_21: ## %cond.load37
3625 ; SSE42-NEXT: pinsrb $10, (%rdi), %xmm0
3626 ; SSE42-NEXT: incq %rdi
3627 ; SSE42-NEXT: testl $2048, %eax ## imm = 0x800
3628 ; SSE42-NEXT: je LBB12_24
3629 ; SSE42-NEXT: LBB12_23: ## %cond.load41
3630 ; SSE42-NEXT: pinsrb $11, (%rdi), %xmm0
3631 ; SSE42-NEXT: incq %rdi
3632 ; SSE42-NEXT: testl $4096, %eax ## imm = 0x1000
3633 ; SSE42-NEXT: je LBB12_26
3634 ; SSE42-NEXT: LBB12_25: ## %cond.load45
3635 ; SSE42-NEXT: pinsrb $12, (%rdi), %xmm0
3636 ; SSE42-NEXT: incq %rdi
3637 ; SSE42-NEXT: testl $8192, %eax ## imm = 0x2000
3638 ; SSE42-NEXT: je LBB12_28
3639 ; SSE42-NEXT: LBB12_27: ## %cond.load49
3640 ; SSE42-NEXT: pinsrb $13, (%rdi), %xmm0
3641 ; SSE42-NEXT: incq %rdi
3642 ; SSE42-NEXT: testl $16384, %eax ## imm = 0x4000
3643 ; SSE42-NEXT: je LBB12_30
3644 ; SSE42-NEXT: LBB12_29: ## %cond.load53
3645 ; SSE42-NEXT: pinsrb $14, (%rdi), %xmm0
3646 ; SSE42-NEXT: incq %rdi
3647 ; SSE42-NEXT: testl $32768, %eax ## imm = 0x8000
3648 ; SSE42-NEXT: je LBB12_32
3649 ; SSE42-NEXT: LBB12_31: ## %cond.load57
3650 ; SSE42-NEXT: pinsrb $15, (%rdi), %xmm0
3651 ; SSE42-NEXT: retq