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::ffi::module::{MODULE, delete_module_info, new_module_info};
 9
10pub struct FFT64;
11
12impl Backend for FFT64 {
13    type ScalarPrep = f64;
14    type ScalarBig = i64;
15    type Handle = MODULE;
16    unsafe fn destroy(handle: NonNull<Self::Handle>) {
17        unsafe { delete_module_info(handle.as_ptr()) }
18    }
19
20    fn layout_big_word_count() -> usize {
21        1
22    }
23
24    fn layout_prep_word_count() -> usize {
25        1
26    }
27}
28
29unsafe impl ModuleNewImpl<Self> for FFT64 {
30    fn new_impl(n: u64) -> Module<Self> {
31        unsafe { Module::from_raw_parts(new_module_info(n, 0), n) }
32    }
33}