From 69726f4df3b35b06deabc66d4b4ed5f695ea3fc2 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sat, 29 Jan 2011 13:59:23 +0100 Subject: [PATCH] Remove defined(IS_64BIT) in init_sliding_attacks() No functional change bith in 32 and 64 bits. Signed-off-by: Marco Costalba --- src/bitboard.cpp | 20 ++++++-------------- src/bitcount.h | 28 ---------------------------- src/types.h | 27 +++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 42 deletions(-) diff --git a/src/bitboard.cpp b/src/bitboard.cpp index dd12dd3a..bc8d5c3d 100644 --- a/src/bitboard.cpp +++ b/src/bitboard.cpp @@ -451,27 +451,19 @@ namespace { void init_sliding_attacks(Bitboard attacks[], int attackIndex[], Bitboard mask[], const int shift[], const Bitboard mult[], int deltas[][2]) { + Bitboard b, v; + int i, j, index; - for (int i = 0, index = 0; i < 64; i++) + for (i = index = 0; i < 64; i++) { attackIndex[i] = index; mask[i] = sliding_attacks(i, 0, deltas, 1, 6, 1, 6); - -#if defined(IS_64BIT) - int j = (1 << (64 - shift[i])); -#else - int j = (1 << (32 - shift[i])); -#endif + j = 1 << ((CpuIs64Bit ? 64 : 32) - shift[i]); for (int k = 0; k < j; k++) { - Bitboard b = index_to_bitboard(k, mask[i]); - -#if defined(IS_64BIT) - Bitboard v = b * mult[i]; -#else - unsigned v = int(b) * int(mult[i]) ^ int(b >> 32) * int(mult[i] >> 32); -#endif + b = index_to_bitboard(k, mask[i]); + v = CpuIs64Bit ? b * mult[i] : unsigned(b * mult[i] ^ (b >> 32) * (mult[i] >> 32)); attacks[index + (v >> shift[i])] = sliding_attacks(i, b, deltas, 0, 7, 0, 7); } index += j; diff --git a/src/bitcount.h b/src/bitcount.h index 940dbaf5..2e417e04 100644 --- a/src/bitcount.h +++ b/src/bitcount.h @@ -96,32 +96,4 @@ inline int count_1s(Bitboard b) { #endif } - -/// cpu_has_popcnt() detects support for popcnt instruction at runtime -inline bool cpu_has_popcnt() { - - int CPUInfo[4] = {-1}; - __cpuid(CPUInfo, 0x00000001); - return (CPUInfo[2] >> 23) & 1; -} - - -/// CpuHasPOPCNT is a global constant initialized at startup that -/// is set to true if CPU on which application runs supports popcnt -/// hardware instruction. Unless USE_POPCNT is not defined. -#if defined(USE_POPCNT) -const bool CpuHasPOPCNT = cpu_has_popcnt(); -#else -const bool CpuHasPOPCNT = false; -#endif - - -/// CpuIs64Bit is a global constant initialized at compile time that -/// is set to true if CPU on which application runs is a 64 bits. -#if defined(IS_64BIT) -const bool CpuIs64Bit = true; -#else -const bool CpuIs64Bit = false; -#endif - #endif // !defined(BITCOUNT_H_INCLUDED) diff --git a/src/types.h b/src/types.h index 67e40fff..70b1b813 100644 --- a/src/types.h +++ b/src/types.h @@ -146,4 +146,31 @@ inline void operator-= (T& d1, const T d2) { d1 = d1 - d2; } \ inline void operator*= (T& d, int i) { d = T(int(d) * i); } \ inline void operator/= (T& d, int i) { d = T(int(d) / i); } + +/// cpu_has_popcnt() detects support for popcnt instruction at runtime +inline bool cpu_has_popcnt() { + + int CPUInfo[4] = {-1}; + __cpuid(CPUInfo, 0x00000001); + return (CPUInfo[2] >> 23) & 1; +} + +/// CpuHasPOPCNT is a global constant initialized at startup that +/// is set to true if CPU on which application runs supports popcnt +/// hardware instruction. Unless USE_POPCNT is not defined. +#if defined(USE_POPCNT) +const bool CpuHasPOPCNT = cpu_has_popcnt(); +#else +const bool CpuHasPOPCNT = false; +#endif + + +/// CpuIs64Bit is a global constant initialized at compile time that +/// is set to true if CPU on which application runs is a 64 bits. +#if defined(IS_64BIT) +const bool CpuIs64Bit = true; +#else +const bool CpuIs64Bit = false; +#endif + #endif // !defined(TYPES_H_INCLUDED) -- 2.39.2