From b5f63356224ebaaa9d5aa2d4424feb6d69b94d1b Mon Sep 17 00:00:00 2001 From: "Diego F. Aranha" Date: Sat, 9 Dec 2023 19:38:02 -0300 Subject: [PATCH] Added missing benchmarks. --- bench/bench_pp.c | 442 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 442 insertions(+) diff --git a/bench/bench_pp.c b/bench/bench_pp.c index 47b55c2d5..a90c4e329 100644 --- a/bench/bench_pp.c +++ b/bench/bench_pp.c @@ -550,6 +550,440 @@ static void pairing12(void) { } } +static void pairing16(void) { + bn_t k, n, l; + ep4_t p[2], r; + ep_t q[2]; + fp16_t e; + int j; + + bn_null(k); + bn_null(n); + bn_null(l); + ep4_null(r); + fp16_null(e); + + bn_new(k); + bn_new(n); + bn_new(l); + ep4_new(r); + fp16_new(e); + + for (j = 0; j < 2; j++) { + ep4_null(p[j]); + ep_null(q[j]); + ep4_new(p[j]); + ep_new(q[j]); + } + + ep4_curve_get_ord(n); + + BENCH_RUN("pp_add_k16") { + ep4_rand(p[0]); + ep4_dbl(r, p[0]); + ep4_norm(r, r); + ep_rand(q[0]); + BENCH_ADD(pp_add_k16(e, r, p[0], q[0])); + } + BENCH_END; + +#if EP_ADD == BASIC || !defined(STRIP) + BENCH_RUN("pp_add_k16_basic") { + ep4_rand(p[0]); + ep4_dbl(r, p[0]); + ep4_norm(r, r); + ep_rand(q[0]); + BENCH_ADD(pp_add_k16_basic(e, r, p[0], q[0])); + } + BENCH_END; +#endif + +#if EP_ADD == PROJC || !defined(STRIP) + + BENCH_RUN("pp_add_k16_projc") { + ep4_rand(p[0]); + ep4_dbl(r, p[0]); + ep4_norm(r, r); + ep_rand(q[0]); + BENCH_ADD(pp_add_k16_projc(e, r, p[0], q[0])); + } + BENCH_END; + +#if PP_EXT == BASIC || !defined(STRIP) + BENCH_RUN("pp_add_k16_projc_basic") { + ep4_rand(p[0]); + ep4_dbl(r, p[0]); + ep4_norm(r, r); + ep_rand(q[0]); + BENCH_ADD(pp_add_k16_projc_basic(e, r, p[0], q[0])); + } + BENCH_END; +#endif + +#if PP_EXT == LAZYR || !defined(STRIP) + BENCH_RUN("pp_add_k16_projc_lazyr") { + ep4_rand(p[0]); + ep4_dbl(r, p[0]); + ep4_norm(r, r); + ep_rand(q[0]); + BENCH_ADD(pp_add_k16_projc_lazyr(e, r, p[0], q[0])); + } + BENCH_END; +#endif + +#endif + + BENCH_RUN("pp_dbl_k16") { + ep4_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_dbl_k16(e, p[0], p[0], q[0])); + } + BENCH_END; + +#if EP_ADD == BASIC || !defined(STRIP) + BENCH_RUN("pp_dbl_k16_basic") { + ep4_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_dbl_k16_basic(e, p[0], p[0], q[0])); + } + BENCH_END; +#endif + +#if EP_ADD == PROJC || !defined(STRIP) + + BENCH_RUN("pp_dbl_k16_projc") { + ep4_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_dbl_k16_projc(e, p[0], p[0], q[0])); + } + BENCH_END; + +#if PP_EXT == BASIC || !defined(STRIP) + BENCH_RUN("pp_dbl_k16_projc_basic") { + ep4_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_dbl_k16_projc_basic(e, p[0], p[0], q[0])); + } + BENCH_END; +#endif + +#if PP_EXT == LAZYR || !defined(STRIP) + BENCH_RUN("pp_dbl_k16_projc_lazyr") { + ep4_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_dbl_k16_projc_lazyr(e, p[0], p[0], q[0])); + } + BENCH_END; +#endif + +#endif + + BENCH_RUN("pp_exp_k16") { + fp16_rand(e); + BENCH_ADD(pp_exp_k16(e, e)); + } + BENCH_END; + + BENCH_RUN("pp_map_k16") { + ep4_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_map_k16(e, q[0], p[0])); + } + BENCH_END; + + BENCH_RUN("pp_map_sim_k16 (2)") { + ep4_rand(p[0]); + ep_rand(q[0]); + ep4_rand(p[1]); + ep_rand(q[1]); + BENCH_ADD(pp_map_sim_k16(e, q, p, 2)); + } + BENCH_END; + +#if PP_MAP == TATEP || !defined(STRIP) + BENCH_RUN("pp_map_tatep_k16") { + ep4_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_map_tatep_k16(e, q[0], p[0])); + } + BENCH_END; + + BENCH_RUN("pp_map_tatep_sim_k16 (2)") { + ep4_rand(p[0]); + ep_rand(q[0]); + ep4_rand(p[1]); + ep_rand(q[1]); + BENCH_ADD(pp_map_sim_tatep_k16(e, q, p, 2)); + } + BENCH_END; +#endif + +#if PP_MAP == WEILP || !defined(STRIP) + BENCH_RUN("pp_map_weilp_k16") { + ep4_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_map_weilp_k16(e, q[0], p[0])); + } + BENCH_END; + + BENCH_RUN("pp_map_weilp_sim_k16 (2)") { + ep4_rand(p[0]); + ep_rand(q[0]); + ep4_rand(p[1]); + ep_rand(q[1]); + BENCH_ADD(pp_map_sim_weilp_k16(e, q, p, 2)); + } + BENCH_END; +#endif + +#if PP_MAP == OATEP || !defined(STRIP) + BENCH_RUN("pp_map_oatep_k16") { + ep4_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_map_oatep_k16(e, q[0], p[0])); + } + BENCH_END; +#endif + +#if PP_MAP == OATEP || !defined(STRIP) + BENCH_RUN("pp_map_sim_oatep_k16 (2)") { + ep4_rand(p[0]); + ep_rand(q[0]); + ep4_rand(p[1]); + ep_rand(q[1]); + BENCH_ADD(pp_map_sim_oatep_k16(e, q, p, 2)); + } + BENCH_END; +#endif + + bn_free(k); + bn_free(n); + bn_free(l); + fp16_free(e); + ep4_free(r); + for (j = 0; j < 2; j++) { + ep4_free(p[j]); + ep_free(q[j]); + } +} + +static void pairing18(void) { + bn_t k, n, l; + ep3_t p[2], r; + ep_t q[2]; + fp18_t e; + int j; + + bn_null(k); + bn_null(n); + bn_null(l); + ep3_null(r); + fp18_null(e); + + bn_new(k); + bn_new(n); + bn_new(l); + ep3_new(r); + fp18_new(e); + + for (j = 0; j < 2; j++) { + ep3_null(p[j]); + ep_null(q[j]); + ep3_new(p[j]); + ep_new(q[j]); + } + + ep3_curve_get_ord(n); + + BENCH_RUN("pp_add_k18") { + ep3_rand(p[0]); + ep3_dbl(r, p[0]); + ep3_norm(r, r); + ep_rand(q[0]); + BENCH_ADD(pp_add_k18(e, r, p[0], q[0])); + } + BENCH_END; + +#if EP_ADD == BASIC || !defined(STRIP) + BENCH_RUN("pp_add_k18_basic") { + ep3_rand(p[0]); + ep3_dbl(r, p[0]); + ep3_norm(r, r); + ep_rand(q[0]); + BENCH_ADD(pp_add_k18_basic(e, r, p[0], q[0])); + } + BENCH_END; +#endif + +#if EP_ADD == PROJC || !defined(STRIP) + + BENCH_RUN("pp_add_k18_projc") { + ep3_rand(p[0]); + ep3_dbl(r, p[0]); + ep3_norm(r, r); + ep_rand(q[0]); + BENCH_ADD(pp_add_k18_projc(e, r, p[0], q[0])); + } + BENCH_END; + +#if PP_EXT == BASIC || !defined(STRIP) + BENCH_RUN("pp_add_k18_projc_basic") { + ep3_rand(p[0]); + ep3_dbl(r, p[0]); + ep3_norm(r, r); + ep_rand(q[0]); + BENCH_ADD(pp_add_k18_projc_basic(e, r, p[0], q[0])); + } + BENCH_END; +#endif + +#if PP_EXT == LAZYR || !defined(STRIP) + BENCH_RUN("pp_add_k18_projc_lazyr") { + ep3_rand(p[0]); + ep3_dbl(r, p[0]); + ep3_norm(r, r); + ep_rand(q[0]); + BENCH_ADD(pp_add_k18_projc_lazyr(e, r, p[0], q[0])); + } + BENCH_END; +#endif + +#endif + + BENCH_RUN("pp_dbl_k18") { + ep3_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_dbl_k18(e, p[0], p[0], q[0])); + } + BENCH_END; + +#if EP_ADD == BASIC || !defined(STRIP) + BENCH_RUN("pp_dbl_k18_basic") { + ep3_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_dbl_k18_basic(e, p[0], p[0], q[0])); + } + BENCH_END; +#endif + +#if EP_ADD == PROJC || !defined(STRIP) + + BENCH_RUN("pp_dbl_k18_projc") { + ep3_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_dbl_k18_projc(e, p[0], p[0], q[0])); + } + BENCH_END; + +#if PP_EXT == BASIC || !defined(STRIP) + BENCH_RUN("pp_dbl_k18_projc_basic") { + ep3_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_dbl_k18_projc_basic(e, p[0], p[0], q[0])); + } + BENCH_END; +#endif + +#if PP_EXT == LAZYR || !defined(STRIP) + BENCH_RUN("pp_dbl_k18_projc_lazyr") { + ep3_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_dbl_k18_projc_lazyr(e, p[0], p[0], q[0])); + } + BENCH_END; +#endif + +#endif + + BENCH_RUN("pp_exp_k18") { + fp18_rand(e); + BENCH_ADD(pp_exp_k18(e, e)); + } + BENCH_END; + + BENCH_RUN("pp_map_k18") { + ep3_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_map_k18(e, q[0], p[0])); + } + BENCH_END; + + BENCH_RUN("pp_map_sim_k18 (2)") { + ep3_rand(p[0]); + ep_rand(q[0]); + ep3_rand(p[1]); + ep_rand(q[1]); + BENCH_ADD(pp_map_sim_k18(e, q, p, 2)); + } + BENCH_END; + +#if PP_MAP == TATEP || !defined(STRIP) + BENCH_RUN("pp_map_tatep_k18") { + ep3_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_map_tatep_k18(e, q[0], p[0])); + } + BENCH_END; + + BENCH_RUN("pp_map_tatep_sim_k18 (2)") { + ep3_rand(p[0]); + ep_rand(q[0]); + ep3_rand(p[1]); + ep_rand(q[1]); + BENCH_ADD(pp_map_sim_tatep_k18(e, q, p, 2)); + } + BENCH_END; +#endif + +#if PP_MAP == WEILP || !defined(STRIP) + BENCH_RUN("pp_map_weilp_k18") { + ep3_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_map_weilp_k18(e, q[0], p[0])); + } + BENCH_END; + + BENCH_RUN("pp_map_weilp_sim_k18 (2)") { + ep3_rand(p[0]); + ep_rand(q[0]); + ep3_rand(p[1]); + ep_rand(q[1]); + BENCH_ADD(pp_map_sim_weilp_k18(e, q, p, 2)); + } + BENCH_END; +#endif + +#if PP_MAP == OATEP || !defined(STRIP) + BENCH_RUN("pp_map_oatep_k18") { + ep3_rand(p[0]); + ep_rand(q[0]); + BENCH_ADD(pp_map_oatep_k18(e, q[0], p[0])); + } + BENCH_END; +#endif + +#if PP_MAP == OATEP || !defined(STRIP) + BENCH_RUN("pp_map_sim_oatep_k18 (2)") { + ep3_rand(p[0]); + ep_rand(q[0]); + ep3_rand(p[1]); + ep_rand(q[1]); + BENCH_ADD(pp_map_sim_oatep_k18(e, q, p, 2)); + } + BENCH_END; +#endif + + bn_free(k); + bn_free(n); + bn_free(l); + fp18_free(e); + ep3_free(r); + for (j = 0; j < 2; j++) { + ep3_free(p[j]); + ep_free(q[j]); + } +} + static void pairing24(void) { bn_t k, n, l; ep4_t p[2], r; @@ -923,6 +1357,14 @@ int main(void) { pairing12(); } + if (ep_param_embed() == 16) { + pairing16(); + } + + if (ep_param_embed() == 18) { + pairing18(); + } + if (ep_param_embed() == 48) { pairing24(); }