mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 00:33:09 +00:00
Speedup sliders attacks for 32bit CPU
Replace a 64 bit 'and' by two 32 bits ones and use unsigned instead of int. This simple patch increases perft speed of 6% on my Intel Core 2 Duo ! No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
b1768c115c
commit
099b5e45e6
2 changed files with 12 additions and 10 deletions
|
@ -30,12 +30,12 @@ CACHE_LINE_ALIGNMENT
|
|||
Bitboard RMasks[64];
|
||||
Bitboard RMagics[64];
|
||||
Bitboard* RAttacks[64];
|
||||
int RShifts[64];
|
||||
unsigned RShifts[64];
|
||||
|
||||
Bitboard BMasks[64];
|
||||
Bitboard BMagics[64];
|
||||
Bitboard* BAttacks[64];
|
||||
int BShifts[64];
|
||||
unsigned BShifts[64];
|
||||
|
||||
Bitboard SquareBB[64];
|
||||
Bitboard FileBB[8];
|
||||
|
@ -64,7 +64,7 @@ namespace {
|
|||
typedef unsigned (Fn)(Square, Bitboard);
|
||||
|
||||
void init_magics(Bitboard table[], Bitboard* attacks[], Bitboard magics[],
|
||||
Bitboard masks[], int shifts[], Square deltas[], Fn get_index);
|
||||
Bitboard masks[], unsigned shifts[], Square deltas[], Fn get_index);
|
||||
}
|
||||
|
||||
|
||||
|
@ -290,7 +290,7 @@ namespace {
|
|||
// use the so called "fancy" approach.
|
||||
|
||||
void init_magics(Bitboard table[], Bitboard* attacks[], Bitboard magics[],
|
||||
Bitboard masks[], int shifts[], Square deltas[], Fn get_index) {
|
||||
Bitboard masks[], unsigned shifts[], Square deltas[], Fn get_index) {
|
||||
|
||||
int MagicBoosters[][8] = { { 3191, 2184, 1310, 3618, 2091, 1308, 2452, 3996 },
|
||||
{ 1059, 3608, 605, 3234, 3326, 38, 2029, 3043 } };
|
||||
|
|
|
@ -28,12 +28,12 @@ CACHE_LINE_ALIGNMENT
|
|||
extern Bitboard RMasks[64];
|
||||
extern Bitboard RMagics[64];
|
||||
extern Bitboard* RAttacks[64];
|
||||
extern int RShifts[64];
|
||||
extern unsigned RShifts[64];
|
||||
|
||||
extern Bitboard BMasks[64];
|
||||
extern Bitboard BMagics[64];
|
||||
extern Bitboard* BAttacks[64];
|
||||
extern int BShifts[64];
|
||||
extern unsigned BShifts[64];
|
||||
|
||||
extern Bitboard SquareBB[64];
|
||||
extern Bitboard FileBB[8];
|
||||
|
@ -134,13 +134,15 @@ FORCE_INLINE unsigned b_index(Square s, Bitboard occ) {
|
|||
#else // if !defined(IS_64BIT)
|
||||
|
||||
FORCE_INLINE unsigned r_index(Square s, Bitboard occ) {
|
||||
Bitboard b = occ & RMasks[s];
|
||||
return unsigned(int(b) * int(RMagics[s]) ^ int(b >> 32) * int(RMagics[s] >> 32)) >> RShifts[s];
|
||||
unsigned lo = unsigned(occ) & unsigned(RMasks[s]);
|
||||
unsigned hi = unsigned(occ >> 32) & unsigned(RMasks[s] >> 32);
|
||||
return (lo * unsigned(RMagics[s]) ^ hi * unsigned(RMagics[s] >> 32)) >> RShifts[s];
|
||||
}
|
||||
|
||||
FORCE_INLINE unsigned b_index(Square s, Bitboard occ) {
|
||||
Bitboard b = occ & BMasks[s];
|
||||
return unsigned(int(b) * int(BMagics[s]) ^ int(b >> 32) * int(BMagics[s] >> 32)) >> BShifts[s];
|
||||
unsigned lo = unsigned(occ) & unsigned(BMasks[s]);
|
||||
unsigned hi = unsigned(occ >> 32) & unsigned(BMasks[s] >> 32);
|
||||
return (lo * unsigned(BMagics[s]) ^ hi * unsigned(BMagics[s] >> 32)) >> BShifts[s];
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue