-
Notifications
You must be signed in to change notification settings - Fork 130
Home
Povilas Kanapickas edited this page Mar 16, 2016
·
26 revisions
The library is developed in C++11. Separate branch that uses C++03 and releases based on it are provided for compatibility with older compilers.
For older releases please check out this page
The library supports the following architectures and instruction sets:
- x86, x86-64: SSE2, SSE3, SSSE3, SSE4.1, AVX, AVX2, FMA3, FMA4, AVX-512F, XOP
- ARM, ARM64: NEON
- PowerPC: Altivec
Supported compilers:
-
C++11 version:
- GCC: 4.8-5.3
- Clang: 3.3-3.8
- MSVC: 2013
- ICC: 2013, 2015
-
C++98 version
- GCC: 4.4-5.3
- Clang: 3.3-3.8
- MSVC: 2013
- ICC: 2013, 2015
Clang 3.3 is not supported on ARM. MSVC and ICC are only supported on x86 and x86-64.
Newer versions of the aforementioned compilers will generally work with either C++11 or C++98 version of the library. Older versions of these compilers will generally work with the C++98 version of the library.
Planned future changes:
- Support for small vectors, such as
int32<1>
. Rationale: Currently there's no way to specify that we indeed want to perform operation on small number of vector elements. A possible solution is to extract appropriate C++ scalars such asint
from the vector types and use regular C++. The problem with that is that often the most efficient way to do this is to keep the data in the SIMD execution domain and simply perform some wider vector operation. This is quite difficult for the compiler to spot. Implementing small vectors would allow to select the most efficient implementation for the target architecture.