From: Victor Stinner Date: Fri, 21 Jan 2022 23:54:42 +0000 (+0100) Subject: bpo-29882: _Py_popcount32() doesn't need 64x64 multiply (GH-30774) X-Git-Tag: v3.11.0a5~167 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cd8de40b3b10311de2db7b90abdf80af9e35535f;p=thirdparty%2FPython%2Fcpython.git bpo-29882: _Py_popcount32() doesn't need 64x64 multiply (GH-30774) 32x32 bits multiply is enough for _Py_popcount32(). --- diff --git a/Include/internal/pycore_bitutils.h b/Include/internal/pycore_bitutils.h index e4aa7a3d0d05..3fd70b0e417c 100644 --- a/Include/internal/pycore_bitutils.h +++ b/Include/internal/pycore_bitutils.h @@ -125,7 +125,7 @@ _Py_popcount32(uint32_t x) // Put count of each 8 bits into those 8 bits x = (x + (x >> 4)) & M4; // Sum of the 4 byte counts - return (uint32_t)((uint64_t)x * (uint64_t)SUM) >> 24; + return (x * SUM) >> 24; #endif }