From 8c0fa09f1ea755f33eded79cfe4f919895627490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Thu, 20 Nov 2025 20:25:14 +0100 Subject: [PATCH] added LUT KING_SAFETY_BISHOP_MASK in bitboard::attackmaps for king safety checks --- engine/src/bitboard/attackmaps.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/engine/src/bitboard/attackmaps.rs b/engine/src/bitboard/attackmaps.rs index 016719d..b99a4db 100644 --- a/engine/src/bitboard/attackmaps.rs +++ b/engine/src/bitboard/attackmaps.rs @@ -118,6 +118,7 @@ pub static BISHOP_MOVE_MASK: Lazy<[u64; 64]> = Lazy::new(|| { table }); +// KING_SAFETY_ROOK_MASK[] pub static KING_SAFETY_ROOK_MASK: Lazy<[u64; 64]> = Lazy::new(|| { let mut table = [0u64; 64]; @@ -134,6 +135,23 @@ pub static KING_SAFETY_ROOK_MASK: Lazy<[u64; 64]> = Lazy::new(|| { table }); +// KING_SAFETY_BISHOP_MASK[] +pub static KING_SAFETY_BISHOP_MASK: Lazy<[u64; 64]> = Lazy::new(|| { + let mut table = [0u64; 64]; + + for sq in 0..64 { + let mut mask = KING_ATTACK_MAP[sq]; + + while mask != 0 { + let next_sq = mask.trailing_zeros(); + table[sq] |= BISHOP_MOVE_MASK[next_sq as usize]; + mask &= !(1 << next_sq); + } + } + + table +}); + // <----- TESTS ----->