mirror of
https://github.com/cathugger/mkp224o.git
synced 2025-05-20 17:00:32 +00:00
whatever i implemented it anyway
This commit is contained in:
parent
f43c3b021e
commit
c9d018a253
3 changed files with 29 additions and 13 deletions
27
ifilter_bitsum.h
Normal file
27
ifilter_bitsum.h
Normal file
|
@ -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…
Add table
Add a link
Reference in a new issue