1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 16:53:09 +00:00

Skip a couple of popcount in previous patch

And some little tidy up

No functional change.
This commit is contained in:
Marco Costalba 2013-04-19 09:41:28 +02:00
parent cc40d1c46a
commit f84f04742a
4 changed files with 11 additions and 11 deletions

View file

@ -63,7 +63,6 @@ extern Bitboard PassedPawnMask[COLOR_NB][SQUARE_NB];
extern Bitboard AttackSpanMask[COLOR_NB][SQUARE_NB]; extern Bitboard AttackSpanMask[COLOR_NB][SQUARE_NB];
extern Bitboard PseudoAttacks[PIECE_TYPE_NB][SQUARE_NB]; extern Bitboard PseudoAttacks[PIECE_TYPE_NB][SQUARE_NB];
const Bitboard WhiteSquares = 0x55AA55AA55AA55AAULL;
const Bitboard BlackSquares = 0xAA55AA55AA55AA55ULL; const Bitboard BlackSquares = 0xAA55AA55AA55AA55ULL;
/// Overloads of bitwise operators between a Bitboard and a Square for testing /// Overloads of bitwise operators between a Bitboard and a Square for testing
@ -201,8 +200,7 @@ inline bool squares_aligned(Square s1, Square s2, Square s3) {
/// the same color of the given square. /// the same color of the given square.
inline Bitboard same_color_squares(Square s) { inline Bitboard same_color_squares(Square s) {
return Bitboard(0xAA55AA55AA55AA55ULL) & s ? 0xAA55AA55AA55AA55ULL return BlackSquares & s ? BlackSquares : ~BlackSquares;
: ~0xAA55AA55AA55AA55ULL;
} }

View file

@ -171,6 +171,9 @@ namespace {
// right to castle. // right to castle.
const Value TrappedRookPenalty = Value(180); const Value TrappedRookPenalty = Value(180);
// Penalty for bishop with pawns on the same coloured squares
const Score BishopPawnsPenalty = make_score(8, 12);
// Penalty for a bishop on a1/h1 (a8/h8 for black) which is trapped by // Penalty for a bishop on a1/h1 (a8/h8 for black) which is trapped by
// a friendly pawn on b2/g2 (b7/g7 for black). This can obviously only // a friendly pawn on b2/g2 (b7/g7 for black). This can obviously only
// happen in Chess960 games. // happen in Chess960 games.
@ -584,7 +587,7 @@ Value do_evaluate(const Position& pos, Value& margin) {
// Penalty for bishop with same coloured pawns // Penalty for bishop with same coloured pawns
if (Piece == BISHOP) if (Piece == BISHOP)
score -= make_score(8, 12) * ei.pi->same_colored_pawn_count(s, Us); score -= BishopPawnsPenalty * ei.pi->pawns_on_same_color_squares(Us, s);
// Bishop and knight outposts squares // Bishop and knight outposts squares
if ( (Piece == BISHOP || Piece == KNIGHT) if ( (Piece == BISHOP || Piece == KNIGHT)

View file

@ -176,11 +176,11 @@ namespace {
value += CandidateBonus[relative_rank(Us, s)]; value += CandidateBonus[relative_rank(Us, s)];
} }
e->pawnsOnWhiteSquaresCount[Us] = popcount<Max15>(ourPawns & WhiteSquares); e->pawnsOnSquares[Us][BLACK] = popcount<Max15>(ourPawns & BlackSquares);
e->pawnsOnWhiteSquaresCount[Them] = popcount<Max15>(theirPawns & WhiteSquares); e->pawnsOnSquares[Us][WHITE] = pos.piece_count(Us, PAWN) - e->pawnsOnSquares[Us][BLACK];
e->pawnsOnBlackSquaresCount[Us] = popcount<Max15>(ourPawns & BlackSquares); e->pawnsOnSquares[Them][BLACK] = popcount<Max15>(theirPawns & BlackSquares);
e->pawnsOnBlackSquaresCount[Them] = popcount<Max15>(theirPawns & BlackSquares); e->pawnsOnSquares[Them][WHITE] = pos.piece_count(Them, PAWN) - e->pawnsOnSquares[Them][BLACK];
return value; return value;
} }

View file

@ -40,7 +40,7 @@ struct Entry {
int file_is_half_open(Color c, File f) const { return halfOpenFiles[c] & (1 << int(f)); } int file_is_half_open(Color c, File f) const { return halfOpenFiles[c] & (1 << int(f)); }
int has_open_file_to_left(Color c, File f) const { return halfOpenFiles[c] & ((1 << int(f)) - 1); } int has_open_file_to_left(Color c, File f) const { return halfOpenFiles[c] & ((1 << int(f)) - 1); }
int has_open_file_to_right(Color c, File f) const { return halfOpenFiles[c] & ~((1 << int(f+1)) - 1); } int has_open_file_to_right(Color c, File f) const { return halfOpenFiles[c] & ~((1 << int(f+1)) - 1); }
int same_colored_pawn_count(Square s, Color c) const { return (BlackSquares & s) ? pawnsOnBlackSquaresCount[c] : pawnsOnWhiteSquaresCount[c]; } int pawns_on_same_color_squares(Color c, Square s) const { return pawnsOnSquares[c][!!(BlackSquares & s)]; }
template<Color Us> template<Color Us>
Score king_safety(const Position& pos, Square ksq) { Score king_safety(const Position& pos, Square ksq) {
@ -64,8 +64,7 @@ struct Entry {
Score value; Score value;
int halfOpenFiles[COLOR_NB]; int halfOpenFiles[COLOR_NB];
Score kingSafety[COLOR_NB]; Score kingSafety[COLOR_NB];
int pawnsOnWhiteSquaresCount[COLOR_NB]; int pawnsOnSquares[COLOR_NB][COLOR_NB];
int pawnsOnBlackSquaresCount[COLOR_NB];
}; };
typedef HashTable<Entry, 16384> Table; typedef HashTable<Entry, 16384> Table;