From 92fc41226f784b251f41eab7e75c13075e980a54 Mon Sep 17 00:00:00 2001 From: Scott Gasch Date: Fri, 4 Sep 2026 16:46:27 -0700 Subject: Land bitboard move generation (Part A+B) and movesup.c bitboard queries; default on Implements the full board_representation/MOVEGEN_MIGRATION.md scope: bitboard-backed generators for all six not-in-check piece types plus the JumpTable-avoiding whole-node dispatch fork (_GenerateAllMovesBB), the in-check escape path (king flight + block/capture), and movesup.c's ExposesCheck/FasterExposesCheck/ExposesCheckEp/IsAttacked/ InCheck bitboard equivalents. Nine toggles total (GENERATE_{KNIGHT,KING,ROOK,BISHOP,QUEEN,PAWN}_BITBOARD, GENERATE_ESCAPES_{KING,BLOCK}_BITBOARD, EXPOSESCHECK_BITBOARD, ISATTACKED_BITBOARD), all now on by default in GNUmakefile -- DISABLE_BITBOARD_MOVEGEN=1 opts back into the mailbox path, which remains fully present and compiled either way. Correctness verified via perft (Kiwipete, Position 4), the move-set comparison harness across 20,000 random positions, all nine toggles combined cleanly (15/15 runs, after fixing a GenerateRandomLegalPosition en-passant-sentinel bug in the test harness), and sd10 on all three curated suites showing zero solve-count regression vs head_reference (the ecm_hard_quick delta traced to unrelated intervening commits). Speed: most individual generators land near parity by design (mailbox's per-square walk was already close to O(destination count)); the real, consistent wins are the dispatch-layer fork (up to 23% in dense positions) and IsAttackedBB (0.73x-0.93x of mailbox). Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01AbHkVrm5KUyzLwWd3GHmo6 --- src/see.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/see.c') diff --git a/src/see.c b/src/see.c index 4b534bb..4ba62ad 100755 --- a/src/see.c +++ b/src/see.c @@ -201,7 +201,13 @@ Return value: COOR_TO_BB(pos->cNonPawns[BLACK][0])); } -static BITBOARD +// Non-static (unlike its historical file-local status) so +// generate.c's Part B (_GenerateEscapes) bitboard work can call it +// directly for king-flight safety testing, passing an occupancy +// bitboard with the king itself removed to correctly account for +// x-ray/discovered attacks when the king steps out of a slider's way +// -- see board_representation/MOVEGEN_MIGRATION.md section 6a. +BITBOARD _WhoAttacksSquareBB(IN POSITION *pos, IN COOR cSquare, IN ULONG uSide, -- cgit v1.3