This breaks if AVX2 and AVX512 are both disabled but SSE2 isn't, because it calls buffer_is_zero_sse2 even with length < 64. Fix:
diff --git a/util/bufferiszero.c b/util/bufferiszero.c index b6eab0c..6639035 100644 --- a/util/bufferiszero.c +++ b/util/bufferiszero.c @@ -247,23 +247,20 @@ buffer_zero_avx512(const void *buf, size_t len) static unsigned cpuid_cache = INIT_CACHE; static bool (*buffer_accel)(const void *, size_t) = INIT_ACCEL; -static int length_to_accel; +static int length_to_accel = 64; static void init_accel(unsigned cache) { bool (*fn)(const void *, size_t) = buffer_zero_int; if (cache & CACHE_SSE2) { fn = buffer_zero_sse2; - length_to_accel = 64; } #ifdef CONFIG_AVX2_OPT if (cache & CACHE_SSE4) { fn = buffer_zero_sse4; - length_to_accel = 64; } if (cache & CACHE_AVX2) { fn = buffer_zero_avx2; - length_to_accel = 64; } #endif #ifdef CONFIG_AVX512F_OPT Paolo