X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbitcount.h;h=2e417e04fbf06474f43c8037b42d8cf9da0ba901;hb=5815718177817de90f98513b776bc04376440f0a;hp=0992c00625e084ecc1fa78110ccef0c04a500166;hpb=d4876dc96395f5592bfbc25b2eca2360db0655e6;p=stockfish diff --git a/src/bitcount.h b/src/bitcount.h index 0992c006..2e417e04 100644 --- a/src/bitcount.h +++ b/src/bitcount.h @@ -85,8 +85,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 +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)