Author: Robert Hyatt
Date: 06:25:45 09/16/01
Go up one level in this thread
On September 15, 2001 at 22:31:04, Vincent Diepeveen wrote:
>On September 15, 2001 at 20:34:36, Robert Hyatt wrote:
>
>>On September 15, 2001 at 14:30:40, Vincent Diepeveen wrote:
>
>[snip]
>>FirstOne() isn't particularly slow, using the bit-scan instructions that
>>are very fast on PII and beyond. It certainly isn't much of a cost in the
>>profile runs I do.
>
>FORCEINLINE int FirstOne(BITBOARD a) {
>
>#if _M_IX86 <= 500 /* on plain Pentiums, use boolean.c algorithm */
> __asm {
> movzx edx, word ptr a+6
> xor eax, eax
> test edx, edx
> jnz l1
> mov dx, word ptr a+4
> mov eax, 16
> test edx, edx
> jnz l1
> mov dx, word ptr a+2
> mov eax, 32
> test edx, edx
> jnz l1
> mov dx, word ptr a
> mov eax, 48
> l1: add al, byte ptr first_ones[edx]
> }
>#else /* BSF and BSR are *fast* instructions on PPro/PII */
> __asm {
> bsr edx, dword ptr a+4
> mov eax, 31
> jnz l1
> bsr edx, dword ptr a
> mov eax, 63
> jnz l1
> mov edx, -1
> l1: sub eax, edx
> }
>#endif /* _M_IX86 > 500 */
>}
>
>Ugh ugh, how slow is 'particularly slow' slow in your dictionary?
>
>Best regards,
>Vincent
A few clock cycles is how slow this is. Fast enough that it doesn't register
on the profile runs to any significant degree... If profile doesn't complein,
then I don't worry about it.
This page took 0 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.