use super::mask::{MaskScheme, MaskState};
use super::o200k_family;
pub(crate) struct NemotronScheme;
impl MaskScheme for NemotronScheme {
#[inline(always)]
fn advance(bytes: &[u8], pos: usize) -> usize {
o200k_family::advance_pos::<false, false, true, false>(bytes, pos)
}
#[cfg(target_arch = "aarch64")]
#[inline(always)]
fn batch_masks(bytes: &[u8], scan: usize) -> (u64, u64) {
o200k_family::batch_masks::<false, false, true, false>(bytes, scan)
}
#[cfg(target_arch = "x86_64")]
#[inline(always)]
unsafe fn batch_masks_x86<const AVX512: bool>(bytes: &[u8], scan: usize) -> (u64, u64) {
unsafe { o200k_family::batch_masks_x86::<AVX512, false, false, true, false>(bytes, scan) }
}
}
pub struct FastNemotronPretokenizer<'a> {
bytes: &'a [u8],
state: MaskState,
}
super::impl_mask_pretokenizer!(FastNemotronPretokenizer, NemotronScheme);