arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/poulpy-backend/src/cpu_spqlios/spqlios-arithmetic/spqlios/arithmetic/vec_rnx_arithmetic_plugin.h
poulpy-backend/src/cpu_spqlios/spqlios-arithmetic/spqlios/arithmetic/vec_rnx_arithmetic_plugin.hRaw
 1#ifndef SPQLIOS_VEC_RNX_ARITHMETIC_PLUGIN_H
 2#define SPQLIOS_VEC_RNX_ARITHMETIC_PLUGIN_H
 3
 4#include "vec_rnx_arithmetic.h"
 5
 6typedef typeof(vec_rnx_zero) VEC_RNX_ZERO_F;
 7typedef typeof(vec_rnx_copy) VEC_RNX_COPY_F;
 8typedef typeof(vec_rnx_negate) VEC_RNX_NEGATE_F;
 9typedef typeof(vec_rnx_add) VEC_RNX_ADD_F;
10typedef typeof(vec_rnx_sub) VEC_RNX_SUB_F;
11typedef typeof(vec_rnx_rotate) VEC_RNX_ROTATE_F;
12typedef typeof(vec_rnx_mul_xp_minus_one) VEC_RNX_MUL_XP_MINUS_ONE_F;
13typedef typeof(vec_rnx_automorphism) VEC_RNX_AUTOMORPHISM_F;
14typedef typeof(vec_rnx_to_znx32) VEC_RNX_TO_ZNX32_F;
15typedef typeof(vec_rnx_from_znx32) VEC_RNX_FROM_ZNX32_F;
16typedef typeof(vec_rnx_to_tnx32) VEC_RNX_TO_TNX32_F;
17typedef typeof(vec_rnx_from_tnx32) VEC_RNX_FROM_TNX32_F;
18typedef typeof(vec_rnx_to_tnx32x2) VEC_RNX_TO_TNX32X2_F;
19typedef typeof(vec_rnx_from_tnx32x2) VEC_RNX_FROM_TNX32X2_F;
20typedef typeof(vec_rnx_to_tnxdbl) VEC_RNX_TO_TNXDBL_F;
21// typedef typeof(vec_rnx_from_tnxdbl) VEC_RNX_FROM_TNXDBL_F;
22typedef typeof(rnx_small_single_product) RNX_SMALL_SINGLE_PRODUCT_F;
23typedef typeof(rnx_small_single_product_tmp_bytes) RNX_SMALL_SINGLE_PRODUCT_TMP_BYTES_F;
24typedef typeof(tnxdbl_small_single_product) TNXDBL_SMALL_SINGLE_PRODUCT_F;
25typedef typeof(tnxdbl_small_single_product_tmp_bytes) TNXDBL_SMALL_SINGLE_PRODUCT_TMP_BYTES_F;
26typedef typeof(znx32_small_single_product) ZNX32_SMALL_SINGLE_PRODUCT_F;
27typedef typeof(znx32_small_single_product_tmp_bytes) ZNX32_SMALL_SINGLE_PRODUCT_TMP_BYTES_F;
28typedef typeof(tnx32_small_single_product) TNX32_SMALL_SINGLE_PRODUCT_F;
29typedef typeof(tnx32_small_single_product_tmp_bytes) TNX32_SMALL_SINGLE_PRODUCT_TMP_BYTES_F;
30typedef typeof(rnx_approxdecomp_from_tnx32) RNX_APPROXDECOMP_FROM_TNX32_F;
31typedef typeof(rnx_approxdecomp_from_tnx32x2) RNX_APPROXDECOMP_FROM_TNX32X2_F;
32typedef typeof(rnx_approxdecomp_from_tnxdbl) RNX_APPROXDECOMP_FROM_TNXDBL_F;
33typedef typeof(bytes_of_rnx_svp_ppol) BYTES_OF_RNX_SVP_PPOL_F;
34typedef typeof(rnx_svp_prepare) RNX_SVP_PREPARE_F;
35typedef typeof(rnx_svp_apply) RNX_SVP_APPLY_F;
36typedef typeof(bytes_of_rnx_vmp_pmat) BYTES_OF_RNX_VMP_PMAT_F;
37typedef typeof(rnx_vmp_prepare_contiguous) RNX_VMP_PREPARE_CONTIGUOUS_F;
38typedef typeof(rnx_vmp_prepare_dblptr) RNX_VMP_PREPARE_DBLPTR_F;
39typedef typeof(rnx_vmp_prepare_row) RNX_VMP_PREPARE_ROW_F;
40typedef typeof(rnx_vmp_prepare_tmp_bytes) RNX_VMP_PREPARE_TMP_BYTES_F;
41typedef typeof(rnx_vmp_apply_tmp_a) RNX_VMP_APPLY_TMP_A_F;
42typedef typeof(rnx_vmp_apply_tmp_a_tmp_bytes) RNX_VMP_APPLY_TMP_A_TMP_BYTES_F;
43typedef typeof(rnx_vmp_apply_dft_to_dft) RNX_VMP_APPLY_DFT_TO_DFT_F;
44typedef typeof(rnx_vmp_apply_dft_to_dft_tmp_bytes) RNX_VMP_APPLY_DFT_TO_DFT_TMP_BYTES_F;
45typedef typeof(vec_rnx_dft) VEC_RNX_DFT_F;
46typedef typeof(vec_rnx_idft) VEC_RNX_IDFT_F;
47
48typedef struct rnx_module_vtable_t RNX_MODULE_VTABLE;
49struct rnx_module_vtable_t {
50  VEC_RNX_ZERO_F* vec_rnx_zero;
51  VEC_RNX_COPY_F* vec_rnx_copy;
52  VEC_RNX_NEGATE_F* vec_rnx_negate;
53  VEC_RNX_ADD_F* vec_rnx_add;
54  VEC_RNX_SUB_F* vec_rnx_sub;
55  VEC_RNX_ROTATE_F* vec_rnx_rotate;
56  VEC_RNX_MUL_XP_MINUS_ONE_F* vec_rnx_mul_xp_minus_one;
57  VEC_RNX_AUTOMORPHISM_F* vec_rnx_automorphism;
58  VEC_RNX_TO_ZNX32_F* vec_rnx_to_znx32;
59  VEC_RNX_FROM_ZNX32_F* vec_rnx_from_znx32;
60  VEC_RNX_TO_TNX32_F* vec_rnx_to_tnx32;
61  VEC_RNX_FROM_TNX32_F* vec_rnx_from_tnx32;
62  VEC_RNX_TO_TNX32X2_F* vec_rnx_to_tnx32x2;
63  VEC_RNX_FROM_TNX32X2_F* vec_rnx_from_tnx32x2;
64  VEC_RNX_TO_TNXDBL_F* vec_rnx_to_tnxdbl;
65  RNX_SMALL_SINGLE_PRODUCT_F* rnx_small_single_product;
66  RNX_SMALL_SINGLE_PRODUCT_TMP_BYTES_F* rnx_small_single_product_tmp_bytes;
67  TNXDBL_SMALL_SINGLE_PRODUCT_F* tnxdbl_small_single_product;
68  TNXDBL_SMALL_SINGLE_PRODUCT_TMP_BYTES_F* tnxdbl_small_single_product_tmp_bytes;
69  ZNX32_SMALL_SINGLE_PRODUCT_F* znx32_small_single_product;
70  ZNX32_SMALL_SINGLE_PRODUCT_TMP_BYTES_F* znx32_small_single_product_tmp_bytes;
71  TNX32_SMALL_SINGLE_PRODUCT_F* tnx32_small_single_product;
72  TNX32_SMALL_SINGLE_PRODUCT_TMP_BYTES_F* tnx32_small_single_product_tmp_bytes;
73  RNX_APPROXDECOMP_FROM_TNX32_F* rnx_approxdecomp_from_tnx32;
74  RNX_APPROXDECOMP_FROM_TNX32X2_F* rnx_approxdecomp_from_tnx32x2;
75  RNX_APPROXDECOMP_FROM_TNXDBL_F* rnx_approxdecomp_from_tnxdbl;
76  BYTES_OF_RNX_SVP_PPOL_F* bytes_of_rnx_svp_ppol;
77  RNX_SVP_PREPARE_F* rnx_svp_prepare;
78  RNX_SVP_APPLY_F* rnx_svp_apply;
79  BYTES_OF_RNX_VMP_PMAT_F* bytes_of_rnx_vmp_pmat;
80  RNX_VMP_PREPARE_CONTIGUOUS_F* rnx_vmp_prepare_contiguous;
81  RNX_VMP_PREPARE_DBLPTR_F* rnx_vmp_prepare_dblptr;
82  RNX_VMP_PREPARE_ROW_F* rnx_vmp_prepare_row;
83  RNX_VMP_PREPARE_TMP_BYTES_F* rnx_vmp_prepare_tmp_bytes;
84  RNX_VMP_APPLY_TMP_A_F* rnx_vmp_apply_tmp_a;
85  RNX_VMP_APPLY_TMP_A_TMP_BYTES_F* rnx_vmp_apply_tmp_a_tmp_bytes;
86  RNX_VMP_APPLY_DFT_TO_DFT_F* rnx_vmp_apply_dft_to_dft;
87  RNX_VMP_APPLY_DFT_TO_DFT_TMP_BYTES_F* rnx_vmp_apply_dft_to_dft_tmp_bytes;
88  VEC_RNX_DFT_F* vec_rnx_dft;
89  VEC_RNX_IDFT_F* vec_rnx_idft;
90};
91
92#endif  // SPQLIOS_VEC_RNX_ARITHMETIC_PLUGIN_H