From 94ecdef8ac7855e7a44efd7890c7e8f8d5819397 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Thu, 1 Nov 2012 09:30:03 +0100 Subject: [PATCH] Micro-optimize pop_lsb() for 64bit case On Intel, perhaps due to 'lea' instruction this way of zeroing the lsb of *b seems faster than a shift+negate. On perft (where any speed difference is magnified) I got a 6% speed up on my Intel i5 64bit. Suggested by Hongzhi Cheng. No functional change. --- src/bitboard.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bitboard.h b/src/bitboard.h index b99cc259..35904377 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -280,7 +280,7 @@ FORCE_INLINE Square msb(Bitboard b) { FORCE_INLINE Square pop_lsb(Bitboard* b) { const Square s = lsb(*b); - *b &= ~(1ULL << s); + *b &= *b - 1; return s; } -- 2.39.2