mod gather;
mod grouped;
mod resolve;
mod shuffle;
mod tile;
pub use gather::*;
pub use grouped::*;
pub use resolve::*;
pub use shuffle::*;
pub use tile::*;
use super::Affine8D;
use super::rows::rows_body;
#[archmage::rite(v3_gfni_crypto)]
fn rows_external_chunked<const ROWS: usize, const LANES: usize>(
ptrs: [*mut u8; ROWS],
vector_len: usize,
maps: &[[u64; ROWS]],
srcs: &[&[u8]],
chunk: usize,
) {
let terms = maps.len();
let step = if chunk == 0 { terms.max(1) } else { chunk };
let mut start = 0;
let mut first = true;
while start < terms {
let taken = (terms - start).min(step);
if first {
rows_body::<Affine8D, ROWS, LANES, true>(
ptrs,
vector_len,
&maps[start..start + taken],
&srcs[start..start + taken],
);
} else {
rows_body::<Affine8D, ROWS, LANES, false>(
ptrs,
vector_len,
&maps[start..start + taken],
&srcs[start..start + taken],
);
}
first = false;
start += taken;
}
}