VOLK v3.1.1 release

By Johannes Demel | January 29, 2024

Originally published on libvolk.org

Hi everyone!

This is the VOLK v3.1.1 release! We want to thank all contributors. This release wouldn’t have been possible without them.

This is a maintenance release to fix subtle bugs in many areas and to improve our tests where possible. All in all, our CI is more stable now and catches more errors.



  • CI fixes

    • Allow for rounding error in float-to-int conversions
    • Allow for rounding error in volk_32fc_s32f_magnitude_16i
    • Allow for rounding error in float-to-int interleave
    • Add missing volk_16_byteswap_u_orc to puppet
    • Fix 64-bit integer testing
    • Build and test neonv7 protokernels on armv7
  • kernels

    • Remove broken sse32 kernels
    • Fix flaky fm_detect test
    • Fix flaky mod_range test
    • Remove unnecessary volatiles from volk_32fc_s32f_magnitude_16i
    • Remove SSE protokernels written in assembly
    • Remove inline assembler from volk_32fc_convert_16ic_neon
    • Use bit shifts in generic and byte_shuffle reverse
    • Remove disabled SSE4.1 dot product
    • Fix conv_k7_r2 kernel and puppet
    • Remove unused argument from renormalize
    • Align types in ORC function signatures
    • Uncomment AVX2 implementation
    • Renormalize in every iteration on AVX2
    • Remove extraneous permutations
    • Compute the minimum over both register lanes
    • volk_32fc_s32f_atan2_32f: Add NaN tests for avx2 and avx2fma code
  • fixes

    • Express version information in decimal
    • Remove __VOLK_VOLATILE
    • Remove references to simdmath library
    • cmake: Switch to GNUInstallDirs
    • fprintf: Remove fprintf statements from volk_malloc
    • release: Prepare release with updated files
    • Get the sse2neon.h file to a git submodule to avoid random copies.