52 static const unsigned char init[4][32] = {
56 0x02, 0x03, 0x05, 0x07, 0x0b, 0x0d, 0x11, 0x13,
57 0x17, 0x1d, 0x1f, 0x25, 0x29, 0x2b, 0x2f, 0x35,
58 0x3b, 0x3d, 0x43, 0x47, 0x49, 0x4f, 0x53, 0x59,
59 0x61, 0x65, 0x67, 0x6b, 0x6d, 0x71, 0x7f, 0x83
64 0x82, 0x83, 0x85, 0x87, 0x8b, 0x8d, 0x81, 0x83,
65 0x97, 0xad, 0xaf, 0xb5, 0xb9, 0xbb, 0xbf, 0xc5,
66 0xdb, 0xdd, 0xe3, 0xe7, 0xe9, 0xef, 0xf3, 0xf9,
67 0x11, 0x15, 0x17, 0x1b, 0x1d, 0xb1, 0xbf, 0xd3
71 0x3d, 0x2d, 0xef, 0xf4, 0x25, 0x98, 0x4f, 0x5d,
72 0xe2, 0xca, 0x5f, 0x41, 0x3f, 0x3f, 0xce, 0x44,
73 0xaa, 0x2c, 0x53, 0x8a, 0xc6, 0x59, 0x1f, 0x38,
74 0x38, 0x23, 0xe4, 0x11, 0x27, 0xc6, 0xa0, 0xe7
78 0xbd, 0x21, 0xa5, 0xe1, 0x13, 0x50, 0x73, 0x2e,
79 0x52, 0x98, 0xc8, 0x9e, 0xab, 0x00, 0xa2, 0x68,
80 0x43, 0xf5, 0xd7, 0x49, 0x80, 0x72, 0xa7, 0xf3,
81 0xd7, 0x60, 0xe6, 0xab, 0x90, 0x92, 0xdf, 0xc5
85 secp256k1_scalar_set_b32(&data->scalar[0],
init[0], NULL);
86 secp256k1_scalar_set_b32(&data->scalar[1],
init[1], NULL);
91 CHECK(secp256k1_ge_set_xo_var(&data->ge[0], &data->fe[0], 0));
92 CHECK(secp256k1_ge_set_xo_var(&data->ge[1], &data->fe[1], 1));
93 secp256k1_gej_set_ge(&data->gej[0], &data->ge[0]);
94 secp256k1_gej_rescale(&data->gej[0], &data->fe[2]);
95 secp256k1_gej_set_ge(&data->gej[1], &data->ge[1]);
96 secp256k1_gej_rescale(&data->gej[1], &data->fe[3]);
97 memcpy(data->data,
init[0], 32);
98 memcpy(data->data + 32,
init[1], 32);
386int main(
int argc,
char **argv) {
389 int default_iters = 20000;
407 if (d ||
have_flag(argc, argv,
"scalar") ||
have_flag(argc, argv,
"half"))
run_benchmark(
"scalar_half",
bench_scalar_half,
bench_setup, NULL, &data, 10, iters*100);
408 if (d ||
have_flag(argc, argv,
"scalar") ||
have_flag(argc, argv,
"add"))
run_benchmark(
"scalar_add",
bench_scalar_add,
bench_setup, NULL, &data, 10, iters*100);
409 if (d ||
have_flag(argc, argv,
"scalar") ||
have_flag(argc, argv,
"negate"))
run_benchmark(
"scalar_negate",
bench_scalar_negate,
bench_setup, NULL, &data, 10, iters*100);
410 if (d ||
have_flag(argc, argv,
"scalar") ||
have_flag(argc, argv,
"mul"))
run_benchmark(
"scalar_mul",
bench_scalar_mul,
bench_setup, NULL, &data, 10, iters*10);
411 if (d ||
have_flag(argc, argv,
"scalar") ||
have_flag(argc, argv,
"split"))
run_benchmark(
"scalar_split",
bench_scalar_split,
bench_setup, NULL, &data, 10, iters);
412 if (d ||
have_flag(argc, argv,
"scalar") ||
have_flag(argc, argv,
"inverse"))
run_benchmark(
"scalar_inverse",
bench_scalar_inverse,
bench_setup, NULL, &data, 10, iters);
413 if (d ||
have_flag(argc, argv,
"scalar") ||
have_flag(argc, argv,
"inverse"))
run_benchmark(
"scalar_inverse_var",
bench_scalar_inverse_var,
bench_setup, NULL, &data, 10, iters);
415 if (d ||
have_flag(argc, argv,
"field") ||
have_flag(argc, argv,
"half"))
run_benchmark(
"field_half",
bench_field_half,
bench_setup, NULL, &data, 10, iters*100);
416 if (d ||
have_flag(argc, argv,
"field") ||
have_flag(argc, argv,
"normalize"))
run_benchmark(
"field_normalize",
bench_field_normalize,
bench_setup, NULL, &data, 10, iters*100);
417 if (d ||
have_flag(argc, argv,
"field") ||
have_flag(argc, argv,
"normalize"))
run_benchmark(
"field_normalize_weak",
bench_field_normalize_weak,
bench_setup, NULL, &data, 10, iters*100);
418 if (d ||
have_flag(argc, argv,
"field") ||
have_flag(argc, argv,
"sqr"))
run_benchmark(
"field_sqr",
bench_field_sqr,
bench_setup, NULL, &data, 10, iters*10);
419 if (d ||
have_flag(argc, argv,
"field") ||
have_flag(argc, argv,
"mul"))
run_benchmark(
"field_mul",
bench_field_mul,
bench_setup, NULL, &data, 10, iters*10);
420 if (d ||
have_flag(argc, argv,
"field") ||
have_flag(argc, argv,
"inverse"))
run_benchmark(
"field_inverse",
bench_field_inverse,
bench_setup, NULL, &data, 10, iters);
421 if (d ||
have_flag(argc, argv,
"field") ||
have_flag(argc, argv,
"inverse"))
run_benchmark(
"field_inverse_var",
bench_field_inverse_var,
bench_setup, NULL, &data, 10, iters);
422 if (d ||
have_flag(argc, argv,
"field") ||
have_flag(argc, argv,
"issquare"))
run_benchmark(
"field_is_square_var",
bench_field_is_square_var,
bench_setup, NULL, &data, 10, iters);
423 if (d ||
have_flag(argc, argv,
"field") ||
have_flag(argc, argv,
"sqrt"))
run_benchmark(
"field_sqrt",
bench_field_sqrt,
bench_setup, NULL, &data, 10, iters);
425 if (d ||
have_flag(argc, argv,
"group") ||
have_flag(argc, argv,
"double"))
run_benchmark(
"group_double_var",
bench_group_double_var,
bench_setup, NULL, &data, 10, iters*10);
426 if (d ||
have_flag(argc, argv,
"group") ||
have_flag(argc, argv,
"add"))
run_benchmark(
"group_add_var",
bench_group_add_var,
bench_setup, NULL, &data, 10, iters*10);
427 if (d ||
have_flag(argc, argv,
"group") ||
have_flag(argc, argv,
"add"))
run_benchmark(
"group_add_affine",
bench_group_add_affine,
bench_setup, NULL, &data, 10, iters*10);
428 if (d ||
have_flag(argc, argv,
"group") ||
have_flag(argc, argv,
"add"))
run_benchmark(
"group_add_affine_var",
bench_group_add_affine_var,
bench_setup, NULL, &data, 10, iters*10);
429 if (d ||
have_flag(argc, argv,
"group") ||
have_flag(argc, argv,
"add"))
run_benchmark(
"group_add_zinv_var",
bench_group_add_zinv_var,
bench_setup, NULL, &data, 10, iters*10);
430 if (d ||
have_flag(argc, argv,
"group") ||
have_flag(argc, argv,
"to_affine"))
run_benchmark(
"group_to_affine_var",
bench_group_to_affine_var,
bench_setup, NULL, &data, 10, iters);
432 if (d ||
have_flag(argc, argv,
"ecmult") ||
have_flag(argc, argv,
"wnaf"))
run_benchmark(
"ecmult_wnaf",
bench_ecmult_wnaf,
bench_setup, NULL, &data, 10, iters);
434 if (d ||
have_flag(argc, argv,
"hash") ||
have_flag(argc, argv,
"sha256"))
run_benchmark(
"hash_sha256",
bench_sha256,
bench_setup, NULL, &data, 10, iters);
435 if (d ||
have_flag(argc, argv,
"hash") ||
have_flag(argc, argv,
"hmac"))
run_benchmark(
"hash_hmac_sha256",
bench_hmac_sha256,
bench_setup, NULL, &data, 10, iters);
436 if (d ||
have_flag(argc, argv,
"hash") ||
have_flag(argc, argv,
"rng6979"))
run_benchmark(
"hash_rfc6979_hmac_sha256",
bench_rfc6979_hmac_sha256,
bench_setup, NULL, &data, 10, iters);