arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/poulpy-backend/src/implementation/cpu_spqlios/module_fft64.rs
poulpy-backend/src/implementation/cpu_spqlios/module_fft64.rsRaw
 1use std::ptr::NonNull;
 2
 3use crate::{
 4    hal::{
 5        layouts::{Backend, Module},
 6        oep::ModuleNewImpl,
 7    },
 8    implementation::cpu_spqlios::{
 9        CPUAVX,
10        ffi::module::{MODULE, delete_module_info, new_module_info},
11    },
12};
13
14pub struct FFT64;
15
16impl CPUAVX for FFT64 {}
17
18impl Backend for FFT64 {
19    type Handle = MODULE;
20    unsafe fn destroy(handle: NonNull<Self::Handle>) {
21        unsafe { delete_module_info(handle.as_ptr()) }
22    }
23}
24
25unsafe impl ModuleNewImpl<Self> for FFT64 {
26    fn new_impl(n: u64) -> Module<Self> {
27        unsafe { Module::from_raw_parts(new_module_info(n, 0), n) }
28    }
29}