extern crate ssimd;
use ssimd::f32x4;
#[inline(never)]
pub fn convert_scalar(x: &mut [i32], y: &[f32]) {
assert_eq!(x.len(), y.len());
let mut i = 0;
while i < x.len() & !3 {
x[i] = y[i] as i32;
i += 1;
}
}
#[inline(never)]
pub fn convert(x: &mut [i32], y: &[f32]) {
assert_eq!(x.len(), y.len());
let mut i = 0;
while i < x.len() & !3 {
let v = f32x4::load(y, i);
v.to_i().store(x, i);
i += 4
}
}
fn main() {
let x = &mut [0; 12];
let y = [1.0; 12];
convert(x, &y);
convert_scalar(x, &y);
println!("{:?}", x);
let x = &mut [0; 16];
let y = [1.0; 16];
convert(x, &y);
convert_scalar(x, &y);
println!("{:?}", x);
}