Vc v1.4.1 Release Notes

Release Date: 2018-11-19 // over 2 years ago
  • portable SIMD zero-overhead language license
    👍 GCC Support Clang Support ICC Support MSVC Support

    DOI

    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.1 is a bugfix release most notably incorporating improved codegen on gathers with AVX2 available.

    👉 User Changelog

    Resolved Issues

                                     description
    👀 optimization
    🛠 bug fixed
    🏗 bug fixed

    Developer Changelog


Previous changes from v1.4.0

  • portable SIMD zero-overhead language license
    👍 GCC Support Clang Support ICC Support MSVC Support

    DOI

    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

                                     description
    🚧 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