4#include "arm_simd/helpers/vec128.hpp"
6#ifdef __ARM_FEATURE_MVE
17template <
typename scalar_type>
18std::pair<std::span<scalar_type>, std::span<scalar_type>> split_head_aligned(std::span<scalar_type> span) {
19 constexpr size_t lanes =
sizeof(simd::Vec128_t<scalar_type>) /
sizeof(scalar_type);
20 return {span.first(span.size() & ~(lanes - 1)), span.last(span.size() & (lanes - 1))};
26template <
typename scalar_type>
27std::pair<std::span<scalar_type>, std::span<scalar_type>> split_tail_aligned(std::span<scalar_type> span) {
28 constexpr size_t lanes =
sizeof(simd::Vec128_t<scalar_type>) /
sizeof(scalar_type);
29 return {span.first(span.size() & (lanes - 1)), span.last(span.size() & ~(lanes - 1))};