From 1ebaab7b771c4c73be66895515f948ffe2394cc0 Mon Sep 17 00:00:00 2001 From: Aargh Rai Date: Mon, 20 Jul 2026 21:14:44 +0530 Subject: simple ttable tests --- include/bitboard.h | 1 + include/engine/ttable.h | 34 ++++++++++++++++++++++++++-------- 2 files changed, 27 insertions(+), 8 deletions(-) (limited to 'include') diff --git a/include/bitboard.h b/include/bitboard.h index b1ddcf0..25ff27d 100644 --- a/include/bitboard.h +++ b/include/bitboard.h @@ -84,6 +84,7 @@ bool check_valid_position(position_t position); position.bitboards[BLACK_PAWN] +int find_piece_on_square(position_t* p, int square); void print_position(position_t position); void print_bitboard(bitboard_t bitboard); diff --git a/include/engine/ttable.h b/include/engine/ttable.h index 2ee1a5c..8b1938a 100644 --- a/include/engine/ttable.h +++ b/include/engine/ttable.h @@ -1,11 +1,13 @@ #ifndef TTABLE_H #define TTABLE_H +#include "engine/moves.h" #include "bitboard.h" +#include #define TABLE_BITS 24 #define TABLE_SIZE (1ULL << TABLE_BITS) -#define MASK (TABLE_SIZE - 1) +#define TT_MASK (TABLE_SIZE - 1) #define TT_BUCKET_SIZE 4 static struct zobrist_keys { @@ -15,6 +17,9 @@ static struct zobrist_keys { u64 en_passant[64]; } zobrist_keys; +void zobrist_init(); +u64 zobrist_hash(position_t position); + enum { TT_EXACT, TT_LOWERBOUND, TT_UPPERBOUND }; typedef struct { atomic_uint_fast64_t key; @@ -28,16 +33,29 @@ typedef struct { typedef struct { tentry_t entries[TT_BUCKET_SIZE]; + int items_filled; } tbucket_t; typedef tbucket_t* ttable_t; -void ttable_init(); -u64 zobrist_hash(position_t position); -void ttable_store( - ttable_t *ttable, u64 key, move_t move, i16 score, - i16 eval, u16 depth, u16 generation, u8 flag -); -tentry_t *ttable_probe(ttable_t *table, u64 key); +struct ttable_insert_args { + u64 key; + move_t move; + i16 score; + i16 eval; + u16 depth; + u16 generation; + u8 flag; +}; + +void ttable_init(ttable_t *table); +void ttable_deinit(ttable_t table); +void __ttable_insert(ttable_t table, struct ttable_insert_args args); +tentry_t *ttable_find(ttable_t table, u64 key); + +#define ttable_insert(ttable, ...) __ttable_insert( \ + ttable, \ + (struct ttable_insert_args) { __VA_ARGS__ } \ +) #endif // TTABLE_H -- cgit v1.2.3