X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbitcount.h;h=199fcf192bd980b0b4b0eed327dfb843566c2011;hp=0992c00625e084ecc1fa78110ccef0c04a500166;hb=83d8fe2d59bad718de70b00ac2c8fddfadda76b5;hpb=d4876dc96395f5592bfbc25b2eca2360db0655e6 diff --git a/src/bitcount.h b/src/bitcount.h index 0992c006..199fcf19 100644 --- a/src/bitcount.h +++ b/src/bitcount.h @@ -18,7 +18,6 @@ along with this program. If not, see . */ - #if !defined(BITCOUNT_H_INCLUDED) #define BITCOUNT_H_INCLUDED @@ -85,8 +84,10 @@ template<> inline int count_1s(Bitboard b) { #if !defined(USE_POPCNT) return int(b != 0); // Avoid 'b not used' warning +#elif defined(_MSC_VER) && defined(__INTEL_COMPILER) + return _mm_popcnt_u64(b); #elif defined(_MSC_VER) - return __popcnt64(b); + return (int)__popcnt64(b); #elif defined(__GNUC__) unsigned long ret; __asm__("popcnt %1, %0" : "=r" (ret) : "r" (b)); @@ -94,32 +95,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)