/// TranspositionTable::resize() sets the size of the transposition table,
/// measured in megabytes. Transposition table consists of a power of 2 number
-/// of clusters and each cluster consists of TTClusterSize number of TTEntry.
+/// of clusters and each cluster consists of ClusterSize number of TTEntry.
void TranspositionTable::resize(size_t mbSize) {
- assert(sizeof(TTCluster) == CacheLineSize / 2);
+ assert(sizeof(Cluster) == CacheLineSize / 2);
- size_t newClusterCount = size_t(1) << msb((mbSize * 1024 * 1024) / sizeof(TTCluster));
+ size_t newClusterCount = size_t(1) << msb((mbSize * 1024 * 1024) / sizeof(Cluster));
if (newClusterCount == clusterCount)
return;
clusterCount = newClusterCount;
free(mem);
- mem = calloc(clusterCount * sizeof(TTCluster) + CacheLineSize - 1, 1);
+ mem = calloc(clusterCount * sizeof(Cluster) + CacheLineSize - 1, 1);
if (!mem)
{
exit(EXIT_FAILURE);
}
- table = (TTCluster*)((uintptr_t(mem) + CacheLineSize - 1) & ~(CacheLineSize - 1));
+ table = (Cluster*)((uintptr_t(mem) + CacheLineSize - 1) & ~(CacheLineSize - 1));
}
void TranspositionTable::clear() {
- std::memset(table, 0, clusterCount * sizeof(TTCluster));
+ std::memset(table, 0, clusterCount * sizeof(Cluster));
}
TTEntry* const tte = first_entry(key);
const uint16_t key16 = key >> 48; // Use the high 16 bits as key inside the cluster
- for (int i = 0; i < TTClusterSize; ++i)
+ for (int i = 0; i < ClusterSize; ++i)
if (!tte[i].key16 || tte[i].key16 == key16)
{
if (tte[i].key16)
// Find an entry to be replaced according to the replacement strategy
TTEntry* replace = tte;
- for (int i = 1; i < TTClusterSize; ++i)
+ for (int i = 1; i < ClusterSize; ++i)
if ( (( tte[i].genBound8 & 0xFC) == generation8 || tte[i].bound() == BOUND_EXACT)
- ((replace->genBound8 & 0xFC) == generation8)
- (tte[i].depth8 < replace->depth8) < 0)