#[inline(always)]
pub(super) fn pack4(v: [i32; 4]) -> i64 {
((v[0] as u16 as u64)
| ((v[1] as u16 as u64) << 16)
| ((v[2] as u16 as u64) << 32)
| ((v[3] as u16 as u64) << 48)) as i64
}
#[inline(always)]
pub(super) fn pack3_opaque_base(v: [i32; 3]) -> i64 {
pack4([v[0], v[1], v[2], 255 << 6])
}
#[inline(always)]
pub(super) fn pack3_opaque_delta(v: [i32; 3]) -> i64 {
pack4([v[0], v[1], v[2], 0])
}
#[inline(always)]
pub(super) fn pack_bd3(bd: &[([i32; 3], [i32; 3])], pairs: usize) -> [(i64, i64); 4] {
let mut out = [(0i64, 0i64); 4];
for (k, slot) in out.iter_mut().enumerate().take(pairs) {
slot.0 = pack3_opaque_base(bd[k].0);
slot.1 = pack3_opaque_delta(bd[k].1);
}
out
}
#[inline(always)]
pub(super) fn pack_bd4(bd: &[([i32; 4], [i32; 4])], pairs: usize) -> [(i64, i64); 2] {
let mut out = [(0i64, 0i64); 2];
for (k, slot) in out.iter_mut().enumerate().take(pairs) {
slot.0 = pack4(bd[k].0);
slot.1 = pack4(bd[k].1);
}
out
}