Computer Chess Club Archives


Search

Terms

Messages

Subject: Fast 3DNow! BitScan, one more faster

Author: Gerd Isenberg

Date: 14:05:06 12/01/02

Go up one level in this thread


oups, something shorter and faster:

int getBitIndex(BitBoard singleBit)
{
	__asm
	{
		pxor	mm2, mm2	; 0
		movd		mm0, [singleBit]
		punpckldq	mm0, [singleBit+4]
		pcmpeqd	mm6, mm6	; -1
		pxor	mm7, mm7	; 0
		pcmpeqd	mm2, mm0	; ~mask of the none zero dword
		PI2FD	mm1, mm0	; 3f8..,400..
		pxor	mm2, mm6	; mask of the none zero dword
		psrlq	mm6, 63		; 01
		psrld	mm1, 23		; 3f8 to 7f
		psrld	mm2, 25		; 7f mask
		psllq	mm6, 32+5	; 20:00
		psubd	mm1, mm2	; - 7f mask
		por	mm1, mm6	; + 32 in high dword
		pand	mm1, mm2	; & 7f mask
		psadbw	mm1, mm7	; add all bytes
		movd	eax, mm1
	}
}





This page took 0.03 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.