]> git.sesse.net Git - stockfish/blobdiff - src/bitboard.cpp
Only on Windows do wait for input at the end of benchmark
[stockfish] / src / bitboard.cpp
index 3621d6b204ca38eb5d6f8b7021439bcbbe378ea5..a73c5a2dc7ad970d6c8f16275ead918d2af46ac1 100644 (file)
@@ -1,7 +1,7 @@
 /*
   Stockfish, a UCI chess playing engine derived from Glaurung 2.1
   Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
-  Copyright (C) 2008 Marco Costalba
+  Copyright (C) 2008-2009 Marco Costalba
 
   Stockfish is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -35,6 +35,7 @@
 #include <iostream>
 
 #include "bitboard.h"
+#include "bitcount.h"
 #include "direction.h"
 
 
@@ -302,7 +303,7 @@ union b_union {
     struct {
         uint32_t l;
         uint32_t h;
-    };
+    } dw;
 };
 
 // WARNING: Needs -fno-strict-aliasing compiler option
@@ -313,15 +314,15 @@ Square pop_1st_bit(Bitboard *bb) {
 
   u.b = *bb;
 
-  if (u.l)
+  if (u.dw.l)
   {
-      b = u.l;
+      b = u.dw.l;
       *((uint32_t*)bb) = b & (b - 1);
       b ^= (b - 1);
   }
   else
   {
-      b = u.h;
+      b = u.dw.h;
       *((uint32_t*)bb+1) = b & (b - 1); // Little endian only?
       b = ~(b ^ (b - 1));
   }
@@ -339,7 +340,7 @@ Square pop_1st_bit(Bitboard *b) {
 
 #endif
 
-#else
+#else // defined(USE_FOLDED_BITSCAN)
 
 static const int BitTable[64] = {
   0, 1, 2, 7, 3, 13, 8, 19, 4, 25, 14, 28, 9, 34, 20, 40, 5, 17, 26, 38, 15,
@@ -393,7 +394,7 @@ namespace {
 
   void init_ray_bitboards() {
     int d[8] = {1, -1, 16, -16, 17, -17, 15, -15};
-    for(int i = 0; i < 128; i = i + 9 & ~8) {
+    for(int i = 0; i < 128; i = (i + 9) & ~8) {
       for(int j = 0; j < 8; j++) {
         RayBB[(i&7)|((i>>4)<<3)][j] = EmptyBoardBB;
         for(int k = i + d[j]; (k & 0x88) == 0; k += d[j])
@@ -479,8 +480,15 @@ namespace {
     for(i = 0; i < 64; i++) {
       attackIndex[i] = index;
       mask[i] = sliding_attacks(i, 0ULL, 4, deltas, 1, 6, 1, 6);
+
+#if defined(USE_32BIT_ATTACKS)
+      j = (1 << (32 - shift[i]));
+#else
       j = (1 << (64 - shift[i]));
+#endif
+
       for(k = 0; k < j; k++) {
+
 #if defined(USE_32BIT_ATTACKS)
         b = index_to_bitboard(k, mask[i]);
         attacks[index +