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}