Skip to content

Commit

Permalink
Add memory fence to bench_internal
Browse files Browse the repository at this point in the history
  • Loading branch information
elichai committed Sep 27, 2019
1 parent 96cd94e commit 28a460e
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
4 changes: 4 additions & 0 deletions src/bench.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@
#include <math.h>
#include "sys/time.h"

static void espcase(void *p) {
__asm__ __volatile__("": : "g"(p) : "memory");
}

static double gettimedouble(void) {
struct timeval tv;
gettimeofday(&tv, NULL);
Expand Down
30 changes: 28 additions & 2 deletions src/bench_internal.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ typedef struct {
int wnaf[256];
} bench_inv;


void bench_setup(void* arg) {
bench_inv *data = (bench_inv*)arg;

Expand Down Expand Up @@ -62,6 +63,7 @@ void bench_scalar_add(void* arg) {

for (i = 0; i < 2000000; i++) {
secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y);
espcase(data);
}
}

Expand All @@ -71,6 +73,7 @@ void bench_scalar_negate(void* arg) {

for (i = 0; i < 2000000; i++) {
secp256k1_scalar_negate(&data->scalar_x, &data->scalar_x);
espcase(data);
}
}

Expand All @@ -80,6 +83,7 @@ void bench_scalar_sqr(void* arg) {

for (i = 0; i < 200000; i++) {
secp256k1_scalar_sqr(&data->scalar_x, &data->scalar_x);
espcase(data);
}
}

Expand All @@ -89,6 +93,7 @@ void bench_scalar_mul(void* arg) {

for (i = 0; i < 200000; i++) {
secp256k1_scalar_mul(&data->scalar_x, &data->scalar_x, &data->scalar_y);
espcase(data);
}
}

Expand All @@ -101,6 +106,7 @@ void bench_scalar_split(void* arg) {
secp256k1_scalar l, r;
secp256k1_scalar_split_lambda(&l, &r, &data->scalar_x);
secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y);
espcase(data);
}
}
#endif
Expand All @@ -112,6 +118,7 @@ void bench_scalar_inverse(void* arg) {
for (i = 0; i < 2000; i++) {
secp256k1_scalar_inverse(&data->scalar_x, &data->scalar_x);
secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y);
espcase(data);
}
}

Expand All @@ -122,6 +129,7 @@ void bench_scalar_inverse_var(void* arg) {
for (i = 0; i < 2000; i++) {
secp256k1_scalar_inverse_var(&data->scalar_x, &data->scalar_x);
secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y);
espcase(data);
}
}

Expand All @@ -131,6 +139,7 @@ void bench_field_normalize(void* arg) {

for (i = 0; i < 2000000; i++) {
secp256k1_fe_normalize(&data->fe_x);
espcase(data);
}
}

Expand All @@ -140,6 +149,7 @@ void bench_field_normalize_weak(void* arg) {

for (i = 0; i < 2000000; i++) {
secp256k1_fe_normalize_weak(&data->fe_x);
espcase(data);
}
}

Expand All @@ -149,6 +159,7 @@ void bench_field_mul(void* arg) {

for (i = 0; i < 200000; i++) {
secp256k1_fe_mul(&data->fe_x, &data->fe_x, &data->fe_y);
espcase(data);
}
}

Expand All @@ -158,6 +169,7 @@ void bench_field_sqr(void* arg) {

for (i = 0; i < 200000; i++) {
secp256k1_fe_sqr(&data->fe_x, &data->fe_x);
espcase(data);
}
}

Expand All @@ -168,6 +180,7 @@ void bench_field_inverse(void* arg) {
for (i = 0; i < 20000; i++) {
secp256k1_fe_inv(&data->fe_x, &data->fe_x);
secp256k1_fe_add(&data->fe_x, &data->fe_y);
espcase(data);
}
}

Expand All @@ -178,6 +191,7 @@ void bench_field_inverse_var(void* arg) {
for (i = 0; i < 20000; i++) {
secp256k1_fe_inv_var(&data->fe_x, &data->fe_x);
secp256k1_fe_add(&data->fe_x, &data->fe_y);
espcase(data);
}
}

Expand All @@ -190,6 +204,7 @@ void bench_field_sqrt(void* arg) {
t = data->fe_x;
secp256k1_fe_sqrt(&data->fe_x, &t);
secp256k1_fe_add(&data->fe_x, &data->fe_y);
espcase(data);
}
}

Expand All @@ -199,6 +214,7 @@ void bench_group_double_var(void* arg) {

for (i = 0; i < 200000; i++) {
secp256k1_gej_double_var(&data->gej_x, &data->gej_x, NULL);
espcase(data);
}
}

Expand All @@ -208,6 +224,7 @@ void bench_group_add_var(void* arg) {

for (i = 0; i < 200000; i++) {
secp256k1_gej_add_var(&data->gej_x, &data->gej_x, &data->gej_y, NULL);
espcase(data);
}
}

Expand All @@ -217,6 +234,7 @@ void bench_group_add_affine(void* arg) {

for (i = 0; i < 200000; i++) {
secp256k1_gej_add_ge(&data->gej_x, &data->gej_x, &data->ge_y);
espcase(data);
}
}

Expand All @@ -226,6 +244,7 @@ void bench_group_add_affine_var(void* arg) {

for (i = 0; i < 200000; i++) {
secp256k1_gej_add_ge_var(&data->gej_x, &data->gej_x, &data->ge_y, NULL);
espcase(data);
}
}

Expand All @@ -235,6 +254,7 @@ void bench_group_jacobi_var(void* arg) {

for (i = 0; i < 20000; i++) {
secp256k1_gej_has_quad_y_var(&data->gej_x);
espcase(data);
}
}

Expand All @@ -245,6 +265,7 @@ void bench_ecmult_wnaf(void* arg) {
for (i = 0; i < 20000; i++) {
secp256k1_ecmult_wnaf(data->wnaf, 256, &data->scalar_x, WINDOW_A);
secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y);
espcase(data);
}
}

Expand All @@ -255,6 +276,7 @@ void bench_wnaf_const(void* arg) {
for (i = 0; i < 20000; i++) {
secp256k1_wnaf_const(data->wnaf, &data->scalar_x, WINDOW_A, 256);
secp256k1_scalar_add(&data->scalar_x, &data->scalar_x, &data->scalar_y);
espcase(data);
}
}

Expand All @@ -268,6 +290,7 @@ void bench_sha256(void* arg) {
secp256k1_sha256_initialize(&sha);
secp256k1_sha256_write(&sha, data->data, 32);
secp256k1_sha256_finalize(&sha, data->data);
espcase(data);
}
}

Expand All @@ -280,6 +303,7 @@ void bench_hmac_sha256(void* arg) {
secp256k1_hmac_sha256_initialize(&hmac, data->data, 32);
secp256k1_hmac_sha256_write(&hmac, data->data, 32);
secp256k1_hmac_sha256_finalize(&hmac, data->data);
espcase(data);
}
}

Expand All @@ -291,6 +315,7 @@ void bench_rfc6979_hmac_sha256(void* arg) {
for (i = 0; i < 20000; i++) {
secp256k1_rfc6979_hmac_sha256_initialize(&rng, data->data, 64);
secp256k1_rfc6979_hmac_sha256_generate(&rng, data->data, 32);
espcase(data);
}
}

Expand All @@ -312,7 +337,7 @@ void bench_context_sign(void* arg) {

#ifndef USE_NUM_NONE
void bench_num_jacobi(void* arg) {
int i;
int i, j;
bench_inv *data = (bench_inv*)arg;
secp256k1_num nx, norder;

Expand All @@ -321,7 +346,8 @@ void bench_num_jacobi(void* arg) {
secp256k1_scalar_get_num(&norder, &data->scalar_y);

for (i = 0; i < 200000; i++) {
secp256k1_num_jacobi(&nx, &norder);
j = secp256k1_num_jacobi(&nx, &norder);
espcase(&j);
}
}
#endif
Expand Down

0 comments on commit 28a460e

Please sign in to comment.