X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitboard.h;h=00f0f576d91972762e7f2781a585c3600f371e24;hp=5b2ec249febfebe92169ec241e40e78fef1d520d;hb=b1b0c640462aed199a3665e575f9cb208b8e4687;hpb=3092f0c6460c831e666d54389710394c52a86ed9 diff --git a/src/bitboard.h b/src/bitboard.h index 5b2ec249..00f0f576 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -69,16 +69,13 @@ extern uint8_t BitCount8Bit[256]; struct Magics { Bitboard mask; uint64_t mult; - uint32_t offset; uint32_t shift; + Bitboard* attacks; }; extern Magics RMagics[64]; extern Magics BMagics[64]; -extern Bitboard RAttacks[0x19000]; -extern Bitboard BAttacks[0x1480]; - /// Functions for testing whether a given bit is set in a bitboard, and for /// setting and clearing bits. @@ -176,12 +173,12 @@ inline Bitboard in_front_bb(Color c, Square s) { inline Bitboard rook_attacks_bb(Square s, Bitboard occ) { const Magics& m = RMagics[s]; - return RAttacks[m.index + (((occ & m.mask) * m.mult) >> m.shift)]; + return m.attacks[((occ & m.mask) * m.mult) >> m.shift]; } inline Bitboard bishop_attacks_bb(Square s, Bitboard occ) { const Magics& m = BMagics[s]; - return BAttacks[m.index + (((occ & m.mask) * m.mult) >> m.shift)]; + return m.attacks[((occ & m.mask) * m.mult) >> m.shift]; } #else // if !defined(IS_64BIT) @@ -189,15 +186,13 @@ inline Bitboard bishop_attacks_bb(Square s, Bitboard occ) { inline Bitboard rook_attacks_bb(Square s, Bitboard occ) { const Magics& m = RMagics[s]; Bitboard b = occ & m.mask; - return RAttacks[m.offset + - ((unsigned(b) * unsigned(m.mult) ^ unsigned(b >> 32) * unsigned(m.mult >> 32)) >> m.shift)]; + return m.attacks[(unsigned(b) * unsigned(m.mult) ^ unsigned(b >> 32) * unsigned(m.mult >> 32)) >> m.shift]; } inline Bitboard bishop_attacks_bb(Square s, Bitboard occ) { const Magics& m = BMagics[s]; Bitboard b = occ & m.mask; - return BAttacks[m.offset + - ((unsigned(b) * unsigned(m.mult) ^ unsigned(b >> 32) * unsigned(m.mult >> 32)) >> m.shift)]; + return m.attacks[(unsigned(b) * unsigned(m.mult) ^ unsigned(b >> 32) * unsigned(m.mult >> 32)) >> m.shift]; } #endif