SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
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/utility/simd/simd.hpp>

+ Inheritance diagram for seqan3::simd::simd_type< scalar_t, length, simd_backend >:

Public Types

using type = typename simd_backend< scalar_t, length >::type
 The actual simd type.
 

Detailed Description

template<typename scalar_t, size_t length = detail::default_simd_length<scalar_t, detail::default_simd_backend>, template< typename scalar_t_, size_t length_ > typename simd_backend = detail::default_simd_backend>
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
// SPDX-FileCopyrightText: 2006-2024 Knut Reinert & Freie Universität Berlin
// SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
// SPDX-License-Identifier: CC0-1.0
int main()
{
uint16x8_t a = seqan3::fill<uint16x8_t>(4);
uint16x8_t b = seqan3::simd::fill<uint16x8_t>(5); // you can also explicitly use simd::
uint16x8_t c = a + b;
seqan3::debug_stream << c << "\n"; // [9,9,9,9,9,9,9,9]
return 0;
}
Provides seqan3::debug_stream and related types.
Provides seqan3::debug_stream overload for seqan3::simd::simd_type.
debug_stream_type debug_stream
A global instance of seqan3::debug_stream_type.
Definition debug_stream.hpp:37
typename simd_type< scalar_t, length, simd_backend >::type simd_type_t
Helper type of seqan3::simd::simd_type.
Definition simd.hpp:56
Meta-header for the Utility / SIMD submodule .
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://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html Instruction sets and their low-level intrinsics.

The documentation for this struct was generated from the following file:
Hide me