arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/base2k/src/ffi/vmp.rs
base2k/src/ffi/vmp.rsRaw
 1use crate::ffi::module::MODULE;
 2use crate::ffi::vec_znx_dft::VEC_ZNX_DFT;
 3
 4#[repr(C)]
 5#[derive(Debug, Copy, Clone)]
 6pub struct vmp_pmat_t {
 7    _unused: [u8; 0],
 8}
 9
10// [rows][cols] = [#Decomposition][#Limbs]
11pub type VMP_PMAT = vmp_pmat_t;
12
13unsafe extern "C" {
14    pub unsafe fn bytes_of_vmp_pmat(module: *const MODULE, nrows: u64, ncols: u64) -> u64;
15}
16unsafe extern "C" {
17    pub unsafe fn new_vmp_pmat(module: *const MODULE, nrows: u64, ncols: u64) -> *mut VMP_PMAT;
18}
19unsafe extern "C" {
20    pub unsafe fn delete_vmp_pmat(res: *mut VMP_PMAT);
21}
22
23unsafe extern "C" {
24    pub unsafe fn vmp_apply_dft(
25        module: *const MODULE,
26        res: *mut VEC_ZNX_DFT,
27        res_size: u64,
28        a: *const i64,
29        a_size: u64,
30        a_sl: u64,
31        pmat: *const VMP_PMAT,
32        nrows: u64,
33        ncols: u64,
34        tmp_space: *mut u8,
35    );
36}
37
38unsafe extern "C" {
39    pub unsafe fn vmp_apply_dft_tmp_bytes(
40        module: *const MODULE,
41        res_size: u64,
42        a_size: u64,
43        nrows: u64,
44        ncols: u64,
45    ) -> u64;
46}
47
48unsafe extern "C" {
49    pub unsafe fn vmp_apply_dft_to_dft(
50        module: *const MODULE,
51        res: *mut VEC_ZNX_DFT,
52        res_size: u64,
53        a_dft: *const VEC_ZNX_DFT,
54        a_size: u64,
55        pmat: *const VMP_PMAT,
56        nrows: u64,
57        ncols: u64,
58        tmp_space: *mut u8,
59    );
60}
61
62unsafe extern "C" {
63    pub unsafe fn vmp_apply_dft_to_dft_tmp_bytes(
64        module: *const MODULE,
65        res_size: u64,
66        a_size: u64,
67        nrows: u64,
68        ncols: u64,
69    ) -> u64;
70}
71
72unsafe extern "C" {
73    pub unsafe fn vmp_prepare_contiguous(
74        module: *const MODULE,
75        pmat: *mut VMP_PMAT,
76        mat: *const i64,
77        nrows: u64,
78        ncols: u64,
79        tmp_space: *mut u8,
80    );
81}
82
83unsafe extern "C" {
84    pub unsafe fn vmp_prepare_dblptr(
85        module: *const MODULE,
86        pmat: *mut VMP_PMAT,
87        mat: *const *const i64,
88        nrows: u64,
89        ncols: u64,
90        tmp_space: *mut u8,
91    );
92}
93
94unsafe extern "C" {
95    pub unsafe fn vmp_prepare_tmp_bytes(module: *const MODULE, nrows: u64, ncols: u64) -> u64;
96}