X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fbitboard.cpp;h=01c9954add14ac064a7955bf074ec86906e6d7f1;hb=cb7f20913e04b051fea6ac9a4055a4e86be452d1;hp=00854bb9a84a429d0856a5f4b5439bec308b56a2;hpb=6080fecf9cba9ac063f8f07bd25004c14016bd33;p=stockfish diff --git a/src/bitboard.cpp b/src/bitboard.cpp index 00854bb9..01c9954a 100644 --- a/src/bitboard.cpp +++ b/src/bitboard.cpp @@ -225,7 +225,6 @@ Bitboard SetMaskBB[65]; Bitboard ClearMaskBB[65]; Bitboard StepAttackBB[16][64]; -Bitboard RayBB[64][8]; Bitboard BetweenBB[64][64]; Bitboard SquaresInFrontMask[2][64]; @@ -246,7 +245,6 @@ uint8_t BitCount8Bit[256]; namespace { void init_masks(); - void init_ray_bitboards(); void init_attacks(); void init_between_bitboards(); void init_pseudo_attacks(); @@ -288,7 +286,6 @@ void init_bitboards() { int bishopDeltas[4][2] = {{1,1},{-1,1},{1,-1},{-1,-1}}; init_masks(); - init_ray_bitboards(); init_attacks(); init_between_bitboards(); init_sliding_attacks(RAttacks, RAttackIndex, RMask, RShift, RMult, rookDeltas); @@ -406,21 +403,6 @@ namespace { BitCount8Bit[b] = (uint8_t)count_1s(b); } - int remove_bit_8(int i) { return ((i & ~15) >> 1) | (i & 7); } - - 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 j = 0; j < 8; j++) - { - RayBB[remove_bit_8(i)][j] = EmptyBoardBB; - for (int k = i + d[j]; (k & 0x88) == 0; k += d[j]) - set_bit(&(RayBB[remove_bit_8(i)][j]), Square(remove_bit_8(k))); - } - } - void init_attacks() { const int step[16][8] = { @@ -473,20 +455,20 @@ namespace { void init_between_bitboards() { - const SquareDelta step[8] = { DELTA_E, DELTA_W, DELTA_N, DELTA_S, - DELTA_NE, DELTA_SW, DELTA_NW, DELTA_SE }; + Square s1, s2, s3; + SquareDelta d; - for (Square s1 = SQ_A1; s1 <= SQ_H8; s1++) - for (Square s2 = SQ_A1; s2 <= SQ_H8; s2++) + for (s1 = SQ_A1; s1 <= SQ_H8; s1++) + for (s2 = SQ_A1; s2 <= SQ_H8; s2++) { BetweenBB[s1][s2] = EmptyBoardBB; - SignedDirection d = SignedDirection(SignedDirectionTable[s1][s2]); + d = SquareDelta(DirectionTable[s1][s2]); - if (d != SIGNED_DIR_NONE) - { - for (Square s3 = s1 + step[d]; s3 != s2; s3 += step[d]) - set_bit(&(BetweenBB[s1][s2]), s3); - } + if (d == DELTA_NONE) + continue; + + for (s3 = s1 + d; s3 != s2; s3 += d) + set_bit(&(BetweenBB[s1][s2]), s3); } }