poulpy/poulpy-backend/src/implementation/cpu_spqlios/module_ntt120.rs
poulpy-backend/src/implementation/cpu_spqlios/module_ntt120.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 NTT120;
15
16impl CPUAVX for NTT120 {}
17
18impl Backend for NTT120 {
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 NTT120 {
26 fn new_impl(n: u64) -> Module<Self> {
27 unsafe { Module::from_raw_parts(new_module_info(n, 1), n) }
28 }
29}