poulpy/poulpy-hal/src/reference/vec_znx/copy.rs
poulpy-hal/src/reference/vec_znx/copy.rsRaw
1use crate::{
2 layouts::{VecZnx, VecZnxToMut, VecZnxToRef, ZnxInfos, ZnxView, ZnxViewMut},
3 reference::znx::{ZnxCopy, ZnxZero},
4};
5
6pub fn vec_znx_copy<R, A, ZNXARI>(res: &mut R, res_col: usize, a: &A, a_col: usize)
7where
8 R: VecZnxToMut,
9 A: VecZnxToRef,
10 ZNXARI: ZnxCopy + ZnxZero,
11{
12 let mut res: VecZnx<&mut [u8]> = res.to_mut();
13 let a: VecZnx<&[u8]> = a.to_ref();
14
15 #[cfg(debug_assertions)]
16 {
17 assert_eq!(res.n(), a.n())
18 }
19
20 let res_size = res.size();
21 let a_size = a.size();
22
23 let min_size = res_size.min(a_size);
24
25 for j in 0..min_size {
26 ZNXARI::znx_copy(res.at_mut(res_col, j), a.at(a_col, j));
27 }
28
29 for j in min_size..res_size {
30 ZNXARI::znx_zero(res.at_mut(res_col, j));
31 }
32}