Vc v1.4.0 Release Notes

Release Date: 2018-10-01 // almost 5 years ago
  • portable SIMD zero-overhead language license
    ๐Ÿ‘ GCC Support Clang Support ICC Support MSVC Support


    Vc is an open source library to ease explicit vectorization of C++ code. It has an intuitive API and provides portability between different compilers and compiler versions as well as portability between different vector instruction sets.

    ๐Ÿš€ Vc 1.4.0 is a minor feature release with subtle changes in the interface and the start of an upgrade path to std::experimental::simd.

    ๐Ÿ‘‰ User Changelog

    ๐Ÿšง API break
    API break Vc::simdize<T, N> (with arithmetic T and suitable N) can now be an alias for Vc::Vector<T, Sse>, while AVX(2) is available. In Vc 1.3, this would use Vc::SimdArray<T, N> instead.
    ๐Ÿ“š API break
    ๐Ÿ›  API break API addition
    API addition Added load_interleaved and store_interleaved to be used with Vc::simdize<T> objects. This enables optimized loads from / stores to an AoS (array of structure) layout into/from structs of Vc vectors. This is currently only optimized for structures T where all data members have equal sizeof.
    API addition Added a new constructor to simdized types: Vc::simdize<T>([](size_t n) { ... }) expects the lambda to return objects of type T, which will be placed at the corresponding index n in the resulting object.
    API break API addition Vc::simd_for_each and Vc::simd_for_each_n will now vectorize any value_type via Vc::simdize. In Vc 1.3, only arithmetic types were vectorized, everything else used a fall-back to std::for_each. This fallback is removed in Vc 1.4. Consequently, the value_type must work with Vc::simdize.
    ๐ŸŽ behavior change bug fixed
    CMake feature Modernize CMake to simplify usage of Vc in external projects via exported target.
    ๐Ÿ›  behavior change bug fixed

    Developer Changelog