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}