Author: Matt Taylor
Date: 01:20:04 01/22/03
Go up one level in this thread
On January 22, 2003 at 03:00:22, Gerd Isenberg wrote:
>On January 22, 2003 at 02:54:44, Matt Taylor wrote:
>
>><snip>
>>>__forceinline
>>>UINT BitSearchAndReset(BitBoard &bb)
>>>{
>>>#ifdef _M_IX86
>>>#ifdef USE_SAVE_BSF
>>> __asm
>>> {
>>> xor edx, edx
>>> mov ebx, [bb]
>>> xor eax, eax
>>> inc edx
>>> bsf ecx, [ebx]
>>> jnz found
>>> bsf ecx, [ebx + 4]
>>> lea ebx, [ebx + 4]
>>> xor eax, 32
>>> found:
>>> shl edx, cl
>>> xor eax, ecx
>>> xor [ebx], edx
>>> }
>>>#else
>>> __asm
>>> {
>>> mov edx, [bb]
>>> bsf eax, [edx+4]
>>> xor eax, 32
>>> bsf eax, [edx]
>>> btr [edx],eax
>>> }
>>>#endif
>>>...
>>>}
>>>
>>>Regards,
>>>Gerd
>>
>>Remember, bsr/bsf/btr are -slow- on Athlon. That bit search & reset is at least
>>16 clocks (bsf twice, likely ~5-6 clocks additional overhead at a glance). I
>>guess I should give up on the last bitscan and post my results. Walter's routine
>>optimizes to 11 clocks + 134 byte table.
>>
>>-Matt
>
>Hi Matt,
>
>Yes i know, tried a lot, but this inlined conditional version is fastest so far
>in IsiChess - but not in dumb loop test. Remaining code size matters a lot and
>it is used so often in my program...
>
>Cheers,
>Gerd
Why would code size matter?
-Matt
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.