Lines Matching refs:NEXT

13 ; SSE2-NEXT:    movd %xmm0, %rax
14 ; SSE2-NEXT: bsrq %rax, %rax
15 ; SSE2-NEXT: movl $127, %ecx
16 ; SSE2-NEXT: cmoveq %rcx, %rax
17 ; SSE2-NEXT: xorq $63, %rax
18 ; SSE2-NEXT: movd %rax, %xmm1
19 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
20 ; SSE2-NEXT: movd %xmm0, %rax
21 ; SSE2-NEXT: bsrq %rax, %rax
22 ; SSE2-NEXT: cmoveq %rcx, %rax
23 ; SSE2-NEXT: xorq $63, %rax
24 ; SSE2-NEXT: movd %rax, %xmm0
25 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
26 ; SSE2-NEXT: movdqa %xmm1, %xmm0
27 ; SSE2-NEXT: retq
31 ; SSE3-NEXT: movd %xmm0, %rax
32 ; SSE3-NEXT: bsrq %rax, %rax
33 ; SSE3-NEXT: movl $127, %ecx
34 ; SSE3-NEXT: cmoveq %rcx, %rax
35 ; SSE3-NEXT: xorq $63, %rax
36 ; SSE3-NEXT: movd %rax, %xmm1
37 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
38 ; SSE3-NEXT: movd %xmm0, %rax
39 ; SSE3-NEXT: bsrq %rax, %rax
40 ; SSE3-NEXT: cmoveq %rcx, %rax
41 ; SSE3-NEXT: xorq $63, %rax
42 ; SSE3-NEXT: movd %rax, %xmm0
43 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
44 ; SSE3-NEXT: movdqa %xmm1, %xmm0
45 ; SSE3-NEXT: retq
49 ; SSSE3-NEXT: movd %xmm0, %rax
50 ; SSSE3-NEXT: bsrq %rax, %rax
51 ; SSSE3-NEXT: movl $127, %ecx
52 ; SSSE3-NEXT: cmoveq %rcx, %rax
53 ; SSSE3-NEXT: xorq $63, %rax
54 ; SSSE3-NEXT: movd %rax, %xmm1
55 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
56 ; SSSE3-NEXT: movd %xmm0, %rax
57 ; SSSE3-NEXT: bsrq %rax, %rax
58 ; SSSE3-NEXT: cmoveq %rcx, %rax
59 ; SSSE3-NEXT: xorq $63, %rax
60 ; SSSE3-NEXT: movd %rax, %xmm0
61 ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
62 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
63 ; SSSE3-NEXT: retq
67 ; SSE41-NEXT: pextrq $1, %xmm0, %rax
68 ; SSE41-NEXT: bsrq %rax, %rax
69 ; SSE41-NEXT: movl $127, %ecx
70 ; SSE41-NEXT: cmoveq %rcx, %rax
71 ; SSE41-NEXT: xorq $63, %rax
72 ; SSE41-NEXT: movd %rax, %xmm1
73 ; SSE41-NEXT: movd %xmm0, %rax
74 ; SSE41-NEXT: bsrq %rax, %rax
75 ; SSE41-NEXT: cmoveq %rcx, %rax
76 ; SSE41-NEXT: xorq $63, %rax
77 ; SSE41-NEXT: movd %rax, %xmm0
78 ; SSE41-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
79 ; SSE41-NEXT: retq
83 ; AVX-NEXT: vpextrq $1, %xmm0, %rax
84 ; AVX-NEXT: bsrq %rax, %rax
85 ; AVX-NEXT: movl $127, %ecx
86 ; AVX-NEXT: cmoveq %rcx, %rax
87 ; AVX-NEXT: xorq $63, %rax
88 ; AVX-NEXT: vmovq %rax, %xmm1
89 ; AVX-NEXT: vmovq %xmm0, %rax
90 ; AVX-NEXT: bsrq %rax, %rax
91 ; AVX-NEXT: cmoveq %rcx, %rax
92 ; AVX-NEXT: xorq $63, %rax
93 ; AVX-NEXT: vmovq %rax, %xmm0
94 ; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
95 ; AVX-NEXT: retq
99 ; AVX512VLCD-NEXT: vplzcntq %xmm0, %xmm0
100 ; AVX512VLCD-NEXT: retq
104 ; AVX512CD-NEXT: vplzcntq %zmm0, %zmm0
105 ; AVX512CD-NEXT: retq
114 ; SSE2-NEXT: movd %xmm0, %rax
115 ; SSE2-NEXT: bsrq %rax, %rax
116 ; SSE2-NEXT: xorq $63, %rax
117 ; SSE2-NEXT: movd %rax, %xmm1
118 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
119 ; SSE2-NEXT: movd %xmm0, %rax
120 ; SSE2-NEXT: bsrq %rax, %rax
121 ; SSE2-NEXT: xorq $63, %rax
122 ; SSE2-NEXT: movd %rax, %xmm0
123 ; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
124 ; SSE2-NEXT: movdqa %xmm1, %xmm0
125 ; SSE2-NEXT: retq
129 ; SSE3-NEXT: movd %xmm0, %rax
130 ; SSE3-NEXT: bsrq %rax, %rax
131 ; SSE3-NEXT: xorq $63, %rax
132 ; SSE3-NEXT: movd %rax, %xmm1
133 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
134 ; SSE3-NEXT: movd %xmm0, %rax
135 ; SSE3-NEXT: bsrq %rax, %rax
136 ; SSE3-NEXT: xorq $63, %rax
137 ; SSE3-NEXT: movd %rax, %xmm0
138 ; SSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
139 ; SSE3-NEXT: movdqa %xmm1, %xmm0
140 ; SSE3-NEXT: retq
144 ; SSSE3-NEXT: movd %xmm0, %rax
145 ; SSSE3-NEXT: bsrq %rax, %rax
146 ; SSSE3-NEXT: xorq $63, %rax
147 ; SSSE3-NEXT: movd %rax, %xmm1
148 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
149 ; SSSE3-NEXT: movd %xmm0, %rax
150 ; SSSE3-NEXT: bsrq %rax, %rax
151 ; SSSE3-NEXT: xorq $63, %rax
152 ; SSSE3-NEXT: movd %rax, %xmm0
153 ; SSSE3-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
154 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
155 ; SSSE3-NEXT: retq
159 ; SSE41-NEXT: pextrq $1, %xmm0, %rax
160 ; SSE41-NEXT: bsrq %rax, %rax
161 ; SSE41-NEXT: xorq $63, %rax
162 ; SSE41-NEXT: movd %rax, %xmm1
163 ; SSE41-NEXT: movd %xmm0, %rax
164 ; SSE41-NEXT: bsrq %rax, %rax
165 ; SSE41-NEXT: xorq $63, %rax
166 ; SSE41-NEXT: movd %rax, %xmm0
167 ; SSE41-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
168 ; SSE41-NEXT: retq
172 ; AVX-NEXT: vpextrq $1, %xmm0, %rax
173 ; AVX-NEXT: bsrq %rax, %rax
174 ; AVX-NEXT: xorq $63, %rax
175 ; AVX-NEXT: vmovq %rax, %xmm1
176 ; AVX-NEXT: vmovq %xmm0, %rax
177 ; AVX-NEXT: bsrq %rax, %rax
178 ; AVX-NEXT: xorq $63, %rax
179 ; AVX-NEXT: vmovq %rax, %xmm0
180 ; AVX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
181 ; AVX-NEXT: retq
185 ; AVX512VLCD-NEXT: vplzcntq %xmm0, %xmm0
186 ; AVX512VLCD-NEXT: retq
190 ; AVX512CD-NEXT: vplzcntq %zmm0, %zmm0
191 ; AVX512CD-NEXT: retq
200 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
201 ; SSE2-NEXT: movd %xmm1, %eax
202 ; SSE2-NEXT: bsrl %eax, %eax
203 ; SSE2-NEXT: movl $63, %ecx
204 ; SSE2-NEXT: cmovel %ecx, %eax
205 ; SSE2-NEXT: xorl $31, %eax
206 ; SSE2-NEXT: movd %eax, %xmm1
207 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
208 ; SSE2-NEXT: movd %xmm2, %eax
209 ; SSE2-NEXT: bsrl %eax, %eax
210 ; SSE2-NEXT: cmovel %ecx, %eax
211 ; SSE2-NEXT: xorl $31, %eax
212 ; SSE2-NEXT: movd %eax, %xmm2
213 ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
214 ; SSE2-NEXT: movd %xmm0, %eax
215 ; SSE2-NEXT: bsrl %eax, %eax
216 ; SSE2-NEXT: cmovel %ecx, %eax
217 ; SSE2-NEXT: xorl $31, %eax
218 ; SSE2-NEXT: movd %eax, %xmm1
219 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
220 ; SSE2-NEXT: movd %xmm0, %eax
221 ; SSE2-NEXT: bsrl %eax, %eax
222 ; SSE2-NEXT: cmovel %ecx, %eax
223 ; SSE2-NEXT: xorl $31, %eax
224 ; SSE2-NEXT: movd %eax, %xmm0
225 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
226 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
227 ; SSE2-NEXT: movdqa %xmm1, %xmm0
228 ; SSE2-NEXT: retq
232 ; SSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
233 ; SSE3-NEXT: movd %xmm1, %eax
234 ; SSE3-NEXT: bsrl %eax, %eax
235 ; SSE3-NEXT: movl $63, %ecx
236 ; SSE3-NEXT: cmovel %ecx, %eax
237 ; SSE3-NEXT: xorl $31, %eax
238 ; SSE3-NEXT: movd %eax, %xmm1
239 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
240 ; SSE3-NEXT: movd %xmm2, %eax
241 ; SSE3-NEXT: bsrl %eax, %eax
242 ; SSE3-NEXT: cmovel %ecx, %eax
243 ; SSE3-NEXT: xorl $31, %eax
244 ; SSE3-NEXT: movd %eax, %xmm2
245 ; SSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
246 ; SSE3-NEXT: movd %xmm0, %eax
247 ; SSE3-NEXT: bsrl %eax, %eax
248 ; SSE3-NEXT: cmovel %ecx, %eax
249 ; SSE3-NEXT: xorl $31, %eax
250 ; SSE3-NEXT: movd %eax, %xmm1
251 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
252 ; SSE3-NEXT: movd %xmm0, %eax
253 ; SSE3-NEXT: bsrl %eax, %eax
254 ; SSE3-NEXT: cmovel %ecx, %eax
255 ; SSE3-NEXT: xorl $31, %eax
256 ; SSE3-NEXT: movd %eax, %xmm0
257 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
258 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
259 ; SSE3-NEXT: movdqa %xmm1, %xmm0
260 ; SSE3-NEXT: retq
264 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
265 ; SSSE3-NEXT: movd %xmm1, %eax
266 ; SSSE3-NEXT: bsrl %eax, %eax
267 ; SSSE3-NEXT: movl $63, %ecx
268 ; SSSE3-NEXT: cmovel %ecx, %eax
269 ; SSSE3-NEXT: xorl $31, %eax
270 ; SSSE3-NEXT: movd %eax, %xmm1
271 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
272 ; SSSE3-NEXT: movd %xmm2, %eax
273 ; SSSE3-NEXT: bsrl %eax, %eax
274 ; SSSE3-NEXT: cmovel %ecx, %eax
275 ; SSSE3-NEXT: xorl $31, %eax
276 ; SSSE3-NEXT: movd %eax, %xmm2
277 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
278 ; SSSE3-NEXT: movd %xmm0, %eax
279 ; SSSE3-NEXT: bsrl %eax, %eax
280 ; SSSE3-NEXT: cmovel %ecx, %eax
281 ; SSSE3-NEXT: xorl $31, %eax
282 ; SSSE3-NEXT: movd %eax, %xmm1
283 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
284 ; SSSE3-NEXT: movd %xmm0, %eax
285 ; SSSE3-NEXT: bsrl %eax, %eax
286 ; SSSE3-NEXT: cmovel %ecx, %eax
287 ; SSSE3-NEXT: xorl $31, %eax
288 ; SSSE3-NEXT: movd %eax, %xmm0
289 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
290 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
291 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
292 ; SSSE3-NEXT: retq
296 ; SSE41-NEXT: pextrd $1, %xmm0, %eax
297 ; SSE41-NEXT: bsrl %eax, %eax
298 ; SSE41-NEXT: movl $63, %ecx
299 ; SSE41-NEXT: cmovel %ecx, %eax
300 ; SSE41-NEXT: xorl $31, %eax
301 ; SSE41-NEXT: movd %xmm0, %edx
302 ; SSE41-NEXT: bsrl %edx, %edx
303 ; SSE41-NEXT: cmovel %ecx, %edx
304 ; SSE41-NEXT: xorl $31, %edx
305 ; SSE41-NEXT: movd %edx, %xmm1
306 ; SSE41-NEXT: pinsrd $1, %eax, %xmm1
307 ; SSE41-NEXT: pextrd $2, %xmm0, %eax
308 ; SSE41-NEXT: bsrl %eax, %eax
309 ; SSE41-NEXT: cmovel %ecx, %eax
310 ; SSE41-NEXT: xorl $31, %eax
311 ; SSE41-NEXT: pinsrd $2, %eax, %xmm1
312 ; SSE41-NEXT: pextrd $3, %xmm0, %eax
313 ; SSE41-NEXT: bsrl %eax, %eax
314 ; SSE41-NEXT: cmovel %ecx, %eax
315 ; SSE41-NEXT: xorl $31, %eax
316 ; SSE41-NEXT: pinsrd $3, %eax, %xmm1
317 ; SSE41-NEXT: movdqa %xmm1, %xmm0
318 ; SSE41-NEXT: retq
322 ; AVX-NEXT: vpextrd $1, %xmm0, %eax
323 ; AVX-NEXT: bsrl %eax, %eax
324 ; AVX-NEXT: movl $63, %ecx
325 ; AVX-NEXT: cmovel %ecx, %eax
326 ; AVX-NEXT: xorl $31, %eax
327 ; AVX-NEXT: vmovd %xmm0, %edx
328 ; AVX-NEXT: bsrl %edx, %edx
329 ; AVX-NEXT: cmovel %ecx, %edx
330 ; AVX-NEXT: xorl $31, %edx
331 ; AVX-NEXT: vmovd %edx, %xmm1
332 ; AVX-NEXT: vpinsrd $1, %eax, %xmm1, %xmm1
333 ; AVX-NEXT: vpextrd $2, %xmm0, %eax
334 ; AVX-NEXT: bsrl %eax, %eax
335 ; AVX-NEXT: cmovel %ecx, %eax
336 ; AVX-NEXT: xorl $31, %eax
337 ; AVX-NEXT: vpinsrd $2, %eax, %xmm1, %xmm1
338 ; AVX-NEXT: vpextrd $3, %xmm0, %eax
339 ; AVX-NEXT: bsrl %eax, %eax
340 ; AVX-NEXT: cmovel %ecx, %eax
341 ; AVX-NEXT: xorl $31, %eax
342 ; AVX-NEXT: vpinsrd $3, %eax, %xmm1, %xmm0
343 ; AVX-NEXT: retq
347 ; AVX512VLCD-NEXT: vplzcntd %xmm0, %xmm0
348 ; AVX512VLCD-NEXT: retq
352 ; AVX512CD-NEXT: vplzcntd %zmm0, %zmm0
353 ; AVX512CD-NEXT: retq
362 ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
363 ; SSE2-NEXT: movd %xmm1, %eax
364 ; SSE2-NEXT: bsrl %eax, %eax
365 ; SSE2-NEXT: xorl $31, %eax
366 ; SSE2-NEXT: movd %eax, %xmm1
367 ; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
368 ; SSE2-NEXT: movd %xmm2, %eax
369 ; SSE2-NEXT: bsrl %eax, %eax
370 ; SSE2-NEXT: xorl $31, %eax
371 ; SSE2-NEXT: movd %eax, %xmm2
372 ; SSE2-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
373 ; SSE2-NEXT: movd %xmm0, %eax
374 ; SSE2-NEXT: bsrl %eax, %eax
375 ; SSE2-NEXT: xorl $31, %eax
376 ; SSE2-NEXT: movd %eax, %xmm1
377 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
378 ; SSE2-NEXT: movd %xmm0, %eax
379 ; SSE2-NEXT: bsrl %eax, %eax
380 ; SSE2-NEXT: xorl $31, %eax
381 ; SSE2-NEXT: movd %eax, %xmm0
382 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
383 ; SSE2-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
384 ; SSE2-NEXT: movdqa %xmm1, %xmm0
385 ; SSE2-NEXT: retq
389 ; SSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
390 ; SSE3-NEXT: movd %xmm1, %eax
391 ; SSE3-NEXT: bsrl %eax, %eax
392 ; SSE3-NEXT: xorl $31, %eax
393 ; SSE3-NEXT: movd %eax, %xmm1
394 ; SSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
395 ; SSE3-NEXT: movd %xmm2, %eax
396 ; SSE3-NEXT: bsrl %eax, %eax
397 ; SSE3-NEXT: xorl $31, %eax
398 ; SSE3-NEXT: movd %eax, %xmm2
399 ; SSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
400 ; SSE3-NEXT: movd %xmm0, %eax
401 ; SSE3-NEXT: bsrl %eax, %eax
402 ; SSE3-NEXT: xorl $31, %eax
403 ; SSE3-NEXT: movd %eax, %xmm1
404 ; SSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
405 ; SSE3-NEXT: movd %xmm0, %eax
406 ; SSE3-NEXT: bsrl %eax, %eax
407 ; SSE3-NEXT: xorl $31, %eax
408 ; SSE3-NEXT: movd %eax, %xmm0
409 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
410 ; SSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
411 ; SSE3-NEXT: movdqa %xmm1, %xmm0
412 ; SSE3-NEXT: retq
416 ; SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[3,1,2,3]
417 ; SSSE3-NEXT: movd %xmm1, %eax
418 ; SSSE3-NEXT: bsrl %eax, %eax
419 ; SSSE3-NEXT: xorl $31, %eax
420 ; SSSE3-NEXT: movd %eax, %xmm1
421 ; SSSE3-NEXT: pshufd {{.*#+}} xmm2 = xmm0[1,1,2,3]
422 ; SSSE3-NEXT: movd %xmm2, %eax
423 ; SSSE3-NEXT: bsrl %eax, %eax
424 ; SSSE3-NEXT: xorl $31, %eax
425 ; SSSE3-NEXT: movd %eax, %xmm2
426 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
427 ; SSSE3-NEXT: movd %xmm0, %eax
428 ; SSSE3-NEXT: bsrl %eax, %eax
429 ; SSSE3-NEXT: xorl $31, %eax
430 ; SSSE3-NEXT: movd %eax, %xmm1
431 ; SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
432 ; SSSE3-NEXT: movd %xmm0, %eax
433 ; SSSE3-NEXT: bsrl %eax, %eax
434 ; SSSE3-NEXT: xorl $31, %eax
435 ; SSSE3-NEXT: movd %eax, %xmm0
436 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
437 ; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
438 ; SSSE3-NEXT: movdqa %xmm1, %xmm0
439 ; SSSE3-NEXT: retq
443 ; SSE41-NEXT: pextrd $1, %xmm0, %eax
444 ; SSE41-NEXT: bsrl %eax, %eax
445 ; SSE41-NEXT: xorl $31, %eax
446 ; SSE41-NEXT: movd %xmm0, %ecx
447 ; SSE41-NEXT: bsrl %ecx, %ecx
448 ; SSE41-NEXT: xorl $31, %ecx
449 ; SSE41-NEXT: movd %ecx, %xmm1
450 ; SSE41-NEXT: pinsrd $1, %eax, %xmm1
451 ; SSE41-NEXT: pextrd $2, %xmm0, %eax
452 ; SSE41-NEXT: bsrl %eax, %eax
453 ; SSE41-NEXT: xorl $31, %eax
454 ; SSE41-NEXT: pinsrd $2, %eax, %xmm1
455 ; SSE41-NEXT: pextrd $3, %xmm0, %eax
456 ; SSE41-NEXT: bsrl %eax, %eax
457 ; SSE41-NEXT: xorl $31, %eax
458 ; SSE41-NEXT: pinsrd $3, %eax, %xmm1
459 ; SSE41-NEXT: movdqa %xmm1, %xmm0
460 ; SSE41-NEXT: retq
464 ; AVX-NEXT: vpextrd $1, %xmm0, %eax
465 ; AVX-NEXT: bsrl %eax, %eax
466 ; AVX-NEXT: xorl $31, %eax
467 ; AVX-NEXT: vmovd %xmm0, %ecx
468 ; AVX-NEXT: bsrl %ecx, %ecx
469 ; AVX-NEXT: xorl $31, %ecx
470 ; AVX-NEXT: vmovd %ecx, %xmm1
471 ; AVX-NEXT: vpinsrd $1, %eax, %xmm1, %xmm1
472 ; AVX-NEXT: vpextrd $2, %xmm0, %eax
473 ; AVX-NEXT: bsrl %eax, %eax
474 ; AVX-NEXT: xorl $31, %eax
475 ; AVX-NEXT: vpinsrd $2, %eax, %xmm1, %xmm1
476 ; AVX-NEXT: vpextrd $3, %xmm0, %eax
477 ; AVX-NEXT: bsrl %eax, %eax
478 ; AVX-NEXT: xorl $31, %eax
479 ; AVX-NEXT: vpinsrd $3, %eax, %xmm1, %xmm0
480 ; AVX-NEXT: retq
484 ; AVX512VLCD-NEXT: vplzcntd %xmm0, %xmm0
485 ; AVX512VLCD-NEXT: retq
489 ; AVX512CD-NEXT: vplzcntd %zmm0, %zmm0
490 ; AVX512CD-NEXT: retq
499 ; SSE2-NEXT: pextrw $7, %xmm0, %eax
500 ; SSE2-NEXT: bsrw %ax, %cx
501 ; SSE2-NEXT: movw $31, %ax
502 ; SSE2-NEXT: cmovew %ax, %cx
503 ; SSE2-NEXT: xorl $15, %ecx
504 ; SSE2-NEXT: movd %ecx, %xmm1
505 ; SSE2-NEXT: pextrw $3, %xmm0, %ecx
506 ; SSE2-NEXT: bsrw %cx, %cx
507 ; SSE2-NEXT: cmovew %ax, %cx
508 ; SSE2-NEXT: xorl $15, %ecx
509 ; SSE2-NEXT: movd %ecx, %xmm2
510 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],x…
511 ; SSE2-NEXT: pextrw $5, %xmm0, %ecx
512 ; SSE2-NEXT: bsrw %cx, %cx
513 ; SSE2-NEXT: cmovew %ax, %cx
514 ; SSE2-NEXT: xorl $15, %ecx
515 ; SSE2-NEXT: movd %ecx, %xmm3
516 ; SSE2-NEXT: pextrw $1, %xmm0, %ecx
517 ; SSE2-NEXT: bsrw %cx, %cx
518 ; SSE2-NEXT: cmovew %ax, %cx
519 ; SSE2-NEXT: xorl $15, %ecx
520 ; SSE2-NEXT: movd %ecx, %xmm1
521 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],x…
522 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],x…
523 ; SSE2-NEXT: pextrw $6, %xmm0, %ecx
524 ; SSE2-NEXT: bsrw %cx, %cx
525 ; SSE2-NEXT: cmovew %ax, %cx
526 ; SSE2-NEXT: xorl $15, %ecx
527 ; SSE2-NEXT: movd %ecx, %xmm2
528 ; SSE2-NEXT: pextrw $2, %xmm0, %ecx
529 ; SSE2-NEXT: bsrw %cx, %cx
530 ; SSE2-NEXT: cmovew %ax, %cx
531 ; SSE2-NEXT: xorl $15, %ecx
532 ; SSE2-NEXT: movd %ecx, %xmm3
533 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],x…
534 ; SSE2-NEXT: pextrw $4, %xmm0, %ecx
535 ; SSE2-NEXT: bsrw %cx, %cx
536 ; SSE2-NEXT: cmovew %ax, %cx
537 ; SSE2-NEXT: xorl $15, %ecx
538 ; SSE2-NEXT: movd %ecx, %xmm2
539 ; SSE2-NEXT: movd %xmm0, %ecx
540 ; SSE2-NEXT: bsrw %cx, %cx
541 ; SSE2-NEXT: cmovew %ax, %cx
542 ; SSE2-NEXT: xorl $15, %ecx
543 ; SSE2-NEXT: movd %ecx, %xmm0
544 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],x…
545 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],x…
546 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
547 ; SSE2-NEXT: retq
551 ; SSE3-NEXT: pextrw $7, %xmm0, %eax
552 ; SSE3-NEXT: bsrw %ax, %cx
553 ; SSE3-NEXT: movw $31, %ax
554 ; SSE3-NEXT: cmovew %ax, %cx
555 ; SSE3-NEXT: xorl $15, %ecx
556 ; SSE3-NEXT: movd %ecx, %xmm1
557 ; SSE3-NEXT: pextrw $3, %xmm0, %ecx
558 ; SSE3-NEXT: bsrw %cx, %cx
559 ; SSE3-NEXT: cmovew %ax, %cx
560 ; SSE3-NEXT: xorl $15, %ecx
561 ; SSE3-NEXT: movd %ecx, %xmm2
562 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],x…
563 ; SSE3-NEXT: pextrw $5, %xmm0, %ecx
564 ; SSE3-NEXT: bsrw %cx, %cx
565 ; SSE3-NEXT: cmovew %ax, %cx
566 ; SSE3-NEXT: xorl $15, %ecx
567 ; SSE3-NEXT: movd %ecx, %xmm3
568 ; SSE3-NEXT: pextrw $1, %xmm0, %ecx
569 ; SSE3-NEXT: bsrw %cx, %cx
570 ; SSE3-NEXT: cmovew %ax, %cx
571 ; SSE3-NEXT: xorl $15, %ecx
572 ; SSE3-NEXT: movd %ecx, %xmm1
573 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],x…
574 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],x…
575 ; SSE3-NEXT: pextrw $6, %xmm0, %ecx
576 ; SSE3-NEXT: bsrw %cx, %cx
577 ; SSE3-NEXT: cmovew %ax, %cx
578 ; SSE3-NEXT: xorl $15, %ecx
579 ; SSE3-NEXT: movd %ecx, %xmm2
580 ; SSE3-NEXT: pextrw $2, %xmm0, %ecx
581 ; SSE3-NEXT: bsrw %cx, %cx
582 ; SSE3-NEXT: cmovew %ax, %cx
583 ; SSE3-NEXT: xorl $15, %ecx
584 ; SSE3-NEXT: movd %ecx, %xmm3
585 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],x…
586 ; SSE3-NEXT: pextrw $4, %xmm0, %ecx
587 ; SSE3-NEXT: bsrw %cx, %cx
588 ; SSE3-NEXT: cmovew %ax, %cx
589 ; SSE3-NEXT: xorl $15, %ecx
590 ; SSE3-NEXT: movd %ecx, %xmm2
591 ; SSE3-NEXT: movd %xmm0, %ecx
592 ; SSE3-NEXT: bsrw %cx, %cx
593 ; SSE3-NEXT: cmovew %ax, %cx
594 ; SSE3-NEXT: xorl $15, %ecx
595 ; SSE3-NEXT: movd %ecx, %xmm0
596 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],x…
597 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],x…
598 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
599 ; SSE3-NEXT: retq
603 ; SSSE3-NEXT: pextrw $7, %xmm0, %eax
604 ; SSSE3-NEXT: bsrw %ax, %cx
605 ; SSSE3-NEXT: movw $31, %ax
606 ; SSSE3-NEXT: cmovew %ax, %cx
607 ; SSSE3-NEXT: xorl $15, %ecx
608 ; SSSE3-NEXT: movd %ecx, %xmm1
609 ; SSSE3-NEXT: pextrw $3, %xmm0, %ecx
610 ; SSSE3-NEXT: bsrw %cx, %cx
611 ; SSSE3-NEXT: cmovew %ax, %cx
612 ; SSSE3-NEXT: xorl $15, %ecx
613 ; SSSE3-NEXT: movd %ecx, %xmm2
614 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],…
615 ; SSSE3-NEXT: pextrw $5, %xmm0, %ecx
616 ; SSSE3-NEXT: bsrw %cx, %cx
617 ; SSSE3-NEXT: cmovew %ax, %cx
618 ; SSSE3-NEXT: xorl $15, %ecx
619 ; SSSE3-NEXT: movd %ecx, %xmm3
620 ; SSSE3-NEXT: pextrw $1, %xmm0, %ecx
621 ; SSSE3-NEXT: bsrw %cx, %cx
622 ; SSSE3-NEXT: cmovew %ax, %cx
623 ; SSSE3-NEXT: xorl $15, %ecx
624 ; SSSE3-NEXT: movd %ecx, %xmm1
625 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],…
626 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],…
627 ; SSSE3-NEXT: pextrw $6, %xmm0, %ecx
628 ; SSSE3-NEXT: bsrw %cx, %cx
629 ; SSSE3-NEXT: cmovew %ax, %cx
630 ; SSSE3-NEXT: xorl $15, %ecx
631 ; SSSE3-NEXT: movd %ecx, %xmm2
632 ; SSSE3-NEXT: pextrw $2, %xmm0, %ecx
633 ; SSSE3-NEXT: bsrw %cx, %cx
634 ; SSSE3-NEXT: cmovew %ax, %cx
635 ; SSSE3-NEXT: xorl $15, %ecx
636 ; SSSE3-NEXT: movd %ecx, %xmm3
637 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],…
638 ; SSSE3-NEXT: pextrw $4, %xmm0, %ecx
639 ; SSSE3-NEXT: bsrw %cx, %cx
640 ; SSSE3-NEXT: cmovew %ax, %cx
641 ; SSSE3-NEXT: xorl $15, %ecx
642 ; SSSE3-NEXT: movd %ecx, %xmm2
643 ; SSSE3-NEXT: movd %xmm0, %ecx
644 ; SSSE3-NEXT: bsrw %cx, %cx
645 ; SSSE3-NEXT: cmovew %ax, %cx
646 ; SSSE3-NEXT: xorl $15, %ecx
647 ; SSSE3-NEXT: movd %ecx, %xmm0
648 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],…
649 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],…
650 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
651 ; SSSE3-NEXT: retq
655 ; SSE41-NEXT: pextrw $1, %xmm0, %eax
656 ; SSE41-NEXT: bsrw %ax, %cx
657 ; SSE41-NEXT: movw $31, %ax
658 ; SSE41-NEXT: cmovew %ax, %cx
659 ; SSE41-NEXT: xorl $15, %ecx
660 ; SSE41-NEXT: movd %xmm0, %edx
661 ; SSE41-NEXT: bsrw %dx, %dx
662 ; SSE41-NEXT: cmovew %ax, %dx
663 ; SSE41-NEXT: xorl $15, %edx
664 ; SSE41-NEXT: movd %edx, %xmm1
665 ; SSE41-NEXT: pinsrw $1, %ecx, %xmm1
666 ; SSE41-NEXT: pextrw $2, %xmm0, %ecx
667 ; SSE41-NEXT: bsrw %cx, %cx
668 ; SSE41-NEXT: cmovew %ax, %cx
669 ; SSE41-NEXT: xorl $15, %ecx
670 ; SSE41-NEXT: pinsrw $2, %ecx, %xmm1
671 ; SSE41-NEXT: pextrw $3, %xmm0, %ecx
672 ; SSE41-NEXT: bsrw %cx, %cx
673 ; SSE41-NEXT: cmovew %ax, %cx
674 ; SSE41-NEXT: xorl $15, %ecx
675 ; SSE41-NEXT: pinsrw $3, %ecx, %xmm1
676 ; SSE41-NEXT: pextrw $4, %xmm0, %ecx
677 ; SSE41-NEXT: bsrw %cx, %cx
678 ; SSE41-NEXT: cmovew %ax, %cx
679 ; SSE41-NEXT: xorl $15, %ecx
680 ; SSE41-NEXT: pinsrw $4, %ecx, %xmm1
681 ; SSE41-NEXT: pextrw $5, %xmm0, %ecx
682 ; SSE41-NEXT: bsrw %cx, %cx
683 ; SSE41-NEXT: cmovew %ax, %cx
684 ; SSE41-NEXT: xorl $15, %ecx
685 ; SSE41-NEXT: pinsrw $5, %ecx, %xmm1
686 ; SSE41-NEXT: pextrw $6, %xmm0, %ecx
687 ; SSE41-NEXT: bsrw %cx, %cx
688 ; SSE41-NEXT: cmovew %ax, %cx
689 ; SSE41-NEXT: xorl $15, %ecx
690 ; SSE41-NEXT: pinsrw $6, %ecx, %xmm1
691 ; SSE41-NEXT: pextrw $7, %xmm0, %ecx
692 ; SSE41-NEXT: bsrw %cx, %cx
693 ; SSE41-NEXT: cmovew %ax, %cx
694 ; SSE41-NEXT: xorl $15, %ecx
695 ; SSE41-NEXT: pinsrw $7, %ecx, %xmm1
696 ; SSE41-NEXT: movdqa %xmm1, %xmm0
697 ; SSE41-NEXT: retq
701 ; AVX-NEXT: vpextrw $1, %xmm0, %eax
702 ; AVX-NEXT: bsrw %ax, %cx
703 ; AVX-NEXT: movw $31, %ax
704 ; AVX-NEXT: cmovew %ax, %cx
705 ; AVX-NEXT: xorl $15, %ecx
706 ; AVX-NEXT: vmovd %xmm0, %edx
707 ; AVX-NEXT: bsrw %dx, %dx
708 ; AVX-NEXT: cmovew %ax, %dx
709 ; AVX-NEXT: xorl $15, %edx
710 ; AVX-NEXT: vmovd %edx, %xmm1
711 ; AVX-NEXT: vpinsrw $1, %ecx, %xmm1, %xmm1
712 ; AVX-NEXT: vpextrw $2, %xmm0, %ecx
713 ; AVX-NEXT: bsrw %cx, %cx
714 ; AVX-NEXT: cmovew %ax, %cx
715 ; AVX-NEXT: xorl $15, %ecx
716 ; AVX-NEXT: vpinsrw $2, %ecx, %xmm1, %xmm1
717 ; AVX-NEXT: vpextrw $3, %xmm0, %ecx
718 ; AVX-NEXT: bsrw %cx, %cx
719 ; AVX-NEXT: cmovew %ax, %cx
720 ; AVX-NEXT: xorl $15, %ecx
721 ; AVX-NEXT: vpinsrw $3, %ecx, %xmm1, %xmm1
722 ; AVX-NEXT: vpextrw $4, %xmm0, %ecx
723 ; AVX-NEXT: bsrw %cx, %cx
724 ; AVX-NEXT: cmovew %ax, %cx
725 ; AVX-NEXT: xorl $15, %ecx
726 ; AVX-NEXT: vpinsrw $4, %ecx, %xmm1, %xmm1
727 ; AVX-NEXT: vpextrw $5, %xmm0, %ecx
728 ; AVX-NEXT: bsrw %cx, %cx
729 ; AVX-NEXT: cmovew %ax, %cx
730 ; AVX-NEXT: xorl $15, %ecx
731 ; AVX-NEXT: vpinsrw $5, %ecx, %xmm1, %xmm1
732 ; AVX-NEXT: vpextrw $6, %xmm0, %ecx
733 ; AVX-NEXT: bsrw %cx, %cx
734 ; AVX-NEXT: cmovew %ax, %cx
735 ; AVX-NEXT: xorl $15, %ecx
736 ; AVX-NEXT: vpinsrw $6, %ecx, %xmm1, %xmm1
737 ; AVX-NEXT: vpextrw $7, %xmm0, %ecx
738 ; AVX-NEXT: bsrw %cx, %cx
739 ; AVX-NEXT: cmovew %ax, %cx
740 ; AVX-NEXT: xorl $15, %ecx
741 ; AVX-NEXT: vpinsrw $7, %ecx, %xmm1, %xmm0
742 ; AVX-NEXT: retq
746 ; AVX512VLCD-NEXT: vpmovzxwd %xmm0, %ymm0
747 ; AVX512VLCD-NEXT: vplzcntd %ymm0, %ymm0
748 ; AVX512VLCD-NEXT: vpmovdw %ymm0, %xmm0
749 ; AVX512VLCD-NEXT: vpsubw {{.*}}(%rip), %xmm0, %xmm0
750 ; AVX512VLCD-NEXT: retq
754 ; AVX512CD-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,x…
755 ; AVX512CD-NEXT: vplzcntd %zmm0, %zmm0
756 ; AVX512CD-NEXT: vpmovdw %zmm0, %ymm0
757 ; AVX512CD-NEXT: vpsubw {{.*}}(%rip), %xmm0, %xmm0
758 ; AVX512CD-NEXT: retq
766 ; SSE2-NEXT: pextrw $7, %xmm0, %eax
767 ; SSE2-NEXT: bsrw %ax, %ax
768 ; SSE2-NEXT: xorl $15, %eax
769 ; SSE2-NEXT: movd %eax, %xmm1
770 ; SSE2-NEXT: pextrw $3, %xmm0, %eax
771 ; SSE2-NEXT: bsrw %ax, %ax
772 ; SSE2-NEXT: xorl $15, %eax
773 ; SSE2-NEXT: movd %eax, %xmm2
774 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],x…
775 ; SSE2-NEXT: pextrw $5, %xmm0, %eax
776 ; SSE2-NEXT: bsrw %ax, %ax
777 ; SSE2-NEXT: xorl $15, %eax
778 ; SSE2-NEXT: movd %eax, %xmm3
779 ; SSE2-NEXT: pextrw $1, %xmm0, %eax
780 ; SSE2-NEXT: bsrw %ax, %ax
781 ; SSE2-NEXT: xorl $15, %eax
782 ; SSE2-NEXT: movd %eax, %xmm1
783 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],x…
784 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],x…
785 ; SSE2-NEXT: pextrw $6, %xmm0, %eax
786 ; SSE2-NEXT: bsrw %ax, %ax
787 ; SSE2-NEXT: xorl $15, %eax
788 ; SSE2-NEXT: movd %eax, %xmm2
789 ; SSE2-NEXT: pextrw $2, %xmm0, %eax
790 ; SSE2-NEXT: bsrw %ax, %ax
791 ; SSE2-NEXT: xorl $15, %eax
792 ; SSE2-NEXT: movd %eax, %xmm3
793 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],x…
794 ; SSE2-NEXT: pextrw $4, %xmm0, %eax
795 ; SSE2-NEXT: bsrw %ax, %ax
796 ; SSE2-NEXT: xorl $15, %eax
797 ; SSE2-NEXT: movd %eax, %xmm2
798 ; SSE2-NEXT: movd %xmm0, %eax
799 ; SSE2-NEXT: bsrw %ax, %ax
800 ; SSE2-NEXT: xorl $15, %eax
801 ; SSE2-NEXT: movd %eax, %xmm0
802 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],x…
803 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],x…
804 ; SSE2-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
805 ; SSE2-NEXT: retq
809 ; SSE3-NEXT: pextrw $7, %xmm0, %eax
810 ; SSE3-NEXT: bsrw %ax, %ax
811 ; SSE3-NEXT: xorl $15, %eax
812 ; SSE3-NEXT: movd %eax, %xmm1
813 ; SSE3-NEXT: pextrw $3, %xmm0, %eax
814 ; SSE3-NEXT: bsrw %ax, %ax
815 ; SSE3-NEXT: xorl $15, %eax
816 ; SSE3-NEXT: movd %eax, %xmm2
817 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],x…
818 ; SSE3-NEXT: pextrw $5, %xmm0, %eax
819 ; SSE3-NEXT: bsrw %ax, %ax
820 ; SSE3-NEXT: xorl $15, %eax
821 ; SSE3-NEXT: movd %eax, %xmm3
822 ; SSE3-NEXT: pextrw $1, %xmm0, %eax
823 ; SSE3-NEXT: bsrw %ax, %ax
824 ; SSE3-NEXT: xorl $15, %eax
825 ; SSE3-NEXT: movd %eax, %xmm1
826 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],x…
827 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],x…
828 ; SSE3-NEXT: pextrw $6, %xmm0, %eax
829 ; SSE3-NEXT: bsrw %ax, %ax
830 ; SSE3-NEXT: xorl $15, %eax
831 ; SSE3-NEXT: movd %eax, %xmm2
832 ; SSE3-NEXT: pextrw $2, %xmm0, %eax
833 ; SSE3-NEXT: bsrw %ax, %ax
834 ; SSE3-NEXT: xorl $15, %eax
835 ; SSE3-NEXT: movd %eax, %xmm3
836 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],x…
837 ; SSE3-NEXT: pextrw $4, %xmm0, %eax
838 ; SSE3-NEXT: bsrw %ax, %ax
839 ; SSE3-NEXT: xorl $15, %eax
840 ; SSE3-NEXT: movd %eax, %xmm2
841 ; SSE3-NEXT: movd %xmm0, %eax
842 ; SSE3-NEXT: bsrw %ax, %ax
843 ; SSE3-NEXT: xorl $15, %eax
844 ; SSE3-NEXT: movd %eax, %xmm0
845 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],x…
846 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],x…
847 ; SSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
848 ; SSE3-NEXT: retq
852 ; SSSE3-NEXT: pextrw $7, %xmm0, %eax
853 ; SSSE3-NEXT: bsrw %ax, %ax
854 ; SSSE3-NEXT: xorl $15, %eax
855 ; SSSE3-NEXT: movd %eax, %xmm1
856 ; SSSE3-NEXT: pextrw $3, %xmm0, %eax
857 ; SSSE3-NEXT: bsrw %ax, %ax
858 ; SSSE3-NEXT: xorl $15, %eax
859 ; SSSE3-NEXT: movd %eax, %xmm2
860 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],…
861 ; SSSE3-NEXT: pextrw $5, %xmm0, %eax
862 ; SSSE3-NEXT: bsrw %ax, %ax
863 ; SSSE3-NEXT: xorl $15, %eax
864 ; SSSE3-NEXT: movd %eax, %xmm3
865 ; SSSE3-NEXT: pextrw $1, %xmm0, %eax
866 ; SSSE3-NEXT: bsrw %ax, %ax
867 ; SSSE3-NEXT: xorl $15, %eax
868 ; SSSE3-NEXT: movd %eax, %xmm1
869 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],…
870 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],…
871 ; SSSE3-NEXT: pextrw $6, %xmm0, %eax
872 ; SSSE3-NEXT: bsrw %ax, %ax
873 ; SSSE3-NEXT: xorl $15, %eax
874 ; SSSE3-NEXT: movd %eax, %xmm2
875 ; SSSE3-NEXT: pextrw $2, %xmm0, %eax
876 ; SSSE3-NEXT: bsrw %ax, %ax
877 ; SSSE3-NEXT: xorl $15, %eax
878 ; SSSE3-NEXT: movd %eax, %xmm3
879 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],…
880 ; SSSE3-NEXT: pextrw $4, %xmm0, %eax
881 ; SSSE3-NEXT: bsrw %ax, %ax
882 ; SSSE3-NEXT: xorl $15, %eax
883 ; SSSE3-NEXT: movd %eax, %xmm2
884 ; SSSE3-NEXT: movd %xmm0, %eax
885 ; SSSE3-NEXT: bsrw %ax, %ax
886 ; SSSE3-NEXT: xorl $15, %eax
887 ; SSSE3-NEXT: movd %eax, %xmm0
888 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],…
889 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],…
890 ; SSSE3-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
891 ; SSSE3-NEXT: retq
895 ; SSE41-NEXT: pextrw $1, %xmm0, %eax
896 ; SSE41-NEXT: bsrw %ax, %ax
897 ; SSE41-NEXT: xorl $15, %eax
898 ; SSE41-NEXT: movd %xmm0, %ecx
899 ; SSE41-NEXT: bsrw %cx, %cx
900 ; SSE41-NEXT: xorl $15, %ecx
901 ; SSE41-NEXT: movd %ecx, %xmm1
902 ; SSE41-NEXT: pinsrw $1, %eax, %xmm1
903 ; SSE41-NEXT: pextrw $2, %xmm0, %eax
904 ; SSE41-NEXT: bsrw %ax, %ax
905 ; SSE41-NEXT: xorl $15, %eax
906 ; SSE41-NEXT: pinsrw $2, %eax, %xmm1
907 ; SSE41-NEXT: pextrw $3, %xmm0, %eax
908 ; SSE41-NEXT: bsrw %ax, %ax
909 ; SSE41-NEXT: xorl $15, %eax
910 ; SSE41-NEXT: pinsrw $3, %eax, %xmm1
911 ; SSE41-NEXT: pextrw $4, %xmm0, %eax
912 ; SSE41-NEXT: bsrw %ax, %ax
913 ; SSE41-NEXT: xorl $15, %eax
914 ; SSE41-NEXT: pinsrw $4, %eax, %xmm1
915 ; SSE41-NEXT: pextrw $5, %xmm0, %eax
916 ; SSE41-NEXT: bsrw %ax, %ax
917 ; SSE41-NEXT: xorl $15, %eax
918 ; SSE41-NEXT: pinsrw $5, %eax, %xmm1
919 ; SSE41-NEXT: pextrw $6, %xmm0, %eax
920 ; SSE41-NEXT: bsrw %ax, %ax
921 ; SSE41-NEXT: xorl $15, %eax
922 ; SSE41-NEXT: pinsrw $6, %eax, %xmm1
923 ; SSE41-NEXT: pextrw $7, %xmm0, %eax
924 ; SSE41-NEXT: bsrw %ax, %ax
925 ; SSE41-NEXT: xorl $15, %eax
926 ; SSE41-NEXT: pinsrw $7, %eax, %xmm1
927 ; SSE41-NEXT: movdqa %xmm1, %xmm0
928 ; SSE41-NEXT: retq
932 ; AVX-NEXT: vpextrw $1, %xmm0, %eax
933 ; AVX-NEXT: bsrw %ax, %ax
934 ; AVX-NEXT: xorl $15, %eax
935 ; AVX-NEXT: vmovd %xmm0, %ecx
936 ; AVX-NEXT: bsrw %cx, %cx
937 ; AVX-NEXT: xorl $15, %ecx
938 ; AVX-NEXT: vmovd %ecx, %xmm1
939 ; AVX-NEXT: vpinsrw $1, %eax, %xmm1, %xmm1
940 ; AVX-NEXT: vpextrw $2, %xmm0, %eax
941 ; AVX-NEXT: bsrw %ax, %ax
942 ; AVX-NEXT: xorl $15, %eax
943 ; AVX-NEXT: vpinsrw $2, %eax, %xmm1, %xmm1
944 ; AVX-NEXT: vpextrw $3, %xmm0, %eax
945 ; AVX-NEXT: bsrw %ax, %ax
946 ; AVX-NEXT: xorl $15, %eax
947 ; AVX-NEXT: vpinsrw $3, %eax, %xmm1, %xmm1
948 ; AVX-NEXT: vpextrw $4, %xmm0, %eax
949 ; AVX-NEXT: bsrw %ax, %ax
950 ; AVX-NEXT: xorl $15, %eax
951 ; AVX-NEXT: vpinsrw $4, %eax, %xmm1, %xmm1
952 ; AVX-NEXT: vpextrw $5, %xmm0, %eax
953 ; AVX-NEXT: bsrw %ax, %ax
954 ; AVX-NEXT: xorl $15, %eax
955 ; AVX-NEXT: vpinsrw $5, %eax, %xmm1, %xmm1
956 ; AVX-NEXT: vpextrw $6, %xmm0, %eax
957 ; AVX-NEXT: bsrw %ax, %ax
958 ; AVX-NEXT: xorl $15, %eax
959 ; AVX-NEXT: vpinsrw $6, %eax, %xmm1, %xmm1
960 ; AVX-NEXT: vpextrw $7, %xmm0, %eax
961 ; AVX-NEXT: bsrw %ax, %ax
962 ; AVX-NEXT: xorl $15, %eax
963 ; AVX-NEXT: vpinsrw $7, %eax, %xmm1, %xmm0
964 ; AVX-NEXT: retq
968 ; AVX512VLCD-NEXT: vpmovzxwd %xmm0, %ymm0
969 ; AVX512VLCD-NEXT: vplzcntd %ymm0, %ymm0
970 ; AVX512VLCD-NEXT: vpmovdw %ymm0, %xmm0
971 ; AVX512VLCD-NEXT: vpsubw {{.*}}(%rip), %xmm0, %xmm0
972 ; AVX512VLCD-NEXT: retq
976 ; AVX512CD-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,x…
977 ; AVX512CD-NEXT: vplzcntd %zmm0, %zmm0
978 ; AVX512CD-NEXT: vpmovdw %zmm0, %ymm0
979 ; AVX512CD-NEXT: vpsubw {{.*}}(%rip), %xmm0, %xmm0
980 ; AVX512CD-NEXT: retq
988 ; SSE2-NEXT: pushq %rbp
989 ; SSE2-NEXT: pushq %rbx
990 ; SSE2-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
991 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
992 ; SSE2-NEXT: bsrl %eax, %ecx
993 ; SSE2-NEXT: movl $15, %eax
994 ; SSE2-NEXT: cmovel %eax, %ecx
995 ; SSE2-NEXT: xorl $7, %ecx
996 ; SSE2-NEXT: movd %ecx, %xmm0
997 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebx
998 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %edi
999 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r9d
1000 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1001 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r11d
1002 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1003 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r8d
1004 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1005 ; SSE2-NEXT: bsrl %ecx, %ecx
1006 ; SSE2-NEXT: cmovel %eax, %ecx
1007 ; SSE2-NEXT: xorl $7, %ecx
1008 ; SSE2-NEXT: movd %ecx, %xmm1
1009 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
1010 ; SSE2-NEXT: bsrl %edx, %ecx
1011 ; SSE2-NEXT: cmovel %eax, %ecx
1012 ; SSE2-NEXT: xorl $7, %ecx
1013 ; SSE2-NEXT: movd %ecx, %xmm2
1014 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1015 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1016 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r10d
1017 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebp
1018 ; SSE2-NEXT: bsrl %ebp, %ebp
1019 ; SSE2-NEXT: cmovel %eax, %ebp
1020 ; SSE2-NEXT: xorl $7, %ebp
1021 ; SSE2-NEXT: movd %ebp, %xmm0
1022 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],x…
1023 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
1024 ; SSE2-NEXT: bsrl %edi, %edi
1025 ; SSE2-NEXT: cmovel %eax, %edi
1026 ; SSE2-NEXT: xorl $7, %edi
1027 ; SSE2-NEXT: movd %edi, %xmm1
1028 ; SSE2-NEXT: bsrl %ecx, %ecx
1029 ; SSE2-NEXT: cmovel %eax, %ecx
1030 ; SSE2-NEXT: xorl $7, %ecx
1031 ; SSE2-NEXT: movd %ecx, %xmm2
1032 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],x…
1033 ; SSE2-NEXT: bsrl %esi, %ecx
1034 ; SSE2-NEXT: cmovel %eax, %ecx
1035 ; SSE2-NEXT: xorl $7, %ecx
1036 ; SSE2-NEXT: movd %ecx, %xmm3
1037 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1038 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1039 ; SSE2-NEXT: bsrl %ecx, %ecx
1040 ; SSE2-NEXT: cmovel %eax, %ecx
1041 ; SSE2-NEXT: xorl $7, %ecx
1042 ; SSE2-NEXT: movd %ecx, %xmm1
1043 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],x…
1044 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],x…
1045 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
1046 ; SSE2-NEXT: bsrl %ebx, %ecx
1047 ; SSE2-NEXT: cmovel %eax, %ecx
1048 ; SSE2-NEXT: xorl $7, %ecx
1049 ; SSE2-NEXT: movd %ecx, %xmm0
1050 ; SSE2-NEXT: bsrl %edx, %ecx
1051 ; SSE2-NEXT: cmovel %eax, %ecx
1052 ; SSE2-NEXT: xorl $7, %ecx
1053 ; SSE2-NEXT: movd %ecx, %xmm3
1054 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],x…
1055 ; SSE2-NEXT: bsrl %r11d, %ecx
1056 ; SSE2-NEXT: cmovel %eax, %ecx
1057 ; SSE2-NEXT: xorl $7, %ecx
1058 ; SSE2-NEXT: movd %ecx, %xmm0
1059 ; SSE2-NEXT: bsrl %esi, %ecx
1060 ; SSE2-NEXT: cmovel %eax, %ecx
1061 ; SSE2-NEXT: xorl $7, %ecx
1062 ; SSE2-NEXT: movd %ecx, %xmm2
1063 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
1064 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],x…
1065 ; SSE2-NEXT: bsrl %r9d, %ecx
1066 ; SSE2-NEXT: cmovel %eax, %ecx
1067 ; SSE2-NEXT: xorl $7, %ecx
1068 ; SSE2-NEXT: movd %ecx, %xmm0
1069 ; SSE2-NEXT: bsrl %r10d, %ecx
1070 ; SSE2-NEXT: cmovel %eax, %ecx
1071 ; SSE2-NEXT: xorl $7, %ecx
1072 ; SSE2-NEXT: movd %ecx, %xmm3
1073 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],x…
1074 ; SSE2-NEXT: bsrl %r8d, %ecx
1075 ; SSE2-NEXT: cmovel %eax, %ecx
1076 ; SSE2-NEXT: xorl $7, %ecx
1077 ; SSE2-NEXT: movd %ecx, %xmm4
1078 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1079 ; SSE2-NEXT: bsrl %ecx, %ecx
1080 ; SSE2-NEXT: cmovel %eax, %ecx
1081 ; SSE2-NEXT: xorl $7, %ecx
1082 ; SSE2-NEXT: movd %ecx, %xmm0
1083 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],x…
1084 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],x…
1085 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],x…
1086 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
1087 ; SSE2-NEXT: popq %rbx
1088 ; SSE2-NEXT: popq %rbp
1089 ; SSE2-NEXT: retq
1093 ; SSE3-NEXT: pushq %rbp
1094 ; SSE3-NEXT: pushq %rbx
1095 ; SSE3-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1096 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1097 ; SSE3-NEXT: bsrl %eax, %ecx
1098 ; SSE3-NEXT: movl $15, %eax
1099 ; SSE3-NEXT: cmovel %eax, %ecx
1100 ; SSE3-NEXT: xorl $7, %ecx
1101 ; SSE3-NEXT: movd %ecx, %xmm0
1102 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebx
1103 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edi
1104 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r9d
1105 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1106 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r11d
1107 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1108 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r8d
1109 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1110 ; SSE3-NEXT: bsrl %ecx, %ecx
1111 ; SSE3-NEXT: cmovel %eax, %ecx
1112 ; SSE3-NEXT: xorl $7, %ecx
1113 ; SSE3-NEXT: movd %ecx, %xmm1
1114 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
1115 ; SSE3-NEXT: bsrl %edx, %ecx
1116 ; SSE3-NEXT: cmovel %eax, %ecx
1117 ; SSE3-NEXT: xorl $7, %ecx
1118 ; SSE3-NEXT: movd %ecx, %xmm2
1119 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1120 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1121 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r10d
1122 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebp
1123 ; SSE3-NEXT: bsrl %ebp, %ebp
1124 ; SSE3-NEXT: cmovel %eax, %ebp
1125 ; SSE3-NEXT: xorl $7, %ebp
1126 ; SSE3-NEXT: movd %ebp, %xmm0
1127 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],x…
1128 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
1129 ; SSE3-NEXT: bsrl %edi, %edi
1130 ; SSE3-NEXT: cmovel %eax, %edi
1131 ; SSE3-NEXT: xorl $7, %edi
1132 ; SSE3-NEXT: movd %edi, %xmm1
1133 ; SSE3-NEXT: bsrl %ecx, %ecx
1134 ; SSE3-NEXT: cmovel %eax, %ecx
1135 ; SSE3-NEXT: xorl $7, %ecx
1136 ; SSE3-NEXT: movd %ecx, %xmm2
1137 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],x…
1138 ; SSE3-NEXT: bsrl %esi, %ecx
1139 ; SSE3-NEXT: cmovel %eax, %ecx
1140 ; SSE3-NEXT: xorl $7, %ecx
1141 ; SSE3-NEXT: movd %ecx, %xmm3
1142 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1143 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1144 ; SSE3-NEXT: bsrl %ecx, %ecx
1145 ; SSE3-NEXT: cmovel %eax, %ecx
1146 ; SSE3-NEXT: xorl $7, %ecx
1147 ; SSE3-NEXT: movd %ecx, %xmm1
1148 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],x…
1149 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],x…
1150 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
1151 ; SSE3-NEXT: bsrl %ebx, %ecx
1152 ; SSE3-NEXT: cmovel %eax, %ecx
1153 ; SSE3-NEXT: xorl $7, %ecx
1154 ; SSE3-NEXT: movd %ecx, %xmm0
1155 ; SSE3-NEXT: bsrl %edx, %ecx
1156 ; SSE3-NEXT: cmovel %eax, %ecx
1157 ; SSE3-NEXT: xorl $7, %ecx
1158 ; SSE3-NEXT: movd %ecx, %xmm3
1159 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],x…
1160 ; SSE3-NEXT: bsrl %r11d, %ecx
1161 ; SSE3-NEXT: cmovel %eax, %ecx
1162 ; SSE3-NEXT: xorl $7, %ecx
1163 ; SSE3-NEXT: movd %ecx, %xmm0
1164 ; SSE3-NEXT: bsrl %esi, %ecx
1165 ; SSE3-NEXT: cmovel %eax, %ecx
1166 ; SSE3-NEXT: xorl $7, %ecx
1167 ; SSE3-NEXT: movd %ecx, %xmm2
1168 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
1169 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],x…
1170 ; SSE3-NEXT: bsrl %r9d, %ecx
1171 ; SSE3-NEXT: cmovel %eax, %ecx
1172 ; SSE3-NEXT: xorl $7, %ecx
1173 ; SSE3-NEXT: movd %ecx, %xmm0
1174 ; SSE3-NEXT: bsrl %r10d, %ecx
1175 ; SSE3-NEXT: cmovel %eax, %ecx
1176 ; SSE3-NEXT: xorl $7, %ecx
1177 ; SSE3-NEXT: movd %ecx, %xmm3
1178 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],x…
1179 ; SSE3-NEXT: bsrl %r8d, %ecx
1180 ; SSE3-NEXT: cmovel %eax, %ecx
1181 ; SSE3-NEXT: xorl $7, %ecx
1182 ; SSE3-NEXT: movd %ecx, %xmm4
1183 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1184 ; SSE3-NEXT: bsrl %ecx, %ecx
1185 ; SSE3-NEXT: cmovel %eax, %ecx
1186 ; SSE3-NEXT: xorl $7, %ecx
1187 ; SSE3-NEXT: movd %ecx, %xmm0
1188 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],x…
1189 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],x…
1190 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],x…
1191 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
1192 ; SSE3-NEXT: popq %rbx
1193 ; SSE3-NEXT: popq %rbp
1194 ; SSE3-NEXT: retq
1198 ; SSSE3-NEXT: pushq %rbp
1199 ; SSSE3-NEXT: pushq %rbx
1200 ; SSSE3-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1201 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1202 ; SSSE3-NEXT: bsrl %eax, %ecx
1203 ; SSSE3-NEXT: movl $15, %eax
1204 ; SSSE3-NEXT: cmovel %eax, %ecx
1205 ; SSSE3-NEXT: xorl $7, %ecx
1206 ; SSSE3-NEXT: movd %ecx, %xmm0
1207 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebx
1208 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edi
1209 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r9d
1210 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1211 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r11d
1212 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1213 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r8d
1214 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1215 ; SSSE3-NEXT: bsrl %ecx, %ecx
1216 ; SSSE3-NEXT: cmovel %eax, %ecx
1217 ; SSSE3-NEXT: xorl $7, %ecx
1218 ; SSSE3-NEXT: movd %ecx, %xmm1
1219 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],…
1220 ; SSSE3-NEXT: bsrl %edx, %ecx
1221 ; SSSE3-NEXT: cmovel %eax, %ecx
1222 ; SSSE3-NEXT: xorl $7, %ecx
1223 ; SSSE3-NEXT: movd %ecx, %xmm2
1224 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1225 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1226 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r10d
1227 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebp
1228 ; SSSE3-NEXT: bsrl %ebp, %ebp
1229 ; SSSE3-NEXT: cmovel %eax, %ebp
1230 ; SSSE3-NEXT: xorl $7, %ebp
1231 ; SSSE3-NEXT: movd %ebp, %xmm0
1232 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],…
1233 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
1234 ; SSSE3-NEXT: bsrl %edi, %edi
1235 ; SSSE3-NEXT: cmovel %eax, %edi
1236 ; SSSE3-NEXT: xorl $7, %edi
1237 ; SSSE3-NEXT: movd %edi, %xmm1
1238 ; SSSE3-NEXT: bsrl %ecx, %ecx
1239 ; SSSE3-NEXT: cmovel %eax, %ecx
1240 ; SSSE3-NEXT: xorl $7, %ecx
1241 ; SSSE3-NEXT: movd %ecx, %xmm2
1242 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],…
1243 ; SSSE3-NEXT: bsrl %esi, %ecx
1244 ; SSSE3-NEXT: cmovel %eax, %ecx
1245 ; SSSE3-NEXT: xorl $7, %ecx
1246 ; SSSE3-NEXT: movd %ecx, %xmm3
1247 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1248 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1249 ; SSSE3-NEXT: bsrl %ecx, %ecx
1250 ; SSSE3-NEXT: cmovel %eax, %ecx
1251 ; SSSE3-NEXT: xorl $7, %ecx
1252 ; SSSE3-NEXT: movd %ecx, %xmm1
1253 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],…
1254 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],…
1255 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],…
1256 ; SSSE3-NEXT: bsrl %ebx, %ecx
1257 ; SSSE3-NEXT: cmovel %eax, %ecx
1258 ; SSSE3-NEXT: xorl $7, %ecx
1259 ; SSSE3-NEXT: movd %ecx, %xmm0
1260 ; SSSE3-NEXT: bsrl %edx, %ecx
1261 ; SSSE3-NEXT: cmovel %eax, %ecx
1262 ; SSSE3-NEXT: xorl $7, %ecx
1263 ; SSSE3-NEXT: movd %ecx, %xmm3
1264 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],…
1265 ; SSSE3-NEXT: bsrl %r11d, %ecx
1266 ; SSSE3-NEXT: cmovel %eax, %ecx
1267 ; SSSE3-NEXT: xorl $7, %ecx
1268 ; SSSE3-NEXT: movd %ecx, %xmm0
1269 ; SSSE3-NEXT: bsrl %esi, %ecx
1270 ; SSSE3-NEXT: cmovel %eax, %ecx
1271 ; SSSE3-NEXT: xorl $7, %ecx
1272 ; SSSE3-NEXT: movd %ecx, %xmm2
1273 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],…
1274 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],…
1275 ; SSSE3-NEXT: bsrl %r9d, %ecx
1276 ; SSSE3-NEXT: cmovel %eax, %ecx
1277 ; SSSE3-NEXT: xorl $7, %ecx
1278 ; SSSE3-NEXT: movd %ecx, %xmm0
1279 ; SSSE3-NEXT: bsrl %r10d, %ecx
1280 ; SSSE3-NEXT: cmovel %eax, %ecx
1281 ; SSSE3-NEXT: xorl $7, %ecx
1282 ; SSSE3-NEXT: movd %ecx, %xmm3
1283 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],…
1284 ; SSSE3-NEXT: bsrl %r8d, %ecx
1285 ; SSSE3-NEXT: cmovel %eax, %ecx
1286 ; SSSE3-NEXT: xorl $7, %ecx
1287 ; SSSE3-NEXT: movd %ecx, %xmm4
1288 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1289 ; SSSE3-NEXT: bsrl %ecx, %ecx
1290 ; SSSE3-NEXT: cmovel %eax, %ecx
1291 ; SSSE3-NEXT: xorl $7, %ecx
1292 ; SSSE3-NEXT: movd %ecx, %xmm0
1293 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],…
1294 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],…
1295 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],…
1296 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
1297 ; SSSE3-NEXT: popq %rbx
1298 ; SSSE3-NEXT: popq %rbp
1299 ; SSSE3-NEXT: retq
1303 ; SSE41-NEXT: pextrb $1, %xmm0, %eax
1304 ; SSE41-NEXT: bsrl %eax, %ecx
1305 ; SSE41-NEXT: movl $15, %eax
1306 ; SSE41-NEXT: cmovel %eax, %ecx
1307 ; SSE41-NEXT: xorl $7, %ecx
1308 ; SSE41-NEXT: pextrb $0, %xmm0, %edx
1309 ; SSE41-NEXT: bsrl %edx, %edx
1310 ; SSE41-NEXT: cmovel %eax, %edx
1311 ; SSE41-NEXT: xorl $7, %edx
1312 ; SSE41-NEXT: movd %edx, %xmm1
1313 ; SSE41-NEXT: pinsrb $1, %ecx, %xmm1
1314 ; SSE41-NEXT: pextrb $2, %xmm0, %ecx
1315 ; SSE41-NEXT: bsrl %ecx, %ecx
1316 ; SSE41-NEXT: cmovel %eax, %ecx
1317 ; SSE41-NEXT: xorl $7, %ecx
1318 ; SSE41-NEXT: pinsrb $2, %ecx, %xmm1
1319 ; SSE41-NEXT: pextrb $3, %xmm0, %ecx
1320 ; SSE41-NEXT: bsrl %ecx, %ecx
1321 ; SSE41-NEXT: cmovel %eax, %ecx
1322 ; SSE41-NEXT: xorl $7, %ecx
1323 ; SSE41-NEXT: pinsrb $3, %ecx, %xmm1
1324 ; SSE41-NEXT: pextrb $4, %xmm0, %ecx
1325 ; SSE41-NEXT: bsrl %ecx, %ecx
1326 ; SSE41-NEXT: cmovel %eax, %ecx
1327 ; SSE41-NEXT: xorl $7, %ecx
1328 ; SSE41-NEXT: pinsrb $4, %ecx, %xmm1
1329 ; SSE41-NEXT: pextrb $5, %xmm0, %ecx
1330 ; SSE41-NEXT: bsrl %ecx, %ecx
1331 ; SSE41-NEXT: cmovel %eax, %ecx
1332 ; SSE41-NEXT: xorl $7, %ecx
1333 ; SSE41-NEXT: pinsrb $5, %ecx, %xmm1
1334 ; SSE41-NEXT: pextrb $6, %xmm0, %ecx
1335 ; SSE41-NEXT: bsrl %ecx, %ecx
1336 ; SSE41-NEXT: cmovel %eax, %ecx
1337 ; SSE41-NEXT: xorl $7, %ecx
1338 ; SSE41-NEXT: pinsrb $6, %ecx, %xmm1
1339 ; SSE41-NEXT: pextrb $7, %xmm0, %ecx
1340 ; SSE41-NEXT: bsrl %ecx, %ecx
1341 ; SSE41-NEXT: cmovel %eax, %ecx
1342 ; SSE41-NEXT: xorl $7, %ecx
1343 ; SSE41-NEXT: pinsrb $7, %ecx, %xmm1
1344 ; SSE41-NEXT: pextrb $8, %xmm0, %ecx
1345 ; SSE41-NEXT: bsrl %ecx, %ecx
1346 ; SSE41-NEXT: cmovel %eax, %ecx
1347 ; SSE41-NEXT: xorl $7, %ecx
1348 ; SSE41-NEXT: pinsrb $8, %ecx, %xmm1
1349 ; SSE41-NEXT: pextrb $9, %xmm0, %ecx
1350 ; SSE41-NEXT: bsrl %ecx, %ecx
1351 ; SSE41-NEXT: cmovel %eax, %ecx
1352 ; SSE41-NEXT: xorl $7, %ecx
1353 ; SSE41-NEXT: pinsrb $9, %ecx, %xmm1
1354 ; SSE41-NEXT: pextrb $10, %xmm0, %ecx
1355 ; SSE41-NEXT: bsrl %ecx, %ecx
1356 ; SSE41-NEXT: cmovel %eax, %ecx
1357 ; SSE41-NEXT: xorl $7, %ecx
1358 ; SSE41-NEXT: pinsrb $10, %ecx, %xmm1
1359 ; SSE41-NEXT: pextrb $11, %xmm0, %ecx
1360 ; SSE41-NEXT: bsrl %ecx, %ecx
1361 ; SSE41-NEXT: cmovel %eax, %ecx
1362 ; SSE41-NEXT: xorl $7, %ecx
1363 ; SSE41-NEXT: pinsrb $11, %ecx, %xmm1
1364 ; SSE41-NEXT: pextrb $12, %xmm0, %ecx
1365 ; SSE41-NEXT: bsrl %ecx, %ecx
1366 ; SSE41-NEXT: cmovel %eax, %ecx
1367 ; SSE41-NEXT: xorl $7, %ecx
1368 ; SSE41-NEXT: pinsrb $12, %ecx, %xmm1
1369 ; SSE41-NEXT: pextrb $13, %xmm0, %ecx
1370 ; SSE41-NEXT: bsrl %ecx, %ecx
1371 ; SSE41-NEXT: cmovel %eax, %ecx
1372 ; SSE41-NEXT: xorl $7, %ecx
1373 ; SSE41-NEXT: pinsrb $13, %ecx, %xmm1
1374 ; SSE41-NEXT: pextrb $14, %xmm0, %ecx
1375 ; SSE41-NEXT: bsrl %ecx, %ecx
1376 ; SSE41-NEXT: cmovel %eax, %ecx
1377 ; SSE41-NEXT: xorl $7, %ecx
1378 ; SSE41-NEXT: pinsrb $14, %ecx, %xmm1
1379 ; SSE41-NEXT: pextrb $15, %xmm0, %ecx
1380 ; SSE41-NEXT: bsrl %ecx, %ecx
1381 ; SSE41-NEXT: cmovel %eax, %ecx
1382 ; SSE41-NEXT: xorl $7, %ecx
1383 ; SSE41-NEXT: pinsrb $15, %ecx, %xmm1
1384 ; SSE41-NEXT: movdqa %xmm1, %xmm0
1385 ; SSE41-NEXT: retq
1389 ; AVX-NEXT: vpextrb $1, %xmm0, %eax
1390 ; AVX-NEXT: bsrl %eax, %ecx
1391 ; AVX-NEXT: movl $15, %eax
1392 ; AVX-NEXT: cmovel %eax, %ecx
1393 ; AVX-NEXT: xorl $7, %ecx
1394 ; AVX-NEXT: vpextrb $0, %xmm0, %edx
1395 ; AVX-NEXT: bsrl %edx, %edx
1396 ; AVX-NEXT: cmovel %eax, %edx
1397 ; AVX-NEXT: xorl $7, %edx
1398 ; AVX-NEXT: vmovd %edx, %xmm1
1399 ; AVX-NEXT: vpinsrb $1, %ecx, %xmm1, %xmm1
1400 ; AVX-NEXT: vpextrb $2, %xmm0, %ecx
1401 ; AVX-NEXT: bsrl %ecx, %ecx
1402 ; AVX-NEXT: cmovel %eax, %ecx
1403 ; AVX-NEXT: xorl $7, %ecx
1404 ; AVX-NEXT: vpinsrb $2, %ecx, %xmm1, %xmm1
1405 ; AVX-NEXT: vpextrb $3, %xmm0, %ecx
1406 ; AVX-NEXT: bsrl %ecx, %ecx
1407 ; AVX-NEXT: cmovel %eax, %ecx
1408 ; AVX-NEXT: xorl $7, %ecx
1409 ; AVX-NEXT: vpinsrb $3, %ecx, %xmm1, %xmm1
1410 ; AVX-NEXT: vpextrb $4, %xmm0, %ecx
1411 ; AVX-NEXT: bsrl %ecx, %ecx
1412 ; AVX-NEXT: cmovel %eax, %ecx
1413 ; AVX-NEXT: xorl $7, %ecx
1414 ; AVX-NEXT: vpinsrb $4, %ecx, %xmm1, %xmm1
1415 ; AVX-NEXT: vpextrb $5, %xmm0, %ecx
1416 ; AVX-NEXT: bsrl %ecx, %ecx
1417 ; AVX-NEXT: cmovel %eax, %ecx
1418 ; AVX-NEXT: xorl $7, %ecx
1419 ; AVX-NEXT: vpinsrb $5, %ecx, %xmm1, %xmm1
1420 ; AVX-NEXT: vpextrb $6, %xmm0, %ecx
1421 ; AVX-NEXT: bsrl %ecx, %ecx
1422 ; AVX-NEXT: cmovel %eax, %ecx
1423 ; AVX-NEXT: xorl $7, %ecx
1424 ; AVX-NEXT: vpinsrb $6, %ecx, %xmm1, %xmm1
1425 ; AVX-NEXT: vpextrb $7, %xmm0, %ecx
1426 ; AVX-NEXT: bsrl %ecx, %ecx
1427 ; AVX-NEXT: cmovel %eax, %ecx
1428 ; AVX-NEXT: xorl $7, %ecx
1429 ; AVX-NEXT: vpinsrb $7, %ecx, %xmm1, %xmm1
1430 ; AVX-NEXT: vpextrb $8, %xmm0, %ecx
1431 ; AVX-NEXT: bsrl %ecx, %ecx
1432 ; AVX-NEXT: cmovel %eax, %ecx
1433 ; AVX-NEXT: xorl $7, %ecx
1434 ; AVX-NEXT: vpinsrb $8, %ecx, %xmm1, %xmm1
1435 ; AVX-NEXT: vpextrb $9, %xmm0, %ecx
1436 ; AVX-NEXT: bsrl %ecx, %ecx
1437 ; AVX-NEXT: cmovel %eax, %ecx
1438 ; AVX-NEXT: xorl $7, %ecx
1439 ; AVX-NEXT: vpinsrb $9, %ecx, %xmm1, %xmm1
1440 ; AVX-NEXT: vpextrb $10, %xmm0, %ecx
1441 ; AVX-NEXT: bsrl %ecx, %ecx
1442 ; AVX-NEXT: cmovel %eax, %ecx
1443 ; AVX-NEXT: xorl $7, %ecx
1444 ; AVX-NEXT: vpinsrb $10, %ecx, %xmm1, %xmm1
1445 ; AVX-NEXT: vpextrb $11, %xmm0, %ecx
1446 ; AVX-NEXT: bsrl %ecx, %ecx
1447 ; AVX-NEXT: cmovel %eax, %ecx
1448 ; AVX-NEXT: xorl $7, %ecx
1449 ; AVX-NEXT: vpinsrb $11, %ecx, %xmm1, %xmm1
1450 ; AVX-NEXT: vpextrb $12, %xmm0, %ecx
1451 ; AVX-NEXT: bsrl %ecx, %ecx
1452 ; AVX-NEXT: cmovel %eax, %ecx
1453 ; AVX-NEXT: xorl $7, %ecx
1454 ; AVX-NEXT: vpinsrb $12, %ecx, %xmm1, %xmm1
1455 ; AVX-NEXT: vpextrb $13, %xmm0, %ecx
1456 ; AVX-NEXT: bsrl %ecx, %ecx
1457 ; AVX-NEXT: cmovel %eax, %ecx
1458 ; AVX-NEXT: xorl $7, %ecx
1459 ; AVX-NEXT: vpinsrb $13, %ecx, %xmm1, %xmm1
1460 ; AVX-NEXT: vpextrb $14, %xmm0, %ecx
1461 ; AVX-NEXT: bsrl %ecx, %ecx
1462 ; AVX-NEXT: cmovel %eax, %ecx
1463 ; AVX-NEXT: xorl $7, %ecx
1464 ; AVX-NEXT: vpinsrb $14, %ecx, %xmm1, %xmm1
1465 ; AVX-NEXT: vpextrb $15, %xmm0, %ecx
1466 ; AVX-NEXT: bsrl %ecx, %ecx
1467 ; AVX-NEXT: cmovel %eax, %ecx
1468 ; AVX-NEXT: xorl $7, %ecx
1469 ; AVX-NEXT: vpinsrb $15, %ecx, %xmm1, %xmm0
1470 ; AVX-NEXT: retq
1474 ; AVX512VLCD-NEXT: vpmovzxbd %xmm0, %zmm0
1475 ; AVX512VLCD-NEXT: vplzcntd %zmm0, %zmm0
1476 ; AVX512VLCD-NEXT: vpmovdb %zmm0, %xmm0
1477 ; AVX512VLCD-NEXT: vpsubb {{.*}}(%rip), %xmm0, %xmm0
1478 ; AVX512VLCD-NEXT: retq
1482 ; AVX512CD-NEXT: vpmovzxbd %xmm0, %zmm0
1483 ; AVX512CD-NEXT: vplzcntd %zmm0, %zmm0
1484 ; AVX512CD-NEXT: vpmovdb %zmm0, %xmm0
1485 ; AVX512CD-NEXT: vpsubb {{.*}}(%rip), %xmm0, %xmm0
1486 ; AVX512CD-NEXT: retq
1494 ; SSE2-NEXT: pushq %rbx
1495 ; SSE2-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1496 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1497 ; SSE2-NEXT: bsrl %eax, %eax
1498 ; SSE2-NEXT: xorl $7, %eax
1499 ; SSE2-NEXT: movd %eax, %xmm0
1500 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %edi
1501 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1502 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r9d
1503 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1504 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r10d
1505 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1506 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r8d
1507 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1508 ; SSE2-NEXT: bsrl %esi, %esi
1509 ; SSE2-NEXT: xorl $7, %esi
1510 ; SSE2-NEXT: movd %esi, %xmm1
1511 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
1512 ; SSE2-NEXT: bsrl %eax, %eax
1513 ; SSE2-NEXT: xorl $7, %eax
1514 ; SSE2-NEXT: movd %eax, %xmm0
1515 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1516 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1517 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %r11d
1518 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebx
1519 ; SSE2-NEXT: bsrl %ebx, %ebx
1520 ; SSE2-NEXT: xorl $7, %ebx
1521 ; SSE2-NEXT: movd %ebx, %xmm2
1522 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
1523 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],x…
1524 ; SSE2-NEXT: bsrl %edx, %edx
1525 ; SSE2-NEXT: xorl $7, %edx
1526 ; SSE2-NEXT: movd %edx, %xmm0
1527 ; SSE2-NEXT: bsrl %esi, %edx
1528 ; SSE2-NEXT: xorl $7, %edx
1529 ; SSE2-NEXT: movd %edx, %xmm3
1530 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],x…
1531 ; SSE2-NEXT: bsrl %ecx, %ecx
1532 ; SSE2-NEXT: xorl $7, %ecx
1533 ; SSE2-NEXT: movd %ecx, %xmm0
1534 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1535 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1536 ; SSE2-NEXT: bsrl %edx, %edx
1537 ; SSE2-NEXT: xorl $7, %edx
1538 ; SSE2-NEXT: movd %edx, %xmm1
1539 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
1540 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],x…
1541 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],x…
1542 ; SSE2-NEXT: bsrl %edi, %edx
1543 ; SSE2-NEXT: xorl $7, %edx
1544 ; SSE2-NEXT: movd %edx, %xmm0
1545 ; SSE2-NEXT: bsrl %eax, %eax
1546 ; SSE2-NEXT: xorl $7, %eax
1547 ; SSE2-NEXT: movd %eax, %xmm2
1548 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
1549 ; SSE2-NEXT: bsrl %r10d, %eax
1550 ; SSE2-NEXT: xorl $7, %eax
1551 ; SSE2-NEXT: movd %eax, %xmm0
1552 ; SSE2-NEXT: bsrl %ecx, %eax
1553 ; SSE2-NEXT: xorl $7, %eax
1554 ; SSE2-NEXT: movd %eax, %xmm3
1555 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],x…
1556 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],x…
1557 ; SSE2-NEXT: bsrl %r9d, %eax
1558 ; SSE2-NEXT: xorl $7, %eax
1559 ; SSE2-NEXT: movd %eax, %xmm0
1560 ; SSE2-NEXT: bsrl %r11d, %eax
1561 ; SSE2-NEXT: xorl $7, %eax
1562 ; SSE2-NEXT: movd %eax, %xmm2
1563 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
1564 ; SSE2-NEXT: bsrl %r8d, %eax
1565 ; SSE2-NEXT: xorl $7, %eax
1566 ; SSE2-NEXT: movd %eax, %xmm4
1567 ; SSE2-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1568 ; SSE2-NEXT: bsrl %eax, %eax
1569 ; SSE2-NEXT: xorl $7, %eax
1570 ; SSE2-NEXT: movd %eax, %xmm0
1571 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],x…
1572 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],x…
1573 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],x…
1574 ; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
1575 ; SSE2-NEXT: popq %rbx
1576 ; SSE2-NEXT: retq
1580 ; SSE3-NEXT: pushq %rbx
1581 ; SSE3-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1582 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1583 ; SSE3-NEXT: bsrl %eax, %eax
1584 ; SSE3-NEXT: xorl $7, %eax
1585 ; SSE3-NEXT: movd %eax, %xmm0
1586 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edi
1587 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1588 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r9d
1589 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1590 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r10d
1591 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1592 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r8d
1593 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1594 ; SSE3-NEXT: bsrl %esi, %esi
1595 ; SSE3-NEXT: xorl $7, %esi
1596 ; SSE3-NEXT: movd %esi, %xmm1
1597 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
1598 ; SSE3-NEXT: bsrl %eax, %eax
1599 ; SSE3-NEXT: xorl $7, %eax
1600 ; SSE3-NEXT: movd %eax, %xmm0
1601 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1602 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1603 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r11d
1604 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebx
1605 ; SSE3-NEXT: bsrl %ebx, %ebx
1606 ; SSE3-NEXT: xorl $7, %ebx
1607 ; SSE3-NEXT: movd %ebx, %xmm2
1608 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
1609 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],x…
1610 ; SSE3-NEXT: bsrl %edx, %edx
1611 ; SSE3-NEXT: xorl $7, %edx
1612 ; SSE3-NEXT: movd %edx, %xmm0
1613 ; SSE3-NEXT: bsrl %esi, %edx
1614 ; SSE3-NEXT: xorl $7, %edx
1615 ; SSE3-NEXT: movd %edx, %xmm3
1616 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],x…
1617 ; SSE3-NEXT: bsrl %ecx, %ecx
1618 ; SSE3-NEXT: xorl $7, %ecx
1619 ; SSE3-NEXT: movd %ecx, %xmm0
1620 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1621 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1622 ; SSE3-NEXT: bsrl %edx, %edx
1623 ; SSE3-NEXT: xorl $7, %edx
1624 ; SSE3-NEXT: movd %edx, %xmm1
1625 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],x…
1626 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],x…
1627 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],x…
1628 ; SSE3-NEXT: bsrl %edi, %edx
1629 ; SSE3-NEXT: xorl $7, %edx
1630 ; SSE3-NEXT: movd %edx, %xmm0
1631 ; SSE3-NEXT: bsrl %eax, %eax
1632 ; SSE3-NEXT: xorl $7, %eax
1633 ; SSE3-NEXT: movd %eax, %xmm2
1634 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
1635 ; SSE3-NEXT: bsrl %r10d, %eax
1636 ; SSE3-NEXT: xorl $7, %eax
1637 ; SSE3-NEXT: movd %eax, %xmm0
1638 ; SSE3-NEXT: bsrl %ecx, %eax
1639 ; SSE3-NEXT: xorl $7, %eax
1640 ; SSE3-NEXT: movd %eax, %xmm3
1641 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],x…
1642 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],x…
1643 ; SSE3-NEXT: bsrl %r9d, %eax
1644 ; SSE3-NEXT: xorl $7, %eax
1645 ; SSE3-NEXT: movd %eax, %xmm0
1646 ; SSE3-NEXT: bsrl %r11d, %eax
1647 ; SSE3-NEXT: xorl $7, %eax
1648 ; SSE3-NEXT: movd %eax, %xmm2
1649 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],x…
1650 ; SSE3-NEXT: bsrl %r8d, %eax
1651 ; SSE3-NEXT: xorl $7, %eax
1652 ; SSE3-NEXT: movd %eax, %xmm4
1653 ; SSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1654 ; SSE3-NEXT: bsrl %eax, %eax
1655 ; SSE3-NEXT: xorl $7, %eax
1656 ; SSE3-NEXT: movd %eax, %xmm0
1657 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],x…
1658 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],x…
1659 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],x…
1660 ; SSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],x…
1661 ; SSE3-NEXT: popq %rbx
1662 ; SSE3-NEXT: retq
1666 ; SSSE3-NEXT: pushq %rbx
1667 ; SSSE3-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1668 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1669 ; SSSE3-NEXT: bsrl %eax, %eax
1670 ; SSSE3-NEXT: xorl $7, %eax
1671 ; SSSE3-NEXT: movd %eax, %xmm0
1672 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edi
1673 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1674 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r9d
1675 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1676 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r10d
1677 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1678 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r8d
1679 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1680 ; SSSE3-NEXT: bsrl %esi, %esi
1681 ; SSSE3-NEXT: xorl $7, %esi
1682 ; SSSE3-NEXT: movd %esi, %xmm1
1683 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],…
1684 ; SSSE3-NEXT: bsrl %eax, %eax
1685 ; SSSE3-NEXT: xorl $7, %eax
1686 ; SSSE3-NEXT: movd %eax, %xmm0
1687 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1688 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %esi
1689 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %r11d
1690 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ebx
1691 ; SSSE3-NEXT: bsrl %ebx, %ebx
1692 ; SSSE3-NEXT: xorl $7, %ebx
1693 ; SSSE3-NEXT: movd %ebx, %xmm2
1694 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],…
1695 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],…
1696 ; SSSE3-NEXT: bsrl %edx, %edx
1697 ; SSSE3-NEXT: xorl $7, %edx
1698 ; SSSE3-NEXT: movd %edx, %xmm0
1699 ; SSSE3-NEXT: bsrl %esi, %edx
1700 ; SSSE3-NEXT: xorl $7, %edx
1701 ; SSSE3-NEXT: movd %edx, %xmm3
1702 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],…
1703 ; SSSE3-NEXT: bsrl %ecx, %ecx
1704 ; SSSE3-NEXT: xorl $7, %ecx
1705 ; SSSE3-NEXT: movd %ecx, %xmm0
1706 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %ecx
1707 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %edx
1708 ; SSSE3-NEXT: bsrl %edx, %edx
1709 ; SSSE3-NEXT: xorl $7, %edx
1710 ; SSSE3-NEXT: movd %edx, %xmm1
1711 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],…
1712 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],…
1713 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],…
1714 ; SSSE3-NEXT: bsrl %edi, %edx
1715 ; SSSE3-NEXT: xorl $7, %edx
1716 ; SSSE3-NEXT: movd %edx, %xmm0
1717 ; SSSE3-NEXT: bsrl %eax, %eax
1718 ; SSSE3-NEXT: xorl $7, %eax
1719 ; SSSE3-NEXT: movd %eax, %xmm2
1720 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],…
1721 ; SSSE3-NEXT: bsrl %r10d, %eax
1722 ; SSSE3-NEXT: xorl $7, %eax
1723 ; SSSE3-NEXT: movd %eax, %xmm0
1724 ; SSSE3-NEXT: bsrl %ecx, %eax
1725 ; SSSE3-NEXT: xorl $7, %eax
1726 ; SSSE3-NEXT: movd %eax, %xmm3
1727 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1],xmm3[2],xmm0[2],xmm3[3],…
1728 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],…
1729 ; SSSE3-NEXT: bsrl %r9d, %eax
1730 ; SSSE3-NEXT: xorl $7, %eax
1731 ; SSSE3-NEXT: movd %eax, %xmm0
1732 ; SSSE3-NEXT: bsrl %r11d, %eax
1733 ; SSSE3-NEXT: xorl $7, %eax
1734 ; SSSE3-NEXT: movd %eax, %xmm2
1735 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],…
1736 ; SSSE3-NEXT: bsrl %r8d, %eax
1737 ; SSSE3-NEXT: xorl $7, %eax
1738 ; SSSE3-NEXT: movd %eax, %xmm4
1739 ; SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
1740 ; SSSE3-NEXT: bsrl %eax, %eax
1741 ; SSSE3-NEXT: xorl $7, %eax
1742 ; SSSE3-NEXT: movd %eax, %xmm0
1743 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],…
1744 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],…
1745 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],…
1746 ; SSSE3-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],…
1747 ; SSSE3-NEXT: popq %rbx
1748 ; SSSE3-NEXT: retq
1752 ; SSE41-NEXT: pextrb $1, %xmm0, %eax
1753 ; SSE41-NEXT: bsrl %eax, %eax
1754 ; SSE41-NEXT: xorl $7, %eax
1755 ; SSE41-NEXT: pextrb $0, %xmm0, %ecx
1756 ; SSE41-NEXT: bsrl %ecx, %ecx
1757 ; SSE41-NEXT: xorl $7, %ecx
1758 ; SSE41-NEXT: movd %ecx, %xmm1
1759 ; SSE41-NEXT: pinsrb $1, %eax, %xmm1
1760 ; SSE41-NEXT: pextrb $2, %xmm0, %eax
1761 ; SSE41-NEXT: bsrl %eax, %eax
1762 ; SSE41-NEXT: xorl $7, %eax
1763 ; SSE41-NEXT: pinsrb $2, %eax, %xmm1
1764 ; SSE41-NEXT: pextrb $3, %xmm0, %eax
1765 ; SSE41-NEXT: bsrl %eax, %eax
1766 ; SSE41-NEXT: xorl $7, %eax
1767 ; SSE41-NEXT: pinsrb $3, %eax, %xmm1
1768 ; SSE41-NEXT: pextrb $4, %xmm0, %eax
1769 ; SSE41-NEXT: bsrl %eax, %eax
1770 ; SSE41-NEXT: xorl $7, %eax
1771 ; SSE41-NEXT: pinsrb $4, %eax, %xmm1
1772 ; SSE41-NEXT: pextrb $5, %xmm0, %eax
1773 ; SSE41-NEXT: bsrl %eax, %eax
1774 ; SSE41-NEXT: xorl $7, %eax
1775 ; SSE41-NEXT: pinsrb $5, %eax, %xmm1
1776 ; SSE41-NEXT: pextrb $6, %xmm0, %eax
1777 ; SSE41-NEXT: bsrl %eax, %eax
1778 ; SSE41-NEXT: xorl $7, %eax
1779 ; SSE41-NEXT: pinsrb $6, %eax, %xmm1
1780 ; SSE41-NEXT: pextrb $7, %xmm0, %eax
1781 ; SSE41-NEXT: bsrl %eax, %eax
1782 ; SSE41-NEXT: xorl $7, %eax
1783 ; SSE41-NEXT: pinsrb $7, %eax, %xmm1
1784 ; SSE41-NEXT: pextrb $8, %xmm0, %eax
1785 ; SSE41-NEXT: bsrl %eax, %eax
1786 ; SSE41-NEXT: xorl $7, %eax
1787 ; SSE41-NEXT: pinsrb $8, %eax, %xmm1
1788 ; SSE41-NEXT: pextrb $9, %xmm0, %eax
1789 ; SSE41-NEXT: bsrl %eax, %eax
1790 ; SSE41-NEXT: xorl $7, %eax
1791 ; SSE41-NEXT: pinsrb $9, %eax, %xmm1
1792 ; SSE41-NEXT: pextrb $10, %xmm0, %eax
1793 ; SSE41-NEXT: bsrl %eax, %eax
1794 ; SSE41-NEXT: xorl $7, %eax
1795 ; SSE41-NEXT: pinsrb $10, %eax, %xmm1
1796 ; SSE41-NEXT: pextrb $11, %xmm0, %eax
1797 ; SSE41-NEXT: bsrl %eax, %eax
1798 ; SSE41-NEXT: xorl $7, %eax
1799 ; SSE41-NEXT: pinsrb $11, %eax, %xmm1
1800 ; SSE41-NEXT: pextrb $12, %xmm0, %eax
1801 ; SSE41-NEXT: bsrl %eax, %eax
1802 ; SSE41-NEXT: xorl $7, %eax
1803 ; SSE41-NEXT: pinsrb $12, %eax, %xmm1
1804 ; SSE41-NEXT: pextrb $13, %xmm0, %eax
1805 ; SSE41-NEXT: bsrl %eax, %eax
1806 ; SSE41-NEXT: xorl $7, %eax
1807 ; SSE41-NEXT: pinsrb $13, %eax, %xmm1
1808 ; SSE41-NEXT: pextrb $14, %xmm0, %eax
1809 ; SSE41-NEXT: bsrl %eax, %eax
1810 ; SSE41-NEXT: xorl $7, %eax
1811 ; SSE41-NEXT: pinsrb $14, %eax, %xmm1
1812 ; SSE41-NEXT: pextrb $15, %xmm0, %eax
1813 ; SSE41-NEXT: bsrl %eax, %eax
1814 ; SSE41-NEXT: xorl $7, %eax
1815 ; SSE41-NEXT: pinsrb $15, %eax, %xmm1
1816 ; SSE41-NEXT: movdqa %xmm1, %xmm0
1817 ; SSE41-NEXT: retq
1821 ; AVX-NEXT: vpextrb $1, %xmm0, %eax
1822 ; AVX-NEXT: bsrl %eax, %eax
1823 ; AVX-NEXT: xorl $7, %eax
1824 ; AVX-NEXT: vpextrb $0, %xmm0, %ecx
1825 ; AVX-NEXT: bsrl %ecx, %ecx
1826 ; AVX-NEXT: xorl $7, %ecx
1827 ; AVX-NEXT: vmovd %ecx, %xmm1
1828 ; AVX-NEXT: vpinsrb $1, %eax, %xmm1, %xmm1
1829 ; AVX-NEXT: vpextrb $2, %xmm0, %eax
1830 ; AVX-NEXT: bsrl %eax, %eax
1831 ; AVX-NEXT: xorl $7, %eax
1832 ; AVX-NEXT: vpinsrb $2, %eax, %xmm1, %xmm1
1833 ; AVX-NEXT: vpextrb $3, %xmm0, %eax
1834 ; AVX-NEXT: bsrl %eax, %eax
1835 ; AVX-NEXT: xorl $7, %eax
1836 ; AVX-NEXT: vpinsrb $3, %eax, %xmm1, %xmm1
1837 ; AVX-NEXT: vpextrb $4, %xmm0, %eax
1838 ; AVX-NEXT: bsrl %eax, %eax
1839 ; AVX-NEXT: xorl $7, %eax
1840 ; AVX-NEXT: vpinsrb $4, %eax, %xmm1, %xmm1
1841 ; AVX-NEXT: vpextrb $5, %xmm0, %eax
1842 ; AVX-NEXT: bsrl %eax, %eax
1843 ; AVX-NEXT: xorl $7, %eax
1844 ; AVX-NEXT: vpinsrb $5, %eax, %xmm1, %xmm1
1845 ; AVX-NEXT: vpextrb $6, %xmm0, %eax
1846 ; AVX-NEXT: bsrl %eax, %eax
1847 ; AVX-NEXT: xorl $7, %eax
1848 ; AVX-NEXT: vpinsrb $6, %eax, %xmm1, %xmm1
1849 ; AVX-NEXT: vpextrb $7, %xmm0, %eax
1850 ; AVX-NEXT: bsrl %eax, %eax
1851 ; AVX-NEXT: xorl $7, %eax
1852 ; AVX-NEXT: vpinsrb $7, %eax, %xmm1, %xmm1
1853 ; AVX-NEXT: vpextrb $8, %xmm0, %eax
1854 ; AVX-NEXT: bsrl %eax, %eax
1855 ; AVX-NEXT: xorl $7, %eax
1856 ; AVX-NEXT: vpinsrb $8, %eax, %xmm1, %xmm1
1857 ; AVX-NEXT: vpextrb $9, %xmm0, %eax
1858 ; AVX-NEXT: bsrl %eax, %eax
1859 ; AVX-NEXT: xorl $7, %eax
1860 ; AVX-NEXT: vpinsrb $9, %eax, %xmm1, %xmm1
1861 ; AVX-NEXT: vpextrb $10, %xmm0, %eax
1862 ; AVX-NEXT: bsrl %eax, %eax
1863 ; AVX-NEXT: xorl $7, %eax
1864 ; AVX-NEXT: vpinsrb $10, %eax, %xmm1, %xmm1
1865 ; AVX-NEXT: vpextrb $11, %xmm0, %eax
1866 ; AVX-NEXT: bsrl %eax, %eax
1867 ; AVX-NEXT: xorl $7, %eax
1868 ; AVX-NEXT: vpinsrb $11, %eax, %xmm1, %xmm1
1869 ; AVX-NEXT: vpextrb $12, %xmm0, %eax
1870 ; AVX-NEXT: bsrl %eax, %eax
1871 ; AVX-NEXT: xorl $7, %eax
1872 ; AVX-NEXT: vpinsrb $12, %eax, %xmm1, %xmm1
1873 ; AVX-NEXT: vpextrb $13, %xmm0, %eax
1874 ; AVX-NEXT: bsrl %eax, %eax
1875 ; AVX-NEXT: xorl $7, %eax
1876 ; AVX-NEXT: vpinsrb $13, %eax, %xmm1, %xmm1
1877 ; AVX-NEXT: vpextrb $14, %xmm0, %eax
1878 ; AVX-NEXT: bsrl %eax, %eax
1879 ; AVX-NEXT: xorl $7, %eax
1880 ; AVX-NEXT: vpinsrb $14, %eax, %xmm1, %xmm1
1881 ; AVX-NEXT: vpextrb $15, %xmm0, %eax
1882 ; AVX-NEXT: bsrl %eax, %eax
1883 ; AVX-NEXT: xorl $7, %eax
1884 ; AVX-NEXT: vpinsrb $15, %eax, %xmm1, %xmm0
1885 ; AVX-NEXT: retq
1889 ; AVX512VLCD-NEXT: vpmovzxbd %xmm0, %zmm0
1890 ; AVX512VLCD-NEXT: vplzcntd %zmm0, %zmm0
1891 ; AVX512VLCD-NEXT: vpmovdb %zmm0, %xmm0
1892 ; AVX512VLCD-NEXT: vpsubb {{.*}}(%rip), %xmm0, %xmm0
1893 ; AVX512VLCD-NEXT: retq
1897 ; AVX512CD-NEXT: vpmovzxbd %xmm0, %zmm0
1898 ; AVX512CD-NEXT: vplzcntd %zmm0, %zmm0
1899 ; AVX512CD-NEXT: vpmovdb %zmm0, %xmm0
1900 ; AVX512CD-NEXT: vpsubb {{.*}}(%rip), %xmm0, %xmm0
1901 ; AVX512CD-NEXT: retq
1909 ; SSE-NEXT: movl $55, %eax
1910 ; SSE-NEXT: movd %rax, %xmm0
1911 ; SSE-NEXT: retq
1915 ; AVX-NEXT: movl $55, %eax
1916 ; AVX-NEXT: vmovq %rax, %xmm0
1917 ; AVX-NEXT: retq
1921 ; AVX512VLCD-NEXT: movl $55, %eax
1922 ; AVX512VLCD-NEXT: vmovq %rax, %xmm0
1923 ; AVX512VLCD-NEXT: retq
1927 ; AVX512CD-NEXT: movl $55, %eax
1928 ; AVX512CD-NEXT: vmovq %rax, %xmm0
1929 ; AVX512CD-NEXT: retq
1937 ; SSE-NEXT: movl $55, %eax
1938 ; SSE-NEXT: movd %rax, %xmm0
1939 ; SSE-NEXT: retq
1943 ; AVX-NEXT: movl $55, %eax
1944 ; AVX-NEXT: vmovq %rax, %xmm0
1945 ; AVX-NEXT: retq
1949 ; AVX512VLCD-NEXT: movl $55, %eax
1950 ; AVX512VLCD-NEXT: vmovq %rax, %xmm0
1951 ; AVX512VLCD-NEXT: retq
1955 ; AVX512CD-NEXT: movl $55, %eax
1956 ; AVX512CD-NEXT: vmovq %rax, %xmm0
1957 ; AVX512CD-NEXT: retq
1965 ; SSE-NEXT: movaps {{.*#+}} xmm0 = [23,0,32,24]
1966 ; SSE-NEXT: retq
1970 ; AVX-NEXT: vmovaps {{.*#+}} xmm0 = [23,0,32,24]
1971 ; AVX-NEXT: retq
1975 ; AVX512VLCD-NEXT: vmovdqa32 {{.*#+}} xmm0 = [23,0,32,24]
1976 ; AVX512VLCD-NEXT: retq
1980 ; AVX512CD-NEXT: vmovaps {{.*#+}} xmm0 = [23,0,32,24]
1981 ; AVX512CD-NEXT: retq
1989 ; SSE-NEXT: movaps {{.*#+}} xmm0 = [23,0,32,24]
1990 ; SSE-NEXT: retq
1994 ; AVX-NEXT: vmovaps {{.*#+}} xmm0 = [23,0,32,24]
1995 ; AVX-NEXT: retq
1999 ; AVX512VLCD-NEXT: vmovdqa32 {{.*#+}} xmm0 = [23,0,32,24]
2000 ; AVX512VLCD-NEXT: retq
2004 ; AVX512CD-NEXT: vmovaps {{.*#+}} xmm0 = [23,0,32,24]
2005 ; AVX512CD-NEXT: retq
2013 ; SSE-NEXT: movaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
2014 ; SSE-NEXT: retq
2018 ; AVX-NEXT: vmovaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
2019 ; AVX-NEXT: retq
2023 ; AVX512VLCD-NEXT: vmovdqa64 {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
2024 ; AVX512VLCD-NEXT: retq
2028 ; AVX512CD-NEXT: vmovaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
2029 ; AVX512CD-NEXT: retq
2037 ; SSE-NEXT: movaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
2038 ; SSE-NEXT: retq
2042 ; AVX-NEXT: vmovaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
2043 ; AVX-NEXT: retq
2047 ; AVX512VLCD-NEXT: vmovdqa64 {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
2048 ; AVX512VLCD-NEXT: retq
2052 ; AVX512CD-NEXT: vmovaps {{.*#+}} xmm0 = [7,0,16,8,16,13,11,9]
2053 ; AVX512CD-NEXT: retq
2061 ; SSE-NEXT: movaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
2062 ; SSE-NEXT: retq
2066 ; AVX-NEXT: vmovaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
2067 ; AVX-NEXT: retq
2071 ; AVX512VLCD-NEXT: vmovdqa64 {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
2072 ; AVX512VLCD-NEXT: retq
2076 ; AVX512CD-NEXT: vmovaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
2077 ; AVX512CD-NEXT: retq
2085 ; SSE-NEXT: movaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
2086 ; SSE-NEXT: retq
2090 ; AVX-NEXT: vmovaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
2091 ; AVX-NEXT: retq
2095 ; AVX512VLCD-NEXT: vmovdqa64 {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
2096 ; AVX512VLCD-NEXT: retq
2100 ; AVX512CD-NEXT: vmovaps {{.*#+}} xmm0 = [8,0,8,0,8,5,3,1,0,0,7,6,5,4,3,2]
2101 ; AVX512CD-NEXT: retq