Skip to content

Commit c828bb4

Browse files
committed
Extend component benchmarks
Resolves #308 This commit adds component benchmarks for various poly and polyvec functions that have been identified as potential optimizaton targets. Signed-off-by: Matthias J. Kannwischer <[email protected]>
1 parent bdb7ddd commit c828bb4

File tree

1 file changed

+38
-2
lines changed

1 file changed

+38
-2
lines changed

test/bench_components_mldsa.c

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <string.h>
1111
#include "../mldsa/ntt.h"
1212
#include "../mldsa/poly.h"
13+
#include "../mldsa/polyvec.h"
1314
#include "../mldsa/randombytes.h"
1415
#include "hal.h"
1516

@@ -26,6 +27,9 @@ static int cmp_uint64_t(const void *a, const void *b)
2627
for (i = 0; i < NTESTS; i++) \
2728
{ \
2829
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)); \
2933
for (j = 0; j < NWARMUP; j++) \
3034
{ \
3135
code; \
@@ -44,15 +48,47 @@ static int cmp_uint64_t(const void *a, const void *b)
4448

4549
static int bench(void)
4650
{
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];
4855
uint64_t cyc[NTESTS];
4956
unsigned i, j;
5057
uint64_t t0, t1;
5158

52-
/* ntt */
5359
BENCH("poly_ntt", poly_ntt((poly *)data0))
5460
BENCH("poly_invntt_tomont", poly_invntt_tomont((poly *)data0))
5561

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+
5692
return 0;
5793
}
5894

0 commit comments

Comments
 (0)