Replace MS1BTable[] with BitCount8Bit[]
authorMarco Costalba <mcostalba@gmail.com>
Wed, 28 Mar 2012 09:03:06 +0000 (11:03 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Wed, 28 Mar 2012 13:08:19 +0000 (14:08 +0100)
We already have the necessary infrastructure
in place.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/bitboard.cpp
src/bitboard.h

index ebd048be8474800eb6507a5dfb64bfacc18061eb..64cba6b5fc301322299a0eb3cf0d8c5102b07867 100644 (file)
@@ -58,7 +58,6 @@ namespace {
   CACHE_LINE_ALIGNMENT
 
   int BSFTable[64];
-  int MS1BTable[256];
   Bitboard RTable[0x19000]; // Storage space for rook attacks
   Bitboard BTable[0x1480];  // Storage space for bishop attacks
 
@@ -139,25 +138,29 @@ Square pop_1st_bit(Bitboard* b) {
    return Square(BSFTable[((~(u.b.h ^ (u.b.h - 1))) * 0x783A9B23) >> 26]);
 }
 
-#endif // !defined(USE_BSFQ)
-
-#if !defined(USE_BSFQ)
-
 Square last_1(Bitboard b) {
+
   int result = 0;
-  if (b > 0xFFFFFFFF) {
-    b >>= 32;
-    result = 32;
+
+  if (b > 0xFFFFFFFF)
+  {
+      b >>= 32;
+      result = 32;
   }
-  if (b > 0xFFFF) {
-    b >>= 16;
-    result += 16;
+
+  if (b > 0xFFFF)
+  {
+      b >>= 16;
+      result += 16;
   }
-  if (b > 0xFF) {
-    b >>= 8;
-    result += 8;
+
+  if (b > 0xFF)
+  {
+      b >>= 8;
+      result += 8;
   }
-  return Square(result + MS1BTable[b]);
+
+  return Square(result + BitCount8Bit[b]);
 }
 
 #endif // !defined(USE_BSFQ)
@@ -217,11 +220,6 @@ void bitboards_init() {
       else
           BSFTable[((1ULL << i) * 0x218A392CD3D5DBFULL) >> 58] = i;
 
-  MS1BTable[0] = 0;
-  for (int i = 0, k = 1; i < 8; i++)
-    for (int j = 0; j < (1 << i); j++)
-      MS1BTable[k++] = i;
-
   int steps[][9] = { {}, { 7, 9 }, { 17, 15, 10, 6, -6, -10, -15, -17 },
                      {}, {}, {}, { 9, 7, -7, -9, 8, 1, -1, -8 } };
 
index 2b9161250f5fb8277ba4f2deac1e012646cec331..85852e5e5b8567557a75ac289025073a2df61ef3 100644 (file)
@@ -214,6 +214,7 @@ inline bool single_bit(Bitboard b) {
   return !(b & (b - 1));
 }
 
+
 /// first_1() finds the least significant nonzero bit in a nonzero bitboard.
 /// pop_1st_bit() finds and clears the least significant nonzero bit in a
 /// nonzero bitboard.