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}