fp/simd/
mod.rs

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}