arnaucube
arnaucube/poulpyPublic Self-hosted repository
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        nn: u64,
 83        res_size: u64,
 84        a_size: u64,
 85        nrows: u64,
 86        ncols: u64,
 87    ) -> u64;
 88}
 89
 90unsafe extern "C" {
 91    pub unsafe fn vmp_prepare_contiguous(
 92        module: *const MODULE,
 93        pmat: *mut VMP_PMAT,
 94        mat: *const i64,
 95        nrows: u64,
 96        ncols: u64,
 97        tmp_space: *mut u8,
 98    );
 99}
100
101unsafe extern "C" {
102    pub unsafe fn vmp_prepare_tmp_bytes(module: *const MODULE, nn: u64, nrows: u64, ncols: u64) -> u64;
103}