1use crate::{
2 blas::block::{MatrixBlock, MatrixBlockSlice},
3 limb::Limb,
4};
5
6mod generic;
7
8#[cfg(target_arch = "x86_64")]
9mod x86_64;
10
11pub(crate) fn add_simd(target: &mut [Limb], source: &[Limb], min_limb: usize) {
12 cfg_if::cfg_if! {
13 if #[cfg(target_arch = "x86_64")] {
14 x86_64::add_simd(target, source, min_limb)
15 } else {
16 generic::add_simd(target, source, min_limb)
17 }
18 }
19}
20
21pub(crate) fn gather_block_simd(slice: MatrixBlockSlice) -> MatrixBlock {
22 cfg_if::cfg_if! {
23 if #[cfg(target_arch = "x86_64")] {
24 x86_64::gather_block_simd(slice)
25 } else {
26 generic::gather_block_simd(slice)
27 }
28 }
29}
30
31#[inline]
32pub(crate) fn gemm_block_simd(a: MatrixBlock, b: MatrixBlock, c: &mut MatrixBlock) {
33 cfg_if::cfg_if! {
34 if #[cfg(target_arch = "x86_64")] {
35 x86_64::gemm_block_simd(a, b, c)
36 } else {
37 generic::gemm_block_simd(a, b, c)
38 }
39 }
40}