Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Speedups for BitBoard programs on 64-bit machines

Author: Gian-Carlo Pascutto

Date: 03:00:08 06/07/02

Go up one level in this thread


On June 06, 2002 at 19:47:14, Vincent Diepeveen wrote:

>Not really. the problem is the bitboarders have a different goal it seems.
>If all you want is a Sum(squaresattacked) as mobility function, then sure
>bitboards are an interesting thing to use at 64 bits processors. If you want
>more, then bad luck with bitboards. Factor 2 slower.

BitBoard Mobility function weighting each square differently:

int RookMobility(int square)
{
  int mob, from = nobit_to_bit[square];
  int mask;

  mask = ((WhitePieces | BlackPieces) >> (Rank(from)<<3)) & FullRank;
  mob = Rook_MobilityRank[from][mask];
  mask = (R90 >> (File(from)<<3)) & FullRank;
  mob += Rook_MobilityFile[from][mask];

  return mob;
}

BitBoard Mobility function for Sum(squaresattacked):

int RookMobility(int square)
{
  int mob, from = nobit_to_bit[square];
  int mask;

  mask = ((WhitePieces | BlackPieces) >> (Rank(from)<<3)) & FullRank;
  mob = Rook_MobilityRank[from][mask];
  mask = (R90 >> (File(from)<<3)) & FullRank;
  mob += Rook_MobilityFile[from][mask];

  return mob;
}

Oh, oops, guess what: they're exactly the same. The cleverness
(and difference) is in a loop that is executed once at program startup
to set up those arrays.

--
GCP



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.