diff options
Diffstat (limited to 'src/bitboard.c')
-rw-r--r-- | src/bitboard.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/bitboard.c b/src/bitboard.c index e9a7d53..cffe40f 100644 --- a/src/bitboard.c +++ b/src/bitboard.c @@ -25,6 +25,13 @@ inline Bitboard ls1b(Bitboard bb) { /* Log base 2 (aka Trailing Zero Count) * Only works for SINGLE Bitboards * Useful for calculating bit-index of LS1B */ -inline Bitboard bitscan(Bitboard bb) { +inline int bitscan(Bitboard bb) { return pop_count(ls1b(bb) - 1); } + +/* Bitscan forward with LS1B reset */ +inline int bitscanAndReset(Bitboard* bb) { + int idx = bitscan(*bb); + *bb &= *bb - 1; + return idx; +} |