-inline Bitboard file_attacks_bb(Square s, Bitboard blockers) {
- Bitboard b = (blockers >> square_file(s)) & 0x01010101010100ULL;
- return
- FileAttacks[square_rank(s)][(b*0xd6e8802041d0c441ULL)>>58] & file_bb(s);
-}
-
-inline Bitboard rank_attacks_bb(Square s, Bitboard blockers) {
- Bitboard b = (blockers >> ((s & 56) + 1)) & 63;
- return RankAttacks[square_file(s)][b] & rank_bb(s);
-}
-
-inline Bitboard rook_attacks_bb(Square s, Bitboard blockers) {
- return file_attacks_bb(s, blockers) | rank_attacks_bb(s, blockers);
-}
-
-#elif defined(USE_32BIT_ATTACKS)
-
-inline Bitboard rook_attacks_bb(Square s, Bitboard blockers) {
- Bitboard b = blockers & RMask[s];
- return RAttacks[RAttackIndex[s] +
- (unsigned(int(b) * int(RMult[s]) ^
- int(b >> 32) * int(RMult[s] >> 32))
- >> RShift[s])];
-}
-
-#else
-
-inline Bitboard rook_attacks_bb(Square s, Bitboard blockers) {
- Bitboard b = blockers & RMask[s];
- return RAttacks[RAttackIndex[s] + ((b * RMult[s]) >> RShift[s])];