arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/poulpy-backend/src/cpu_spqlios/fft64/module.rs
poulpy-backend/src/cpu_spqlios/fft64/module.rsRaw
 1use std::ptr::NonNull;
 2
 3use poulpy_hal::{
 4    layouts::{Backend, Module},
 5    oep::ModuleNewImpl,
 6};
 7
 8use crate::cpu_spqlios::{
 9    FFT64Spqlios,
10    ffi::module::{MODULE, delete_module_info, new_module_info},
11};
12
13impl Backend for FFT64Spqlios {
14    type ScalarPrep = f64;
15    type ScalarBig = i64;
16    type Handle = MODULE;
17    unsafe fn destroy(handle: NonNull<Self::Handle>) {
18        unsafe { delete_module_info(handle.as_ptr()) }
19    }
20
21    fn layout_big_word_count() -> usize {
22        1
23    }
24
25    fn layout_prep_word_count() -> usize {
26        1
27    }
28}
29
30unsafe impl ModuleNewImpl<Self> for FFT64Spqlios {
31    fn new_impl(n: u64) -> Module<Self> {
32        unsafe { Module::from_raw_parts(new_module_info(n, 0), n) }
33    }
34}