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