The speed up seems to introduce some
functionality change.
Revert to original master for now.
bench:
4769737
if (Pt == ROOK || Pt == QUEEN)
attackers |= attacks_bb<ROOK>(to, occupied) & (bb[ROOK] | bb[QUEEN]);
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);
return (PieceType)Pt;
}
return min_attacker<Pt+1>(bb, to, stmAttackers, occupied, attackers);
do {
assert(slIndex < 32);
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);
// 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);
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
} while (stmAttackers);
// If we are doing asymmetric SEE evaluation and the same side does the first