]> git.sesse.net Git - stockfish/blobdiff - src/movegen.cpp
Micro optimize generate_piece_checks() take 2
[stockfish] / src / movegen.cpp
index d2b55bd28053f262c2513bdfd17c19a0b307041d..dff9e8c3b4624056f0642b29e152ffac3e9e12eb 100644 (file)
@@ -73,9 +73,8 @@ namespace {
         return Us == WHITE ? p << 9 : p >> 7;
     else if (Direction == DELTA_NW)
         return Us == WHITE ? p << 7 : p >> 9;
-
-    assert(false);
-    return p;
+    else
+        return p;
   }
 
   // Template generate_piece_checks() with specializations
@@ -821,6 +820,11 @@ namespace {
     while (b)
     {
         Square from = pop_1st_bit(&b);
+        if (   (Piece == QUEEN  && !(QueenPseudoAttacks[from]  & checkSqs))
+            || (Piece == ROOK   && !(RookPseudoAttacks[from]   & checkSqs))
+            || (Piece == BISHOP && !(BishopPseudoAttacks[from] & checkSqs)))
+            continue;
+
         Bitboard bb = pos.piece_attacks<Piece>(from) & checkSqs;
         SERIALIZE_MOVES(bb);
     }