From: Fabian Fichter Date: Wed, 9 Dec 2020 19:06:55 +0000 (+0100) Subject: Speed up attack generation for leapers X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=1445d7c4c5229dd7ab697ba4fe35153ea359b484;p=fairystockfish.git Speed up attack generation for leapers chess STC LLR: 2.98 (-2.94,2.94) [-10.00,5.00] Total: 2299 W: 535 L: 502 D: 1262 http://www.variantfishtest.org:6543/tests/view/5fd0060c6e23db221d9e94b4 seirawan STC LLR: 2.95 (-2.94,2.94) [-10.00,5.00] Total: 896 W: 342 L: 295 D: 259 http://www.variantfishtest.org:6543/tests/view/5fd0ab0f6e23db221d9e94c4 minishogi STC LLR: 2.96 (-2.94,2.94) [0.00,10.00] Total: 3418 W: 1785 L: 1633 D: 0 http://www.variantfishtest.org:6543/tests/view/5fd006326e23db221d9e94b7 asean STC LLR: 2.96 (-2.94,2.94) [0.00,10.00] Total: 1211 W: 246 L: 174 D: 791 http://www.variantfishtest.org:6543/tests/view/5fd006816e23db221d9e94b9 No functional change. --- diff --git a/src/bitboard.h b/src/bitboard.h index 21a77e6..5df1047 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -425,44 +425,50 @@ inline Bitboard attacks_bb(Square s, Bitboard occupied) { inline Bitboard attacks_bb(Color c, PieceType pt, Square s, Bitboard occupied) { Bitboard b = LeaperAttacks[c][pt][s]; - if (AttackRiderTypes[pt] & RIDER_BISHOP) - b |= rider_attacks_bb(s, occupied); - if (AttackRiderTypes[pt] & RIDER_ROOK_H) - b |= rider_attacks_bb(s, occupied); - if (AttackRiderTypes[pt] & RIDER_ROOK_V) - b |= rider_attacks_bb(s, occupied); - if (AttackRiderTypes[pt] & RIDER_CANNON_H) - b |= rider_attacks_bb(s, occupied); - if (AttackRiderTypes[pt] & RIDER_CANNON_V) - b |= rider_attacks_bb(s, occupied); - if (AttackRiderTypes[pt] & RIDER_HORSE) - b |= rider_attacks_bb(s, occupied); - if (AttackRiderTypes[pt] & RIDER_ELEPHANT) - b |= rider_attacks_bb(s, occupied); - if (AttackRiderTypes[pt] & RIDER_JANGGI_ELEPHANT) - b |= rider_attacks_bb(s, occupied); + if (AttackRiderTypes[pt]) + { + if (AttackRiderTypes[pt] & RIDER_BISHOP) + b |= rider_attacks_bb(s, occupied); + if (AttackRiderTypes[pt] & RIDER_ROOK_H) + b |= rider_attacks_bb(s, occupied); + if (AttackRiderTypes[pt] & RIDER_ROOK_V) + b |= rider_attacks_bb(s, occupied); + if (AttackRiderTypes[pt] & RIDER_CANNON_H) + b |= rider_attacks_bb(s, occupied); + if (AttackRiderTypes[pt] & RIDER_CANNON_V) + b |= rider_attacks_bb(s, occupied); + if (AttackRiderTypes[pt] & RIDER_HORSE) + b |= rider_attacks_bb(s, occupied); + if (AttackRiderTypes[pt] & RIDER_ELEPHANT) + b |= rider_attacks_bb(s, occupied); + if (AttackRiderTypes[pt] & RIDER_JANGGI_ELEPHANT) + b |= rider_attacks_bb(s, occupied); + } return b & PseudoAttacks[c][pt][s]; } inline Bitboard moves_bb(Color c, PieceType pt, Square s, Bitboard occupied) { Bitboard b = LeaperMoves[c][pt][s]; - if (MoveRiderTypes[pt] & RIDER_BISHOP) - b |= rider_attacks_bb(s, occupied); - if (MoveRiderTypes[pt] & RIDER_ROOK_H) - b |= rider_attacks_bb(s, occupied); - if (MoveRiderTypes[pt] & RIDER_ROOK_V) - b |= rider_attacks_bb(s, occupied); - if (MoveRiderTypes[pt] & RIDER_CANNON_H) - b |= rider_attacks_bb(s, occupied); - if (MoveRiderTypes[pt] & RIDER_CANNON_V) - b |= rider_attacks_bb(s, occupied); - if (MoveRiderTypes[pt] & RIDER_HORSE) - b |= rider_attacks_bb(s, occupied); - if (MoveRiderTypes[pt] & RIDER_ELEPHANT) - b |= rider_attacks_bb(s, occupied); - if (MoveRiderTypes[pt] & RIDER_JANGGI_ELEPHANT) - b |= rider_attacks_bb(s, occupied); + if (MoveRiderTypes[pt]) + { + if (MoveRiderTypes[pt] & RIDER_BISHOP) + b |= rider_attacks_bb(s, occupied); + if (MoveRiderTypes[pt] & RIDER_ROOK_H) + b |= rider_attacks_bb(s, occupied); + if (MoveRiderTypes[pt] & RIDER_ROOK_V) + b |= rider_attacks_bb(s, occupied); + if (MoveRiderTypes[pt] & RIDER_CANNON_H) + b |= rider_attacks_bb(s, occupied); + if (MoveRiderTypes[pt] & RIDER_CANNON_V) + b |= rider_attacks_bb(s, occupied); + if (MoveRiderTypes[pt] & RIDER_HORSE) + b |= rider_attacks_bb(s, occupied); + if (MoveRiderTypes[pt] & RIDER_ELEPHANT) + b |= rider_attacks_bb(s, occupied); + if (MoveRiderTypes[pt] & RIDER_JANGGI_ELEPHANT) + b |= rider_attacks_bb(s, occupied); + } return b & PseudoMoves[c][pt][s]; }