28template <simd::simd_concept simd_t>
34template <simd::simd_concept simd_t>
40template <simd::simd_concept simd_t>
46template <simd::simd_concept target_simd_t, simd::simd_concept source_simd_t>
52template <simd::simd_concept target_simd_t, simd::simd_concept source_simd_t>
58template <u
int8_t index, simd::simd_concept simd_t>
64template <u
int8_t index, simd::simd_concept simd_t>
70template <u
int8_t index, simd::simd_concept simd_t>
84template <simd::simd_concept simd_t>
90template <simd::simd_concept simd_t>
96# if defined(__AVX512BW__)
97template <simd::simd_concept simd_t>
115 for (
int i = 0;
i < 32; ++
i)
118 reinterpret_cast<__m512i const &
>(matrix[2 *
i + 1]));
120 reinterpret_cast<__m512i const &
>(matrix[2 *
i + 1]));
125 for (
int i = 0;
i < 32; ++
i)
131 for (
int i = 0;
i < 32; ++
i)
137 for (
int i = 0;
i < 32; ++
i)
157 for (
int i = 0;
i < 32; ++
i)
179 0, 16, 8, 24, 4, 20, 12, 28, 2, 18, 10, 26, 6, 22, 14, 30,
181 1, 17, 9, 25, 5, 21, 13, 29, 3, 19, 11, 27, 7, 23, 15, 31,
183 32, 48, 40, 56, 36, 52, 44, 60, 34, 50, 42, 58, 38, 54, 46, 62,
185 33, 49, 41, 57, 37, 53, 45, 61, 35, 51, 43, 59, 39, 55, 47, 63};
188 for (
int i = 0;
i < 32; ++
i)
190 int const idx =
i * 2;
197template <simd::simd_concept target_simd_t, simd::simd_concept source_simd_t>
201 if constexpr (simd_traits<source_simd_t>::length == 64)
203 if constexpr (simd_traits<target_simd_t>::length == 32)
205 if constexpr (simd_traits<target_simd_t>::length == 16)
207 if constexpr (simd_traits<target_simd_t>::length == 8)
210 else if constexpr (simd_traits<source_simd_t>::length == 32)
212 if constexpr (simd_traits<target_simd_t>::length == 16)
214 if constexpr (simd_traits<target_simd_t>::length == 8)
219 static_assert(simd_traits<source_simd_t>::length == 16,
"Expected 32 bit scalar type.");
224template <simd::simd_concept target_simd_t, simd::simd_concept source_simd_t>
228 if constexpr (simd_traits<source_simd_t>::length == 64)
230 if constexpr (simd_traits<target_simd_t>::length == 32)
232 if constexpr (simd_traits<target_simd_t>::length == 16)
234 if constexpr (simd_traits<target_simd_t>::length == 8)
237 else if constexpr (simd_traits<source_simd_t>::length == 32)
239 if constexpr (simd_traits<target_simd_t>::length == 16)
241 if constexpr (simd_traits<target_simd_t>::length == 8)
246 static_assert(simd_traits<source_simd_t>::length == 16,
"Expected 32 bit scalar type.");
251template <u
int8_t index, simd::simd_concept simd_t>
254 return reinterpret_cast<simd_t
>(
258# if defined(__AVX512DQ__)
259template <u
int8_t index, simd::simd_concept simd_t>
262 return reinterpret_cast<simd_t
>(
266template <u
int8_t index, simd::simd_concept simd_t>
272 if constexpr (index % 2 == 1)
Provides seqan3::detail::builtin_simd, seqan3::detail::is_builtin_simd and seqan3::simd::simd_traits<...
Provides intrinsics include for builtin simd.
Defines the requirements of a matrix (e.g. score matrices, trace matrices).
Definition matrix_concept.hpp:52
The internal SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
void transpose_matrix_avx512(std::array< simd_t, simd_traits< simd_t >::length > &matrix)
Transposes the given simd vector matrix.
constexpr simd_t extract_half_avx512(simd_t const &src)
Extracts one half of the given simd vector and stores the result in the lower half of the target vect...
constexpr simd_t load_avx512(void const *mem_addr)
Load simd_t size bits of integral data from memory.
constexpr target_simd_t upcast_signed_avx512(source_simd_t const &src)
Upcasts the given vector into the target vector using signed extension of packed values.
constexpr void store_avx512(void *mem_addr, simd_t const &simd_vec)
Store simd_t size bits of integral data into memory.
constexpr simd_t extract_quarter_avx512(simd_t const &src)
Extracts one quarter of the given simd vector and stores it in the lower quarter of the target vector...
constexpr target_simd_t upcast_unsigned_avx512(source_simd_t const &src)
Upcasts the given vector into the target vector using unsigned extension of packed values.
constexpr simd_t extract_eighth_avx512(simd_t const &src)
Extracts one eighth of the given simd vector and stores it in the lower eighth of the target vector.
constexpr auto const & get(configuration< configs_t... > const &config) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition configuration.hpp:412
Provides seqan3::simd::simd_traits.
seqan3::simd::simd_traits is the trait class that provides uniform interface to the properties of sim...
Definition simd_traits.hpp:38
Provides seqan3::simd::simd_concept.