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}
 9pub type VMP_PMAT = vmp_pmat_t;
10
11unsafe extern "C" {
12    pub unsafe fn bytes_of_vmp_pmat(module: *const MODULE, nrows: u64, ncols: u64) -> u64;
13}
14unsafe extern "C" {
15    pub unsafe fn new_vmp_pmat(module: *const MODULE, nrows: u64, ncols: u64) -> *mut VMP_PMAT;
16}
17unsafe extern "C" {
18    pub unsafe fn delete_vmp_pmat(res: *mut VMP_PMAT);
19}
20
21unsafe extern "C" {
22    pub unsafe fn vmp_apply_dft(
23        module: *const MODULE,
24        res: *mut VEC_ZNX_DFT,
25        res_size: u64,
26        a: *const i64,
27        a_size: u64,
28        a_sl: u64,
29        pmat: *const VMP_PMAT,
30        nrows: u64,
31        ncols: u64,
32        tmp_space: *mut u8,
33    );
34}
35
36unsafe extern "C" {
37    pub unsafe fn vmp_apply_dft_tmp_bytes(
38        module: *const MODULE,
39        res_size: u64,
40        a_size: u64,
41        nrows: u64,
42        ncols: u64,
43    ) -> u64;
44}
45
46unsafe extern "C" {
47    pub unsafe fn vmp_apply_dft_to_dft(
48        module: *const MODULE,
49        res: *mut VEC_ZNX_DFT,
50        res_size: u64,
51        a_dft: *const VEC_ZNX_DFT,
52        a_size: u64,
53        pmat: *const VMP_PMAT,
54        nrows: u64,
55        ncols: u64,
56        tmp_space: *mut u8,
57    );
58}
59
60unsafe extern "C" {
61    pub unsafe fn vmp_apply_dft_to_dft_tmp_bytes(
62        module: *const MODULE,
63        res_size: u64,
64        a_size: u64,
65        nrows: u64,
66        ncols: u64,
67    ) -> u64;
68}
69
70unsafe extern "C" {
71    pub unsafe fn vmp_prepare_contiguous(
72        module: *const MODULE,
73        pmat: *mut VMP_PMAT,
74        mat: *const i64,
75        nrows: u64,
76        ncols: u64,
77        tmp_space: *mut u8,
78    );
79}
80unsafe extern "C" {
81    pub unsafe fn vmp_prepare_dblptr(
82        module: *const MODULE,
83        pmat: *mut VMP_PMAT,
84        mat: *const *const i64,
85        nrows: u64,
86        ncols: u64,
87        tmp_space: *mut u8,
88    );
89}
90unsafe extern "C" {
91    pub unsafe fn vmp_prepare_contiguous_tmp_bytes(
92        module: *const MODULE,
93        nrows: u64,
94        ncols: u64,
95    ) -> u64;
96}