17#ifndef HOOVER_CHESS_UTILS__PGN_READER__BITBOARD_ATTACKS_ELEMENTARY_H_INCLUDED
18#define HOOVER_CHESS_UTILS__PGN_READER__BITBOARD_ATTACKS_ELEMENTARY_H_INCLUDED
20#include "pgnreader-config.h"
41 const std::uint64_t occupMask {
static_cast<std::uint64_t
>(occupancyMask) };
43 const BitBoardTables::MasksAndMultipliers &masksAndMults {
ctBitBoardTables.elementaryBishopMaskMults[
static_cast<std::uint8_t
>(sq)] };
44 std::uint64_t product { };
45 for (std::size_t i { }; i < 3U; ++i)
46 product |= (occupMask & masksAndMults.masks[i]) * masksAndMults.multipliers[i];
48 std::uint64_t baseOccupancy { product >> masksAndMults.shift };
56 const std::uint64_t occupMask {
static_cast<std::uint64_t
>(occupancyMask) };
58 const BitBoardTables::MasksAndMultipliers &masksAndMults {
ctBitBoardTables.elementaryRookMaskMults[
static_cast<std::uint8_t
>(sq)] };
59 std::uint64_t product { };
60 for (std::size_t i { }; i < 3U; ++i)
61 product |= (occupMask & masksAndMults.masks[i]) * masksAndMults.multipliers[i];
63 std::uint64_t baseOccupancy { product >> masksAndMults.shift };
Slider attacks implementation using Elementary Bitboards.
Definition bitboard-attacks-elementary.h:35
static SquareSet getBishopAttackMask(Square sq, SquareSet occupancyMask) noexcept
See Attacks::getBishopAttackMask() for documentation.
Definition bitboard-attacks-elementary.h:38
static SquareSet getRookAttackMask(Square sq, SquareSet occupancyMask) noexcept
See Attacks::getRookAttackMask() for documentation.
Definition bitboard-attacks-elementary.h:53
Set of squares. Implemented using a bit-mask.
Definition chessboard-types-squareset.h:35
std::uint_fast8_t SquareUnderlyingType
Underlying type of Square
Definition chessboard-types.h:38
Square
Named square.
Definition chessboard-types.h:122
Definition chessboard-types-squareset.h:30
const BitBoardTables ctBitBoardTables
Various bitboard attack and other tables.