arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/backend/src/implementation/cpu_spqlios/ffi/svp.rs
backend/src/implementation/cpu_spqlios/ffi/svp.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 svp_ppol_t {
 6    _unused: [u8; 0],
 7}
 8pub type SVP_PPOL = svp_ppol_t;
 9
10unsafe extern "C" {
11    pub unsafe fn bytes_of_svp_ppol(module: *const MODULE) -> u64;
12}
13unsafe extern "C" {
14    pub unsafe fn new_svp_ppol(module: *const MODULE) -> *mut SVP_PPOL;
15}
16unsafe extern "C" {
17    pub unsafe fn delete_svp_ppol(res: *mut SVP_PPOL);
18}
19
20unsafe extern "C" {
21    pub unsafe fn svp_prepare(module: *const MODULE, ppol: *mut SVP_PPOL, pol: *const i64);
22}
23
24unsafe extern "C" {
25    pub unsafe fn svp_apply_dft(
26        module: *const MODULE,
27        res: *const VEC_ZNX_DFT,
28        res_size: u64,
29        ppol: *const SVP_PPOL,
30        a: *const i64,
31        a_size: u64,
32        a_sl: u64,
33    );
34}
35
36unsafe extern "C" {
37    pub unsafe fn svp_apply_dft_to_dft(
38        module: *const MODULE,
39        res: *const VEC_ZNX_DFT,
40        res_size: u64,
41        res_cols: u64,
42        ppol: *const SVP_PPOL,
43        a: *const VEC_ZNX_DFT,
44        a_size: u64,
45        a_cols: u64,
46    );
47}