All Versions
10
Latest Version
Avg Release Cycle
131 days
Latest Release
1985 days ago

Changelog History

  • v1.4.1 Changes

    November 19, 2018

    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

  • v1.4.0 Changes

    October 01, 2018

    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

  • v1.3.3 Changes

    November 27, 2017

    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.3.3 is a minor bug fix release.

    👉 User Changelog

    • 👌 Support for AVX2 gather instructions. Thanks to Kay F. Jahnke for the initial patch.
    • Shift optimizations
    • 👍 Preliminary support for compiling to non-x86 targets (uses only the Scalar ABI)
    • ✅ Resolve failing static assertions, moving the relevant tests to unit tests
    • Fixed is_simd_vector and is_simd_mask traits to consider the ElementType too. Thanks to Kay F. Jahnke.

    Developer Changelog

  • v1.3.2 Changes

    May 03, 2017

    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.3.2 is a small bug fix release.

    👉 User Changelog

    • ⚠ Resolve warnings from GCC 6 about ignored attributes.
    • 👌 Support for Kaby Lake detection.

    Developer Changelog

  • v1.3.1 Changes

    March 09, 2017

    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.3.1 contains bug fixes, enables swap on scalar subscripts, and resolves a licensing issue in the examples.

    👉 User Changelog

    • swap(v[i], v[j]) did not compile. Vc 1.3.1 overloads the swap function and thus enables swapping scalars into/out of vector and mask objects.
    • 🚚 The spline example has moved to the new Vc-examples-nonfree repository since it has a license that restricts redistribution.

    Developer Changelog

  • v1.3.0 Changes

    October 27, 2016

    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.3.0 contains API cleanups, bug fixes, important compiler-specific optimizations & workarounds, and finally supports MSVC again

    👉 User Changelog

    • 👀 64-bit MS VisualStudio 2015 support. (See #119 for some of the gory details.)
    • 👍 ICC 17 support (#143).
    • 👍 GCC 6 support (#125).
    • ↪ Workarounds for bad ICC code-gen (#135). Now Vc not only works correctly when compiled with ICC, but also performs as good (or better) as GCC and Clang.
    • Safer and more restrictive subscripting on Vector and Mask. There is a minor source compatibility break involved, since Vector::operator[] returned lvalue references before Vc 1.3 and returns a smart reference (rvalue) now. This change reduces the chance of miscompilation & internal compiler errors and reduces the reliance on non-standard C++ extensions.
    • 👌 Support for x32 compilation (like x86_64 but with 32-bit pointers).
    • ➕ Added scatter interface to SimdArray (thanks to Kay Jahnke).
    • simd_cast properly works with ADL now (i.e. you don't have to write fully qualified Vc::simd_cast anymore).
    • Added simd_for_each_n (thanks to Hartmut Kaiser).

    Developer Changelog

  • v1.2.0 Changes

    February 25, 2016

    🛠 Vc 1.2.0 contains API cleanups and bug fixes.

    👉 User Changelog

    • 👌 Improved documentation, especially on SimdArray<T, N>
    • ✅ Rewritten Vector<T> and SimdArray<T, N> binary operators for more correctness and to follow the latest proposal to the C++ standards committee
    • Fixed trait that queries mutability of callable to simd_for_each
    • 👷 A few build system cleanups
    • 👌 Improved ICC support

    Developer Changelog

  • v1.1.0 Changes

    December 16, 2015

    The Vc 1.1.0 resolves several important issues that remained or were found in Vc 1.0.0.

    👉 User Changelog

    • 📚 Significant restructuring of the documentation, fixing many issues where the documentation still presented Vc 0.7 API.
    • 👍 Implement all math functions supported by Vector for SimdArray.
    • 🛠 Fix iif to work for builtin types.
    • ⏪ Reintroduce structured gather and scatter functions/constructors to Vector to restore API compatiblity with Vc 0.7. These functions are all marked as deprecated, suggesting to use the new subscript operators instead. This should ease porting applications from Vc 0.7.
    • 🗄 Deprecate Vector::copySign, Vector::isNegative, and Vector::exponent. They are replaced by their non-member counterparts Vc::copysign, Vc::isnegative, and Vc::exponent.
    • 🛠 Fix a few remaining license issues so that everything really says BSD now. This includes a replacement of Vc::array with a fork from libc++ instead of the previous code that was forked from libstdc++.
    • Resolve a few minor OS X compatibility issues.

    Developer Changelog

  • v1.0.0 Changes

    November 03, 2015

    🔄 Changelog

    • AVX (u)int_v is now only one SSE width instead of the full AVX width.
    • AVX2 support added with doubled width for (u)int_v and (u)short_v.
    • 👍 Xeon Phi support (Knights Corner). This requires an Intel compiler.
    • Dropped the guarantee of (u)int_v::size() == float_v::size(). Therefore, the
      implicit conversion between int and float vectors present in Vc 0.x is ill-
      formed with 1.0.
    • 🆕 New simd_cast<T> cast function. It allows arbitrary conversions from one or
      more Vectors/SimdArrays to one or more Vectors/SimdArrays.
    • 🆕 New simdize<T> expression "vectorizes T". This is still somewhat
      experimental.
    • 🏗 sfloat_v is gone in favor of a generic SimdArray<T, N> class template allowing you to build vector objects of arbitrary width. Thus, to get the old sfloat_v type back you'd write
      using sfloat_v = Vc::SimdArray<float, Vc::short_v::size()>;.
      Note that SimdArray is not meant to be used as a container, i.e. N should be "small".
    • Besides Vc::Vector<T> you can also now use microarchitecture
      specific types directly, such as Vc::SSE::Vector<T>. This enables you to use SSE
      🌐 vectors and AVX vectors in the same translation unit. You should prefer
      SimdArray<T, N> in most cases, though.
    • In Vc 0.x the Vector<T> class template was defined multiple times in
      different namespaces. Now it's a single class template Vc::Vector<T, Abi> with
      aliases in the implementation namespaces. This enables you to write a function
      such as
      template <typename T, typename Abi> void f(Vc::Vector<T, Abi> x),
      which matches any Vc Vector type, whether that's the Scalar implementation or
      an actual SIMD implementation.
    • Gather & scatter received a new interface that is a lot more intuitive and
      flexible. Use Vc::vector and/or Vc::array as alternatives to std::vector and
      std::array to get an additional subscript overload accepting Vc::Vector
      objects as argument to the subscript operator for gather & scatter.
    • Requires C++11. Thus, many older compiler versions and, at least for now,
      👍 MSVC are not supported anymore.
    • 0️⃣ Load and store functions default to unaligned memory access. The old default was aligned memory access.

    Known issues

    • 📚 The documentation is incomplete and outdated.
  • v0.7.5 Changes

    August 26, 2015
    • ⚠ compilation warnings fixed
    • detect Haswell and Broadwell CPUs (#6)
    • 🛠 bugfix: AVX::Mask::operator== returned incorrect answers on a few masks
    • ✅ more thorough mask testing
    • ↪ detect and work around clang 3.6 bug with AVX codegen (#20)
    • ↪ subscript workaround for GCC 5.1 and 5.2 (#9)
    • merge vc_compile_for_all_implementations from master, making it more robust
    • 🛠 fix isfinite usage with ICC (#8)