"Maarten Kronenburg" wrote in message
>
As always there is some room for improvement,
below the loop runs the other way which is a bit better:
PROC __int_popcnt
ARG pdata:dword, ndata:dword
push ebp
mov ebp, esp
push esi
push edi
mov esi, [pdata]
mov edi, [ndata]
pxor xmm7, xmm7
mov eax, 0F0F0F0Fh
movd xmm6, eax
punpckldq xmm6, xmm6
unpcklpd xmm6, xmm6
movdqa xmm5, xmm6
pslld xmm5, 2
pxor xmm5, xmm6
movdqa xmm4, xmm5
pslld xmm4, 1
pxor xmm4, xmm5
pxor xmm0, xmm0
mov ecx, edi
and edi, 0FFFFFFFCh
lea esi, [esi+4*edi]
neg edi
jz short @[EMAIL PROTECTED]
movdqu xmm1, [esi+4*edi]
@[EMAIL PROTECTED]
movdqa xmm2, xmm1
psrld xmm2, 1
pand xmm1, xmm4
pand xmm2, xmm4
paddd xmm1, xmm2
movdqa xmm2, xmm1
psrld xmm2, 2
pand xmm1, xmm5
pand xmm2, xmm5
paddd xmm1, xmm2
movdqa xmm2, xmm1
psrld xmm2, 4
paddd xmm1, xmm2
pand xmm1, xmm6
psadbw xmm1, xmm7
paddd xmm0, xmm1
add edi, 4
jnz short @[EMAIL PROTECTED]
and ecx, 3
jz short @[EMAIL PROTECTED]
mov edi, 0FFFFFFFCh
dec ecx
jnz short @[EMAIL PROTECTED]
movd xmm1, [esi]
jmp short @[EMAIL PROTECTED]
movq xmm1, [esi]
dec ecx
jz short @[EMAIL PROTECTED]
movd xmm2, [esi+8]
movlhps xmm1, xmm2
dec ecx
jmp short @[EMAIL PROTECTED]
movhlps xmm1, xmm0
paddd xmm0, xmm1
movd eax, xmm0
pop edi
pop esi
pop ebp
ret
ENDP __int_popcnt


|
33 Posts in Topic:
|
"James Van Buskirk&q |
2008-04-12 03:14:45 |
|
Terence <spamtrap@[EM |
2008-04-12 16:55:40 |
|
Terje Mathisen <spamt |
2008-04-13 15:08:36 |
|
"James Van Buskirk&q |
2008-04-13 09:20:49 |
|
"Maarten Kronenburg& |
2008-04-13 21:48:40 |
|
Jake Waskett <spamtra |
2008-04-13 21:43:32 |
|
"Maarten Kronenburg& |
2008-04-14 01:55:14 |
|
Jake Waskett <spamtra |
2008-04-14 11:19:35 |
|
"James Van Buskirk&q |
2008-04-14 02:38:07 |
|
"Maarten Kronenburg& |
2008-04-14 20:53:32 |
|
"Maarten Kronenburg& |
2008-04-15 17:13:38 |
|
"Maarten Kronenburg& |
2008-04-15 21:58:21 |
|
Terence <spamtrap@[EM |
2008-04-13 17:14:55 |
|
"Wolfgang Kern" |
2008-04-14 12:42:35 |
|
"James Van Buskirk&q |
2008-04-14 13:53:21 |
|
"Wolfgang Kern" |
2008-04-16 15:34:09 |
|
"James Van Buskirk&q |
2008-04-16 10:05:48 |
|
Robert Redelmeier <red |
2008-04-14 14:21:05 |
|
"James Van Buskirk&q |
2008-04-14 02:58:34 |
|
"Maarten Kronenburg& |
2008-04-14 18:09:21 |
|
Terje Mathisen <spamt |
2008-04-15 07:28:26 |
|
Terence <spamtrap@[EM |
2008-04-14 05:00:42 |
|
Terence <spamtrap@[EM |
2008-04-14 15:09:35 |
|
Terence <spamtrap@[EM |
2008-04-15 02:29:34 |
|
Gerd Isenberg <spamtr |
2008-04-15 02:56:39 |
|
"James Van Buskirk&q |
2008-04-16 00:33:16 |
|
"Maarten Kronenburg& |
2008-04-16 14:42:37 |
|
"Maarten Kronenburg& |
2008-04-16 19:38:21 |
|
"James Van Buskirk&q |
2008-04-16 12:41:36 |
|
"Maarten Kronenburg& |
2008-04-16 21:39:47 |
|
"Maarten Kronenburg& |
2008-04-17 16:43:31 |
|
Gerd Isenberg <spamtr |
2008-04-16 09:58:11 |
|
"James Van Buskirk&q |
2008-04-16 12:59:38 |
|