#[macro_export]
macro_rules! gain_kernel_avx2 {
($i:ident, $len:expr, { $($simd:tt)* }, { $($tail:tt)* }) => {
while $i + 8 <= $len {
{ $($simd)* }
$i += 8;
}
while $i < $len {
{ $($tail)* }
$i += 1;
}
};
}
#[macro_export]
macro_rules! gain_simd_avx2 {
($i:ident, $len:expr, { $($simd:tt)* }) => {
while $i + 8 <= $len {
{ $($simd)* }
$i += 8;
}
};
}
#[macro_export]
macro_rules! gain_kernel_avx512_masked {
($i:ident, $len:expr, { $($simd:tt)* }, { $($masked:tt)* }) => {
while $i + 16 <= $len {
{ $($simd)* }
$i += 16;
}
if $i < $len {
{ $($masked)* }
}
};
}
#[macro_export]
macro_rules! gain_kernel_avx512_scalar {
($i:ident, $len:expr, { $($simd:tt)* }, { $($tail:tt)* }) => {
while $i + 16 <= $len {
{ $($simd)* }
$i += 16;
}
while $i < $len {
{ $($tail)* }
$i += 1;
}
};
}
#[macro_export]
macro_rules! gain_simd_avx512 {
($i:ident, $len:expr, { $($simd:tt)* }) => {
while $i + 16 <= $len {
{ $($simd)* }
$i += 16;
}
};
}