Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: flood fill attack bitboards

Author: Gerd Isenberg

Date: 23:19:16 09/15/02

Go up one level in this thread


My current attack routines (member of CNode) have only one int parameter.
So i have to use some conditional compiled inlines:

__forceinline BitBoard CNode::GetRookAttacks(int sq) {
	return getRookAttacksMMX( freeSquares(), 0x0...0001<<sq);}

I fear, when i only replace all my sliding Lookup-getters GetFileAttacks,
GetA1H8Attacks... in this way, the flood fill mmx aproach will lose. The
mmx-execution latencies are mostly two cycles, rather then the one cycle for
similar instructions with standard registers (and there are three pipes for
standard int instructions). Also most sliding attack getter (exclude
getQueenAttacks) are forced inliners. Inlining asm-funtions have the drawback of
parameter passing via stack (maybe solvable by passing the parameters already in
mmx-register).

But i will try it and report about it, as proposed. Have to think about doing a
lot of conditional compiles or starting a new test project.

It will gain from the lack of incremental updating the three rotated occupied
bitboards, but i think it's necessary to change programs infrastructure somehow
to gain more from the simultanious feature.

One possible improvement for the single square getters could be the use of four
routine variations with less fill iterations (4..7). Two function pointer arrays
indexed by square index, with respect of the maximal lenght of a ray in each
direction for straights or diagonals.

An interesting feature of this routines may be looking for all squares
attackable after all possible moves by the sliders. You only need two
consecutive calls.

Cheers,
Gerd






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.