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 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 fn vmp_prepare_dblptr(
82 module: *const MODULE,
83 pmat: *mut VMP_PMAT,
84 mat: *mut *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}