Lines Matching full:no
4 ; RUN: llc < %s -mtriple=i686-unknown -mattr=-popcnt | FileCheck %s -check-prefixes=X86-NO-POPCOUNT
5 …%s -mtriple=i686-unknown -mattr=+sse2 -mattr=-popcnt | FileCheck %s -check-prefixes=X86-NO-POPCOUNT
6 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=-popcnt | FileCheck %s -check-prefixes=X64-NO-POPCOU…
32 ; X86-NO-POPCOUNT-LABEL: ctpop_mask2:
33 ; X86-NO-POPCOUNT: # %bb.0:
34 ; X86-NO-POPCOUNT-NEXT: movl {{[0-9]+}}(%esp), %eax
35 ; X86-NO-POPCOUNT-NEXT: andl $3, %eax
36 ; X86-NO-POPCOUNT-NEXT: movl %eax, %ecx
37 ; X86-NO-POPCOUNT-NEXT: shrl %ecx
38 ; X86-NO-POPCOUNT-NEXT: subl %ecx, %eax
39 ; X86-NO-POPCOUNT-NEXT: xorl %edx, %edx
40 ; X86-NO-POPCOUNT-NEXT: retl
42 ; X64-NO-POPCOUNT-LABEL: ctpop_mask2:
43 ; X64-NO-POPCOUNT: # %bb.0:
44 ; X64-NO-POPCOUNT-NEXT: movq %rdi, %rax
45 ; X64-NO-POPCOUNT-NEXT: andl $3, %eax
46 ; X64-NO-POPCOUNT-NEXT: movl %eax, %ecx
47 ; X64-NO-POPCOUNT-NEXT: shrl %ecx
48 ; X64-NO-POPCOUNT-NEXT: subl %ecx, %eax
49 ; X64-NO-POPCOUNT-NEXT: retq
69 ; X86-NO-POPCOUNT-LABEL: ctpop_shifted_mask2:
70 ; X86-NO-POPCOUNT: # %bb.0:
71 ; X86-NO-POPCOUNT-NEXT: movl $1572864, %eax # imm = 0x180000
72 ; X86-NO-POPCOUNT-NEXT: andl {{[0-9]+}}(%esp), %eax
73 ; X86-NO-POPCOUNT-NEXT: movl %eax, %ecx
74 ; X86-NO-POPCOUNT-NEXT: shrl $20, %ecx
75 ; X86-NO-POPCOUNT-NEXT: shrl $19, %eax
76 ; X86-NO-POPCOUNT-NEXT: subl %ecx, %eax
77 ; X86-NO-POPCOUNT-NEXT: retl
79 ; X64-NO-POPCOUNT-LABEL: ctpop_shifted_mask2:
80 ; X64-NO-POPCOUNT: # %bb.0:
81 ; X64-NO-POPCOUNT-NEXT: movl %edi, %eax
82 ; X64-NO-POPCOUNT-NEXT: andl $1572864, %eax # imm = 0x180000
83 ; X64-NO-POPCOUNT-NEXT: movl %eax, %ecx
84 ; X64-NO-POPCOUNT-NEXT: shrl $20, %ecx
85 ; X64-NO-POPCOUNT-NEXT: shrl $19, %eax
86 ; X64-NO-POPCOUNT-NEXT: subl %ecx, %eax
87 ; X64-NO-POPCOUNT-NEXT: retq
107 ; X86-NO-POPCOUNT-LABEL: ctpop_mask3:
108 ; X86-NO-POPCOUNT: # %bb.0:
109 ; X86-NO-POPCOUNT-NEXT: movl {{[0-9]+}}(%esp), %ecx
110 ; X86-NO-POPCOUNT-NEXT: andl $5, %ecx
111 ; X86-NO-POPCOUNT-NEXT: addl %ecx, %ecx
112 ; X86-NO-POPCOUNT-NEXT: movl $59796, %eax # imm = 0xE994
113 ; X86-NO-POPCOUNT-NEXT: # kill: def $cl killed $cl killed $ecx
114 ; X86-NO-POPCOUNT-NEXT: shrl %cl, %eax
115 ; X86-NO-POPCOUNT-NEXT: andl $3, %eax
116 ; X86-NO-POPCOUNT-NEXT: retl
118 ; X64-NO-POPCOUNT-LABEL: ctpop_mask3:
119 ; X64-NO-POPCOUNT: # %bb.0:
120 ; X64-NO-POPCOUNT-NEXT: # kill: def $edi killed $edi def $rdi
121 ; X64-NO-POPCOUNT-NEXT: andl $5, %edi
122 ; X64-NO-POPCOUNT-NEXT: leal (%rdi,%rdi), %ecx
123 ; X64-NO-POPCOUNT-NEXT: movl $59796, %eax # imm = 0xE994
124 ; X64-NO-POPCOUNT-NEXT: # kill: def $cl killed $cl killed $ecx
125 ; X64-NO-POPCOUNT-NEXT: shrl %cl, %eax
126 ; X64-NO-POPCOUNT-NEXT: andl $3, %eax
127 ; X64-NO-POPCOUNT-NEXT: retq
149 ; X86-NO-POPCOUNT-LABEL: ctpop_shifted_mask3:
150 ; X86-NO-POPCOUNT: # %bb.0:
151 ; X86-NO-POPCOUNT-NEXT: movzwl {{[0-9]+}}(%esp), %ecx
152 ; X86-NO-POPCOUNT-NEXT: andl $14, %ecx
153 ; X86-NO-POPCOUNT-NEXT: movl $59796, %eax # imm = 0xE994
154 ; X86-NO-POPCOUNT-NEXT: # kill: def $cl killed $cl killed $ecx
155 ; X86-NO-POPCOUNT-NEXT: shrl %cl, %eax
156 ; X86-NO-POPCOUNT-NEXT: andl $3, %eax
157 ; X86-NO-POPCOUNT-NEXT: # kill: def $ax killed $ax killed $eax
158 ; X86-NO-POPCOUNT-NEXT: retl
160 ; X64-NO-POPCOUNT-LABEL: ctpop_shifted_mask3:
161 ; X64-NO-POPCOUNT: # %bb.0:
162 ; X64-NO-POPCOUNT-NEXT: movl %edi, %ecx
163 ; X64-NO-POPCOUNT-NEXT: andl $14, %ecx
164 ; X64-NO-POPCOUNT-NEXT: movl $59796, %eax # imm = 0xE994
165 ; X64-NO-POPCOUNT-NEXT: # kill: def $cl killed $cl killed $ecx
166 ; X64-NO-POPCOUNT-NEXT: shrl %cl, %eax
167 ; X64-NO-POPCOUNT-NEXT: andl $3, %eax
168 ; X64-NO-POPCOUNT-NEXT: # kill: def $ax killed $ax killed $eax
169 ; X64-NO-POPCOUNT-NEXT: retq
190 ; X86-NO-POPCOUNT-LABEL: ctpop_mask4:
191 ; X86-NO-POPCOUNT: # %bb.0:
192 ; X86-NO-POPCOUNT-NEXT: movl {{[0-9]+}}(%esp), %eax
193 ; X86-NO-POPCOUNT-NEXT: andl $15, %eax
194 ; X86-NO-POPCOUNT-NEXT: imull $134480385, %eax, %eax # imm = 0x8040201
195 ; X86-NO-POPCOUNT-NEXT: shrl $3, %eax
196 ; X86-NO-POPCOUNT-NEXT: andl $17895697, %eax # imm = 0x1111111
197 ; X86-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
198 ; X86-NO-POPCOUNT-NEXT: shrl $28, %eax
199 ; X86-NO-POPCOUNT-NEXT: xorl %edx, %edx
200 ; X86-NO-POPCOUNT-NEXT: retl
202 ; X64-NO-POPCOUNT-LABEL: ctpop_mask4:
203 ; X64-NO-POPCOUNT: # %bb.0:
204 ; X64-NO-POPCOUNT-NEXT: andl $15, %edi
205 ; X64-NO-POPCOUNT-NEXT: leal (,%rdi,4), %ecx
206 ; X64-NO-POPCOUNT-NEXT: movabsq $4841987667533046032, %rax # imm = 0x4332322132212110
207 ; X64-NO-POPCOUNT-NEXT: # kill: def $cl killed $cl killed $ecx
208 ; X64-NO-POPCOUNT-NEXT: shrq %cl, %rax
209 ; X64-NO-POPCOUNT-NEXT: andl $7, %eax
210 ; X64-NO-POPCOUNT-NEXT: retq
230 ; X86-NO-POPCOUNT-LABEL: ctpop_shifted_mask4:
231 ; X86-NO-POPCOUNT: # %bb.0:
232 ; X86-NO-POPCOUNT-NEXT: movl {{[0-9]+}}(%esp), %eax
233 ; X86-NO-POPCOUNT-NEXT: shrl $9, %eax
234 ; X86-NO-POPCOUNT-NEXT: andl $15, %eax
235 ; X86-NO-POPCOUNT-NEXT: imull $134480385, %eax, %eax # imm = 0x8040201
236 ; X86-NO-POPCOUNT-NEXT: shrl $3, %eax
237 ; X86-NO-POPCOUNT-NEXT: andl $17895697, %eax # imm = 0x1111111
238 ; X86-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
239 ; X86-NO-POPCOUNT-NEXT: shrl $28, %eax
240 ; X86-NO-POPCOUNT-NEXT: retl
242 ; X64-NO-POPCOUNT-LABEL: ctpop_shifted_mask4:
243 ; X64-NO-POPCOUNT: # %bb.0:
244 ; X64-NO-POPCOUNT-NEXT: movl %edi, %ecx
245 ; X64-NO-POPCOUNT-NEXT: shrl $7, %ecx
246 ; X64-NO-POPCOUNT-NEXT: andl $60, %ecx
247 ; X64-NO-POPCOUNT-NEXT: movabsq $4841987667533046032, %rax # imm = 0x4332322132212110
248 ; X64-NO-POPCOUNT-NEXT: # kill: def $cl killed $cl killed $ecx
249 ; X64-NO-POPCOUNT-NEXT: shrq %cl, %rax
250 ; X64-NO-POPCOUNT-NEXT: andl $7, %eax
251 ; X64-NO-POPCOUNT-NEXT: # kill: def $eax killed $eax killed $rax
252 ; X64-NO-POPCOUNT-NEXT: retq
273 ; X86-NO-POPCOUNT-LABEL: ctpop_mask5:
274 ; X86-NO-POPCOUNT: # %bb.0:
275 ; X86-NO-POPCOUNT-NEXT: movl {{[0-9]+}}(%esp), %eax
276 ; X86-NO-POPCOUNT-NEXT: andl $31, %eax
277 ; X86-NO-POPCOUNT-NEXT: imull $134480385, %eax, %eax # imm = 0x8040201
278 ; X86-NO-POPCOUNT-NEXT: shrl $3, %eax
279 ; X86-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
280 ; X86-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
281 ; X86-NO-POPCOUNT-NEXT: shrl $28, %eax
282 ; X86-NO-POPCOUNT-NEXT: xorl %edx, %edx
283 ; X86-NO-POPCOUNT-NEXT: retl
285 ; X64-NO-POPCOUNT-LABEL: ctpop_mask5:
286 ; X64-NO-POPCOUNT: # %bb.0:
287 ; X64-NO-POPCOUNT-NEXT: andl $31, %edi
288 ; X64-NO-POPCOUNT-NEXT: imull $134480385, %edi, %eax # imm = 0x8040201
289 ; X64-NO-POPCOUNT-NEXT: shrl $3, %eax
290 ; X64-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
291 ; X64-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
292 ; X64-NO-POPCOUNT-NEXT: shrl $28, %eax
293 ; X64-NO-POPCOUNT-NEXT: retq
313 ; X86-NO-POPCOUNT-LABEL: ctpop_shifted_mask5:
314 ; X86-NO-POPCOUNT: # %bb.0:
315 ; X86-NO-POPCOUNT-NEXT: movl {{[0-9]+}}(%esp), %eax
316 ; X86-NO-POPCOUNT-NEXT: shrl $9, %eax
317 ; X86-NO-POPCOUNT-NEXT: andl $23, %eax
318 ; X86-NO-POPCOUNT-NEXT: imull $134480385, %eax, %eax # imm = 0x8040201
319 ; X86-NO-POPCOUNT-NEXT: shrl $3, %eax
320 ; X86-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
321 ; X86-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
322 ; X86-NO-POPCOUNT-NEXT: shrl $28, %eax
323 ; X86-NO-POPCOUNT-NEXT: retl
325 ; X64-NO-POPCOUNT-LABEL: ctpop_shifted_mask5:
326 ; X64-NO-POPCOUNT: # %bb.0:
327 ; X64-NO-POPCOUNT-NEXT: shrl $9, %edi
328 ; X64-NO-POPCOUNT-NEXT: andl $23, %edi
329 ; X64-NO-POPCOUNT-NEXT: imull $134480385, %edi, %eax # imm = 0x8040201
330 ; X64-NO-POPCOUNT-NEXT: shrl $3, %eax
331 ; X64-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
332 ; X64-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
333 ; X64-NO-POPCOUNT-NEXT: shrl $28, %eax
334 ; X64-NO-POPCOUNT-NEXT: retq
354 ; X86-NO-POPCOUNT-LABEL: ctpop_mask6:
355 ; X86-NO-POPCOUNT: # %bb.0:
356 ; X86-NO-POPCOUNT-NEXT: movl {{[0-9]+}}(%esp), %eax
357 ; X86-NO-POPCOUNT-NEXT: andl $63, %eax
358 ; X86-NO-POPCOUNT-NEXT: imull $134480385, %eax, %eax # imm = 0x8040201
359 ; X86-NO-POPCOUNT-NEXT: shrl $3, %eax
360 ; X86-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
361 ; X86-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
362 ; X86-NO-POPCOUNT-NEXT: shrl $28, %eax
363 ; X86-NO-POPCOUNT-NEXT: retl
365 ; X64-NO-POPCOUNT-LABEL: ctpop_mask6:
366 ; X64-NO-POPCOUNT: # %bb.0:
367 ; X64-NO-POPCOUNT-NEXT: andl $63, %edi
368 ; X64-NO-POPCOUNT-NEXT: imull $134480385, %edi, %eax # imm = 0x8040201
369 ; X64-NO-POPCOUNT-NEXT: shrl $3, %eax
370 ; X64-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
371 ; X64-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
372 ; X64-NO-POPCOUNT-NEXT: shrl $28, %eax
373 ; X64-NO-POPCOUNT-NEXT: retq
394 ; X86-NO-POPCOUNT-LABEL: ctpop_shifted_mask6:
395 ; X86-NO-POPCOUNT: # %bb.0:
396 ; X86-NO-POPCOUNT-NEXT: movl {{[0-9]+}}(%esp), %eax
397 ; X86-NO-POPCOUNT-NEXT: shrl $9, %eax
398 ; X86-NO-POPCOUNT-NEXT: andl $51, %eax
399 ; X86-NO-POPCOUNT-NEXT: imull $134480385, %eax, %eax # imm = 0x8040201
400 ; X86-NO-POPCOUNT-NEXT: shrl $3, %eax
401 ; X86-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
402 ; X86-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
403 ; X86-NO-POPCOUNT-NEXT: shrl $28, %eax
404 ; X86-NO-POPCOUNT-NEXT: xorl %edx, %edx
405 ; X86-NO-POPCOUNT-NEXT: retl
407 ; X64-NO-POPCOUNT-LABEL: ctpop_shifted_mask6:
408 ; X64-NO-POPCOUNT: # %bb.0:
409 ; X64-NO-POPCOUNT-NEXT: shrl $9, %edi
410 ; X64-NO-POPCOUNT-NEXT: andl $51, %edi
411 ; X64-NO-POPCOUNT-NEXT: imull $134480385, %edi, %eax # imm = 0x8040201
412 ; X64-NO-POPCOUNT-NEXT: shrl $3, %eax
413 ; X64-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
414 ; X64-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
415 ; X64-NO-POPCOUNT-NEXT: shrl $28, %eax
416 ; X64-NO-POPCOUNT-NEXT: retq
438 ; X86-NO-POPCOUNT-LABEL: ctpop_mask7:
439 ; X86-NO-POPCOUNT: # %bb.0:
440 ; X86-NO-POPCOUNT-NEXT: movzwl {{[0-9]+}}(%esp), %eax
441 ; X86-NO-POPCOUNT-NEXT: andl $127, %eax
442 ; X86-NO-POPCOUNT-NEXT: imull $134480385, %eax, %eax # imm = 0x8040201
443 ; X86-NO-POPCOUNT-NEXT: shrl $3, %eax
444 ; X86-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
445 ; X86-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
446 ; X86-NO-POPCOUNT-NEXT: shrl $28, %eax
447 ; X86-NO-POPCOUNT-NEXT: # kill: def $ax killed $ax killed $eax
448 ; X86-NO-POPCOUNT-NEXT: retl
450 ; X64-NO-POPCOUNT-LABEL: ctpop_mask7:
451 ; X64-NO-POPCOUNT: # %bb.0:
452 ; X64-NO-POPCOUNT-NEXT: andl $127, %edi
453 ; X64-NO-POPCOUNT-NEXT: imull $134480385, %edi, %eax # imm = 0x8040201
454 ; X64-NO-POPCOUNT-NEXT: shrl $3, %eax
455 ; X64-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
456 ; X64-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
457 ; X64-NO-POPCOUNT-NEXT: shrl $28, %eax
458 ; X64-NO-POPCOUNT-NEXT: # kill: def $ax killed $ax killed $eax
459 ; X64-NO-POPCOUNT-NEXT: retq
479 ; X86-NO-POPCOUNT-LABEL: ctpop_shift_mask7:
480 ; X86-NO-POPCOUNT: # %bb.0:
481 ; X86-NO-POPCOUNT-NEXT: movl {{[0-9]+}}(%esp), %eax
482 ; X86-NO-POPCOUNT-NEXT: shrl $13, %eax
483 ; X86-NO-POPCOUNT-NEXT: andl $127, %eax
484 ; X86-NO-POPCOUNT-NEXT: imull $134480385, %eax, %eax # imm = 0x8040201
485 ; X86-NO-POPCOUNT-NEXT: shrl $3, %eax
486 ; X86-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
487 ; X86-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
488 ; X86-NO-POPCOUNT-NEXT: shrl $28, %eax
489 ; X86-NO-POPCOUNT-NEXT: retl
491 ; X64-NO-POPCOUNT-LABEL: ctpop_shift_mask7:
492 ; X64-NO-POPCOUNT: # %bb.0:
493 ; X64-NO-POPCOUNT-NEXT: shrl $13, %edi
494 ; X64-NO-POPCOUNT-NEXT: andl $127, %edi
495 ; X64-NO-POPCOUNT-NEXT: imull $134480385, %edi, %eax # imm = 0x8040201
496 ; X64-NO-POPCOUNT-NEXT: shrl $3, %eax
497 ; X64-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
498 ; X64-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
499 ; X64-NO-POPCOUNT-NEXT: shrl $28, %eax
500 ; X64-NO-POPCOUNT-NEXT: retq
519 ; X86-NO-POPCOUNT-LABEL: ctpop_mask8:
520 ; X86-NO-POPCOUNT: # %bb.0:
521 ; X86-NO-POPCOUNT-NEXT: movzbl {{[0-9]+}}(%esp), %eax
522 ; X86-NO-POPCOUNT-NEXT: imull $134480385, %eax, %eax # imm = 0x8040201
523 ; X86-NO-POPCOUNT-NEXT: shrl $3, %eax
524 ; X86-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
525 ; X86-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
526 ; X86-NO-POPCOUNT-NEXT: shrl $28, %eax
527 ; X86-NO-POPCOUNT-NEXT: retl
529 ; X64-NO-POPCOUNT-LABEL: ctpop_mask8:
530 ; X64-NO-POPCOUNT: # %bb.0:
531 ; X64-NO-POPCOUNT-NEXT: movzbl %dil, %eax
532 ; X64-NO-POPCOUNT-NEXT: imull $134480385, %eax, %eax # imm = 0x8040201
533 ; X64-NO-POPCOUNT-NEXT: shrl $3, %eax
534 ; X64-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
535 ; X64-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
536 ; X64-NO-POPCOUNT-NEXT: shrl $28, %eax
537 ; X64-NO-POPCOUNT-NEXT: retq
557 ; X86-NO-POPCOUNT-LABEL: ctpop_shifted_mask8:
558 ; X86-NO-POPCOUNT: # %bb.0:
559 ; X86-NO-POPCOUNT-NEXT: movzbl {{[0-9]+}}(%esp), %eax
560 ; X86-NO-POPCOUNT-NEXT: imull $134480385, %eax, %eax # imm = 0x8040201
561 ; X86-NO-POPCOUNT-NEXT: shrl $3, %eax
562 ; X86-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
563 ; X86-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
564 ; X86-NO-POPCOUNT-NEXT: shrl $28, %eax
565 ; X86-NO-POPCOUNT-NEXT: xorl %edx, %edx
566 ; X86-NO-POPCOUNT-NEXT: retl
568 ; X64-NO-POPCOUNT-LABEL: ctpop_shifted_mask8:
569 ; X64-NO-POPCOUNT: # %bb.0:
570 ; X64-NO-POPCOUNT-NEXT: movq %rdi, %rax
571 ; X64-NO-POPCOUNT-NEXT: movzbl %ah, %eax
572 ; X64-NO-POPCOUNT-NEXT: imull $134480385, %eax, %eax # imm = 0x8040201
573 ; X64-NO-POPCOUNT-NEXT: shrl $3, %eax
574 ; X64-NO-POPCOUNT-NEXT: andl $286331153, %eax # imm = 0x11111111
575 ; X64-NO-POPCOUNT-NEXT: imull $286331153, %eax, %eax # imm = 0x11111111
576 ; X64-NO-POPCOUNT-NEXT: shrl $28, %eax
577 ; X64-NO-POPCOUNT-NEXT: retq
596 ; X86-NO-POPCOUNT-LABEL: ctpop_mask16:
597 ; X86-NO-POPCOUNT: # %bb.0:
598 ; X86-NO-POPCOUNT-NEXT: movzwl {{[0-9]+}}(%esp), %eax
599 ; X86-NO-POPCOUNT-NEXT: movl %eax, %ecx
600 ; X86-NO-POPCOUNT-NEXT: shrl %ecx
601 ; X86-NO-POPCOUNT-NEXT: andl $21845, %ecx # imm = 0x5555
602 ; X86-NO-POPCOUNT-NEXT: subl %ecx, %eax
603 ; X86-NO-POPCOUNT-NEXT: movl %eax, %ecx
604 ; X86-NO-POPCOUNT-NEXT: andl $858993459, %ecx # imm = 0x33333333
605 ; X86-NO-POPCOUNT-NEXT: shrl $2, %eax
606 ; X86-NO-POPCOUNT-NEXT: andl $858993459, %eax # imm = 0x33333333
607 ; X86-NO-POPCOUNT-NEXT: addl %ecx, %eax
608 ; X86-NO-POPCOUNT-NEXT: movl %eax, %ecx
609 ; X86-NO-POPCOUNT-NEXT: shrl $4, %ecx
610 ; X86-NO-POPCOUNT-NEXT: addl %eax, %ecx
611 ; X86-NO-POPCOUNT-NEXT: andl $252645135, %ecx # imm = 0xF0F0F0F
612 ; X86-NO-POPCOUNT-NEXT: imull $16843009, %ecx, %eax # imm = 0x1010101
613 ; X86-NO-POPCOUNT-NEXT: shrl $24, %eax
614 ; X86-NO-POPCOUNT-NEXT: retl
616 ; X64-NO-POPCOUNT-LABEL: ctpop_mask16:
617 ; X64-NO-POPCOUNT: # %bb.0:
618 ; X64-NO-POPCOUNT-NEXT: movzwl %di, %eax
619 ; X64-NO-POPCOUNT-NEXT: shrl %edi
620 ; X64-NO-POPCOUNT-NEXT: andl $21845, %edi # imm = 0x5555
621 ; X64-NO-POPCOUNT-NEXT: subl %edi, %eax
622 ; X64-NO-POPCOUNT-NEXT: movl %eax, %ecx
623 ; X64-NO-POPCOUNT-NEXT: andl $858993459, %ecx # imm = 0x33333333
624 ; X64-NO-POPCOUNT-NEXT: shrl $2, %eax
625 ; X64-NO-POPCOUNT-NEXT: andl $858993459, %eax # imm = 0x33333333
626 ; X64-NO-POPCOUNT-NEXT: addl %ecx, %eax
627 ; X64-NO-POPCOUNT-NEXT: movl %eax, %ecx
628 ; X64-NO-POPCOUNT-NEXT: shrl $4, %ecx
629 ; X64-NO-POPCOUNT-NEXT: addl %eax, %ecx
630 ; X64-NO-POPCOUNT-NEXT: andl $252645135, %ecx # imm = 0xF0F0F0F
631 ; X64-NO-POPCOUNT-NEXT: imull $16843009, %ecx, %eax # imm = 0x1010101
632 ; X64-NO-POPCOUNT-NEXT: shrl $24, %eax
633 ; X64-NO-POPCOUNT-NEXT: retq
655 ; X86-NO-POPCOUNT-LABEL: ctpop_shifted_mask16:
656 ; X86-NO-POPCOUNT: # %bb.0:
657 ; X86-NO-POPCOUNT-NEXT: movl {{[0-9]+}}(%esp), %ecx
658 ; X86-NO-POPCOUNT-NEXT: movl %ecx, %eax
659 ; X86-NO-POPCOUNT-NEXT: andl $524280, %eax # imm = 0x7FFF8
660 ; X86-NO-POPCOUNT-NEXT: shrl %ecx
661 ; X86-NO-POPCOUNT-NEXT: andl $87380, %ecx # imm = 0x15554
662 ; X86-NO-POPCOUNT-NEXT: subl %ecx, %eax
663 ; X86-NO-POPCOUNT-NEXT: movl %eax, %ecx
664 ; X86-NO-POPCOUNT-NEXT: andl $858993456, %ecx # imm = 0x33333330
665 ; X86-NO-POPCOUNT-NEXT: shrl $2, %eax
666 ; X86-NO-POPCOUNT-NEXT: andl $858993459, %eax # imm = 0x33333333
667 ; X86-NO-POPCOUNT-NEXT: addl %ecx, %eax
668 ; X86-NO-POPCOUNT-NEXT: movl %eax, %ecx
669 ; X86-NO-POPCOUNT-NEXT: shrl $4, %ecx
670 ; X86-NO-POPCOUNT-NEXT: addl %eax, %ecx
671 ; X86-NO-POPCOUNT-NEXT: andl $252645135, %ecx # imm = 0xF0F0F0F
672 ; X86-NO-POPCOUNT-NEXT: imull $16843009, %ecx, %eax # imm = 0x1010101
673 ; X86-NO-POPCOUNT-NEXT: shrl $24, %eax
674 ; X86-NO-POPCOUNT-NEXT: xorl %edx, %edx
675 ; X86-NO-POPCOUNT-NEXT: retl
677 ; X64-NO-POPCOUNT-LABEL: ctpop_shifted_mask16:
678 ; X64-NO-POPCOUNT: # %bb.0:
679 ; X64-NO-POPCOUNT-NEXT: movabsq $2251765453946880, %rax # imm = 0x7FFF800000000
680 ; X64-NO-POPCOUNT-NEXT: andq %rdi, %rax
681 ; X64-NO-POPCOUNT-NEXT: shrq %rdi
682 ; X64-NO-POPCOUNT-NEXT: movabsq $375294242324480, %rcx # imm = 0x1555400000000
683 ; X64-NO-POPCOUNT-NEXT: andq %rdi, %rcx
684 ; X64-NO-POPCOUNT-NEXT: subq %rcx, %rax
685 ; X64-NO-POPCOUNT-NEXT: movabsq $3689348800998014976, %rcx # imm = 0x3333333000000000
686 ; X64-NO-POPCOUNT-NEXT: andq %rax, %rcx
687 ; X64-NO-POPCOUNT-NEXT: shrq $2, %rax
688 ; X64-NO-POPCOUNT-NEXT: movabsq $3689348813882916864, %rdx # imm = 0x3333333300000000
689 ; X64-NO-POPCOUNT-NEXT: andq %rax, %rdx
690 ; X64-NO-POPCOUNT-NEXT: addq %rcx, %rdx
691 ; X64-NO-POPCOUNT-NEXT: movq %rdx, %rax
692 ; X64-NO-POPCOUNT-NEXT: shrq $4, %rax
693 ; X64-NO-POPCOUNT-NEXT: addq %rdx, %rax
694 ; X64-NO-POPCOUNT-NEXT: movabsq $1085102592571150095, %rcx # imm = 0xF0F0F0F0F0F0F0F
695 ; X64-NO-POPCOUNT-NEXT: andq %rax, %rcx
696 ; X64-NO-POPCOUNT-NEXT: movabsq $72340172838076673, %rax # imm = 0x101010101010101
697 ; X64-NO-POPCOUNT-NEXT: imulq %rcx, %rax
698 ; X64-NO-POPCOUNT-NEXT: shrq $56, %rax
699 ; X64-NO-POPCOUNT-NEXT: retq