SeqAn3
seqan3::simd::simd_type< scalar_t, length, simd_backend > Struct Template Reference

seqan3::simd::simd_type encapsulates simd vector types, which can be manipulated by simd operations. More...

#include <seqan3/core/simd/simd.hpp>

Inheritance diagram for seqan3::simd::simd_type< scalar_t, length, simd_backend >:
[legend]

Public Types

using type = typename simd_backend::type
 The actual simd type.
 

Detailed Description

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_tThe underlying type of a simd vector
lengthThe number of packed values in a simd vector
simd_backendThe simd backend to use, e.g. seqan3::detail::builtin_simd
using namespace seqan3;
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); // you can also explicitly use simd::
uint8x16_t c = a + b;
debug_stream << c << "\n"; // [9,9,9,9,9,9,9,9]
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: