Vc is a free software 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. Thus an application written with Vc can be compiled for:
* AVX and AVX2
* SSE2 up to SSE4.2 or SSE4a
* Scalar
Homepage
Download
Recent Releases
1.4.406 Oct 2023 12:16
minor bugfix:
* bug fixes
1.4.120 Nov 2018 09:44
minor feature:
* bug fixes
* more efficient AVX2 gather codegen
1.4.001 Oct 2018 15:33
minor feature:
* Start of an upgrade path to std::experimental::simd
* simdize improvements
* simd_for_each improvements
* sine cosine fixes
1.3.327 Nov 2017 15:57
minor bugfix:
* Support for AVX2 gather instructions
* 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.
1.3.203 May 2017 12:46
minor bugfix:
* Resolve warnings from GCC 6 about ignored attributes.
* Support for Kaby Lake detection.
1.3.109 Mar 2017 14:00
minor bugfix:
* `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.
1.3.028 Oct 2016 13:31
major bugfix:
* 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).
|