Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Strange bug, please help

Author: Gerd Isenberg

Date: 04:48:56 12/10/02

Go up one level in this thread


>************************************************************************
>
>	if (pPos->u64TorresN)
>	{
>		UINT64 u64Pieza = pPos->u64PeonesN;
>		UINT64 u64Vacias = BB_TABLEROLLENO;
>
>		u64Pieza |= (u64Pieza >>  8) & u64Vacias;
>		u64Vacias &= (u64Vacias >>  8);
>		u64Pieza |= (u64Pieza >> 16) & u64Vacias;
>		u64Vacias &= (u64Vacias >> 16);
>		u64Pieza |= (u64Pieza >> 32) & u64Vacias;
>		fprintf(pFLog,"--- PI: %I64u\n",u64Pieza);
>		u64Pieza = u64Pieza >> 8;
>
>		u64ColumnasAbiertas = u64Pieza;
>		fprintf(pFLog,"--- CA: %I64u\n",u64ColumnasAbiertas);
>		u64ColumnasAbiertas = ~u64ColumnasAbiertas;
>		fprintf(pFLog,"--- CA: %I64u\n",u64ColumnasAbiertas);
>		u64ColumnasAbiertas &= au64FrontalReyBlanco[u32CasillaRey];
>		fprintf(pFLog,"+++ CA: %I64u\n",u64ColumnasAbiertas);
>	}
>
<snip>

Hi José,

that's strange. No idea so far.
The problem seems to be the final shift right:

	u64Pieza = u64Pieza >> 8;

Have you tried printf before and after that statement?
Have you played with the optimization flags?
Have you tried this one:

	u64Pieza >>= 8;

or this one:

	u64Pieza /= 256;

May be a bug in the compilers 64bit shift intrinsics?
What kind of compiler do you use exactly (Service Pack?).
Can you post the assembler output of the release and debug version.
If nothings helps, you may try intel C++.

I don't guess a side effect from
	fprintf(pFLog,"--- PI: %I64u\n",u64Pieza);
but may be you try
	fprintf(pFLog,"--- PI: %04X%04X\n",
                               (unsigned int)(u64Pieza>>32),
                                   (unsigned int)u64Pieza );

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.