#[inline]
pub(crate) fn split_array<T: Copy>(arr: &[T], lane_size: usize) -> (Option<&[T]>, Option<&[T]>) {
let n = arr.len();
if n < lane_size * 2 {
return (Some(arr), None);
};
let (left_arr, right_arr) = arr.split_at(n % lane_size);
match (left_arr.is_empty(), right_arr.is_empty()) {
(true, true) => (None, None),
(false, false) => (Some(left_arr), Some(right_arr)),
(true, false) => (None, Some(right_arr)),
(false, true) => (Some(left_arr), None),
}
}