#![allow(unsafe_code)]
#![allow(clippy::indexing_slicing)]
use super::BLOCK_LEN;
pub(crate) unsafe fn compress_blocks_kimd(state: &mut [u64; 8], blocks: &[u8]) {
debug_assert_eq!(blocks.len() % BLOCK_LEN, 0);
if blocks.is_empty() {
return;
}
let parm = state.as_mut_ptr();
let data = blocks.as_ptr();
let len = blocks.len();
unsafe {
core::arch::asm!(
"0:",
".insn rre, 0xB93E0000, 0, 2",
"jo 0b",
inout("r0") 3u64 => _,
inout("r1") parm => _,
inout("r2") data => _,
inout("r3") len => _,
options(nostack),
);
}
}