Vc v1.0.0 Release Notes
Release Date: 2015-11-03 // over 8 years ago-
๐ 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 genericSimdArray<T, N>
class template allowing you to build vector objects of arbitrary width. Thus, to get the oldsfloat_v
type back you'd write
using sfloat_v = Vc::SimdArray<float, Vc::short_v::size()>;
.
Note thatSimdArray
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 asVc::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 templateVc::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. UseVc::vector
and/orVc::array
as alternatives tostd::vector
and
std::array
to get an additional subscript overload acceptingVc::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.
- AVX