Author: Dann Corbit
Date: 14:05:41 01/17/02
Go up one level in this thread
On January 17, 2002 at 08:19:25, Severi Salminen wrote: >I'd really like to know if it is safe to assume, the eax will be left >unaffected. > >Som do this: > >mov eax,0xffffffff >mov dword ptr VAR,0 > >start: >bsf eax,dword ptr VAR >cmp eax, 0xffffffff >jne exit >bsr eax,dword ptr VAR >cmp eax, 0xffffffff >jne exit >jmp start >exit: > >Let it run a little and check if it ever goes to exit:. I have not yet gotten >any good answers from Intel, but they are working on it. I won't use the fast >firstbit() and lastbit() versions if the above assumption is not valid. You can certainly do a test and branch version instead of the more primitive method. One thing for sure, the brancheless notion will *not* work if you give it a bitboard that is purely empty (no bits set in either half). Emperically, you can try the evil undefined behavior trick which is branchless and "appears to work on all 32 bit intel chips and clones" but for which there are no guarantees. Fortunately, 64 bit chips are coming along soon which will greatly simplify the whole mess.
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.