whatever i implemented it anyway

pull/51/head
cathugger 2 years ago
parent f43c3b021e
commit c9d018a253
No known key found for this signature in database
GPG Key ID: 9BADDA2DAF6F01A8

@ -399,7 +399,7 @@ ioutil.c.o: types.h ioutil.h
keccak.c.o: types.h keccak.h
main.c.o: types.h vec.h base32.h cpucount.h keccak.h ioutil.h common.h yaml.h
main.c.o: filters.h worker.h filters_inc.inc.h filters_main.inc.h
main.c.o: filters_common.inc.h
main.c.o: filters_common.inc.h ifilter_bitsum.h
test_base16.c.o: types.h base16.h
test_base32.c.o: types.h base32.h
test_base64.c.o: types.h base64.h

@ -1,5 +1,6 @@
#include "filters_common.inc.h"
#include "ifilter_bitsum.h"
#ifdef INTFILTER
@ -80,18 +81,6 @@ static void ifilter_expand(
}
}
static IFT ifilter_bitsum(IFT x)
{
if (sizeof(IFT) == 16)
return (((IFT) 1) <<
(__builtin_popcountll((unsigned long long) (x >> (sizeof(IFT) * 8 / 2))) +
__builtin_popcountll((unsigned long long) x))) - 1;
if (sizeof(IFT) == 8)
return (((IFT) 1) << __builtin_popcountll((unsigned long long) x)) - 1;
return (((IFT) 1) << __builtin_popcount((unsigned int) x)) - 1;
}
static inline void ifilter_addflatten(struct intfilter *ifltr,IFT mask)
{
if (VEC_LENGTH(filters) == 0) {

@ -0,0 +1,27 @@
#ifdef __GNUC__
static IFT ifilter_bitsum(IFT x)
{
if (sizeof(IFT) == 16)
return (((IFT) 1) <<
(__builtin_popcountll((unsigned long long) (x >> (sizeof(IFT) * 8 / 2))) +
__builtin_popcountll((unsigned long long) x))) - 1;
if (sizeof(IFT) == 8)
return (((IFT) 1) << __builtin_popcountll((unsigned long long) x)) - 1;
return (((IFT) 1) << __builtin_popcount((unsigned int) x)) - 1;
}
#else
static IFT ifilter_bitsum(IFT x)
{
int v = 0;
while (x != 0) {
x &= x - 1;
v++;
}
return (((IFT) 1) << v) - 1;
}
#endif
Loading…
Cancel
Save