Vc v1.0.0 Release NotesRelease Date: 2015-11-03 // about 6 years ago
(u)int_vis now only one SSE width instead of the full AVX width.
- AVX2 support added with doubled width for
- 👍 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
sfloat_vis 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_vtype back you'd write
using sfloat_v = Vc::SimdArray<float, Vc::short_v::size()>;.
SimdArrayis not meant to be used as a container, i.e. N should be "small".
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
aliases in the implementation namespaces. This enables you to write a function
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
Vc::arrayas alternatives to
std::arrayto get an additional subscript overload accepting
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.
- 📚 The documentation is incomplete and outdated.