10
10
#include <string.h>
11
11
#include "../mldsa/ntt.h"
12
12
#include "../mldsa/poly.h"
13
+ #include "../mldsa/polyvec.h"
13
14
#include "../mldsa/randombytes.h"
14
15
#include "hal.h"
15
16
@@ -26,6 +27,9 @@ static int cmp_uint64_t(const void *a, const void *b)
26
27
for (i = 0; i < NTESTS; i++) \
27
28
{ \
28
29
randombytes((uint8_t *)data0, sizeof(data0)); \
30
+ randombytes((uint8_t *)data1, sizeof(data1)); \
31
+ randombytes((uint8_t *)data2, sizeof(data2)); \
32
+ randombytes((uint8_t *)data3, sizeof(data3)); \
29
33
for (j = 0; j < NWARMUP; j++) \
30
34
{ \
31
35
code; \
@@ -44,15 +48,47 @@ static int cmp_uint64_t(const void *a, const void *b)
44
48
45
49
static int bench (void )
46
50
{
47
- MLD_ALIGN int32_t data0 [256 ];
51
+ MLD_ALIGN int32_t data0 [MLDSA_N * MLDSA_K ];
52
+ MLD_ALIGN int32_t data1 [MLDSA_N * MLDSA_K ];
53
+ MLD_ALIGN int32_t data2 [MLDSA_N * MLDSA_K ];
54
+ MLD_ALIGN int32_t data3 [MLDSA_N * MLDSA_K ];
48
55
uint64_t cyc [NTESTS ];
49
56
unsigned i , j ;
50
57
uint64_t t0 , t1 ;
51
58
52
- /* ntt */
53
59
BENCH ("poly_ntt" , poly_ntt ((poly * )data0 ))
54
60
BENCH ("poly_invntt_tomont" , poly_invntt_tomont ((poly * )data0 ))
55
61
62
+ BENCH ("poly_pointwise_montgomery" ,
63
+ poly_pointwise_montgomery ((poly * )data0 , (poly * )data1 , (poly * )data2 ))
64
+ BENCH ("poly_reduce" , poly_reduce ((poly * )data0 ))
65
+ BENCH ("poly_caddq" , poly_caddq ((poly * )data0 ))
66
+ BENCH ("poly_add" , poly_add ((poly * )data0 , (poly * )data1 ))
67
+ BENCH ("poly_sub" , poly_sub ((poly * )data0 , (poly * )data1 ))
68
+ BENCH ("poly_shiftl" , poly_shiftl ((poly * )data0 ))
69
+ BENCH ("poly_power2round" ,
70
+ poly_power2round ((poly * )data0 , (poly * )data1 , (poly * )data2 ))
71
+ BENCH ("poly_decompose" ,
72
+ poly_decompose ((poly * )data0 , (poly * )data1 , (poly * )data2 ))
73
+ BENCH ("poly_make_hint" ,
74
+ poly_make_hint ((poly * )data0 , (poly * )data1 , (poly * )data2 ))
75
+ BENCH ("poly_use_hint" ,
76
+ poly_use_hint ((poly * )data0 , (poly * )data1 , (poly * )data2 ))
77
+ BENCH ("poly_chknorm" , poly_chknorm ((poly * )data0 , INT32_MAX ))
78
+ BENCH ("polyz_unpack" , polyz_unpack ((poly * )data0 , (uint8_t * )data1 ))
79
+ BENCH ("polyw1_pack" , polyw1_pack ((uint8_t * )data0 , (poly * )data1 ))
80
+ BENCH ("polyt1_unpack" , polyt1_unpack ((poly * )data0 , (uint8_t * )data1 ))
81
+ BENCH ("polyt1_unpack" , polyt1_unpack ((poly * )data0 , (uint8_t * )data1 ))
82
+ BENCH ("poly_uniform" , poly_uniform ((poly * )data0 , (uint8_t * )data1 ))
83
+ BENCH ("poly_uniform_4x" , poly_uniform ((poly * )data0 , (uint8_t * )data1 ))
84
+ BENCH ("poly_uniform_eta_4x" ,
85
+ poly_uniform_eta_4x ((poly * )data0 , (poly * )data1 , (poly * )data2 ,
86
+ (poly * )data3 , (uint8_t * )data1 , 0 , 1 , 2 , 3 ))
87
+
88
+ BENCH ("polyvecl_pointwise_acc_montgomery" ,
89
+ polyvecl_pointwise_acc_montgomery ((poly * )data0 , (polyvecl * )data1 ,
90
+ (polyvecl * )data2 ))
91
+
56
92
return 0 ;
57
93
}
58
94
0 commit comments