Merge pull request #2133 from visitorckw/optimize-bit-counting

Optimize bit counting using __builtin_popcount
This commit is contained in:
van Hauser
2024-06-24 01:37:09 +02:00
committed by GitHub
2 changed files with 8 additions and 0 deletions

View File

@ -116,6 +116,10 @@
#include <TargetConditionals.h>
#endif
#ifndef __has_builtin
#define __has_builtin(x) 0
#endif
#undef LIST_FOREACH /* clashes with FreeBSD */
#include "list.h"
#ifndef SIMPLE_FILES

View File

@ -75,9 +75,13 @@ u32 count_bits(afl_state_t *afl, u8 *mem) {
}
#if __has_builtin(__builtin_popcount)
ret += __builtin_popcount(v);
#else
v -= ((v >> 1) & 0x55555555);
v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
ret += (((v + (v >> 4)) & 0xF0F0F0F) * 0x01010101) >> 24;
#endif
}