poulpy/poulpy-backend/src/cpu_spqlios/ffi/vmp.rs
poulpy-backend/src/cpu_spqlios/ffi/vmp.rsRaw
1use crate::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
12#[allow(dead_code)]
13unsafe extern "C" {
14 pub unsafe fn vmp_apply_dft(
15 module: *const MODULE,
16 res: *mut VEC_ZNX_DFT,
17 res_size: u64,
18 a: *const i64,
19 a_size: u64,
20 a_sl: u64,
21 pmat: *const VMP_PMAT,
22 nrows: u64,
23 ncols: u64,
24 tmp_space: *mut u8,
25 );
26}
27
28#[allow(dead_code)]
29unsafe extern "C" {
30 pub unsafe fn vmp_apply_dft_add(
31 module: *const MODULE,
32 res: *mut VEC_ZNX_DFT,
33 res_size: u64,
34 a: *const i64,
35 a_size: u64,
36 a_sl: u64,
37 pmat: *const VMP_PMAT,
38 nrows: u64,
39 ncols: u64,
40 pmat_scale: u64,
41 tmp_space: *mut u8,
42 );
43}
44
45#[allow(dead_code)]
46unsafe extern "C" {
47 pub unsafe fn vmp_apply_dft_tmp_bytes(module: *const MODULE, res_size: u64, a_size: u64, nrows: u64, ncols: u64) -> u64;
48}
49
50unsafe extern "C" {
51 pub unsafe fn vmp_apply_dft_to_dft(
52 module: *const MODULE,
53 res: *mut VEC_ZNX_DFT,
54 res_size: u64,
55 a_dft: *const VEC_ZNX_DFT,
56 a_size: u64,
57 pmat: *const VMP_PMAT,
58 nrows: u64,
59 ncols: u64,
60 tmp_space: *mut u8,
61 );
62}
63
64unsafe extern "C" {
65 pub unsafe fn vmp_apply_dft_to_dft_add(
66 module: *const MODULE,
67 res: *mut VEC_ZNX_DFT,
68 res_size: u64,
69 a_dft: *const VEC_ZNX_DFT,
70 a_size: u64,
71 pmat: *const VMP_PMAT,
72 nrows: u64,
73 ncols: u64,
74 pmat_scale: u64,
75 tmp_space: *mut u8,
76 );
77}
78
79unsafe extern "C" {
80 pub unsafe fn vmp_apply_dft_to_dft_tmp_bytes(
81 module: *const MODULE,
82 res_size: u64,
83 a_size: u64,
84 nrows: u64,
85 ncols: u64,
86 ) -> u64;
87}
88
89unsafe extern "C" {
90 pub unsafe fn vmp_prepare_contiguous(
91 module: *const MODULE,
92 pmat: *mut VMP_PMAT,
93 mat: *const i64,
94 nrows: u64,
95 ncols: u64,
96 tmp_space: *mut u8,
97 );
98}
99
100unsafe extern "C" {
101 pub unsafe fn vmp_prepare_tmp_bytes(module: *const MODULE, nrows: u64, ncols: u64) -> u64;
102}