search: fixed a bug in NULL move pruning
[owl.git] / trans.h
blob39a23e292546020a174e0f46bcc8af62bffb93a1
1 /*
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 enum HASHTABLE_FLAGS { INVALID, EXACT, LOWER, UPPER };
19 /*
20 * move: mdf & 0x1FFFFF;
21 * depth: (mdf >> 21) & 0xFF
22 * flag: mdf >> 29
24 struct main_hash_entry_t {
25 uint64_t key;
26 int16_t score;
27 uint16_t age;
28 uint32_t mdf;
31 struct pawn_hash_entry_t {
32 uint64_t key;
33 uint64_t passers;
34 int16_t score_op;
35 int16_t score_eg;
38 /* age of transposition table (for replacement strategy) */
39 extern uint16_t hashtable_age;
41 extern uint64_t pawn_hash_mask;
42 extern uint64_t main_hash_mask;
44 extern struct pawn_hash_entry_t *pawn_hash[2];
45 extern struct main_hash_entry_t *main_hash;
47 int initialize_main_hashtable(void);
48 int initialize_pawn_hashtable(void);
50 int hashtable_get(int side, int depth, int ply, int *move, int *score);
51 void hashtable_put(int side, int depth, int ply, int flag, int move, \
52 int score);
54 void clear_main_hashtable(void);
55 void clear_pawn_hashtable(void);
56 void free_main_hashtable(void);
57 void free_pawn_hashtable(void);