about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2024-06-24 01:37:09 +0200
committerGitHub <noreply@github.com>2024-06-24 01:37:09 +0200
commite80bd2d30cdfbaa2fca48f7ee96ca114ddb7d74a (patch)
tree2534f0f9524dbe69254441d693e41816bf850aab /src
parent540d741df0541e0e41e600672245ca1e867c5ef4 (diff)
parentac5815d994fe8ff151e0f13088891acc506662ed (diff)
downloadafl++-e80bd2d30cdfbaa2fca48f7ee96ca114ddb7d74a.tar.gz
Merge pull request #2133 from visitorckw/optimize-bit-counting
Optimize bit counting using __builtin_popcount
Diffstat (limited to 'src')
-rw-r--r--src/afl-fuzz-bitmap.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/afl-fuzz-bitmap.c b/src/afl-fuzz-bitmap.c
index 03bc5d6c..405d2dd6 100644
--- a/src/afl-fuzz-bitmap.c
+++ b/src/afl-fuzz-bitmap.c
@@ -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
 
   }