seqan3::simd::simd_type encapsulates simd vector types, which can be manipulated by simd operations.
More...
#include <seqan3/core/simd/simd.hpp>
|
using | type = typename simd_backend::type |
| The actual simd type.
|
|
template<typename scalar_t, size_t length = detail::default_simd_length<scalar_t, detail::default_simd_backend>, typename simd_backend = detail::default_simd_backend<scalar_t, length>>
struct seqan3::simd::simd_type< scalar_t, length, simd_backend >
seqan3::simd::simd_type encapsulates simd vector types, which can be manipulated by simd operations.
- Template Parameters
-
scalar_t | The underlying type of a simd vector |
length | The number of packed values in a simd vector |
simd_backend | The simd backend to use, e.g. seqan3::detail::builtin_simd |
using uint8x16_t = simd_type_t<uint16_t, 8>;
int main()
{
uint8x16_t a = fill<uint8x16_t>(4);
uint8x16_t b = simd::fill<uint8x16_t>(5);
uint8x16_t c = a + b;
return 0;
}
- Attention
- seqan3::simd::simd_type may not support float types depending on the selected backend.
All implementations support [u]intX_t types, e.g. uint8_t.
- Helper types
- seqan3::simd::simd_type_t as a shorthand for seqan3::simd::simd_type::type
- See also
- https://en.wikipedia.org/wiki/SIMD What is SIMD conceptually?
-
https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions Which SIMD architectures exist?
-
https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html Underlying technique of seqan3::detail::builtin_simd types.
-
https://github.com/edanor/umesimd Underlying library of seqan3::detail::ume_simd types.
-
https://software.intel.com/sites/landingpage/IntrinsicsGuide Instruction sets and their low-level intrinsics.
The documentation for this struct was generated from the following file: