Changes

Jump to: navigation, search

BMI2

20 bytes added, 11:25, 23 June 2021
no edit summary
U64 rocc = pieceBB[nWhite] | pieceBB[nBlack];
stream.write_n_bit(rocc, 64);
stream.write_n_bit(pext_pext_u64(rocc, pieceBB[nWhite]), popCount(rocc));
for (pt = nPawn; pt <= nQueen; ++pt) {
stream.write_n_bit(pext_pext_u64(rocc, pieceBB[pt]), popCount(rocc));
rocc ^= pieceBB[pt];
}
void decompress (const BitStream &stream, U64 * pieceBB, ...) {
U64 rocc = stream.read_n_bit(64);
pieceBB[nWhite] = pdep_pdep_u64(rocc, stream.read_n_bit(popCount(rocc)));
pieceBB[nBlack] = rocc ^ pieceBB[nWhite];
for (pt = nPawn; pt <= nKing; ++pt) {
pieceBB[pt] = pdep_pdep_u64(rocc, stream.read_n_bit(popCount(rocc)));
rocc ^= pieceBB[pt];
}

Navigation menu