Changes

Jump to: navigation, search

BMI2

No change in size, 11:28, 23 June 2021
no edit summary
U64 rocc = pieceBB[nWhite] | pieceBB[nBlack];
stream.write_n_bit(rocc, 64);
stream.write_n_bit(_pext_u64(rocc, pieceBB[nWhite], rocc), popCount(rocc));
for (pt = nPawn; pt <= nQueen; ++pt) {
stream.write_n_bit(_pext_u64(rocc, pieceBB[pt], rocc), popCount(rocc));
rocc ^= pieceBB[pt];
}
void decompress (const BitStream &stream, U64 * pieceBB, ...) {
U64 rocc = stream.read_n_bit(64);
pieceBB[nWhite] = _pdep_u64(rocc, stream.read_n_bit(popCount(rocc)), rocc);
pieceBB[nBlack] = rocc ^ pieceBB[nWhite];
for (pt = nPawn; pt <= nKing; ++pt) {
pieceBB[pt] = _pdep_u64(rocc, stream.read_n_bit(popCount(rocc)), rocc);
rocc ^= pieceBB[pt];
}

Navigation menu