Changelog History
-
v1.4.1 Changes
November 19, 2018Vc 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
description ๐ ๐ ๐ Developer Changelog
-
v1.4.0 Changes
October 01, 2018Vc 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
Developer Changelog
-
v1.3.3 Changes
November 27, 2017Vc 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
andis_simd_mask
traits to consider theElementType
too. Thanks to Kay F. Jahnke.
Developer Changelog
-
v1.3.2 Changes
May 03, 2017Vc 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, 2017Vc 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 theswap
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, 2016Vc 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
andMask
. There is a minor source compatibility break involved, sinceVector::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 qualifiedVc::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>
andSimdArray<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
- ๐ Improved documentation, especially on
-
v1.1.0 Changes
December 16, 2015The 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
forSimdArray
. - ๐ 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
, andVector::exponent
. They are replaced by their non-member counterpartsVc::copysign
,Vc::isnegative
, andVc::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 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
-
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)