#[cfg(target_arch = "x86_64")]
pub mod x86_64;
#[cfg(target_arch = "aarch64")]
pub mod aarch64;
#[cfg(target_arch = "wasm32")]
pub mod wasm;
use crate::ScalarF4E4;
pub fn scalar_subtract_batch(a: &[ScalarF4E4], b: &[ScalarF4E4], result: &mut [ScalarF4E4]) {
assert_eq!(a.len(), b.len());
assert_eq!(a.len(), result.len());
#[cfg(all(target_arch = "x86_64", target_feature = "avx2"))]
{
return unsafe { x86_64::scalar_subtract_batch_avx2(a, b, result) };
}
#[cfg(all(target_arch = "x86_64", not(target_feature = "avx2"), target_feature = "sse4.2"))]
{
return unsafe { x86_64::scalar_subtract_batch_sse42(a, b, result) };
}
#[cfg(all(target_arch = "aarch64", target_feature = "neon"))]
{
return unsafe { aarch64::scalar_subtract_batch_neon(a, b, result) };
}
for i in 0..a.len() {
result[i] = a[i] - b[i];
}
}