# HG changeset patch # User Praveen Tiwari <prav...@multicorewareinc.com> # Date 1525328839 -19800 # Thu May 03 11:57:19 2018 +0530 # Branch stable # Node ID 9cbb2aadcca3a2f7a308ea1dc792fb817bcc5b51 # Parent 69aafa6d70ad4e151f4590766c6b125621c5d007 threadpool.cpp: use WIN system call for popcount
diff -r 69aafa6d70ad -r 9cbb2aadcca3 source/common/threadpool.cpp --- a/source/common/threadpool.cpp Wed May 02 15:15:05 2018 +0530 +++ b/source/common/threadpool.cpp Thu May 03 11:57:19 2018 +0530 @@ -71,21 +71,6 @@ # define strcasecmp _stricmp #endif -#if defined(_WIN32_WINNT) && _WIN32_WINNT >= _WIN32_WINNT_WIN7 -const uint64_t m1 = 0x5555555555555555; //binary: 0101... -const uint64_t m2 = 0x3333333333333333; //binary: 00110011.. -const uint64_t m3 = 0x0f0f0f0f0f0f0f0f; //binary: 4 zeros, 4 ones ... -const uint64_t h01 = 0x0101010101010101; //the sum of 256 to the power of 0,1,2,3... - -static int popCount(uint64_t x) -{ - x -= (x >> 1) & m1; - x = (x & m2) + ((x >> 2) & m2); - x = (x + (x >> 4)) & m3; - return (x * h01) >> 56; -} -#endif - namespace X265_NS { // x265 private namespace @@ -274,7 +259,7 @@ for (int i = 0; i < numNumaNodes; i++) { GetNumaNodeProcessorMaskEx((UCHAR)i, groupAffinityPointer); - cpusPerNode[i] = popCount(groupAffinityPointer->Mask); + cpusPerNode[i] = __popcnt(static_cast<unsigned int>(groupAffinityPointer->Mask)); } delete groupAffinityPointer; #elif HAVE_LIBNUMA @@ -623,7 +608,7 @@ for (int i = 0; i < numNumaNodes; i++) { GetNumaNodeProcessorMaskEx((UCHAR)i, &groupAffinity); - cpus += popCount(groupAffinity.Mask); + cpus += __popcnt(static_cast<unsigned int>(groupAffinity.Mask)); } return cpus; #elif _WIN32 _______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel