This is the first release of an implementation of ISO/IEC TS 19570:2018 [Section 9] for GCC 9 / libstdc++.
It implements explicit support for SSE, AVX, and AVX512 as well as preliminary support for ARM NEON. All other platforms will currently fall back to only having simd_abi::scalar
and simd_abi::fixed_size
available.
This release supports the following implementation-defined ABI tags (please note that you normally should not use implementation-defined ABI tags — use compatible<T>
, native<T>
, or deduce_t<T, N>
:
simd_abi::__sse
,simd_abi::__avx
,simd_abi::__avx512
,simd_abi::__neon64
, andsimd_abi::__neon128
.
There are more implementation-defined ABI tags planned for future releases using partial vector registers and combining multiple registers into one simd
object. The latter differes from fixed_size
in that fixed_size
implements higher ABI stability guarantees and pays for those with possibly less efficient function parameter passing and less efficient masks.