#[rustfmt::skip]
macro_rules! reduce_32x4 {
($prefix:ident $value:expr; $op:ident $last:ident) => {{paste::paste! {
let v0 = $value;
let v1 = arch::u8x16_swizzle(v0, const { arch::x4indices(2, 3, 2, 3) });
let v0 = arch::$op(v0, v1);
let v1 = arch::u8x16_swizzle(v0, const { arch::x4indices(1, 1, 3, 3) });
arch::[<$prefix 32x4_extract_lane>]::<0>(arch::$last(v0, v1))
}}};
}
#[rustfmt::skip]
macro_rules! reduce_64x2 {
($prefix:ident $value:expr; $op:ident $last:ident) => {{paste::paste! {
let v0 = $value;
let v1 = arch::u8x16_swizzle(v0, const { arch::x2indices(1, 1) });
arch::[<$prefix 64x2_extract_lane>]::<0>(arch::$last(v0, v1))
}}};
}