blob: 2ee1a5cdc79ad02815d35151bcb945166a07e8cd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#ifndef TTABLE_H
#define TTABLE_H
#include "bitboard.h"
#define TABLE_BITS 24
#define TABLE_SIZE (1ULL << TABLE_BITS)
#define MASK (TABLE_SIZE - 1)
#define TT_BUCKET_SIZE 4
static struct zobrist_keys {
u64 piece[PIECE_TYPE_COUNT][64];
u64 castle[CASTLE_COUNT];
u64 turn[TURN_COUNT];
u64 en_passant[64];
} zobrist_keys;
enum { TT_EXACT, TT_LOWERBOUND, TT_UPPERBOUND };
typedef struct {
atomic_uint_fast64_t key;
move_t best_move;
i16 score; // depth analysed
i16 eval; // non-depth analysed
u16 depth;
u16 generation;
u8 flag;
} tentry_t;
typedef struct {
tentry_t entries[TT_BUCKET_SIZE];
} 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);
#endif // TTABLE_H
|