Author: Gerd Isenberg
Date: 01:53:46 09/20/04
Go up one level in this thread
On September 20, 2004 at 03:16:41, Tony Werten wrote: >On September 20, 2004 at 03:06:54, Gerd Isenberg wrote: > >>On September 20, 2004 at 02:23:59, Tony Werten wrote: >> >>>It isn't doing things parallel like the sliders with Kogge Stone, but at least >>>it doesn't use those big arrays. >>> >>>const KNIGHTC3 // all attacks of a knight on square C3 >>> >>>pieces=BITBOARD[stm][KNIGHT]; >>>attacks=0; >>>while (pieces) >>>{ >>> sq=bitscan_first_and_reset(pieces); >>> File(sq)>2 ? mask=NOT_FILE_AB:mask=NOT_FILE_GH; >>> if (sq>C3) attacks=(KNIGHTC3>>(sq-C3)) & mask; >> << > >correct (when A1=0 and H8=63) Sorry for my nitpicking, but with other mapping sq>C3 doesn't make much sense ;-) > >>> else attacks|=(KNIGHTC3<<(C3-sq)) & mask; >> ?? >> > >correct. I'm mixing some things here. The |= is for all knight attacks, mostly >you only want = > >>>} >>> >>>For king is the same but on square B2. Since most of the time sq>C3 (or B2) >>>branch prediction should be OK. >> >>Even more for sq>=C3 (or b2). > >Yeah, that might do some 0.1 % better even :) I would say it goes under in some random noise. Probably same for direct lookup with a bitboard[64] array. What about different routines for white and black knights/kings? Using f6(g7) for white and c3(b2) for black. During opening and middlegame branch prediction works even better ;-) Gerd > >Tony > >> >> >>> >>>Tony
This page took 0.01 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.