+ 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);
+ }