77#if (BITBOARD_TABLES_HAVE_X86_BMI2)
78 alignas(64) std::array<std::uint64_t, 64U> bmi2BishopMasks;
79 alignas(64) std::array<const std::uint64_t *, 64U> bmi2BishopOffsets;
80 alignas(64) std::array<std::uint64_t, 64U> bmi2RookMasks;
81 alignas(64) std::array<const std::uint64_t *, 64U> bmi2RookOffsets;
82 alignas(64) std::uint64_t bmi2BishopRookAttackData[5248U + 102400U];
85#if (BITBOARD_TABLES_HAVE_ELEMENTARY)
86 struct MasksAndMultipliers
88 std::uint64_t masks[3U];
90 std::uint64_t multipliers[3U];
91 std::uint64_t zeroPadding;
94 static_assert(
sizeof(MasksAndMultipliers) == 64);
96 alignas(64) std::array<MasksAndMultipliers, 64U> elementaryBishopMaskMults;
97 alignas(64) std::array<std::uint32_t, 64U> elementaryBishopOffsets;
98 alignas(64) std::array<MasksAndMultipliers, 64U> elementaryRookMaskMults;
99 alignas(64) std::array<std::uint32_t, 64U> elementaryRookOffsets;
100 alignas(64) std::array<std::uint64_t, 5248U + 102400U> elementaryBishopRookAttackData;
103#if (BITBOARD_TABLES_HAVE_AARCH64_SVE2_BITPERM)
104 alignas(64) std::array<std::uint64_t, 128U> sve2BishopRookMasks;
105 alignas(64) std::array<std::uint64_t, 128U> sve2BishopRookOffsets;
106 alignas(64) std::array<std::uint64_t, 5248U + 102400U> sve2BishopRookAttackData;
109#if (BITBOARD_TABLES_HAVE_HYPERBOLA)
110 struct HyperbolaAttackMasks
113 std::uint64_t vertMaskEx;
114 std::uint64_t diagBLTREx;
115 std::uint64_t diagBRTLEx;
118 alignas(64) std::array<HyperbolaAttackMasks, 64U> hyperbolaAttackMasks;
121#if (BITBOARD_TABLES_HAVE_BLACK_MAGIC)
129 std::uint64_t _hash)
noexcept;
std::array< std::array< std::uint64_t, 64U >, 65U > rayIntercepts
Ray attack intercept squares from king to checker.
Definition bitboard-tables.h:63
std::array< std::array< std::uint8_t, 8U >, 256U > rookHorizAttackMasks
Horizontal rook attacks: column to squares on the column.
Definition bitboard-tables.h:75
std::array< std::array< std::uint64_t, 64U >, 64U > raysFromKing
Rays from a king square to the direction of a pinned piece square.
Definition bitboard-tables.h:69