SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
seqan3::simd::simd_traits< builtin_simd_t > Struct Template Reference

This class specializes seqan3::simd::simd_traits for seqan3::detail::builtin_simd types. More...

#include <seqan3/utility/simd/detail/builtin_simd.hpp>

Public Types

using mask_type = decltype(std::declval< builtin_simd_t >()==std::declval< builtin_simd_t >())
 The type returned by comparison operators (is not defined if simd_t does not model seqan3::simd::simd)
 
template<typename new_scalar_type >
using rebind = typename detail::builtin_simd< new_scalar_type, length >::type
 The type used to rebind a simd vector to another scalar_type (is not defined if simd_t does not model seqan3::simd::simd*)
 
using scalar_type = typename detail::builtin_simd_traits_helper< builtin_simd_t >::scalar_type
 The underlying type of a simd vector (is not defined if simd_t does not model seqan3::simd::simd)
 
using swizzle_type = typename detail::builtin_simd< uint8_t, max_length >::type
 The type used to define how to swizzle a simd vector (is not defined if simd_t does not model seqan3::simd::simd)
 

Static Public Attributes

static constexpr auto length = detail::builtin_simd_traits_helper<builtin_simd_t>::length
 The number of packed values in a simd vector (is not defined if simd_t does not model seqan3::simd::simd)
 
static constexpr auto max_length = length == 1u ? length : sizeof(scalar_type) * length
 The maximum number of packable values in a simd vector, if the underlying type would be [u]int8_t (is not defined if simd_t does not model seqan3::simd::simd)
 

Detailed Description

template<typename builtin_simd_t>
struct seqan3::simd::simd_traits< builtin_simd_t >

This class specializes seqan3::simd::simd_traits for seqan3::detail::builtin_simd types.

Template Parameters
builtin_simd_tA simd type that satisfies seqan3::detail::is_builtin_simd_v<builtin_simd_t>.
See also
seqan3::simd::simd_traits for more information

Member Typedef Documentation

◆ mask_type

template<typename builtin_simd_t >
using seqan3::simd::simd_traits< builtin_simd_t >::mask_type = decltype(std::declval<builtin_simd_t>() == std::declval<builtin_simd_t>())

The type returned by comparison operators (is not defined if simd_t does not model seqan3::simd::simd)

◆ rebind

template<typename builtin_simd_t >
template<typename new_scalar_type >
using seqan3::simd::simd_traits< builtin_simd_t >::rebind = typename detail::builtin_simd<new_scalar_type, length>::type

The type used to rebind a simd vector to another scalar_type (is not defined if simd_t does not model seqan3::simd::simd*)

◆ scalar_type

template<typename builtin_simd_t >
using seqan3::simd::simd_traits< builtin_simd_t >::scalar_type = typename detail::builtin_simd_traits_helper<builtin_simd_t>::scalar_type

The underlying type of a simd vector (is not defined if simd_t does not model seqan3::simd::simd)

◆ swizzle_type

template<typename builtin_simd_t >
using seqan3::simd::simd_traits< builtin_simd_t >::swizzle_type = typename detail::builtin_simd<uint8_t, max_length>::type

The type used to define how to swizzle a simd vector (is not defined if simd_t does not model seqan3::simd::simd)

Member Data Documentation

◆ length

template<typename builtin_simd_t >
constexpr auto seqan3::simd::simd_traits< builtin_simd_t >::length = detail::builtin_simd_traits_helper<builtin_simd_t>::length
staticconstexpr

The number of packed values in a simd vector (is not defined if simd_t does not model seqan3::simd::simd)

◆ max_length

template<typename builtin_simd_t >
constexpr auto seqan3::simd::simd_traits< builtin_simd_t >::max_length = length == 1u ? length : sizeof(scalar_type) * length
staticconstexpr

The maximum number of packable values in a simd vector, if the underlying type would be [u]int8_t (is not defined if simd_t does not model seqan3::simd::simd)


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