summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
0a1092f)
Test for common case which, when running default
stockfish bench, avoids 96% of 19 million calls to
pos.gives_check().
Yields to a 2-4% speed up according to platform.
Passed fishtest at STC
LLR: 2.97 (-2.94,2.94) [-1.50,4.50]
Total: 12441 W: 2333 L: 2196 D: 7912
http://tests.stockfishchess.org/tests/view/
52f02d790ebc5901df50f887
Passed fishtest at LTC
LLR: 2.97 (-2.94,2.94) [0.00,6.00]
Total: 42175 W: 6702 L: 6409 D: 29064
http://tests.stockfishchess.org/tests/view/
52f0dbe00ebc5901df50f8a0
No functional change.
using Eval::evaluate;
using namespace Search;
using Eval::evaluate;
using namespace Search;
+// Fast wrapper for common case of pos.gives_check()
+#define FAST_GIVES_CHECK(pos, m, ci) \
+ ((type_of(m) == NORMAL && ci.dcCandidates == 0) \
+ ? (ci.checkSq[type_of(pos.piece_on(from_sq(m)))] & to_sq(m)) \
+ : pos.gives_check(m, ci))
+
namespace {
// Set to true to force running with one thread. Used for debugging
namespace {
// Set to true to force running with one thread. Used for debugging
ext = DEPTH_ZERO;
captureOrPromotion = pos.capture_or_promotion(move);
ext = DEPTH_ZERO;
captureOrPromotion = pos.capture_or_promotion(move);
- givesCheck = pos.gives_check(move, ci);
+ givesCheck = FAST_GIVES_CHECK(pos, move, ci);
dangerous = givesCheck
|| type_of(move) != NORMAL
|| pos.advanced_pawn_push(move);
dangerous = givesCheck
|| type_of(move) != NORMAL
|| pos.advanced_pawn_push(move);
- givesCheck = pos.gives_check(move, ci);
+ givesCheck = FAST_GIVES_CHECK(pos, move, ci);
// Futility pruning
if ( !PvNode
// Futility pruning
if ( !PvNode