Author: Russell Reagan
Date: 11:14:17 07/11/03
Go up one level in this thread
On July 11, 2003 at 13:53:19, Gerd Isenberg wrote: >Thanks Walter, > >the whole idea is based on de Buijn Sequences. >The folding trick is great, unsigned folding safes the final "and". >It even works with subtracting one from a single isolated bit. > >Regards, >Gerd > >int lsz64_tbl[64] = >{ > 0,31, 4,33,60,15,12,34, > 61,25,51,10,56,20,22,35, > 62,30, 3,54,52,24,42,19, > 57,29, 2,44,47,28, 1,36, > 63,32,59, 5, 6,50,55, 7, > 16,53,13,41, 8,43,46,17, > 26,58,49,14,11,40, 9,45, > 21,48,39,23,18,38,37,27, >}; > >int bitScanAndReset(BitBoard &bb) >{ > BitBoard lsb = bb & -(__int64)bb; > bb ^= lsb--; > unsigned int foldedLSB = ((int) lsb) ^ ((int)(lsb>>32)); > return lsz64_tbl[foldedLSB * 0x78291ACF >> 26]; >} These are all very fascinating, but after testing them all, it seems that a 16-bit lookup table is still the fastest on my Athlon. Probably the bsf method will be fastest on a P3.
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.