use crate::cpu_spqlios::ffi::{module::MODULE, vec_znx_dft::VEC_ZNX_DFT}; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct vmp_pmat_t { _unused: [u8; 0], } // [rows][cols] = [#Decomposition][#Limbs] pub type VMP_PMAT = vmp_pmat_t; #[allow(dead_code)] unsafe extern "C" { pub unsafe fn vmp_apply_dft( module: *const MODULE, res: *mut VEC_ZNX_DFT, res_size: u64, a: *const i64, a_size: u64, a_sl: u64, pmat: *const VMP_PMAT, nrows: u64, ncols: u64, tmp_space: *mut u8, ); } #[allow(dead_code)] unsafe extern "C" { pub unsafe fn vmp_apply_dft_add( module: *const MODULE, res: *mut VEC_ZNX_DFT, res_size: u64, a: *const i64, a_size: u64, a_sl: u64, pmat: *const VMP_PMAT, nrows: u64, ncols: u64, pmat_scale: u64, tmp_space: *mut u8, ); } #[allow(dead_code)] unsafe extern "C" { pub unsafe fn vmp_apply_dft_tmp_bytes(module: *const MODULE, res_size: u64, a_size: u64, nrows: u64, ncols: u64) -> u64; } unsafe extern "C" { pub unsafe fn vmp_apply_dft_to_dft( module: *const MODULE, res: *mut VEC_ZNX_DFT, res_size: u64, a_dft: *const VEC_ZNX_DFT, a_size: u64, pmat: *const VMP_PMAT, nrows: u64, ncols: u64, tmp_space: *mut u8, ); } unsafe extern "C" { pub unsafe fn vmp_apply_dft_to_dft_add( module: *const MODULE, res: *mut VEC_ZNX_DFT, res_size: u64, a_dft: *const VEC_ZNX_DFT, a_size: u64, pmat: *const VMP_PMAT, nrows: u64, ncols: u64, pmat_scale: u64, tmp_space: *mut u8, ); } unsafe extern "C" { pub unsafe fn vmp_apply_dft_to_dft_tmp_bytes( module: *const MODULE, nn: u64, res_size: u64, a_size: u64, nrows: u64, ncols: u64, ) -> u64; } unsafe extern "C" { pub unsafe fn vmp_prepare_contiguous( module: *const MODULE, pmat: *mut VMP_PMAT, mat: *const i64, nrows: u64, ncols: u64, tmp_space: *mut u8, ); } unsafe extern "C" { pub unsafe fn vmp_prepare_tmp_bytes(module: *const MODULE, nn: u64, nrows: u64, ncols: u64) -> u64; }