This intrinsic to call BMI2 PEXT instruction is defined in immintrin.h. This header should be included only when USE_PEXT is defined, otherwise we define _pext_u64 as 0 forcing a nop. But under some mingw platforms, even if we don't include the header, immintrin.h gets included anyhow through an include chain that starts with STL <algorithm> header. So we end up both defining _pext_u64 function and at the same time defining _pext_u64 as 0 leading to a compile error. The correct solution is of not using _pext_u64 directly. This patch fixes a compile error with some mingw64 package when compiling with x86-64. No functional change. Resolves #222
In case we stop the search during a fail-high it is possible we return to GUI without a ponder move. This patch try harder to find a ponder move retrieving it from TT. This is important in games played with 'ponder on'. bench: 8080602 Resolves #221
On platforms where size_t is 32 bit, we can have an overflow in this expression: (mbSize * 1024 * 1024) Fix it setting max hash size of 2GB on platforms where size_t is 32 bit. A small rename while there: now struct Cluster is definied inside class TranspositionTable so we should drop the redundant TT prefix. No functional change.
Android 5 can only run position independent executables. Note that this breaks Android 4.0 and earlier. See here for more info: http://stackoverflow.com/questions/24818902/running-a-native-library-on-android-l-error-only-position-independent-executab Thanks to Peter Osterlund for the support. No functional change
No functional change.
- Change UCI::value() signature This function should only return the value, lowerbound and upperbound info is up to the caller because it requires external knowledge, out of the scope of this little helper. - Retire 'key' command It is not an UCI command and is absolutely useless: never used. - Comments fixing and other trivia No functional change.
And reshuffle a bit the functions to place them in a consistent order. To be on the safe side, patch has been validated for no regression/crashes with a small 8K games test with 3 threads: ELO: 3.98 +-4.4 (95%) LOS: 96.3% Total: 8388 W: 1500 L: 1404 D: 5484 No functional change.
Move all in evaluation. Simplify the code and concentrate in a single place all the logic behind space evaluation, making it much more clear. Verified also at STC it does not regress due to a possible slow down: LLR: 3.91 (-2.94,2.94) [-3.00,1.00] Total: 65744 W: 13285 L: 13194 D: 39265 No functional change.
The evaluation is already done by the specialized function, don't need to add something elese later. With this patch following positions are evaluated correctly as draws: 8/6p1/1Pkp1p1p/2nNn2P/2P1K1P1/8/8/3B4 w - - 7 8/1k4p1/1P1p1p1p/3NnK1P/2P3P1/1n6/4B3/8 w - - Verified it not regress with an STC test: LLR: 3.15 (-2.94,2.94) [-3.00,1.00] Total: 49812 W: 10095 L: 10016 D: 29701 Reported by Arjun Temurnikar. bench: 8289983