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