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}