Incredible typo from my side!
The 2 tables are completely different, one counts 1s the
other returns the msb position. Even more incredible
the 'stockfish bench' command returns the same number
of nodes!!!
Spotted by Justin Blanchard.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
CACHE_LINE_ALIGNMENT
int BSFTable[64];
+ int MS1BTable[256];
Bitboard RTable[0x19000]; // Storage space for rook attacks
Bitboard BTable[0x1480]; // Storage space for bishop attacks
result += 8;
}
- return Square(result + BitCount8Bit[b]);
+ return Square(result + MS1BTable[b]);
}
#endif // !defined(USE_BSFQ)
void bitboards_init() {
+ for (int k = 0, i = 0; i < 8; i++)
+ while (k < (2 << i))
+ MS1BTable[k++] = i;
+
for (Bitboard b = 0; b < 256; b++)
BitCount8Bit[b] = (uint8_t)popcount<Max15>(b);