poulpy/poulpy-backend/src/cpu_fft64_avx/tests.rs
poulpy-backend/src/cpu_fft64_avx/tests.rsRaw
1use poulpy_hal::{
2 api::ModuleNew, backend_test_suite, cross_backend_test_suite, layouts::Module,
3 test_suite::convolution::test_bivariate_tensoring,
4};
5
6use crate::FFT64Avx;
7
8cross_backend_test_suite! {
9 mod vec_znx,
10 backend_ref = crate::cpu_fft64_ref::FFT64Ref,
11 backend_test = crate::cpu_fft64_avx::FFT64Avx,
12 size = 1 << 5,
13 base2k = 12,
14 tests = {
15 test_vec_znx_add => poulpy_hal::test_suite::vec_znx::test_vec_znx_add,
16 test_vec_znx_add_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_add_inplace,
17 test_vec_znx_add_scalar => poulpy_hal::test_suite::vec_znx::test_vec_znx_add_scalar,
18 test_vec_znx_add_scalar_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_add_scalar_inplace,
19 test_vec_znx_sub => poulpy_hal::test_suite::vec_znx::test_vec_znx_sub,
20 test_vec_znx_sub_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_sub_inplace,
21 test_vec_znx_sub_negate_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_sub_negate_inplace,
22 test_vec_znx_sub_scalar => poulpy_hal::test_suite::vec_znx::test_vec_znx_sub_scalar,
23 test_vec_znx_sub_scalar_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_sub_scalar_inplace,
24 test_vec_znx_rsh => poulpy_hal::test_suite::vec_znx::test_vec_znx_rsh,
25 test_vec_znx_rsh_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_rsh_inplace,
26 test_vec_znx_lsh => poulpy_hal::test_suite::vec_znx::test_vec_znx_lsh,
27 test_vec_znx_lsh_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_lsh_inplace,
28 test_vec_znx_negate => poulpy_hal::test_suite::vec_znx::test_vec_znx_negate,
29 test_vec_znx_negate_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_negate_inplace,
30 test_vec_znx_rotate => poulpy_hal::test_suite::vec_znx::test_vec_znx_rotate,
31 test_vec_znx_rotate_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_rotate_inplace,
32 test_vec_znx_automorphism => poulpy_hal::test_suite::vec_znx::test_vec_znx_automorphism,
33 test_vec_znx_automorphism_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_automorphism_inplace,
34 test_vec_znx_mul_xp_minus_one => poulpy_hal::test_suite::vec_znx::test_vec_znx_mul_xp_minus_one,
35 test_vec_znx_mul_xp_minus_one_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_mul_xp_minus_one_inplace,
36 test_vec_znx_normalize => poulpy_hal::test_suite::vec_znx::test_vec_znx_normalize,
37 test_vec_znx_normalize_inplace => poulpy_hal::test_suite::vec_znx::test_vec_znx_normalize_inplace,
38 test_vec_znx_switch_ring => poulpy_hal::test_suite::vec_znx::test_vec_znx_switch_ring,
39 test_vec_znx_split_ring => poulpy_hal::test_suite::vec_znx::test_vec_znx_split_ring,
40 test_vec_znx_copy => poulpy_hal::test_suite::vec_znx::test_vec_znx_copy,
41 }
42}
43
44cross_backend_test_suite! {
45 mod svp,
46 backend_ref = crate::cpu_fft64_ref::FFT64Ref,
47 backend_test = crate::cpu_fft64_avx::FFT64Avx,
48 size = 1 << 5,
49 base2k = 12,
50 tests = {
51 test_svp_apply_dft_to_dft => poulpy_hal::test_suite::svp::test_svp_apply_dft_to_dft,
52 test_svp_apply_dft_to_dft_inplace => poulpy_hal::test_suite::svp::test_svp_apply_dft_to_dft_inplace,
53 }
54}
55
56cross_backend_test_suite! {
57 mod vec_znx_big,
58 backend_ref = crate::cpu_fft64_ref::FFT64Ref,
59 backend_test = crate::cpu_fft64_avx::FFT64Avx,
60 size = 1 << 5,
61 base2k = 12,
62 tests = {
63 test_vec_znx_big_add => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_add,
64 test_vec_znx_big_add_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_add_inplace,
65 test_vec_znx_big_add_small => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_add_small,
66 test_vec_znx_big_add_small_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_add_small_inplace,
67 test_vec_znx_big_sub => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub,
68 test_vec_znx_big_sub_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub_inplace,
69 test_vec_znx_big_automorphism => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_automorphism,
70 test_vec_znx_big_automorphism_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_automorphism_inplace,
71 test_vec_znx_big_negate => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_negate,
72 test_vec_znx_big_negate_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_negate_inplace,
73 test_vec_znx_big_normalize => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_normalize,
74 test_vec_znx_big_sub_negate_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub_negate_inplace,
75 test_vec_znx_big_sub_small_a => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub_small_a,
76 test_vec_znx_big_sub_small_a_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub_small_a_inplace,
77 test_vec_znx_big_sub_small_b => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub_small_b,
78 test_vec_znx_big_sub_small_b_inplace => poulpy_hal::test_suite::vec_znx_big::test_vec_znx_big_sub_small_b_inplace,
79 }
80}
81
82cross_backend_test_suite! {
83 mod vec_znx_dft,
84 backend_ref = crate::cpu_fft64_ref::FFT64Ref,
85 backend_test = crate::cpu_fft64_avx::FFT64Avx,
86 size = 1 << 5,
87 base2k = 12,
88 tests = {
89 test_vec_znx_dft_add => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_dft_add,
90 test_vec_znx_dft_add_inplace => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_dft_add_inplace,
91 test_vec_znx_dft_sub => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_dft_sub,
92 test_vec_znx_dft_sub_inplace => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_dft_sub_inplace,
93 test_vec_znx_dft_sub_negate_inplace => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_dft_sub_negate_inplace,
94 test_vec_znx_idft_apply => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_idft_apply,
95 test_vec_znx_idft_apply_consume => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_idft_apply_consume,
96 test_vec_znx_idft_apply_tmpa => poulpy_hal::test_suite::vec_znx_dft::test_vec_znx_idft_apply_tmpa,
97 }
98}
99
100cross_backend_test_suite! {
101 mod vmp,
102 backend_ref = crate::cpu_fft64_ref::FFT64Ref,
103 backend_test = crate::cpu_fft64_avx::FFT64Avx,
104 size = 1 << 5,
105 base2k = 12,
106 tests = {
107 test_vmp_apply_dft_to_dft => poulpy_hal::test_suite::vmp::test_vmp_apply_dft_to_dft,
108 test_vmp_apply_dft_to_dft_add => poulpy_hal::test_suite::vmp::test_vmp_apply_dft_to_dft_add,
109 }
110}
111
112backend_test_suite! {
113 mod sampling,
114 backend = crate::cpu_fft64_avx::FFT64Avx,
115 size = 1 << 12,
116 tests = {
117 test_vec_znx_fill_uniform => poulpy_hal::test_suite::vec_znx::test_vec_znx_fill_uniform,
118 test_vec_znx_fill_normal => poulpy_hal::test_suite::vec_znx::test_vec_znx_fill_normal,
119 test_vec_znx_add_normal => poulpy_hal::test_suite::vec_znx::test_vec_znx_add_normal,
120 test_vec_znx_big_sub_small_b_inplace => poulpy_hal::reference::fft64::vec_znx_big::test_vec_znx_big_add_normal,
121 }
122}
123
124#[test]
125fn test_convolution_fft64_avx() {
126 let module: Module<FFT64Avx> = Module::<FFT64Avx>::new(64);
127 test_bivariate_tensoring(&module);
128}