Paolo Bonzini <pbonz...@redhat.com> wrote: > > The main issue here is that you are not testing whether the compiler > supports gnu_indirect_function. > > I suggest that you start by moving the functions to util/buffer-zero.c > > Then the structure should be something like > > #ifdef CONFIG_HAVE_AVX2 > #include <immintrin.h> > #endif > > ... define buffer_find_nonzero_offset_inner ... > ... define can_use_buffer_find_nonzero_offset_inner ... > > #if defined CONFIG_HAVE_GNU_IFUNC && defined CONFIG_HAVE_AVX2 > ... define buffer_find_nonzero_offset_avx2 ... > ... define can_use_buffer_find_nonzero_offset_avx2 ... > ... define the indirect functions ... > #else > ... define buffer_find_nonzero_offset that just calls > buffer_find_nonzero_offset_inner ... > ... define can_use_buffer_find_nonzero_offset that just calls > can_use_buffer_find_nonzero_offset_inner ... > #endif
My understanding for this was that glibc is better than hand made asm, and paolo4_memzero (or whatever was it called) was the best approach. And just remove SSE. Have I missed something? Later, Juan.