Revert all the SEE stuff
authorMarco Costalba <mcostalba@gmail.com>
Sat, 20 Jul 2013 12:20:17 +0000 (14:20 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 20 Jul 2013 12:20:33 +0000 (14:20 +0200)
The speed up seems to introduce some
functionality change.

Revert to original master for now.

bench: 4769737

src/position.cpp

index 3526a3d023a5ef38a9e214193bb15820cd30f780..8ea3f00a7881abee5bc80bd472da882359f0fc64 100644 (file)
@@ -79,8 +79,6 @@ PieceType min_attacker(const Bitboard* bb, const Square& to, const Bitboard& stm
       if (Pt == ROOK || Pt == QUEEN)
           attackers |= attacks_bb<ROOK>(to, occupied) & (bb[ROOK] | bb[QUEEN]);
 
-      attackers &= occupied; // Remove the just found attacker
-
       return (PieceType)Pt;
   }
   return min_attacker<Pt+1>(bb, to, stmAttackers, occupied, attackers);
@@ -1197,21 +1195,25 @@ int Position::see(Move m, int asymmThreshold) const {
   do {
       assert(slIndex < 32);
 
-      if (captured == KING) // Stop before processing a king capture
-      {
-          swapList[slIndex++] = QueenValueMg * 16;
-          break;
-      }
-
       // Add the new entry to the swap list
       swapList[slIndex] = -swapList[slIndex - 1] + PieceValue[MG][captured];
       slIndex++;
 
       // Locate and remove the next least valuable attacker
       captured = min_attacker<PAWN>(byTypeBB, to, stmAttackers, occupied, attackers);
+      attackers &= occupied; // Remove the just found attacker
       stm = ~stm;
       stmAttackers = attackers & pieces(stm);
 
+      if (captured == KING)
+      {
+          // Stop before processing a king capture
+          if (stmAttackers)
+              swapList[slIndex++] = QueenValueMg * 16;
+
+          break;
+      }
+
   } while (stmAttackers);
 
   // If we are doing asymmetric SEE evaluation and the same side does the first