You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
Load and store functions default to unaligned memory access. The old default was aligned memory access.