Stockfish, a UCI chess playing engine derived from Glaurung 2.1
Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad
+ Copyright (C) 2015-2016 Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad
Stockfish is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
*/
#include <algorithm>
-#include <cstring> // For std::memset
#include "bitboard.h"
#include "bitcount.h"
const uint64_t DeBruijn64 = 0x3F79D71B4CB0A89ULL;
const uint32_t DeBruijn32 = 0x783A9B23;
- int MS1BTable[256]; // To implement software msb()
+ int MSBTable[256]; // To implement software msb()
Square BSFTable[SQUARE_NB]; // To implement software bitscan
Bitboard RookTable[0x19000]; // To store rook attacks
Bitboard BishopTable[0x1480]; // To store bishop attacks
result += 8;
}
- return Square(result + MS1BTable[b32]);
+ return Square(result + MSBTable[b32]);
}
#endif // ifndef USE_BSFQ
for (Rank r = RANK_8; r >= RANK_1; --r)
{
for (File f = FILE_A; f <= FILE_H; ++f)
- s.append(b & make_square(f, r) ? "| X " : "| ");
+ s += b & make_square(f, r) ? "| X " : "| ";
- s.append("|\n+---+---+---+---+---+---+---+---+\n");
+ s += "|\n+---+---+---+---+---+---+---+---+\n";
}
return s;
BSFTable[bsf_index(SquareBB[s])] = s;
}
- for (Bitboard b = 1; b < 256; ++b)
- MS1BTable[b] = more_than_one(b) ? MS1BTable[b - 1] : lsb(b);
+ for (Bitboard b = 2; b < 256; ++b)
+ MSBTable[b] = MSBTable[b - 1] + !more_than_one(b);
for (File f = FILE_A; f <= FILE_H; ++f)
FileBB[f] = f > FILE_A ? FileBB[f - 1] << 1 : FileABB;
{ 728, 10316, 55013, 32803, 12281, 15100, 16645, 255 } };
Bitboard occupancy[4096], reference[4096], edges, b;
- int age[4096], current = 0, i, size;
-
- std::memset(age, 0, sizeof(age));
+ int age[4096] = {0}, current = 0, i, size;
// attacks[s] is a pointer to the beginning of the attacks table for square 's'
attacks[SQ_A1] = table;