-
Notifications
You must be signed in to change notification settings - Fork 128
Home
Povilas Kanapickas edited this page Mar 23, 2014
·
26 revisions
The library is developed in C++11. A separate, C++03 branch is provided for compatibility with older compilers. Note that the master branch is unstable. If unsure, use one of the releases or at least the latest beta.
Supported instruction sets: SSE2, SSE3, SSSE3, SSE4.1, AVX, AVX2, FMA3, FMA4, XOP and NEON
Supported compilers:
-
C++11 version:
- GCC: 4.8.1, 4.7.3
- Clang: 3.3, 3.4
-
C++98 version
- GCC: 4.8.1, 4.7.3
- Clang: 3.3, 3.4
A 2.0 release of the library is planned. It contains lots of new features and a different high-level architecture which necessitated a major API break.
Changes:
- Expression template-based backend. It is used only for functions that may benefit from micro-optimizations.
- Support for vectors much longer than the native vector type. The only limitation is that the length must be a power of 2. The widest available instructions are used for the particular vector type.
- Vector initialization is simplified, for example:
int32<8> v = make_uint(2); - API break: int128 and int256 types have been removed. On some architectures such as AVX512 it's more efficient to have different physical representations for vectors with different element widths. E.g. 8-bit integer elements would use 256-bit vectors and 32-bit integer elements would use 512-bit vectors.
- API break: 'broadcast' family of functions have been renamed to 'splat'
- API break: 'permute' family of functions has been renamed to 'permute2' and 'permute4' depending on the number of template arguments taken.
- API break: value conversion functions such as to_float32x4 have been renamed and now returns a vector with the same number of elements as the source vector.
- API break: saturated add and sub are now called
sat_addandsat_sub - More API breaks... (grep for 'API break' in the commit logs)
Planned changes:
- Visual Studio support
- AVX512 support