Lines Matching full:next
17 ; SSE2-NEXT: movd %xmm0, %rax
18 ; SSE2-NEXT: bsrq %rax, %rax
19 ; SSE2-NEXT: movl $127, %ecx
20 ; SSE2-NEXT: cmoveq %rcx, %rax
21 ; SSE2-NEXT: xorq $63, %rax
22 ; SSE2-NEXT: movd %rax, %xmm1
23 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
24 ; SSE2-NEXT: movd %xmm0, %rax
25 ; SSE2-NEXT: bsrq %rax, %rax
26 ; SSE2-NEXT: cmoveq %rcx, %rax
27 ; SSE2-NEXT: xorq $63, %rax
28 ; SSE2-NEXT: movd %rax, %xmm0
29 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
30 ; SSE2-NEXT: movdqa %xmm1, %xmm0
31 ; SSE2-NEXT: retq
35 ; SSE3-NEXT: movd %xmm0, %rax
36 ; SSE3-NEXT: bsrq %rax, %rax
37 ; SSE3-NEXT: movl $127, %ecx
38 ; SSE3-NEXT: cmoveq %rcx, %rax
39 ; SSE3-NEXT: xorq $63, %rax
40 ; SSE3-NEXT: movd %rax, %xmm1
41 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
42 ; SSE3-NEXT: movd %xmm0, %rax
43 ; SSE3-NEXT: bsrq %rax, %rax
44 ; SSE3-NEXT: cmoveq %rcx, %rax
45 ; SSE3-NEXT: xorq $63, %rax
46 ; SSE3-NEXT: movd %rax, %xmm0
47 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
48 ; SSE3-NEXT: movdqa %xmm1, %xmm0
49 ; SSE3-NEXT: retq
53 ; SSSE3-NEXT: movd %xmm0, %rax
54 ; SSSE3-NEXT: bsrq %rax, %rax
55 ; SSSE3-NEXT: movl $127, %ecx
56 ; SSSE3-NEXT: cmoveq %rcx, %rax
57 ; SSSE3-NEXT: xorq $63, %rax
58 ; SSSE3-NEXT: movd %rax, %xmm1
59 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
60 ; SSSE3-NEXT: movd %xmm0, %rax
61 ; SSSE3-NEXT: bsrq %rax, %rax
62 ; SSSE3-NEXT: cmoveq %rcx, %rax
63 ; SSSE3-NEXT: xorq $63, %rax
64 ; SSSE3-NEXT: movd %rax, %xmm0
65 ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
66 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
67 ; SSSE3-NEXT: retq
71 ; SSE41-NEXT: pextrq $1, %xmm0, %rax
72 ; SSE41-NEXT: bsrq %rax, %rax
73 ; SSE41-NEXT: movl $127, %ecx
74 ; SSE41-NEXT: cmoveq %rcx, %rax
75 ; SSE41-NEXT: xorq $63, %rax
76 ; SSE41-NEXT: movd %rax, %xmm1
77 ; SSE41-NEXT: movd %xmm0, %rax
78 ; SSE41-NEXT: bsrq %rax, %rax
79 ; SSE41-NEXT: cmoveq %rcx, %rax
80 ; SSE41-NEXT: xorq $63, %rax
81 ; SSE41-NEXT: movd %rax, %xmm0
82 ; SSE41-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
83 ; SSE41-NEXT: retq
87 ; AVX-NEXT: vpextrq $1, %xmm0, %rax
88 ; AVX-NEXT: bsrq %rax, %rax
89 ; AVX-NEXT: movl $127, %ecx
90 ; AVX-NEXT: cmoveq %rcx, %rax
91 ; AVX-NEXT: xorq $63, %rax
92 ; AVX-NEXT: vmovq %rax, %xmm1
93 ; AVX-NEXT: vmovq %xmm0, %rax
94 ; AVX-NEXT: bsrq %rax, %rax
95 ; AVX-NEXT: cmoveq %rcx, %rax
96 ; AVX-NEXT: xorq $63, %rax
97 ; AVX-NEXT: vmovq %rax, %xmm0
98 ; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
99 ; AVX-NEXT: retq
103 ; AVX512VLCD-NEXT: vplzcntq %xmm0, %xmm0
104 ; AVX512VLCD-NEXT: retq
108 ; AVX512CD-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def>
109 ; AVX512CD-NEXT: vplzcntq %zmm0, %zmm0
110 ; AVX512CD-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<kill>
111 ; AVX512CD-NEXT: retq
115 ; X32-SSE-NEXT: pushl %esi
116 ; X32-SSE-NEXT: pextrd $2, %xmm0, %eax
117 ; X32-SSE-NEXT: bsrl %eax, %eax
118 ; X32-SSE-NEXT: movl $63, %ecx
119 ; X32-SSE-NEXT: cmovel %ecx, %eax
120 ; X32-SSE-NEXT: xorl $31, %eax
121 ; X32-SSE-NEXT: addl $32, %eax
122 ; X32-SSE-NEXT: pextrd $3, %xmm0, %edx
123 ; X32-SSE-NEXT: bsrl %edx, %esi
124 ; X32-SSE-NEXT: xorl $31, %esi
125 ; X32-SSE-NEXT: testl %edx, %edx
126 ; X32-SSE-NEXT: cmovel %eax, %esi
127 ; X32-SSE-NEXT: movd %esi, %xmm1
128 ; X32-SSE-NEXT: movd %xmm0, %eax
129 ; X32-SSE-NEXT: bsrl %eax, %eax
130 ; X32-SSE-NEXT: cmovel %ecx, %eax
131 ; X32-SSE-NEXT: xorl $31, %eax
132 ; X32-SSE-NEXT: addl $32, %eax
133 ; X32-SSE-NEXT: pextrd $1, %xmm0, %ecx
134 ; X32-SSE-NEXT: bsrl %ecx, %edx
135 ; X32-SSE-NEXT: xorl $31, %edx
136 ; X32-SSE-NEXT: testl %ecx, %ecx
137 ; X32-SSE-NEXT: cmovel %eax, %edx
138 ; X32-SSE-NEXT: movd %edx, %xmm0
139 ; X32-SSE-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
140 ; X32-SSE-NEXT: popl %esi
141 ; X32-SSE-NEXT: retl
150 ; SSE2-NEXT: movd %xmm0, %rax
151 ; SSE2-NEXT: bsrq %rax, %rax
152 ; SSE2-NEXT: xorq $63, %rax
153 ; SSE2-NEXT: movd %rax, %xmm1
154 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
155 ; SSE2-NEXT: movd %xmm0, %rax
156 ; SSE2-NEXT: bsrq %rax, %rax
157 ; SSE2-NEXT: xorq $63, %rax
158 ; SSE2-NEXT: movd %rax, %xmm0
159 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
160 ; SSE2-NEXT: movdqa %xmm1, %xmm0
161 ; SSE2-NEXT: retq
165 ; SSE3-NEXT: movd %xmm0, %rax
166 ; SSE3-NEXT: bsrq %rax, %rax
167 ; SSE3-NEXT: xorq $63, %rax
168 ; SSE3-NEXT: movd %rax, %xmm1
169 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
170 ; SSE3-NEXT: movd %xmm0, %rax
171 ; SSE3-NEXT: bsrq %rax, %rax
172 ; SSE3-NEXT: xorq $63, %rax
173 ; SSE3-NEXT: movd %rax, %xmm0
174 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
175 ; SSE3-NEXT: movdqa %xmm1, %xmm0
176 ; SSE3-NEXT: retq
180 ; SSSE3-NEXT: movd %xmm0, %rax
181 ; SSSE3-NEXT: bsrq %rax, %rax
182 ; SSSE3-NEXT: xorq $63, %rax
183 ; SSSE3-NEXT: movd %rax, %xmm1
184 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
185 ; SSSE3-NEXT: movd %xmm0, %rax
186 ; SSSE3-NEXT: bsrq %rax, %rax
187 ; SSSE3-NEXT: xorq $63, %rax
188 ; SSSE3-NEXT: movd %rax, %xmm0
189 ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
190 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
191 ; SSSE3-NEXT: retq
195 ; SSE41-NEXT: pextrq $1, %xmm0, %rax
196 ; SSE41-NEXT: bsrq %rax, %rax
197 ; SSE41-NEXT: xorq $63, %rax
198 ; SSE41-NEXT: movd %rax, %xmm1
199 ; SSE41-NEXT: movd %xmm0, %rax
200 ; SSE41-NEXT: bsrq %rax, %rax
201 ; SSE41-NEXT: xorq $63, %rax
202 ; SSE41-NEXT: movd %rax, %xmm0
203 ; SSE41-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
204 ; SSE41-NEXT: retq
208 ; AVX-NEXT: vpextrq $1, %xmm0, %rax
209 ; AVX-NEXT: bsrq %rax, %rax
210 ; AVX-NEXT: xorq $63, %rax
211 ; AVX-NEXT: vmovq %rax, %xmm1
212 ; AVX-NEXT: vmovq %xmm0, %rax
213 ; AVX-NEXT: bsrq %rax, %rax
214 ; AVX-NEXT: xorq $63, %rax
215 ; AVX-NEXT: vmovq %rax, %xmm0
216 ; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
217 ; AVX-NEXT: retq
221 ; AVX512VLCD-NEXT: vplzcntq %xmm0, %xmm0
222 ; AVX512VLCD-NEXT: retq
226 ; AVX512CD-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def>
227 ; AVX512CD-NEXT: vplzcntq %zmm0, %zmm0
228 ; AVX512CD-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<kill>
229 ; AVX512CD-NEXT: retq
233 ; X32-SSE-NEXT: pextrd $3, %xmm0, %eax
234 ; X32-SSE-NEXT: bsrl %eax, %ecx
235 ; X32-SSE-NEXT: xorl $31, %ecx
236 ; X32-SSE-NEXT: pextrd $2, %xmm0, %edx
237 ; X32-SSE-NEXT: bsrl %edx, %edx
238 ; X32-SSE-NEXT: xorl $31, %edx
239 ; X32-SSE-NEXT: addl $32, %edx
240 ; X32-SSE-NEXT: testl %eax, %eax
241 ; X32-SSE-NEXT: cmovnel %ecx, %edx
242 ; X32-SSE-NEXT: movd %edx, %xmm1
243 ; X32-SSE-NEXT: pextrd $1, %xmm0, %eax
244 ; X32-SSE-NEXT: bsrl %eax, %ecx
245 ; X32-SSE-NEXT: xorl $31, %ecx
246 ; X32-SSE-NEXT: movd %xmm0, %edx
247 ; X32-SSE-NEXT: bsrl %edx, %edx
248 ; X32-SSE-NEXT: xorl $31, %edx
249 ; X32-SSE-NEXT: addl $32, %edx
250 ; X32-SSE-NEXT: testl %eax, %eax
251 ; X32-SSE-NEXT: cmovnel %ecx, %edx
252 ; X32-SSE-NEXT: movd %edx, %xmm0
253 ; X32-SSE-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
254 ; X32-SSE-NEXT: retl
263 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
264 ; SSE2-NEXT: movd %xmm1, %eax
265 ; SSE2-NEXT: bsrl %eax, %eax
266 ; SSE2-NEXT: movl $63, %ecx
267 ; SSE2-NEXT: cmovel %ecx, %eax
268 ; SSE2-NEXT: xorl $31, %eax
269 ; SSE2-NEXT: movd %eax, %xmm1
270 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
271 ; SSE2-NEXT: movd %xmm2, %eax
272 ; SSE2-NEXT: bsrl %eax, %eax
273 ; SSE2-NEXT: cmovel %ecx, %eax
274 ; SSE2-NEXT: xorl $31, %eax
275 ; SSE2-NEXT: movd %eax, %xmm2
276 ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
277 ; SSE2-NEXT: movd %xmm0, %eax
278 ; SSE2-NEXT: bsrl %eax, %eax
279 ; SSE2-NEXT: cmovel %ecx, %eax
280 ; SSE2-NEXT: xorl $31, %eax
281 ; SSE2-NEXT: movd %eax, %xmm1
282 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
283 ; SSE2-NEXT: movd %xmm0, %eax
284 ; SSE2-NEXT: bsrl %eax, %eax
285 ; SSE2-NEXT: cmovel %ecx, %eax
286 ; SSE2-NEXT: xorl $31, %eax
287 ; SSE2-NEXT: movd %eax, %xmm0
288 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
289 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
290 ; SSE2-NEXT: movdqa %xmm1, %xmm0
291 ; SSE2-NEXT: retq
295 ; SSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
296 ; SSE3-NEXT: movd %xmm1, %eax
297 ; SSE3-NEXT: bsrl %eax, %eax
298 ; SSE3-NEXT: movl $63, %ecx
299 ; SSE3-NEXT: cmovel %ecx, %eax
300 ; SSE3-NEXT: xorl $31, %eax
301 ; SSE3-NEXT: movd %eax, %xmm1
302 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
303 ; SSE3-NEXT: movd %xmm2, %eax
304 ; SSE3-NEXT: bsrl %eax, %eax
305 ; SSE3-NEXT: cmovel %ecx, %eax
306 ; SSE3-NEXT: xorl $31, %eax
307 ; SSE3-NEXT: movd %eax, %xmm2
308 ; SSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
309 ; SSE3-NEXT: movd %xmm0, %eax
310 ; SSE3-NEXT: bsrl %eax, %eax
311 ; SSE3-NEXT: cmovel %ecx, %eax
312 ; SSE3-NEXT: xorl $31, %eax
313 ; SSE3-NEXT: movd %eax, %xmm1
314 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
315 ; SSE3-NEXT: movd %xmm0, %eax
316 ; SSE3-NEXT: bsrl %eax, %eax
317 ; SSE3-NEXT: cmovel %ecx, %eax
318 ; SSE3-NEXT: xorl $31, %eax
319 ; SSE3-NEXT: movd %eax, %xmm0
320 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
321 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
322 ; SSE3-NEXT: movdqa %xmm1, %xmm0
323 ; SSE3-NEXT: retq
327 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
328 ; SSSE3-NEXT: movd %xmm1, %eax
329 ; SSSE3-NEXT: bsrl %eax, %eax
330 ; SSSE3-NEXT: movl $63, %ecx
331 ; SSSE3-NEXT: cmovel %ecx, %eax
332 ; SSSE3-NEXT: xorl $31, %eax
333 ; SSSE3-NEXT: movd %eax, %xmm1
334 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
335 ; SSSE3-NEXT: movd %xmm2, %eax
336 ; SSSE3-NEXT: bsrl %eax, %eax
337 ; SSSE3-NEXT: cmovel %ecx, %eax
338 ; SSSE3-NEXT: xorl $31, %eax
339 ; SSSE3-NEXT: movd %eax, %xmm2
340 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
341 ; SSSE3-NEXT: movd %xmm0, %eax
342 ; SSSE3-NEXT: bsrl %eax, %eax
343 ; SSSE3-NEXT: cmovel %ecx, %eax
344 ; SSSE3-NEXT: xorl $31, %eax
345 ; SSSE3-NEXT: movd %eax, %xmm1
346 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
347 ; SSSE3-NEXT: movd %xmm0, %eax
348 ; SSSE3-NEXT: bsrl %eax, %eax
349 ; SSSE3-NEXT: cmovel %ecx, %eax
350 ; SSSE3-NEXT: xorl $31, %eax
351 ; SSSE3-NEXT: movd %eax, %xmm0
352 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
353 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
354 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
355 ; SSSE3-NEXT: retq
359 ; SSE41-NEXT: pextrd $1, %xmm0, %eax
360 ; SSE41-NEXT: bsrl %eax, %eax
361 ; SSE41-NEXT: movl $63, %ecx
362 ; SSE41-NEXT: cmovel %ecx, %eax
363 ; SSE41-NEXT: xorl $31, %eax
364 ; SSE41-NEXT: movd %xmm0, %edx
365 ; SSE41-NEXT: bsrl %edx, %edx
366 ; SSE41-NEXT: cmovel %ecx, %edx
367 ; SSE41-NEXT: xorl $31, %edx
368 ; SSE41-NEXT: movd %edx, %xmm1
369 ; SSE41-NEXT: pinsrd $1, %eax, %xmm1
370 ; SSE41-NEXT: pextrd $2, %xmm0, %eax
371 ; SSE41-NEXT: bsrl %eax, %eax
372 ; SSE41-NEXT: cmovel %ecx, %eax
373 ; SSE41-NEXT: xorl $31, %eax
374 ; SSE41-NEXT: pinsrd $2, %eax, %xmm1
375 ; SSE41-NEXT: pextrd $3, %xmm0, %eax
376 ; SSE41-NEXT: bsrl %eax, %eax
377 ; SSE41-NEXT: cmovel %ecx, %eax
378 ; SSE41-NEXT: xorl $31, %eax
379 ; SSE41-NEXT: pinsrd $3, %eax, %xmm1
380 ; SSE41-NEXT: movdqa %xmm1, %xmm0
381 ; SSE41-NEXT: retq
385 ; AVX-NEXT: vpextrd $1, %xmm0, %eax
386 ; AVX-NEXT: bsrl %eax, %eax
387 ; AVX-NEXT: movl $63, %ecx
388 ; AVX-NEXT: cmovel %ecx, %eax
389 ; AVX-NEXT: xorl $31, %eax
390 ; AVX-NEXT: vmovd %xmm0, %edx
391 ; AVX-NEXT: bsrl %edx, %edx
392 ; AVX-NEXT: cmovel %ecx, %edx
393 ; AVX-NEXT: xorl $31, %edx
394 ; AVX-NEXT: vmovd %edx, %xmm1
395 ; AVX-NEXT: vpinsrd $1, %eax, %xmm1, %xmm1
396 ; AVX-NEXT: vpextrd $2, %xmm0, %eax
397 ; AVX-NEXT: bsrl %eax, %eax
398 ; AVX-NEXT: cmovel %ecx, %eax
399 ; AVX-NEXT: xorl $31, %eax
400 ; AVX-NEXT: vpinsrd $2, %eax, %xmm1, %xmm1
401 ; AVX-NEXT: vpextrd $3, %xmm0, %eax
402 ; AVX-NEXT: bsrl %eax, %eax
403 ; AVX-NEXT: cmovel %ecx, %eax
404 ; AVX-NEXT: xorl $31, %eax
405 ; AVX-NEXT: vpinsrd $3, %eax, %xmm1, %xmm0
406 ; AVX-NEXT: retq
410 ; AVX512VLCD-NEXT: vplzcntd %xmm0, %xmm0
411 ; AVX512VLCD-NEXT: retq
415 ; AVX512CD-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def>
416 ; AVX512CD-NEXT: vplzcntd %zmm0, %zmm0
417 ; AVX512CD-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<kill>
418 ; AVX512CD-NEXT: retq
422 ; X32-SSE-NEXT: pextrd $1, %xmm0, %eax
423 ; X32-SSE-NEXT: bsrl %eax, %eax
424 ; X32-SSE-NEXT: movl $63, %ecx
425 ; X32-SSE-NEXT: cmovel %ecx, %eax
426 ; X32-SSE-NEXT: xorl $31, %eax
427 ; X32-SSE-NEXT: movd %xmm0, %edx
428 ; X32-SSE-NEXT: bsrl %edx, %edx
429 ; X32-SSE-NEXT: cmovel %ecx, %edx
430 ; X32-SSE-NEXT: xorl $31, %edx
431 ; X32-SSE-NEXT: movd %edx, %xmm1
432 ; X32-SSE-NEXT: pinsrd $1, %eax, %xmm1
433 ; X32-SSE-NEXT: pextrd $2, %xmm0, %eax
434 ; X32-SSE-NEXT: bsrl %eax, %eax
435 ; X32-SSE-NEXT: cmovel %ecx, %eax
436 ; X32-SSE-NEXT: xorl $31, %eax
437 ; X32-SSE-NEXT: pinsrd $2, %eax, %xmm1
438 ; X32-SSE-NEXT: pextrd $3, %xmm0, %eax
439 ; X32-SSE-NEXT: bsrl %eax, %eax
440 ; X32-SSE-NEXT: cmovel %ecx, %eax
441 ; X32-SSE-NEXT: xorl $31, %eax
442 ; X32-SSE-NEXT: pinsrd $3, %eax, %xmm1
443 ; X32-SSE-NEXT: movdqa %xmm1, %xmm0
444 ; X32-SSE-NEXT: retl
453 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
454 ; SSE2-NEXT: movd %xmm1, %eax
455 ; SSE2-NEXT: bsrl %eax, %eax
456 ; SSE2-NEXT: xorl $31, %eax
457 ; SSE2-NEXT: movd %eax, %xmm1
458 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
459 ; SSE2-NEXT: movd %xmm2, %eax
460 ; SSE2-NEXT: bsrl %eax, %eax
461 ; SSE2-NEXT
462 ; SSE2-NEXT: movd %eax, %xmm2
463 ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
464 ; SSE2-NEXT: movd %xmm0, %eax
465 ; SSE2-NEXT: bsrl %eax, %eax
466 ; SSE2-NEXT: xorl $31, %eax
467 ; SSE2-NEXT: movd %eax, %xmm1
468 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
469 ; SSE2-NEXT: movd %xmm0, %eax
470 ; SSE2-NEXT: bsrl %eax, %eax
471 ; SSE2-NEXT: xorl $31, %eax
472 ; SSE2-NEXT: movd %eax, %xmm0
473 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
474 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
475 ; SSE2-NEXT: movdqa %xmm1, %xmm0
476 ; SSE2-NEXT: retq
480 ; SSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
481 ; SSE3-NEXT: movd %xmm1, %eax
482 ; SSE3-NEXT: bsrl %eax, %eax
483 ; SSE3-NEXT: xorl $31, %eax
484 ; SSE3-NEXT: movd %eax, %xmm1
485 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
486 ; SSE3-NEXT: movd %xmm2, %eax
487 ; SSE3-NEXT: bsrl %eax, %eax
488 ; SSE3-NEXT: xorl $31, %eax
489 ; SSE3-NEXT: movd %eax, %xmm2
490 ; SSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
491 ; SSE3-NEXT: movd %xmm0, %eax
492 ; SSE3-NEXT: bsrl %eax, %eax
493 ; SSE3-NEXT: xorl $31, %eax
494 ; SSE3-NEXT: movd %eax, %xmm1
495 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
496 ; SSE3-NEXT: movd %xmm0, %eax
497 ; SSE3-NEXT: bsrl %eax, %eax
498 ; SSE3-NEXT: xorl $31, %eax
499 ; SSE3-NEXT: movd %eax, %xmm0
500 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
501 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
502 ; SSE3-NEXT: movdqa %xmm1, %xmm0
503 ; SSE3-NEXT: retq
507 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
508 ; SSSE3-NEXT: movd %xmm1, %eax
509 ; SSSE3-NEXT: bsrl %eax, %eax
510 ; SSSE3-NEXT: xorl $31, %eax
511 ; SSSE3-NEXT: movd %eax, %xmm1
512 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
513 ; SSSE3-NEXT: movd %xmm2, %eax
514 ; SSSE3-NEXT: bsrl %eax, %eax
515 ; SSSE3-NEXT: xorl $31, %eax
516 ; SSSE3-NEXT: movd %eax, %xmm2
517 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
518 ; SSSE3-NEXT: movd %xmm0, %eax
519 ; SSSE3-NEXT: bsrl %eax, %eax
520 ; SSSE3-NEXT: xorl $31, %eax
521 ; SSSE3-NEXT: movd %eax, %xmm1
522 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
523 ; SSSE3-NEXT: movd %xmm0, %eax
524 ; SSSE3-NEXT: bsrl %eax, %eax
525 ; SSSE3-NEXT: xorl $31, %eax
526 ; SSSE3-NEXT: movd %eax, %xmm0
527 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
528 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
529 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
530 ; SSSE3-NEXT: retq
534 ; SSE41-NEXT: pextrd $1, %xmm0, %eax
535 ; SSE41-NEXT: bsrl %eax, %eax
536 ; SSE41-NEXT: xorl $31, %eax
537 ; SSE41-NEXT: movd %xmm0, %ecx
538 ; SSE41-NEXT: bsrl %ecx, %ecx
539 ; SSE41-NEXT: xorl $31, %ecx
540 ; SSE41-NEXT: movd %ecx, %xmm1
541 ; SSE41-NEXT: pinsrd $1, %eax, %xmm1
542 ; SSE41-NEXT: pextrd $2, %xmm0, %eax
543 ; SSE41-NEXT: bsrl %eax, %eax
544 ; SSE41-NEXT: xorl $31, %eax
545 ; SSE41-NEXT: pinsrd $2, %eax, %xmm1
546 ; SSE41-NEXT: pextrd $3, %xmm0, %eax
547 ; SSE41-NEXT: bsrl %eax, %eax
548 ; SSE41-NEXT: xorl $31, %eax
549 ; SSE41-NEXT: pinsrd $3, %eax, %xmm1
550 ; SSE41-NEXT: movdqa %xmm1, %xmm0
551 ; SSE41-NEXT: retq
555 ; AVX-NEXT: vpextrd $1, %xmm0, %eax
556 ; AVX-NEXT: bsrl %eax, %eax
557 ; AVX-NEXT: xorl $31, %eax
558 ; AVX-NEXT: vmovd %xmm0, %ecx
559 ; AVX-NEXT: bsrl %ecx, %ecx
560 ; AVX-NEXT: xorl $31, %ecx
561 ; AVX-NEXT: vmovd %ecx, %xmm1
562 ; AVX-NEXT: vpinsrd $1, %eax, %xmm1, %xmm1
563 ; AVX-NEXT: vpextrd $2, %xmm0, %eax
564 ; AVX-NEXT: bsrl %eax, %eax
565 ; AVX-NEXT: xorl $31, %eax
566 ; AVX-NEXT: vpinsrd $2, %eax, %xmm1, %xmm1
567 ; AVX-NEXT: vpextrd $3, %xmm0, %eax
568 ; AVX-NEXT: bsrl %eax, %eax
569 ; AVX-NEXT: xorl $31, %eax
570 ; AVX-NEXT: vpinsrd $3, %eax, %xmm1, %xmm0
571 ; AVX-NEXT: retq
575 ; AVX512VLCD-NEXT: vplzcntd %xmm0, %xmm0
576 ; AVX512VLCD-NEXT: retq
580 ; AVX512CD-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<def>
581 ; AVX512CD-NEXT: vplzcntd %zmm0, %zmm0
582 ; AVX512CD-NEXT: ## kill: %XMM0<def> %XMM0<kill> %ZMM0<kill>
583 ; AVX512CD-NEXT: retq
587 ; X32-SSE-NEXT: pextrd $1, %xmm0, %eax
588 ; X32-SSE-NEXT: bsrl %eax, %eax
589 ; X32-SSE-NEXT: xorl $31, %eax
590 ; X32-SSE-NEXT: movd %xmm0, %ecx
591 ; X32-SSE-NEXT: bsrl %ecx, %ecx
592 ; X32-SSE-NEXT: xorl $31, %ecx
593 ; X32-SSE-NEXT: movd %ecx, %xmm1
594 ; X32-SSE-NEXT: pinsrd $1, %eax, %xmm1
595 ; X32-SSE-NEXT: pextrd $2, %xmm0, %eax
596 ; X32-SSE-NEXT: bsrl %eax, %eax
597 ; X32-SSE-NEXT: xorl $31, %eax
598 ; X32-SSE-NEXT: pinsrd $2, %eax, %xmm1
599 ; X32-SSE-NEXT: pextrd $3, %xmm0, %eax
600 ; X32-SSE-NEXT: bsrl %eax, %eax
601 ; X32-SSE-NEXT: xorl $31, %eax
602 ; X32-SSE-NEXT: pinsrd $3, %eax, %xmm1
603 ; X32-SSE-NEXT: movdqa %xmm1, %xmm0
604 ; X32-SSE-NEXT: retl
613 ; SSE2-NEXT: pextrw $7, %xmm0, %eax
614 ; SSE2-NEXT: bsrw %ax, %cx
615 ; SSE2-NEXT: movw $31, %ax
616 ; SSE2-NEXT: cmovew %ax, %cx
617 ; SSE2-NEXT: xorl $15, %ecx
618 ; SSE2-NEXT: movd %ecx, %xmm1
619 ; SSE2-NEXT: pextrw $3, %xmm0, %ecx
620 ; SSE2-NEXT: bsrw %cx, %cx
621 ; SSE2-NEXT: cmovew %ax, %cx
622 ; SSE2-NEXT: xorl $15, %ecx
623 ; SSE2-NEXT: movd %ecx, %xmm2
624 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
625 ; SSE2-NEXT: pextrw $5, %xmm0, %ecx
626 ; SSE2-NEXT: bsrw %cx, %cx
627 ; SSE2-NEXT: cmovew %ax, %cx
628 ; SSE2-NEXT: xorl $15, %ecx
629 ; SSE2-NEXT: movd %ecx, %xmm3
630 ; SSE2-NEXT: pextrw $1, %xmm0, %ecx
631 ; SSE2-NEXT: bsrw %cx, %cx
632 ; SSE2-NEXT: cmovew %ax, %cx
633 ; SSE2-NEXT: xorl $15, %ecx
634 ; SSE2-NEXT: movd %ecx, %xmm1
635 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]
636 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
637 ; SSE2-NEXT: pextrw $6, %xmm0, %ecx
638 ; SSE2-NEXT: bsrw %cx, %cx
639 ; SSE2-NEXT: cmovew %ax, %cx
640 ; SSE2-NEXT: xorl $15, %ecx
641 ; SSE2-NEXT: movd %ecx, %xmm2
642 ; SSE2-NEXT: pextrw $2, %xmm0, %ecx
643 ; SSE2-NEXT: bsrw %cx, %cx
644 ; SSE2-NEXT: cmovew %ax, %cx
645 ; SSE2-NEXT: xorl $15, %ecx
646 ; SSE2-NEXT: movd %ecx, %xmm3
647 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
648 ; SSE2-NEXT: pextrw $4, %xmm0, %ecx
649 ; SSE2-NEXT: bsrw %cx, %cx
650 ; SSE2-NEXT: cmovew %ax, %cx
651 ; SSE2-NEXT: xorl $15, %ecx
652 ; SSE2-NEXT: movd %ecx, %xmm2
653 ; SSE2-NEXT: movd %xmm0, %ecx
654 ; SSE2-NEXT: bsrw %cx, %cx
655 ; SSE2-NEXT: cmovew %ax, %cx
656 ; SSE2-NEXT: xorl $15, %ecx
657 ; SSE2-NEXT: movd %ecx, %xmm0
658 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
659 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
660 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
661 ; SSE2-NEXT: retq
665 ; SSE3-NEXT: pextrw $7, %xmm0, %eax
666 ; SSE3-NEXT: bsrw %ax, %cx
667 ; SSE3-NEXT: movw $31, %ax
668 ; SSE3-NEXT: cmovew %ax, %cx
669 ; SSE3-NEXT: xorl $15, %ecx
670 ; SSE3-NEXT: movd %ecx, %xmm1
671 ; SSE3-NEXT: pextrw $3, %xmm0, %ecx
672 ; SSE3-NEXT: bsrw %cx, %cx
673 ; SSE3-NEXT: cmovew %ax, %cx
674 ; SSE3-NEXT: xorl $15, %ecx
675 ; SSE3-NEXT: movd %ecx, %xmm2
676 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
677 ; SSE3-NEXT: pextrw $5, %xmm0, %ecx
678 ; SSE3-NEXT: bsrw %cx, %cx
679 ; SSE3-NEXT: cmovew %ax, %cx
680 ; SSE3-NEXT: xorl $15, %ecx
681 ; SSE3-NEXT: movd %ecx, %xmm3
682 ; SSE3-NEXT: pextrw $1, %xmm0, %ecx
683 ; SSE3-NEXT: bsrw %cx, %cx
684 ; SSE3-NEXT: cmovew %ax, %cx
685 ; SSE3-NEXT: xorl $15, %ecx
686 ; SSE3-NEXT: movd %ecx, %xmm1
687 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]
688 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
689 ; SSE3-NEXT: pextrw $6, %xmm0, %ecx
690 ; SSE3-NEXT: bsrw %cx, %cx
691 ; SSE3-NEXT: cmovew %ax, %cx
692 ; SSE3-NEXT: xorl $15, %ecx
693 ; SSE3-NEXT: movd %ecx, %xmm2
694 ; SSE3-NEXT: pextrw $2, %xmm0, %ecx
695 ; SSE3-NEXT: bsrw %cx, %cx
696 ; SSE3-NEXT: cmovew %ax, %cx
697 ; SSE3-NEXT: xorl $15, %ecx
698 ; SSE3-NEXT: movd %ecx, %xmm3
699 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
700 ; SSE3-NEXT: pextrw $4, %xmm0, %ecx
701 ; SSE3-NEXT: bsrw %cx, %cx
702 ; SSE3-NEXT: cmovew %ax, %cx
703 ; SSE3-NEXT: xorl $15, %ecx
704 ; SSE3-NEXT: movd %ecx, %xmm2
705 ; SSE3-NEXT: movd %xmm0, %ecx
706 ; SSE3-NEXT: bsrw %cx, %cx
707 ; SSE3-NEXT: cmovew %ax, %cx
708 ; SSE3-NEXT: xorl $15, %ecx
709 ; SSE3-NEXT: movd %ecx, %xmm0
710 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
711 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
712 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
713 ; SSE3-NEXT: retq
717 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
718 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
719 ; SSSE3-NEXT: pand %xmm2, %xmm1
720 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
721 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
722 ; SSSE3-NEXT: pshufb %xmm1, %xmm4
723 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
724 ; SSSE3-NEXT: psrlw $4, %xmm1
725 ; SSSE3-NEXT: pand %xmm2, %xmm1
726 ; SSSE3-NEXT: pxor %xmm2, %xmm2
727 ; SSSE3-NEXT: pshufb %xmm1, %xmm3
728 ; SSSE3-NEXT: pcmpeqb %xmm2, %xmm1
729 ; SSSE3-NEXT: pand %xmm4, %xmm1
730 ; SSSE3-NEXT: paddb %xmm3, %xmm1
731 ; SSSE3-NEXT: pcmpeqb %xmm2, %xmm0
732 ; SSSE3-NEXT: psrlw $8, %xmm0
733 ; SSSE3-NEXT: pand %xmm1, %xmm0
734 ; SSSE3-NEXT: psrlw $8, %xmm1
735 ; SSSE3-NEXT: paddw %xmm0, %xmm1
736 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
737 ; SSSE3-NEXT: retq
741 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
742 ; SSE41-NEXT: movdqa %xmm0, %xmm1
743 ; SSE41-NEXT: pand %xmm2, %xmm1
744 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
745 ; SSE41-NEXT: movdqa %xmm3, %xmm4
746 ; SSE41-NEXT: pshufb %xmm1, %xmm4
747 ; SSE41-NEXT: movdqa %xmm0, %xmm1
748 ; SSE41-NEXT: psrlw $4, %xmm1
749 ; SSE41-NEXT: pand %xmm2, %xmm1
750 ; SSE41-NEXT: pxor %xmm2, %xmm2
751 ; SSE41-NEXT: pshufb %xmm1, %xmm3
752 ; SSE41-NEXT: pcmpeqb %xmm2, %xmm1
753 ; SSE41-NEXT: pand %xmm4, %xmm1
754 ; SSE41-NEXT: paddb %xmm3, %xmm1
755 ; SSE41-NEXT: pcmpeqb %xmm2, %xmm0
756 ; SSE41-NEXT: psrlw $8, %xmm0
757 ; SSE41-NEXT: pand %xmm1, %xmm0
758 ; SSE41-NEXT: psrlw $8, %xmm1
759 ; SSE41-NEXT: paddw %xmm0, %xmm1
760 ; SSE41-NEXT: movdqa %xmm1, %xmm0
761 ; SSE41-NEXT: retq
765 ; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
766 ; AVX-NEXT: vpand %xmm1, %xmm0, %xmm2
767 ; AVX-NEXT: vmovdqa {{.*#+}} xmm3 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
768 ; AVX-NEXT: vpshufb %xmm2, %xmm3, %xmm2
769 ; AVX-NEXT: vpsrlw $4, %xmm0, %xmm4
770 ; AVX-NEXT: vpand %xmm1, %xmm4, %xmm1
771 ; AVX-NEXT: vpxor %xmm4, %xmm4, %xmm4
772 ; AVX-NEXT: vpcmpeqb %xmm4, %xmm1, %xmm5
773 ; AVX-NEXT: vpand %xmm5, %xmm2, %xmm2
774 ; AVX-NEXT: vpshufb %xmm1, %xmm3, %xmm1
775 ; AVX-NEXT: vpaddb %xmm1, %xmm2, %xmm1
776 ; AVX-NEXT: vpcmpeqb %xmm4, %xmm0, %xmm0
777 ; AVX-NEXT: vpsrlw $8, %xmm0, %xmm0
778 ; AVX-NEXT: vpand %xmm0, %xmm1, %xmm0
779 ; AVX-NEXT: vpsrlw $8, %xmm1, %xmm1
780 ; AVX-NEXT: vpaddw %xmm0, %xmm1, %xmm0
781 ; AVX-NEXT: retq
785 ; AVX512VLCD-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
786 ; AVX512VLCD-NEXT: vplzcntd %ymm0, %ymm0
787 ; AVX512VLCD-NEXT: vpmovdw %ymm0, %xmm0
788 ; AVX512VLCD-NEXT: vpsubw {{.*}}(%rip), %xmm0, %xmm0
789 ; AVX512VLCD-NEXT: retq
793 ; AVX512CD-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
794 ; AVX512CD-NEXT: vplzcntd %zmm0, %zmm0
795 ; AVX512CD-NEXT: vpmovdw %zmm0, %ymm0
796 ; AVX512CD-NEXT: vpsubw {{.*}}(%rip), %xmm0, %xmm0
797 ; AVX512CD-NEXT: retq
801 ; X32-SSE-NEXT: movdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
802 ; X32-SSE-NEXT: movdqa %xmm0, %xmm1
803 ; X32-SSE-NEXT: pand %xmm2, %xmm1
804 ; X32-SSE-NEXT: movdqa {{.*#+}} xmm3 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
805 ; X32-SSE-NEXT: movdqa %xmm3, %xmm4
806 ; X32-SSE-NEXT: pshufb %xmm1, %xmm4
807 ; X32-SSE-NEXT: movdqa %xmm0, %xmm1
808 ; X32-SSE-NEXT: psrlw $4, %xmm1
809 ; X32-SSE-NEXT: pand %xmm2, %xmm1
810 ; X32-SSE-NEXT: pxor %xmm2, %xmm2
811 ; X32-SSE-NEXT: pshufb %xmm1, %xmm3
812 ; X32-SSE-NEXT: pcmpeqb %xmm2, %xmm1
813 ; X32-SSE-NEXT: pand %xmm4, %xmm1
814 ; X32-SSE-NEXT: paddb %xmm3, %xmm1
815 ; X32-SSE-NEXT: pcmpeqb %xmm2, %xmm0
816 ; X32-SSE-NEXT: psrlw $8, %xmm0
817 ; X32-SSE-NEXT: pand %xmm1, %xmm0
818 ; X32-SSE-NEXT: psrlw $8, %xmm1
819 ; X32-SSE-NEXT: paddw %xmm0, %xmm1
820 ; X32-SSE-NEXT: movdqa %xmm1, %xmm0
821 ; X32-SSE-NEXT: retl
829 ; SSE2-NEXT: pextrw $7, %xmm0, %eax
830 ; SSE2-NEXT: bsrw %ax, %ax
831 ; SSE2-NEXT: xorl $15, %eax
832 ; SSE2-NEXT: movd %eax, %xmm1
833 ; SSE2-NEXT: pextrw $3, %xmm0, %eax
834 ; SSE2-NEXT: bsrw %ax, %ax
835 ; SSE2-NEXT: xorl $15, %eax
836 ; SSE2-NEXT: movd %eax, %xmm2
837 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
838 ; SSE2-NEXT: pextrw $5, %xmm0, %eax
839 ; SSE2-NEXT: bsrw %ax, %ax
840 ; SSE2-NEXT: xorl $15, %eax
841 ; SSE2-NEXT: movd %eax, %xmm3
842 ; SSE2-NEXT: pextrw $1, %xmm0, %eax
843 ; SSE2-NEXT: bsrw %ax, %ax
844 ; SSE2-NEXT: xorl $15, %eax
845 ; SSE2-NEXT: movd %eax, %xmm1
846 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]
847 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
848 ; SSE2-NEXT: pextrw $6, %xmm0, %eax
849 ; SSE2-NEXT: bsrw %ax, %ax
850 ; SSE2-NEXT: xorl $15, %eax
851 ; SSE2-NEXT: movd %eax, %xmm2
852 ; SSE2-NEXT: pextrw $2, %xmm0, %eax
853 ; SSE2-NEXT: bsrw %ax, %ax
854 ; SSE2-NEXT: xorl $15, %eax
855 ; SSE2-NEXT: movd %eax, %xmm3
856 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
857 ; SSE2-NEXT: pextrw $4, %xmm0, %eax
858 ; SSE2-NEXT: bsrw %ax, %ax
859 ; SSE2-NEXT: xorl $15, %eax
860 ; SSE2-NEXT: movd %eax, %xmm2
861 ; SSE2-NEXT: movd %xmm0, %eax
862 ; SSE2-NEXT: bsrw %ax, %ax
863 ; SSE2-NEXT: xorl $15, %eax
864 ; SSE2-NEXT: movd %eax, %xmm0
865 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
866 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
867 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
868 ; SSE2-NEXT: retq
872 ; SSE3-NEXT: pextrw $7, %xmm0, %eax
873 ; SSE3-NEXT: bsrw %ax, %ax
874 ; SSE3-NEXT: xorl $15, %eax
875 ; SSE3-NEXT: movd %eax, %xmm1
876 ; SSE3-NEXT: pextrw $3, %xmm0, %eax
877 ; SSE3-NEXT: bsrw %ax, %ax
878 ; SSE3-NEXT: xorl $15, %eax
879 ; SSE3-NEXT: movd %eax, %xmm2
880 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3]
881 ; SSE3-NEXT: pextrw $5, %xmm0, %eax
882 ; SSE3-NEXT: bsrw %ax, %ax
883 ; SSE3-NEXT: xorl $15, %eax
884 ; SSE3-NEXT: movd %eax, %xmm3
885 ; SSE3-NEXT
886 ; SSE3-NEXT: bsrw %ax, %ax
887 ; SSE3-NEXT: xorl $15, %eax
888 ; SSE3-NEXT: movd %eax, %xmm1
889 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3]
890 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
891 ; SSE3-NEXT: pextrw $6, %xmm0, %eax
892 ; SSE3-NEXT: bsrw %ax, %ax
893 ; SSE3-NEXT: xorl $15, %eax
894 ; SSE3-NEXT: movd %eax, %xmm2
895 ; SSE3-NEXT: pextrw $2, %xmm0, %eax
896 ; SSE3-NEXT: bsrw %ax, %ax
897 ; SSE3-NEXT: xorl $15, %eax
898 ; SSE3-NEXT: movd %eax, %xmm3
899 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
900 ; SSE3-NEXT: pextrw $4, %xmm0, %eax
901 ; SSE3-NEXT: bsrw %ax, %ax
902 ; SSE3-NEXT: xorl $15, %eax
903 ; SSE3-NEXT: movd %eax, %xmm2
904 ; SSE3-NEXT: movd %xmm0, %eax
905 ; SSE3-NEXT: bsrw %ax, %ax
906 ; SSE3-NEXT: xorl $15, %eax
907 ; SSE3-NEXT: movd %eax, %xmm0
908 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
909 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3]
910 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
911 ; SSE3-NEXT: retq
915 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
916 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
917 ; SSSE3-NEXT: pand %xmm2, %xmm1
918 ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
919 ; SSSE3-NEXT: movdqa %xmm3, %xmm4
920 ; SSSE3-NEXT: pshufb %xmm1, %xmm4
921 ; SSSE3-NEXT: movdqa %xmm0, %xmm1
922 ; SSSE3-NEXT: psrlw $4, %xmm1
923 ; SSSE3-NEXT: pand %xmm2, %xmm1
924 ; SSSE3-NEXT: pxor %xmm2, %xmm2
925 ; SSSE3-NEXT: pshufb %xmm1, %xmm3
926 ; SSSE3-NEXT: pcmpeqb %xmm2, %xmm1
927 ; SSSE3-NEXT: pand %xmm4, %xmm1
928 ; SSSE3-NEXT: paddb %xmm3, %xmm1
929 ; SSSE3-NEXT: pcmpeqb %xmm2, %xmm0
930 ; SSSE3-NEXT: psrlw $8, %xmm0
931 ; SSSE3-NEXT: pand %xmm1, %xmm0
932 ; SSSE3-NEXT: psrlw $8, %xmm1
933 ; SSSE3-NEXT: paddw %xmm0, %xmm1
934 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
935 ; SSSE3-NEXT: retq
939 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
940 ; SSE41-NEXT: movdqa %xmm0, %xmm1
941 ; SSE41-NEXT: pand %xmm2, %xmm1
942 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
943 ; SSE41-NEXT: movdqa %xmm3, %xmm4
944 ; SSE41-NEXT: pshufb %xmm1, %xmm4
945 ; SSE41-NEXT: movdqa %xmm0, %xmm1
946 ; SSE41-NEXT: psrlw $4, %xmm1
947 ; SSE41-NEXT: pand %xmm2, %xmm1
948 ; SSE41-NEXT: pxor %xmm2, %xmm2
949 ; SSE41-NEXT: pshufb %xmm1, %xmm3
950 ; SSE41-NEXT: pcmpeqb %xmm2, %xmm1
951 ; SSE41-NEXT: pand %xmm4, %xmm1
952 ; SSE41-NEXT: paddb %xmm3, %xmm1
953 ; SSE41-NEXT: pcmpeqb %xmm2, %xmm0
954 ; SSE41-NEXT: psrlw $8, %xmm0
955 ; SSE41-NEXT: pand %xmm1, %xmm0
956 ; SSE41-NEXT: psrlw $8, %xmm1
957 ; SSE41-NEXT: paddw %xmm0, %xmm1
958 ; SSE41-NEXT: movdqa %xmm1, %xmm0
959 ; SSE41-NEXT: retq
963 ; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
964 ; AVX-NEXT: vpand %xmm1, %xmm0, %xmm2
965 ; AVX-NEXT: vmovdqa {{.*#+}} xmm3 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
966 ; AVX-NEXT: vpshufb %xmm2, %xmm3, %xmm2
967 ; AVX-NEXT: vpsrlw $4, %xmm0, %xmm4
968 ; AVX-NEXT: vpand %xmm1, %xmm4, %xmm1
969 ; AVX-NEXT: vpxor %xmm4, %xmm4, %xmm4
970 ; AVX-NEXT: vpcmpeqb %xmm4, %xmm1, %xmm5
971 ; AVX-NEXT: vpand %xmm5, %xmm2, %xmm2
972 ; AVX-NEXT: vpshufb %xmm1, %xmm3, %xmm1
973 ; AVX-NEXT: vpaddb %xmm1, %xmm2, %xmm1
974 ; AVX-NEXT: vpcmpeqb %xmm4, %xmm0, %xmm0
975 ; AVX-NEXT: vpsrlw $8, %xmm0, %xmm0
976 ; AVX-NEXT: vpand %xmm0, %xmm1, %xmm0
977 ; AVX-NEXT: vpsrlw $8, %xmm1, %xmm1
978 ; AVX-NEXT: vpaddw %xmm0, %xmm1, %xmm0
979 ; AVX-NEXT: retq
983 ; AVX512VLCD-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
984 ; AVX512VLCD-NEXT: vplzcntd %ymm0, %ymm0
985 ; AVX512VLCD-NEXT: vpmovdw %ymm0, %xmm0
986 ; AVX512VLCD-NEXT: vpsubw {{.*}}(%rip), %xmm0, %xmm0
987 ; AVX512VLCD-NEXT: retq
991 ; AVX512CD-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
992 ; AVX512CD-NEXT: vplzcntd %zmm0, %zmm0
993 ; AVX512CD-NEXT: vpmovdw %zmm0, %ymm0
994 ; AVX512CD-NEXT: vpsubw {{.*}}(%rip), %xmm0, %xmm0
995 ; AVX512CD-NEXT: retq
999 ; X32-SSE-NEXT: movdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
1000 ; X32-SSE-NEXT: movdqa %xmm0, %xmm1
1001 ; X32-SSE-NEXT: pand %xmm2, %xmm1
1002 ; X32-SSE-NEXT: movdqa {{.*#+}} xmm3 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
1003 ; X32-SSE-NEXT: movdqa %xmm3, %xmm4
1004 ; X32-SSE-NEXT: pshufb %xmm1, %xmm4
1005 ; X32-SSE-NEXT: movdqa %xmm0, %xmm1
1006 ; X32-SSE-NEXT: psrlw $4, %xmm1
1007 ; X32-SSE-NEXT: pand %xmm2, %xmm1
1008 ; X32-SSE-NEXT: pxor %xmm2, %xmm2
1009 ; X32-SSE-NEXT: pshufb %xmm1, %xmm3
1010 ; X32-SSE-NEXT: pcmpeqb %xmm2, %xmm1
1011 ; X32-SSE-NEXT: pand %xmm4, %xmm1
1012 ; X32-SSE-NEXT: paddb %xmm3, %xmm1
1013 ; X32-SSE-NEXT: pcmpeqb %xmm2, %xmm0
1014 ; X32-SSE-NEXT: psrlw $8, %xmm0
1015 ; X32-SSE-NEXT: pand %xmm1, %xmm0
1016 ; X32-SSE-NEXT: psrlw $8, %xmm1
1017 ; X32-SSE-NEXT: paddw %xmm0, %xmm1
1018 ; X32-SSE-NEXT: movdqa %xmm1, %xmm0
1019 ; X32-SSE-NEXT: retl
1027 ; SSE2-NEXT: pushq %rbp
1028 ; SSE2-NEXT: pushq %rbx
1029 ; SSE2-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1030 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1031 ; SSE2-NEXT: bsrl %eax, %ecx
1032 ; SSE2-NEXT: movl $15, %eax
1033 ; SSE2-NEXT: cmovel %eax, %ecx
1034 ; SSE2-NEXT: xorl $7, %ecx
1035 ; SSE2-NEXT: movd %ecx, %xmm0
1036 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebx
1037 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %edi
1038 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r9d
1039 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1040 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r11d
1041 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1042 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r8d
1043 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1044 ; SSE2-NEXT: bsrl %ecx, %ecx
1045 ; SSE2-NEXT: cmovel %eax, %ecx
1046 ; SSE2-NEXT: xorl $7, %ecx
1047 ; SSE2-NEXT: movd %ecx, %xmm1
1048 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1049 ; SSE2-NEXT: bsrl %edx, %ecx
1050 ; SSE2-NEXT: cmovel %eax, %ecx
1051 ; SSE2-NEXT: xorl $7, %ecx
1052 ; SSE2-NEXT: movd %ecx, %xmm2
1053 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1054 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1055 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r10d
1056 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebp
1057 ; SSE2-NEXT: bsrl %ebp, %ebp
1058 ; SSE2-NEXT: cmovel %eax, %ebp
1059 ; SSE2-NEXT: xorl $7, %ebp
1060 ; SSE2-NEXT: movd %ebp, %xmm0
1061 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
1062 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1063 ; SSE2-NEXT: bsrl %edi, %edi
1064 ; SSE2-NEXT: cmovel %eax, %edi
1065 ; SSE2-NEXT: xorl $7, %edi
1066 ; SSE2-NEXT: movd %edi, %xmm1
1067 ; SSE2-NEXT: bsrl %ecx, %ecx
1068 ; SSE2-NEXT: cmovel %eax, %ecx
1069 ; SSE2-NEXT: xorl $7, %ecx
1070 ; SSE2-NEXT: movd %ecx, %xmm2
1071 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
1072 ; SSE2-NEXT: bsrl %esi, %ecx
1073 ; SSE2-NEXT: cmovel %eax, %ecx
1074 ; SSE2-NEXT: xorl $7, %ecx
1075 ; SSE2-NEXT: movd %ecx, %xmm3
1076 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1077 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1078 ; SSE2-NEXT: bsrl %ecx, %ecx
1079 ; SSE2-NEXT: cmovel %eax, %ecx
1080 ; SSE2-NEXT: xorl $7, %ecx
1081 ; SSE2-NEXT: movd %ecx, %xmm1
1082 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
1083 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1084 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1085 ; SSE2-NEXT: bsrl %ebx, %ecx
1086 ; SSE2-NEXT: cmovel %eax, %ecx
1087 ; SSE2-NEXT: xorl $7, %ecx
1088 ; SSE2-NEXT: movd %ecx, %xmm0
1089 ; SSE2-NEXT: bsrl %edx, %ecx
1090 ; SSE2-NEXT: cmovel %eax, %ecx
1091 ; SSE2-NEXT: xorl $7, %ecx
1092 ; SSE2-NEXT: movd %ecx, %xmm3
1093 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
1094 ; SSE2-NEXT: bsrl %r11d, %ecx
1095 ; SSE2-NEXT: cmovel %eax, %ecx
1096 ; SSE2-NEXT: xorl $7, %ecx
1097 ; SSE2-NEXT: movd %ecx, %xmm0
1098 ; SSE2-NEXT: bsrl %esi, %ecx
1099 ; SSE2-NEXT: cmovel %eax, %ecx
1100 ; SSE2-NEXT: xorl $7, %ecx
1101 ; SSE2-NEXT: movd %ecx, %xmm2
1102 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
1103 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
1104 ; SSE2-NEXT: bsrl %r9d, %ecx
1105 ; SSE2-NEXT: cmovel %eax, %ecx
1106 ; SSE2-NEXT: xorl $7, %ecx
1107 ; SSE2-NEXT: movd %ecx, %xmm0
1108 ; SSE2-NEXT: bsrl %r10d, %ecx
1109 ; SSE2-NEXT: cmovel %eax, %ecx
1110 ; SSE2-NEXT: xorl $7, %ecx
1111 ; SSE2-NEXT: movd %ecx, %xmm3
1112 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
1113 ; SSE2-NEXT: bsrl %r8d, %ecx
1114 ; SSE2-NEXT: cmovel %eax, %ecx
1115 ; SSE2-NEXT: xorl $7, %ecx
1116 ; SSE2-NEXT: movd %ecx, %xmm4
1117 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1118 ; SSE2-NEXT: bsrl %ecx, %ecx
1119 ; SSE2-NEXT: cmovel %eax, %ecx
1120 ; SSE2-NEXT: xorl $7, %ecx
1121 ; SSE2-NEXT: movd %ecx, %xmm0
1122 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
1123 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
1124 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
1125 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1126 ; SSE2-NEXT: popq %rbx
1127 ; SSE2-NEXT: popq %rbp
1128 ; SSE2-NEXT: retq
1132 ; SSE3-NEXT: pushq %rbp
1133 ; SSE3-NEXT: pushq %rbx
1134 ; SSE3-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1135 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1136 ; SSE3-NEXT: bsrl %eax, %ecx
1137 ; SSE3-NEXT: movl $15, %eax
1138 ; SSE3-NEXT: cmovel %eax, %ecx
1139 ; SSE3-NEXT: xorl $7, %ecx
1140 ; SSE3-NEXT: movd %ecx, %xmm0
1141 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebx
1142 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edi
1143 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r9d
1144 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1145 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r11d
1146 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1147 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r8d
1148 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1149 ; SSE3-NEXT: bsrl %ecx, %ecx
1150 ; SSE3-NEXT: cmovel %eax, %ecx
1151 ; SSE3-NEXT: xorl $7, %ecx
1152 ; SSE3-NEXT: movd %ecx, %xmm1
1153 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1154 ; SSE3-NEXT: bsrl %edx, %ecx
1155 ; SSE3-NEXT: cmovel %eax, %ecx
1156 ; SSE3-NEXT: xorl $7, %ecx
1157 ; SSE3-NEXT: movd %ecx, %xmm2
1158 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1159 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1160 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r10d
1161 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebp
1162 ; SSE3-NEXT: bsrl %ebp, %ebp
1163 ; SSE3-NEXT: cmovel %eax, %ebp
1164 ; SSE3-NEXT: xorl $7, %ebp
1165 ; SSE3-NEXT: movd %ebp, %xmm0
1166 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
1167 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1168 ; SSE3-NEXT: bsrl %edi, %edi
1169 ; SSE3-NEXT: cmovel %eax, %edi
1170 ; SSE3-NEXT: xorl $7, %edi
1171 ; SSE3-NEXT: movd %edi, %xmm1
1172 ; SSE3-NEXT: bsrl %ecx, %ecx
1173 ; SSE3-NEXT: cmovel %eax, %ecx
1174 ; SSE3-NEXT: xorl $7, %ecx
1175 ; SSE3-NEXT: movd %ecx, %xmm2
1176 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
1177 ; SSE3-NEXT: bsrl %esi, %ecx
1178 ; SSE3-NEXT: cmovel %eax, %ecx
1179 ; SSE3-NEXT: xorl $7, %ecx
1180 ; SSE3-NEXT: movd %ecx, %xmm3
1181 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1182 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1183 ; SSE3-NEXT: bsrl %ecx, %ecx
1184 ; SSE3-NEXT: cmovel %eax, %ecx
1185 ; SSE3-NEXT: xorl $7, %ecx
1186 ; SSE3-NEXT: movd %ecx, %xmm1
1187 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
1188 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1189 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1190 ; SSE3-NEXT: bsrl %ebx, %ecx
1191 ; SSE3-NEXT: cmovel %eax, %ecx
1192 ; SSE3-NEXT: xorl $7, %ecx
1193 ; SSE3-NEXT: movd %ecx, %xmm0
1194 ; SSE3-NEXT: bsrl %edx, %ecx
1195 ; SSE3-NEXT: cmovel %eax, %ecx
1196 ; SSE3-NEXT: xorl $7, %ecx
1197 ; SSE3-NEXT: movd %ecx, %xmm3
1198 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
1199 ; SSE3-NEXT: bsrl %r11d, %ecx
1200 ; SSE3-NEXT: cmovel %eax, %ecx
1201 ; SSE3-NEXT: xorl $7, %ecx
1202 ; SSE3-NEXT: movd %ecx, %xmm0
1203 ; SSE3-NEXT: bsrl %esi, %ecx
1204 ; SSE3-NEXT: cmovel %eax, %ecx
1205 ; SSE3-NEXT: xorl $7, %ecx
1206 ; SSE3-NEXT: movd %ecx, %xmm2
1207 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
1208 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
1209 ; SSE3-NEXT: bsrl %r9d, %ecx
1210 ; SSE3-NEXT: cmovel %eax, %ecx
1211 ; SSE3-NEXT: xorl $7, %ecx
1212 ; SSE3-NEXT: movd %ecx, %xmm0
1213 ; SSE3-NEXT: bsrl %r10d, %ecx
1214 ; SSE3-NEXT: cmovel %eax, %ecx
1215 ; SSE3-NEXT: xorl $7, %ecx
1216 ; SSE3-NEXT: movd %ecx, %xmm3
1217 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
1218 ; SSE3-NEXT: bsrl %r8d, %ecx
1219 ; SSE3-NEXT: cmovel %eax, %ecx
1220 ; SSE3-NEXT: xorl $7, %ecx
1221 ; SSE3-NEXT: movd %ecx, %xmm4
1222 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1223 ; SSE3-NEXT: bsrl %ecx, %ecx
1224 ; SSE3-NEXT: cmovel %eax, %ecx
1225 ; SSE3-NEXT: xorl $7, %ecx
1226 ; SSE3-NEXT: movd %ecx, %xmm0
1227 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
1228 ; SSE3-NEXT
1229 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
1230 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1231 ; SSE3-NEXT: popq %rbx
1232 ; SSE3-NEXT: popq %rbp
1233 ; SSE3-NEXT: retq
1237 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
1238 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
1239 ; SSSE3-NEXT: pand %xmm2, %xmm3
1240 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
1241 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
1242 ; SSSE3-NEXT: pshufb %xmm3, %xmm4
1243 ; SSSE3-NEXT: psrlw $4, %xmm0
1244 ; SSSE3-NEXT: pand %xmm2, %xmm0
1245 ; SSSE3-NEXT: pxor %xmm2, %xmm2
1246 ; SSSE3-NEXT: pcmpeqb %xmm0, %xmm2
1247 ; SSSE3-NEXT: pand %xmm4, %xmm2
1248 ; SSSE3-NEXT: pshufb %xmm0, %xmm1
1249 ; SSSE3-NEXT: paddb %xmm2, %xmm1
1250 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
1251 ; SSSE3-NEXT: retq
1255 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
1256 ; SSE41-NEXT: movdqa %xmm0, %xmm3
1257 ; SSE41-NEXT: pand %xmm2, %xmm3
1258 ; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
1259 ; SSE41-NEXT: movdqa %xmm1, %xmm4
1260 ; SSE41-NEXT: pshufb %xmm3, %xmm4
1261 ; SSE41-NEXT: psrlw $4, %xmm0
1262 ; SSE41-NEXT: pand %xmm2, %xmm0
1263 ; SSE41-NEXT: pxor %xmm2, %xmm2
1264 ; SSE41-NEXT: pcmpeqb %xmm0, %xmm2
1265 ; SSE41-NEXT: pand %xmm4, %xmm2
1266 ; SSE41-NEXT: pshufb %xmm0, %xmm1
1267 ; SSE41-NEXT: paddb %xmm2, %xmm1
1268 ; SSE41-NEXT: movdqa %xmm1, %xmm0
1269 ; SSE41-NEXT: retq
1273 ; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
1274 ; AVX-NEXT: vpand %xmm1, %xmm0, %xmm2
1275 ; AVX-NEXT: vmovdqa {{.*#+}} xmm3 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
1276 ; AVX-NEXT: vpshufb %xmm2, %xmm3, %xmm2
1277 ; AVX-NEXT: vpsrlw $4, %xmm0, %xmm0
1278 ; AVX-NEXT: vpand %xmm1, %xmm0, %xmm0
1279 ; AVX-NEXT: vpxor %xmm1, %xmm1, %xmm1
1280 ; AVX-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm1
1281 ; AVX-NEXT: vpand %xmm1, %xmm2, %xmm1
1282 ; AVX-NEXT: vpshufb %xmm0, %xmm3, %xmm0
1283 ; AVX-NEXT: vpaddb %xmm0, %xmm1, %xmm0
1284 ; AVX-NEXT: retq
1288 ; AVX512-NEXT: vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero
1289 ; AVX512-NEXT: vplzcntd %zmm0, %zmm0
1290 ; AVX512-NEXT: vpmovdb %zmm0, %xmm0
1291 ; AVX512-NEXT: vpsubb {{.*}}(%rip), %xmm0, %xmm0
1292 ; AVX512-NEXT: retq
1296 ; X32-SSE-NEXT: movdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
1297 ; X32-SSE-NEXT: movdqa %xmm0, %xmm3
1298 ; X32-SSE-NEXT: pand %xmm2, %xmm3
1299 ; X32-SSE-NEXT: movdqa {{.*#+}} xmm1 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
1300 ; X32-SSE-NEXT: movdqa %xmm1, %xmm4
1301 ; X32-SSE-NEXT: pshufb %xmm3, %xmm4
1302 ; X32-SSE-NEXT: psrlw $4, %xmm0
1303 ; X32-SSE-NEXT: pand %xmm2, %xmm0
1304 ; X32-SSE-NEXT: pxor %xmm2, %xmm2
1305 ; X32-SSE-NEXT: pcmpeqb %xmm0, %xmm2
1306 ; X32-SSE-NEXT: pand %xmm4, %xmm2
1307 ; X32-SSE-NEXT: pshufb %xmm0, %xmm1
1308 ; X32-SSE-NEXT: paddb %xmm2, %xmm1
1309 ; X32-SSE-NEXT: movdqa %xmm1, %xmm0
1310 ; X32-SSE-NEXT: retl
1318 ; SSE2-NEXT: pushq %rbx
1319 ; SSE2-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1320 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1321 ; SSE2-NEXT: bsrl %eax, %eax
1322 ; SSE2-NEXT: xorl $7, %eax
1323 ; SSE2-NEXT: movd %eax, %xmm0
1324 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %edi
1325 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1326 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r9d
1327 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1328 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r10d
1329 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1330 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r8d
1331 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1332 ; SSE2-NEXT: bsrl %esi, %esi
1333 ; SSE2-NEXT: xorl $7, %esi
1334 ; SSE2-NEXT: movd %esi, %xmm1
1335 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1336 ; SSE2-NEXT: bsrl %eax, %eax
1337 ; SSE2-NEXT: xorl $7, %eax
1338 ; SSE2-NEXT: movd %eax, %xmm0
1339 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1340 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1341 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r11d
1342 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebx
1343 ; SSE2-NEXT: bsrl %ebx, %ebx
1344 ; SSE2-NEXT: xorl $7, %ebx
1345 ; SSE2-NEXT: movd %ebx, %xmm2
1346 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
1347 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
1348 ; SSE2-NEXT: bsrl %edx, %edx
1349 ; SSE2-NEXT: xorl $7, %edx
1350 ; SSE2-NEXT: movd %edx, %xmm0
1351 ; SSE2-NEXT: bsrl %esi, %edx
1352 ; SSE2-NEXT: xorl $7, %edx
1353 ; SSE2-NEXT: movd %edx, %xmm3
1354 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
1355 ; SSE2-NEXT: bsrl %ecx, %ecx
1356 ; SSE2-NEXT: xorl $7, %ecx
1357 ; SSE2-NEXT: movd %ecx, %xmm0
1358 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1359 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1360 ; SSE2-NEXT: bsrl %edx, %edx
1361 ; SSE2-NEXT: xorl $7, %edx
1362 ; SSE2-NEXT: movd %edx, %xmm1
1363 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1364 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
1365 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1366 ; SSE2-NEXT: bsrl %edi, %edx
1367 ; SSE2-NEXT: xorl $7, %edx
1368 ; SSE2-NEXT: movd %edx, %xmm0
1369 ; SSE2-NEXT: bsrl %eax, %eax
1370 ; SSE2-NEXT: xorl $7, %eax
1371 ; SSE2-NEXT: movd %eax, %xmm2
1372 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
1373 ; SSE2-NEXT: bsrl %r10d, %eax
1374 ; SSE2-NEXT: xorl $7, %eax
1375 ; SSE2-NEXT: movd %eax, %xmm0
1376 ; SSE2-NEXT: bsrl %ecx, %eax
1377 ; SSE2-NEXT: xorl $7, %eax
1378 ; SSE2-NEXT: movd %eax, %xmm3
1379 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
1380 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
1381 ; SSE2-NEXT: bsrl %r9d, %eax
1382 ; SSE2-NEXT: xorl $7, %eax
1383 ; SSE2-NEXT: movd %eax, %xmm0
1384 ; SSE2-NEXT: bsrl %r11d, %eax
1385 ; SSE2-NEXT: xorl $7, %eax
1386 ; SSE2-NEXT: movd %eax, %xmm2
1387 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
1388 ; SSE2-NEXT: bsrl %r8d, %eax
1389 ; SSE2-NEXT: xorl $7, %eax
1390 ; SSE2-NEXT: movd %eax, %xmm4
1391 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1392 ; SSE2-NEXT: bsrl %eax, %eax
1393 ; SSE2-NEXT: xorl $7, %eax
1394 ; SSE2-NEXT: movd %eax, %xmm0
1395 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
1396 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
1397 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
1398 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1399 ; SSE2-NEXT: popq %rbx
1400 ; SSE2-NEXT: retq
1404 ; SSE3-NEXT: pushq %rbx
1405 ; SSE3-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1406 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1407 ; SSE3-NEXT: bsrl %eax, %eax
1408 ; SSE3-NEXT: xorl $7, %eax
1409 ; SSE3-NEXT: movd %eax, %xmm0
1410 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edi
1411 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1412 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r9d
1413 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1414 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r10d
1415 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1416 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r8d
1417 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1418 ; SSE3-NEXT: bsrl %esi, %esi
1419 ; SSE3-NEXT: xorl $7, %esi
1420 ; SSE3-NEXT: movd %esi, %xmm1
1421 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1422 ; SSE3-NEXT: bsrl %eax, %eax
1423 ; SSE3-NEXT: xorl $7, %eax
1424 ; SSE3-NEXT: movd %eax, %xmm0
1425 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1426 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1427 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r11d
1428 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebx
1429 ; SSE3-NEXT: bsrl %ebx, %ebx
1430 ; SSE3-NEXT: xorl $7, %ebx
1431 ; SSE3-NEXT: movd %ebx, %xmm2
1432 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
1433 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
1434 ; SSE3-NEXT: bsrl %edx, %edx
1435 ; SSE3-NEXT: xorl $7, %edx
1436 ; SSE3-NEXT: movd %edx, %xmm0
1437 ; SSE3-NEXT: bsrl %esi, %edx
1438 ; SSE3-NEXT: xorl $7, %edx
1439 ; SSE3-NEXT: movd %edx, %xmm3
1440 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
1441 ; SSE3-NEXT: bsrl %ecx, %ecx
1442 ; SSE3-NEXT: xorl $7, %ecx
1443 ; SSE3-NEXT: movd %ecx, %xmm0
1444 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1445 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1446 ; SSE3-NEXT: bsrl %edx, %edx
1447 ; SSE3-NEXT: xorl $7, %edx
1448 ; SSE3-NEXT: movd %edx, %xmm1
1449 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1450 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xmm3[3],xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xmm3[7]
1451 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
1452 ; SSE3-NEXT: bsrl %edi, %edx
1453 ; SSE3-NEXT: xorl $7, %edx
1454 ; SSE3-NEXT: movd %edx, %xmm0
1455 ; SSE3-NEXT: bsrl %eax, %eax
1456 ; SSE3-NEXT: xorl $7, %eax
1457 ; SSE3-NEXT: movd %eax, %xmm2
1458 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
1459 ; SSE3-NEXT: bsrl %r10d, %eax
1460 ; SSE3-NEXT: xorl $7, %eax
1461 ; SSE3-NEXT: movd %eax, %xmm0
1462 ; SSE3-NEXT: bsrl %ecx, %eax
1463 ; SSE3-NEXT: xorl $7, %eax
1464 ; SSE3-NEXT: movd %eax, %xmm3
1465 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],xmm0[3],xmm3[4],xmm0[4],xmm3[5],xmm0[5],xmm3[6],xmm0[6],xmm3[7],xmm0[7]
1466 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
1467 ; SSE3-NEXT: bsrl %r9d, %eax
1468 ; SSE3-NEXT: xorl $7, %eax
1469 ; SSE3-NEXT: movd %eax, %xmm0
1470 ; SSE3-NEXT: bsrl %r11d, %eax
1471 ; SSE3-NEXT: xorl $7, %eax
1472 ; SSE3-NEXT: movd %eax, %xmm2
1473 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3],xmm2[4],xmm0[4],xmm2[5],xmm0[5],xmm2[6],xmm0[6],xmm2[7],xmm0[7]
1474 ; SSE3-NEXT: bsrl %r8d, %eax
1475 ; SSE3-NEXT: xorl $7, %eax
1476 ; SSE3-NEXT: movd %eax, %xmm4
1477 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1478 ; SSE3-NEXT: bsrl %eax, %eax
1479 ; SSE3-NEXT: xorl $7, %eax
1480 ; SSE3-NEXT: movd %eax, %xmm0
1481 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3],xmm0[4],xmm4[4],xmm0[5],xmm4[5],xmm0[6],xmm4[6],xmm0[7],xmm4[7]
1482 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
1483 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
1484 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
1485 ; SSE3-NEXT: popq %rbx
1486 ; SSE3-NEXT: retq
1490 ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
1491 ; SSSE3-NEXT: movdqa %xmm0, %xmm3
1492 ; SSSE3-NEXT: pand %xmm2, %xmm3
1493 ; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
1494 ; SSSE3-NEXT: movdqa %xmm1, %xmm4
1495 ; SSSE3-NEXT: pshufb %xmm3, %xmm4
1496 ; SSSE3-NEXT: psrlw $4, %xmm0
1497 ; SSSE3-NEXT: pand %xmm2, %xmm0
1498 ; SSSE3-NEXT: pxor %xmm2, %xmm2
1499 ; SSSE3-NEXT: pcmpeqb %xmm0, %xmm2
1500 ; SSSE3-NEXT: pand %xmm4, %xmm2
1501 ; SSSE3-NEXT: pshufb %xmm0, %xmm1
1502 ; SSSE3-NEXT: paddb %xmm2, %xmm1
1503 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
1504 ; SSSE3-NEXT: retq
1508 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
1509 ; SSE41-NEXT: movdqa %xmm0, %xmm3
1510 ; SSE41-NEXT: pand %xmm2, %xmm3
1511 ; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
1512 ; SSE41-NEXT: movdqa %xmm1, %xmm4
1513 ; SSE41-NEXT: pshufb %xmm3, %xmm4
1514 ; SSE41-NEXT: psrlw $4, %xmm0
1515 ; SSE41-NEXT: pand %xmm2, %xmm0
1516 ; SSE41-NEXT: pxor %xmm2, %xmm2
1517 ; SSE41-NEXT: pcmpeqb %xmm0, %xmm2
1518 ; SSE41-NEXT: pand %xmm4, %xmm2
1519 ; SSE41-NEXT: pshufb %xmm0, %xmm1
1520 ; SSE41-NEXT: paddb %xmm2, %xmm1
1521 ; SSE41-NEXT: movdqa %xmm1, %xmm0
1522 ; SSE41-NEXT: retq
1526 ; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
1527 ; AVX-NEXT: vpand %xmm1, %xmm0, %xmm2
1528 ; AVX-NEXT: vmovdqa {{.*#+}} xmm3 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
1529 ; AVX-NEXT: vpshufb %xmm2, %xmm3, %xmm2
1530 ; AVX-NEXT: vpsrlw $4, %xmm0, %xmm0
1531 ; AVX-NEXT: vpand %xmm1, %xmm0, %xmm0
1532 ; AVX-NEXT: vpxor %xmm1, %xmm1, %xmm1
1533 ; AVX-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm1
1534 ; AVX-NEXT: vpand %xmm1, %xmm2, %xmm1
1535 ; AVX-NEXT: vpshufb %xmm0, %xmm3, %xmm0
1536 ; AVX-NEXT: vpaddb %xmm0, %xmm1, %xmm0
1537 ; AVX-NEXT: retq
1541 ; AVX512-NEXT: vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero
1542 NEXT: vplzcntd %zmm0, %zmm0
1543 ; AVX512-NEXT: vpmovdb %zmm0, %xmm0
1544 ; AVX512-NEXT: vpsubb {{.*}}(%rip), %xmm0, %xmm0
1545 ; AVX512-NEXT: retq
1549 ; X32-SSE-NEXT: movdqa {{.*#+}} xmm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15]
1550 ; X32-SSE-NEXT: movdqa %xmm0, %xmm3
1551 ; X32-SSE-NEXT: pand %xmm2, %xmm3
1552 ; X32-SSE-NEXT: movdqa {{.*#+}} xmm1 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0]
1553 ; X32-SSE-NEXT: movdqa %xmm1, %xmm4
1554 ; X32-SSE-NEXT: pshufb %xmm3, %xmm4
1555 ; X32-SSE-NEXT: psrlw $4, %xmm0
1556 ; X32-SSE-NEXT: pand %xmm2, %xmm0
1557 ; X32-SSE-NEXT: pxor %xmm2, %xmm2
1558 ; X32-SSE-NEXT: pcmpeqb %xmm0, %xmm2
1559 ; X32-SSE-NEXT: pand %xmm4, %xmm2
1560 ; X32-SSE-NEXT: pshufb %xmm0, %xmm1
1561 ; X32-SSE-NEXT: paddb %xmm2, %xmm1
1562 ; X32-SSE-NEXT: movdqa %xmm1, %xmm0
1563 ; X32-SSE-NEXT: retl
1571 ; SSE-NEXT: movl $55, %eax
1572 ; SSE-NEXT: movd %rax, %xmm0
1573 ; SSE-NEXT: retq
1577 ; AVX-NEXT: movl $55, %eax
1578 ; AVX-NEXT: vmovq %rax, %xmm0
1579 ; AVX-NEXT: retq
1583 ; AVX512-NEXT: movl $55, %eax
1584 ; AVX512-NEXT: vmovq %rax, %xmm0
1585 ; AVX512-NEXT: retq
1589 ; X32-SSE-NEXT: movl $55, %eax
1590 ; X32-SSE-NEXT: movd %eax, %xmm0
1591 ; X32-SSE-NEXT: retl
1599 ; SSE-NEXT: movl $55, %eax
1600 ; SSE-NEXT: movd %rax, %xmm0
1601 ; SSE-NEXT: retq
1605 ; AVX-NEXT: movl $55, %eax
1606 ; AVX-NEXT: vmovq %rax, %xmm0
1607 ; AVX-NEXT: retq
1611 ; AVX512-NEXT: movl $55, %eax
1612 ; AVX512-NEXT: vmovq %rax, %xmm0
1613 ; AVX512-NEXT: retq
1617 ; X32-SSE-NEXT: movl $55, %eax
1618 ; X32-SSE-NEXT: movd %eax, %xmm0
1619 ; X32-SSE-NEXT: retl
1627 ; SSE-NEXT: movaps {{.*#+}} xmm0 = [23,0,32,24]
1628 ; SSE-NEXT: retq
1632 ; AVX-NEXT: vmovaps {{.*#+}} xmm0 = [23,0,32,24]
1633 ; AVX-NEXT: retq
1637 ; AVX512VLCD-NEXT: vmovdqa32 {{.*#+}} xmm0 = [23,0,32,24]
1638 ; AVX512VLCD-NEXT: retq
1642 ; AVX512CD-NEXT: vmovaps {{.*#+}} xmm0 = [23,0,32,24]
1643 ; AVX512CD-NEXT: retq
1647 ; X32-SSE-NEXT: movaps {{.*#+}} xmm0 = [23,0,32,24]
1648 ; X32-SSE-NEXT: retl
1656 ; SSE-NEXT: movaps {{.*#+}} xmm0 = [23,0,32,24]
1657 ; SSE-NEXT: retq
1661 ; AVX-NEXT: vmovaps {{.*#+}} xmm0 = [23,0,32,24]
1662 ; AVX-NEXT: retq
1666 ; AVX512VLCD-NEXT: vmovdqa32 {{.*#+}} xmm0 = [23,0,32,24]
1667 ; AVX512VLCD-NEXT: retq
1671 ; AVX512CD-NEXT: vmovaps {{.*#+}} xmm0 = [23,0,32,24]
1672 ; AVX512CD-NEXT: retq
1676 ; X32-SSE-NEXT: movaps {{.*#+}} xmm0 = [23,0,32,24]
1677 ; X32-SSE-NEXT: retl
1685 ; SSE-NEXT: movaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
1686 ; SSE-NEXT: retq
1690 ; AVX-NEXT: vmovaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
1691 ; AVX-NEXT: retq
1695 ; AVX512VLCD-NEXT: vmovdqa64 {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
1696 ; AVX512VLCD-NEXT: retq
1700 ; AVX512CD-NEXT: vmovaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
1701 ; AVX512CD-NEXT: retq
1705 ; X32-SSE-NEXT: movaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
1706 ; X32-SSE-NEXT: retl
1714 ; SSE-NEXT: movaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
1715 ; SSE-NEXT: retq
1719 ; AVX-NEXT: vmovaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
1720 ; AVX-NEXT: retq
1724 ; AVX512VLCD-NEXT: vmovdqa64 {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
1725 ; AVX512VLCD-NEXT: retq
1729 ; AVX512CD-NEXT: vmovaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
1730 ; AVX512CD-NEXT: retq
1734 ; X32-SSE-NEXT: movaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
1735 ; X32-SSE-NEXT: retl
1743 ; SSE-NEXT: movaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
1744 ; SSE-NEXT: retq
1748 ; AVX-NEXT: vmovaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
1749 ; AVX-NEXT: retq
1753 ; AVX512VLCD-NEXT: vmovdqa64 {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
1754 ; AVX512VLCD-NEXT: retq
1758 ; AVX512CD-NEXT: vmovaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
1759 ; AVX512CD-NEXT: retq
1763 ; X32-SSE-NEXT: movaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
1764 ; X32-SSE-NEXT: retl
1772 ; SSE-NEXT: movaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
1773 ; SSE-NEXT: retq
1777 ; AVX-NEXT: vmovaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
1778 ; AVX-NEXT: retq
1782 ; AVX512VLCD-NEXT: vmovdqa64 {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
1783 ; AVX512VLCD-NEXT: retq
1787 ; AVX512CD-NEXT: vmovaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
1788 ; AVX512CD-NEXT: retq
1792 ; X32-SSE-NEXT: movaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
1793 ; X32-SSE-NEXT: retl