]> git.sesse.net Git - stockfish/blobdiff - src/bitboard.cpp
Introduce bitcount.h
[stockfish] / src / bitboard.cpp
index 5c5211e565756d9572efc156991da9fc0ced76ab..f7a6ba27626e114b065aa23d7efdd6895dda7d5e 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));
   }
@@ -460,7 +461,7 @@ namespace {
 
 
   Bitboard index_to_bitboard(int index, Bitboard mask) {
-    int i, j, bits = count_1s(mask);
+    int i, j, bits = count_1s<false>(mask);
     Bitboard result = 0ULL;
     for(i = 0; i < bits; i++) {
       j = pop_1st_bit(&mask);