[gray-matter] r1615 committed - precompute single bit masks is FASTER.

2 views
Skip to first unread message

codesite...@google.com

unread,
Aug 2, 2010, 5:42:58 PM8/2/10
to gray-matter-...@googlegroups.com
Revision: 1615
Author: protonspring
Date: Mon Aug 2 14:39:20 2010
Log: precompute single bit masks is FASTER.


http://code.google.com/p/gray-matter/source/detail?r=1615

Modified:
/trunk/inc/bitboard.h
/trunk/inc/board_base.h
/trunk/src/board_base.cpp

=======================================
--- /trunk/inc/bitboard.h Fri Jul 30 11:17:03 2010
+++ /trunk/inc/bitboard.h Mon Aug 2 14:39:20 2010
@@ -72,7 +72,7 @@
inline void output()
{
std::cout << "outputting hashes:" << std::endl;
- for (int i=0;i<mNumElements;++i)
+ for (unsigned i=0;i<mNumElements;++i)
{
std::cout << std::hex << hashes[i] << std::endl;
}
=======================================
--- /trunk/inc/board_base.h Wed Jul 28 22:54:14 2010
+++ /trunk/inc/board_base.h Mon Aug 2 14:39:20 2010
@@ -38,9 +38,12 @@
/// This class represents the board and generates moves.
class board_base
{
+ //precomputed single bit masks
+ static bitboard_t singleBitMasks[8][8];
+
public:
inline static int BIT_IDX(int x, int y) {return ((y) << 3 |
(x));}
- inline static bitboard_t BIT_MSK(int x, int y) {return (1ULL <<
BIT_IDX(x, y));}
+ inline static bitboard_t BIT_MSK(int x, int y) {return
singleBitMasks[x][y];}
inline static bool BIT_GET(bitboard_t b, int x, int y) {return
((b) >> BIT_IDX(x, y) & 1);}
inline static void BIT_CLR(bitboard_t& b, unsigned x, unsigned y)
{(b) &= ~BIT_MSK(x, y);}
inline static void BIT_SET(bitboard_t& b, int x, int y) {(b) |=
BIT_MSK(x, y);}
=======================================
--- /trunk/src/board_base.cpp Fri Jul 30 11:52:14 2010
+++ /trunk/src/board_base.cpp Mon Aug 2 14:39:20 2010
@@ -160,6 +160,8 @@
bitboard_t board_base::key_en_passant[8];
bitboard_t board_base::key_on_move;

+uint64_t board_base::singleBitMasks[8][8];
+

/*----------------------------------------------------------------------------*\
|
board_base() |

\*----------------------------------------------------------------------------*/
@@ -169,6 +171,11 @@
/// Constructor. Important! Seed the random number generator, issue
/// <code>srand(time(NULL));</code> before instantiating this class!

+ //compute single bit masks
+ for (int i=0;i<8;++i)
+ for (int j=0;j<8;++j)
+ singleBitMasks[j][i] = 1ULL << (i*8+j);
+
if (!precomputed_board_base)
{
precomp_king();

Reply all
Reply to author
Forward
0 new messages