X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitboard.cpp;h=57b24e2ef61b88ce5a4785b368df05739ffbbd44;hp=794f54cf68326cf92fec7ff172a1f1959eaa62d2;hb=6482ce2bb2cb2c2450008afb58c7ef2e04d56841;hpb=5c5af4fa6533e22fb56dd22985cf2b3938efde6c diff --git a/src/bitboard.cpp b/src/bitboard.cpp index 794f54cf..57b24e2e 100644 --- a/src/bitboard.cpp +++ b/src/bitboard.cpp @@ -1,7 +1,7 @@ /* Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2010 Marco Costalba, Joona Kiiski, Tord Romstad + Copyright (C) 2008-2012 Marco Costalba, Joona Kiiski, 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 @@ -38,7 +38,6 @@ int BShifts[64]; Bitboard SetMaskBB[65]; Bitboard ClearMaskBB[65]; -Bitboard SquaresByColorBB[2]; Bitboard FileBB[8]; Bitboard RankBB[8]; Bitboard NeighboringFilesBB[8]; @@ -155,10 +154,7 @@ Square pop_1st_bit(Bitboard* bb) { void bitboards_init() { for (Bitboard b = 0; b < 256; b++) - BitCount8Bit[b] = (uint8_t)count_1s(b); - - SquaresByColorBB[DARK] = 0xAA55AA55AA55AA55ULL; - SquaresByColorBB[LIGHT] = ~SquaresByColorBB[DARK]; + BitCount8Bit[b] = (uint8_t)popcount(b); for (Square s = SQ_A1; s <= SQ_H8; s++) { @@ -166,7 +162,7 @@ void bitboards_init() { ClearMaskBB[s] = ~SetMaskBB[s]; } - ClearMaskBB[SQ_NONE] = ~EmptyBoardBB; + ClearMaskBB[SQ_NONE] = ~0ULL; FileBB[FILE_A] = FileABB; RankBB[RANK_1] = Rank1BB; @@ -202,12 +198,12 @@ void bitboards_init() { SquareDistance[s1][s2] = std::max(file_distance(s1, s2), rank_distance(s1, s2)); for (int i = 0; i < 64; i++) - if (!CpuIs64Bit) // Matt Taylor's folding trick for 32 bit systems + if (!Is64Bit) // Matt Taylor's folding trick for 32 bit systems { Bitboard b = 1ULL << i; b ^= b - 1; b ^= b >> 32; - BSFTable[uint32_t(b * 0x783A9B23) >> 26] = i; + BSFTable[(uint32_t)(b * 0x783A9B23) >> 26] = i; } else BSFTable[((1ULL << i) * 0x218A392CD3D5DBFULL) >> 58] = i; @@ -231,9 +227,9 @@ void bitboards_init() { for (Square s = SQ_A1; s <= SQ_H8; s++) { - BishopPseudoAttacks[s] = bishop_attacks_bb(s, EmptyBoardBB); - RookPseudoAttacks[s] = rook_attacks_bb(s, EmptyBoardBB); - QueenPseudoAttacks[s] = queen_attacks_bb(s, EmptyBoardBB); + BishopPseudoAttacks[s] = bishop_attacks_bb(s, 0); + RookPseudoAttacks[s] = rook_attacks_bb(s, 0); + QueenPseudoAttacks[s] = queen_attacks_bb(s, 0); } for (Square s1 = SQ_A1; s1 <= SQ_H8; s1++) @@ -324,8 +320,8 @@ namespace { // all the attacks for each possible subset of the mask and so is 2 power // the number of 1s of the mask. Hence we deduce the size of the shift to // apply to the 64 or 32 bits word to get the index. - masks[s] = sliding_attacks(pt, s, EmptyBoardBB) & ~edges; - shifts[s] = (CpuIs64Bit ? 64 : 32) - count_1s(masks[s]); + masks[s] = sliding_attacks(pt, s, 0) & ~edges; + shifts[s] = (Is64Bit ? 64 : 32) - popcount(masks[s]); // Use Carry-Rippler trick to enumerate all subsets of masks[s] and // store the corresponding sliding attacks bitboard in reference[]. @@ -341,7 +337,7 @@ namespace { if (s < SQ_H8) attacks[s + 1] = attacks[s] + size; - booster = MagicBoosters[CpuIs64Bit][rank_of(s)]; + booster = MagicBoosters[Is64Bit][rank_of(s)]; // Find a magic for square 's' picking up an (almost) random number // until we find the one that passes the verification test.