#[cfg(not(debug_assertions))]
macro_rules! unsafe_assert {
($e:expr) => {
unsafe {
if !$e {
::core::hint::unreachable_unchecked();
}
}
};
}
#[cfg(debug_assertions)]
macro_rules! unsafe_assert {
($e:expr) => {};
}
mod generic;
cfg_if::cfg_if! {
if #[cfg(not(target_endian = "little"))] {
pub use self::generic::*;
}
else if #[cfg(all(any(target_arch = "x86", target_arch = "x86_64"), target_feature = "avx2"))] {
mod avx2;
pub use self::avx2::*;
}
else if #[cfg(all(any(target_arch = "x86", target_arch = "x86_64"), target_feature = "sse2"))] {
mod sse2;
pub use self::sse2::*;
}
else if #[cfg(target_pointer_width = "64")] {
mod swar64;
pub use self::swar64::*;
}
else if #[cfg(target_pointer_width = "32")] {
mod swar32;
pub use self::swar32::*;
}
else {
pub use self::generic::*;
}
}
#[test]
fn test_parse() {
let mut buffer = [b'-'; 254];
for i in 0..buffer.len() {
buffer[i] = b'\n';
assert_eq!(generic::find_nl(&buffer), i);
assert_eq!(generic::find_nl_chr(&buffer, b'='), i);
assert_eq!(find_nl(&buffer), i);
assert_eq!(find_nl_chr(&buffer, b'='), i);
buffer[i] = if i & 1 == 0 { !0x0D } else { !0x0A };
}
}