summaryrefslogtreecommitdiff
path: root/src/backend/lib
diff options
context:
space:
mode:
authorAlvaro Herrera2019-02-15 19:32:30 +0000
committerAlvaro Herrera2019-02-15 19:32:30 +0000
commit457aef0f1fd365c68fab3fa2ca3ae48c5bd230c6 (patch)
tree9405a4a8b2406ab0d138a4ee7230891f7ffa3bfa /src/backend/lib
parente89f14e2bb9f7c392c4c85a53ab5a13ea2aed83d (diff)
Revert attempts to use POPCNT etc instructions
This reverts commits fc6c72747ae6, 109de05cbb03, d0b4663c23b7 and 711bab1e4d19. Somebody will have to try harder before submitting this patch again. I've spent entirely too much time on it already, and the #ifdef maze yet to be written in order for it to build at all got on my nerves. The amount of work needed to get a platform-specific performance improvement that's barely above the noise level is not worth it.
Diffstat (limited to 'src/backend/lib')
-rw-r--r--src/backend/lib/bloomfilter.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/backend/lib/bloomfilter.c b/src/backend/lib/bloomfilter.c
index e2c1276f219..1e907cabc6e 100644
--- a/src/backend/lib/bloomfilter.c
+++ b/src/backend/lib/bloomfilter.c
@@ -37,7 +37,6 @@
#include "access/hash.h"
#include "lib/bloomfilter.h"
-#include "port/pg_bitutils.h"
#define MAX_HASH_FUNCS 10
@@ -188,7 +187,19 @@ double
bloom_prop_bits_set(bloom_filter *filter)
{
int bitset_bytes = filter->m / BITS_PER_BYTE;
- uint64 bits_set = pg_popcount((char *) filter->bitset, bitset_bytes);
+ uint64 bits_set = 0;
+ int i;
+
+ for (i = 0; i < bitset_bytes; i++)
+ {
+ unsigned char byte = filter->bitset[i];
+
+ while (byte)
+ {
+ bits_set++;
+ byte &= (byte - 1);
+ }
+ }
return bits_set / (double) filter->m;
}