1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-07-11 19:49:14 +00:00

Micro-optimize last_1() for 32bits

Verified assembly it is a bit simpler.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2012-04-04 06:52:07 +01:00
parent 2f99de0c6c
commit 37fa8adc2b

View file

@ -123,6 +123,7 @@ Square pop_1st_bit(Bitboard* b) {
Square last_1(Bitboard b) { Square last_1(Bitboard b) {
unsigned b32;
int result = 0; int result = 0;
if (b > 0xFFFFFFFF) if (b > 0xFFFFFFFF)
@ -131,19 +132,21 @@ Square last_1(Bitboard b) {
result = 32; result = 32;
} }
if (b > 0xFFFF) b32 = unsigned(b);
if (b32 > 0xFFFF)
{ {
b >>= 16; b32 >>= 16;
result += 16; result += 16;
} }
if (b > 0xFF) if (b32 > 0xFF)
{ {
b >>= 8; b32 >>= 8;
result += 8; result += 8;
} }
return Square(result + MS1BTable[b]); return Square(result + MS1BTable[b32]);
} }
#endif // !defined(USE_BSFQ) #endif // !defined(USE_BSFQ)