Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Bitscanning on the Opteron

Author: Tim Foden

Date: 14:16:23 12/05/03

Go up one level in this thread


On December 05, 2003 at 16:15:51, Sune Fischer wrote:

>On December 05, 2003 at 13:43:05, Russell Reagan wrote:
>
>>On December 05, 2003 at 07:20:37, Gerd Isenberg wrote:
>>
>>>Was it your intention to mix lsb- with msb-routines?
>>
>>For this program they produce the same checksum since all of the bitboards have
>>a population of one (msb == lsb, in this test).
>>
>>It probably doesn't matter for a lot of bitboard chess programs. For most, any
>>bit will do. For some it matters. I know for some of the filler stuff I've
>>written I had to make sure I used a lsb or msb. I think both will be
>>approximately the same speed, or very close.
>
>You can optimize some of the routines to take advantage of that.
>For instance you save the &'s in the TableBitscan16 version:
>
>int TableOneBitscan16 (Bitboard b) {
>    if (b<<48)
>        return table16[b];
>    if (b<<32)
>        return table16[b >> 16] + 16;
>    if (b<<16)
>        return table16[b >> 32] + 32;
>    return table16[b >> 48] + 48;
>}
>
>-S.

I don't think this works in the general case Sune.  :)
It will work for single bits, but not if more bits can be set.

Assume b = 0x0102030405060708.
b << 48 will be non zero, and now you use the whole of b as an index to
table16... I think the index will be out of bounds!

Cheers, Tim.



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.