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.