CREATE EXTENSION popcount; ERROR: extension "popcount" already exists SELECT popcountAsm(15::bit(4)); popcountasm ------------- 4 (1 row) SELECT popcountAsm(7::bit(4)); popcountasm ------------- 3 (1 row) SELECT popcountAsm(15::bit(8)); popcountasm ------------- 4 (1 row) SELECT popcountAsm(7::bit(8)); popcountasm ------------- 3 (1 row) SELECT popcountAsm(15::bit(12)); popcountasm ------------- 4 (1 row) SELECT popcountAsm(7::bit(12)); popcountasm ------------- 3 (1 row) SELECT popcountAsm(15::bit(32)); popcountasm ------------- 4 (1 row) SELECT popcountAsm(7::bit(32)); popcountasm ------------- 3 (1 row) SELECT popcountAsm(30::bit(32)); popcountasm ------------- 4 (1 row) SELECT popcountAsm(127::bit(32)); popcountasm ------------- 7 (1 row) SELECT popcountAsm(b'10101010101010101010101010101010101101010101010101010101010101010101011010101010101010101010101010101010110101010101010101010101010101010101101010101010101010101010101010101011010101010101010101010101010101010110101010101010101010101010101010101101010101010101010101010101010101011010101010101010101010101010101010110101010101010101010101010101010101101010101010101010101010101010101011010101010101010101010101010101010110101010101010101010101010101010101101010101010101010101010101010101011010101010101010101010'); popcountasm ------------- 263 (1 row) SELECT sum(popcountAsm(x::bit(512))) from generate_series(1,1000000) x; sum --------- 9884999 (1 row) SELECT sum(popcountAsm(x::bit(500))) from generate_series(1,1000000) x; sum --------- 9884999 (1 row) SELECT popcountAsm64(15::bit(4)); popcountasm64 --------------- 4 (1 row) SELECT popcountAsm64(7::bit(4)); popcountasm64 --------------- 3 (1 row) SELECT popcountAsm64(15::bit(8)); popcountasm64 --------------- 4 (1 row) SELECT popcountAsm64(7::bit(8)); popcountasm64 --------------- 3 (1 row) SELECT popcountAsm64(15::bit(12)); popcountasm64 --------------- 4 (1 row) SELECT popcountAsm64(7::bit(12)); popcountasm64 --------------- 3 (1 row) SELECT popcountAsm64(15::bit(32)); popcountasm64 --------------- 4 (1 row) SELECT popcountAsm64(7::bit(32)); popcountasm64 --------------- 3 (1 row) SELECT popcountAsm64(30::bit(32)); popcountasm64 --------------- 4 (1 row) SELECT popcountAsm64(127::bit(32)); popcountasm64 --------------- 7 (1 row) SELECT popcountAsm64(b'10101010101010101010101010101010101101010101010101010101010101010101011010101010101010101010101010101010110101010101010101010101010101010101101010101010101010101010101010101011010101010101010101010101010101010110101010101010101010101010101010101101010101010101010101010101010101011010101010101010101010101010101010110101010101010101010101010101010101101010101010101010101010101010101011010101010101010101010101010101010110101010101010101010101010101010101101010101010101010101010101010101011010101010101010101010'); popcountasm64 --------------- 263 (1 row) SELECT sum(popcountAsm64(x::bit(512))) from generate_series(1,1000000) x; sum --------- 9884999 (1 row) SELECT sum(popcountAsm64(x::bit(500))) from generate_series(1,1000000) x; sum --------- 9884999 (1 row)