/*
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
struct {
uint32_t l;
uint32_t h;
- };
+ } dw;
};
// WARNING: Needs -fno-strict-aliasing compiler option
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));
}
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])
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 +