aboutsummaryrefslogtreecommitdiff
path: root/src/bitboard.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bitboard.c')
-rw-r--r--src/bitboard.c9
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;
+}