From 2ea0c2cae8e7efed57c5d4977d079950a377149d Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Fri, 13 Oct 2023 13:49:31 -0600 Subject: [PATCH 01/17] Run benchmarks at microsecond level --- wolfcrypt/benchmark/benchmark.c | 55 ++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 1239909d3..8f9e315f3 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -1051,7 +1051,12 @@ static const char* bench_Usage_msg1[][22] = { #endif static const char* bench_result_words1[][4] = { - { "took", "seconds" , "Cycles per byte", NULL }, /* 0 English */ +#ifdef BENCH_MICROSECOND + { "took", "microseconds" , "Cycles per byte", NULL }, /* 0 English for + mircroseconds */ +#else + { "took", "seconds" , "Cycles per byte", NULL }, /* 0 English */ +#endif #ifndef NO_MULTIBYTE_PRINT { "を" , "秒で処理", "1バイトあたりのサイクル数", NULL }, /* 1 Japanese */ #endif @@ -1317,7 +1322,12 @@ static const char* bench_desc_words[][15] = { defined(HAVE_CURVE448) || defined(HAVE_ED448) || \ defined(WOLFSSL_HAVE_KYBER) static const char* bench_result_words2[][5] = { +#ifdef BENCH_MICROSECOND + { "ops took", "μsec" , "avg" , "ops/μsec", NULL }, /* 0 English + for μsec */ +#else { "ops took", "sec" , "avg" , "ops/sec", NULL }, /* 0 English */ +#endif #ifndef NO_MULTIBYTE_PRINT { "回処理を", "秒で実施", "平均", "処理/秒", NULL }, /* 1 Japanese */ #endif @@ -1834,7 +1844,11 @@ static WC_INLINE void bench_stats_start(int* count, double* start) static WC_INLINE int bench_stats_check(double start) { - return ((current_time(0) - start) < BENCH_MIN_RUNTIME_SEC); + return ((current_time(0) - start) < BENCH_MIN_RUNTIME_SEC +#ifdef BENCH_MICROSECOND + * 1000000 +#endif + ); } /* return text for units and scale the value of blocks as needed */ @@ -1931,9 +1945,11 @@ static void bench_stats_sym_finish(const char* desc, int useDeviceID, { double total, persec = 0, blocks = (double)count; const char* blockType; + const char* timeUnit; char msg[WC_BENCH_MAX_LINE_LEN]; const char** word = bench_result_words1[lng_index]; static int sym_header_printed = 0; + int timeDigits; XMEMSET(msg, 0, sizeof(msg)); @@ -1991,6 +2007,14 @@ static void bench_stats_sym_finish(const char* desc, int useDeviceID, } } +#ifdef BENCH_MICROSECOND + timeUnit = "μs"; + timeDigits = 8; +#else + timeUnit = "s"; + timeDigits = 3; +#endif + /* determine if we have fixed units, or auto-scale bits or bytes for units. * note that the blockType text is assigned AND the blocks param is scaled. */ @@ -2070,29 +2094,31 @@ static void bench_stats_sym_finish(const char* desc, int useDeviceID, #ifdef HAVE_GET_CYCLES (void)XSNPRINTF(msg, sizeof(msg), "%-24s%s " FLT_FMT_PREC2 " %s %s " FLT_FMT_PREC2 " %s, " - FLT_FMT_PREC2 " %s/s, %lu cycles,", + FLT_FMT_PREC2 " %s/%s, %lu cycles,", desc, BENCH_DEVID_GET_NAME(useDeviceID), FLT_FMT_PREC2_ARGS(5, 0, blocks), blockType, word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], - FLT_FMT_PREC2_ARGS(8, 3, persec), blockType, + FLT_FMT_PREC2_ARGS(8, timeDigits, persec), blockType, timeUnit (unsigned long) total_cycles); #else (void)XSNPRINTF(msg, sizeof(msg), "%-24s%s " FLT_FMT_PREC2 " %s %s " FLT_FMT_PREC2 " %s, " - FLT_FMT_PREC2 " %s/s,", + FLT_FMT_PREC2 " %s/%s,", desc, BENCH_DEVID_GET_NAME(useDeviceID), FLT_FMT_PREC2_ARGS(5, 0, blocks), blockType, word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], - FLT_FMT_PREC2_ARGS(8, 3, persec), blockType); + FLT_FMT_PREC2_ARGS(8, timeDigits, persec), blockType, + timeUnit); #endif /* HAVE_GET_CYCLES */ #else (void)XSNPRINTF(msg, sizeof(msg), "%-24s%s " FLT_FMT_PREC2 " %s %s " FLT_FMT_PREC2 " %s, " - FLT_FMT_PREC2 " %s/s", + FLT_FMT_PREC2 " %s/%s", desc, BENCH_DEVID_GET_NAME(useDeviceID), FLT_FMT_PREC2_ARGS(5, 0, blocks), blockType, word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], - FLT_FMT_PREC2_ARGS(8, 3, persec), blockType); + FLT_FMT_PREC2_ARGS(8, timeDigits, persec), blockType, + timeUnit); #endif #ifdef WOLFSSL_ESPIDF @@ -2179,8 +2205,13 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, opsSec = 0; } +#ifdef BENCH_MICROSECOND + milliEach = each / 1000; /* milliseconds */ +#else milliEach = each * 1000; /* milliseconds */ +#endif + SLEEP_ON_ERROR(ret); /* format and print to terminal */ if (csv_format == 1) { @@ -10350,7 +10381,11 @@ void bench_sphincsKeySign(byte level, byte optim) QueryPerformanceCounter(&count); +#ifdef BENCH_MICROSECOND + return ((double)count.QuadPart * 1000000) / freq.QuadPart; +#else return (double)count.QuadPart / freq.QuadPart; +#endif } #elif defined MICROCHIP_PIC32 @@ -10612,7 +10647,11 @@ void bench_sphincsKeySign(byte level, byte optim) LIBCALL_CHECK_RET(gettimeofday(&tv, 0)); + #ifdef BENCH_MICROSECOND + return (double)tv.tv_sec * 1000000 + (double)tv.tv_usec; + #else return (double)tv.tv_sec + (double)tv.tv_usec / 1000000; + #endif } #endif /* _WIN32 */ From 9006dd5edd55879c6c35d6dff1cdb4f913b20ba3 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Fri, 13 Oct 2023 13:55:05 -0600 Subject: [PATCH 02/17] Document new macro --- wolfcrypt/benchmark/benchmark.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 8f9e315f3..c069ee50f 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -37,6 +37,9 @@ * when the output should be in machine-parseable format: * GENERATE_MACHINE_PARSEABLE_REPORT * + * use microseconds as the unit of time: + * BENCH_MICROSECOND + * * Enable tracking of the stats into an allocated linked list: * (use -print to display results): * WC_BENCH_TRACK_STATS From a40de50be26788bf7c7e6cdbb674bf9189dd6f97 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Mon, 23 Oct 2023 16:35:57 -0600 Subject: [PATCH 03/17] Add ADVANCED_STATS in benchmark.c --- wolfcrypt/benchmark/benchmark.c | 5131 +++++++++++++++++++++++++++++-- 1 file changed, 4902 insertions(+), 229 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index c069ee50f..2a0a1e2fc 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -40,6 +40,13 @@ * use microseconds as the unit of time: * BENCH_MICROSECOND * + * display mean, max, min and sd of operation durations: + * ADVANCED_STATS + * + * related to ADVANCED_STATS, use the below to specify how many sample + * observations are recorded to produce the stats above (defaults to 1000) + * MAX_SAMPLE_RUNS + * * Enable tracking of the stats into an allocated linked list: * (use -print to display results): * WC_BENCH_TRACK_STATS @@ -222,7 +229,23 @@ #endif /* default units per second. See WOLFSSL_BENCHMARK_FIXED_UNITS_* to change */ -#define WOLFSSL_FIXED_UNITS_PER_SEC "MB/s" /* may be re-set by fixed units */ +#define WOLFSSL_FIXED_UNIT "MB" /* may be re-set by fixed units */ + +#ifdef BENCH_MICROSECOND + #define WOLFSSL_FIXED_TIME_UNIT "μs" + #define WOLFSSL_BENCHMARK_FIXED_UNITS_KB +#else + #define WOLFSSL_FIXED_TIME_UNIT "s" +#endif + +#ifdef ADVANCED_STATS + #ifndef MAX_SAMPLE_RUNS + #define MAX_SAMPLE_RUNS 1000 + #endif + #define NEW_LINE "" +#else + #define NEW_LINE "\n" +#endif #ifdef WOLFSSL_NO_FLOAT_FMT #define FLT_FMT "%0ld,%09lu" @@ -985,7 +1008,7 @@ static int lng_index = 0; #ifndef NO_MAIN_DRIVER #ifndef MAIN_NO_ARGS -static const char* bench_Usage_msg1[][22] = { +static const char* bench_Usage_msg1[][25] = { /* 0 English */ { "-? Help, print this usage\n", " 0: English, 1: Japanese\n", @@ -1017,7 +1040,10 @@ static const char* bench_Usage_msg1[][22] = { " option, but must be used after that one.\n" ), "-threads Number of threads to run\n", - "-print Show benchmark stats summary\n" + "-print Show benchmark stats summary\n", + "-hash_input Input data to use for hash benchmarking\n", + "-cipher_input Input data to use for cipher benchmarking\n", + "-min_runs Specify minimum number of operation runs\n" }, #ifndef NO_MULTIBYTE_PRINT /* 1 Japanese */ @@ -1046,7 +1072,11 @@ static const char* bench_Usage_msg1[][22] = { " ブロックサイズをバイト単位で指定します。\n", "-blocks TBD.\n", "-threads 実行するスレッド数\n", - "-print ベンチマーク統計の要約を表示する\n" + "-print ベンチマーク統計の要約を表示する\n", + /* TODO: translate below */ + "-hash_input Input data to use for hash benchmarking\n", + "-cipher_input Input data to use for cipher benchmarking\n" + "-min_runs Specify minimum number of operation runs\n" }, #endif }; @@ -1054,12 +1084,13 @@ static const char* bench_Usage_msg1[][22] = { #endif static const char* bench_result_words1[][4] = { + { "took", #ifdef BENCH_MICROSECOND - { "took", "microseconds" , "Cycles per byte", NULL }, /* 0 English for - mircroseconds */ + "microseconds" #else - { "took", "seconds" , "Cycles per byte", NULL }, /* 0 English */ + "seconds" #endif + , "Cycles per byte", NULL }, /* 0 English */ #ifndef NO_MULTIBYTE_PRINT { "を" , "秒で処理", "1バイトあたりのサイクル数", NULL }, /* 1 Japanese */ #endif @@ -1082,6 +1113,15 @@ static const char* bench_desc_words[][15] = { #endif +#ifdef ADVANCED_STATS +static const char* bench_result_words3[][5] = { + /* 0 English */ + { "max duration", "min duration" , "mean duration", "sd", NULL }, + /* TODO: Add japenese version */ + { "max duration", "min duration" , "mean duration", "sd", NULL } +}; +#endif + #if defined(__GNUC__) && defined(__x86_64__) && !defined(NO_ASM) && !defined(WOLFSSL_SGX) #define HAVE_GET_CYCLES static WC_INLINE word64 get_intel_cycles(void); @@ -1090,15 +1130,15 @@ static const char* bench_desc_words[][15] = { #define BEGIN_INTEL_CYCLES total_cycles = get_intel_cycles(); #define END_INTEL_CYCLES total_cycles = get_intel_cycles() - total_cycles; /* s == size in bytes that 1 count represents, normally BENCH_SIZE */ - #define SHOW_INTEL_CYCLES(b, n, s) \ - (void)XSNPRINTF((b) + XSTRLEN(b), (n) - XSTRLEN(b), \ - " %s = " FLT_FMT_PREC2 "\n", \ - bench_result_words1[lng_index][2], \ - FLT_FMT_PREC2_ARGS(6, 2, count == 0 ? 0 : \ + #define SHOW_INTEL_CYCLES(b, n, s) \ + (void)XSNPRINTF((b) + XSTRLEN(b), (n) - XSTRLEN(b), \ + " %s = " FLT_FMT_PREC2 NEW_LINE, \ + bench_result_words1[lng_index][2], \ + FLT_FMT_PREC2_ARGS(6, 2, count == 0 ? 0 : \ (double)total_cycles / ((word64)count*(s)))) - #define SHOW_INTEL_CYCLES_CSV(b, n, s) \ - (void)XSNPRINTF((b) + XSTRLEN(b), (n) - XSTRLEN(b), FLT_FMT_PREC ",\n", \ - FLT_FMT_PREC_ARGS(6, count == 0 ? 0 : \ + #define SHOW_INTEL_CYCLES_CSV(b, n, s) \ + (void)XSNPRINTF((b) + XSTRLEN(b), (n) - XSTRLEN(b), FLT_FMT_PREC "," \ + NEW_LINE, FLT_FMT_PREC_ARGS(6, count == 0 ? 0 : \ (double)total_cycles / ((word64)count*(s)))) #elif defined(LINUX_CYCLE_COUNT) #include @@ -1125,12 +1165,12 @@ static const char* bench_desc_words[][15] = { /* s == size in bytes that 1 count represents, normally BENCH_SIZE */ #define SHOW_INTEL_CYCLES(b, n, s) \ (void)XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), \ - " %s = " FLT_FMT_PREC2 "\n", \ + " %s = " FLT_FMT_PREC2 NEW_LINE, \ bench_result_words1[lng_index][2], \ FLT_FMT_PREC2_ARGS(6, 2, (double)total_cycles / (count*s))) #define SHOW_INTEL_CYCLES_CSV(b, n, s) \ - (void)XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), FLT_FMT_PREC ",\n", \ - FLT_FMT_PREC_ARGS(6, (double)total_cycles / (count*s))) + (void)XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), FLT_FMT_PREC "," \ + NEW_LINE, FLT_FMT_PREC_ARGS(6, (double)total_cycles / (count*s))) #elif defined(SYNERGY_CYCLE_COUNT) #include "hal_data.h" @@ -1144,7 +1184,7 @@ static const char* bench_desc_words[][15] = { /* s == size in bytes that 1 count represents, normally BENCH_SIZE */ #define SHOW_INTEL_CYCLES(b, n, s) \ (void)XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), \ - " %s = " FLT_FMT_PREC2 "\n", \ + " %s = " FLT_FMT_PREC2 NEW_LINE, \ bench_result_words1[lng_index][2], \ FLT_FMT_PREC2_ARGS(6, 2, (double)total_cycles / (count*s))) #define SHOW_INTEL_CYCLES_CSV(b, n, s) \ @@ -1249,8 +1289,13 @@ static const char* bench_desc_words[][15] = { #define INIT_CYCLE_COUNTER #define BEGIN_INTEL_CYCLES #define END_INTEL_CYCLES - #define SHOW_INTEL_CYCLES(b, n, s) b[XSTRLEN(b)] = '\n' - #define SHOW_INTEL_CYCLES_CSV(b, n, s) b[XSTRLEN(b)] = '\n' + #ifdef ADVANCED_STATS + #define SHOW_INTEL_CYCLES(b, n, s) + #define SHOW_INTEL_CYCLES_CSV(b, n, s) + #else + #define SHOW_INTEL_CYCLES(b, n, s) b[XSTRLEN(b)] = '\n' + #define SHOW_INTEL_CYCLES_CSV(b, n, s) b[XSTRLEN(b)] = '\n' + #endif #endif /* determine benchmark buffer to use (if NO_FILESYSTEM) */ @@ -1589,6 +1634,10 @@ static word32 bench_size = BENCH_SIZE; static int base2 = 1; static int digest_stream = 1; +#ifdef ADVANCED_STATS +static int minimum_runs = 0; +#endif + #ifndef NO_RSA /* Don't measure RSA sign/verify by default */ static int rsa_sign_verify = 0; @@ -1615,6 +1664,8 @@ static int csv_format = 0; /* globals for cipher tests */ static THREAD_LS_T byte* bench_plain = NULL; static THREAD_LS_T byte* bench_cipher = NULL; +static THREAD_LS_T char* hash_input = NULL; +static THREAD_LS_T char* cipher_input = NULL; static const XGEN_ALIGN byte bench_key_buf[] = { @@ -1669,6 +1720,9 @@ static void benchmark_static_init(int force) #endif base2 = 1; digest_stream = 1; + #ifdef ADVANCED_STATS + minimum_runs = 0; + #endif bench_all = 1; bench_cipher_algs = 0; @@ -1783,24 +1837,33 @@ typedef enum bench_stat_type { void bench_stats_print(void) { bench_stats_t* bstat; + int digits; #ifdef WC_ENABLE_BENCH_THREADING /* protect bench_stats_head and bench_stats_tail access */ THREAD_CHECK_RET(pthread_mutex_lock(&bench_lock)); #endif + #ifdef BENCH_MICROSECOND + digits = 5; + #else + digits = 3; + #endif + for (bstat = bench_stats_head; bstat != NULL; ) { if (bstat->type == BENCH_STAT_SYM) { - printf("%-16s%s " FLT_FMT_PREC2 " %s/s\n", bstat->desc, + printf("%-16s%s " FLT_FMT_PREC2 " %s/" WOLFSSL_FIXED_TIME_UNIT + "\n", bstat->desc, BENCH_DEVID_GET_NAME(bstat->useDeviceID), - FLT_FMT_PREC2_ARGS(8, 3, bstat->perfsec), + FLT_FMT_PREC2_ARGS(8, digits, bstat->perfsec), base2 ? "MB" : "mB"); } else { - printf("%-5s %4d %-9s %s " FLT_FMT_PREC " ops/sec\n", + printf("%-5s %4d %-9s %s " FLT_FMT_PREC " ops/" + WOLFSSL_FIXED_TIME_UNIT "ec\n", bstat->algo, bstat->strength, bstat->desc, BENCH_DEVID_GET_NAME(bstat->useDeviceID), - FLT_FMT_PREC_ARGS(3, bstat->perfsec)); + FLT_FMT_PREC_ARGS(digits, bstat->perfsec)); } bstat = bstat->next; @@ -1861,25 +1924,25 @@ static const char* get_blocktype(double* blocks) #if ( defined(WOLFSSL_BENCHMARK_FIXED_UNITS_G) || \ defined(WOLFSSL_BENCHMARK_FIXED_UNITS_GB)) - #undef WOLFSSL_FIXED_UNITS_PER_SEC - #define WOLFSSL_FIXED_UNITS_PER_SEC "GB/s" + #undef WOLFSSL_FIXED_UNIT + #define WOLFSSL_FIXED_UNIT "GB" *blocks /= (1024UL * 1024UL * 1024UL); rt = "GiB"; #elif (defined(WOLFSSL_BENCHMARK_FIXED_UNITS_M) || \ defined(WOLFSSL_BENCHMARK_FIXED_UNITS_MB)) - #undef WOLFSSL_FIXED_UNITS_PER_SEC - #define WOLFSSL_FIXED_UNITS_PER_SEC "MB/s" + #undef WOLFSSL_FIXED_UNIT + #define WOLFSSL_FIXED_UNIT "MB" *blocks /= (1024UL * 1024UL); rt = "MiB"; #elif (defined(WOLFSSL_BENCHMARK_FIXED_UNITS_K) || \ defined(WOLFSSL_BENCHMARK_FIXED_UNITS_KB)) - #undef WOLFSSL_FIXED_UNITS_PER_SEC - #define WOLFSSL_FIXED_UNITS_PER_SEC "KB/s" + #undef WOLFSSL_FIXED_UNIT + #define WOLFSSL_FIXED_UNIT "KB" *blocks /= 1024; rt = "KiB"; #elif defined (WOLFSSL_BENCHMARK_FIXED_UNITS_B) - #undef WOLFSSL_FIXED_UNITS_PER_SEC - #define WOLFSSL_FIXED_UNITS_PER_SEC "bytes/s" + #undef WOLFSSL_FIXED_UNIT + #define WOLFSSL_FIXED_UNIT "bytes" (void)(*blocks); /* no adjustment, just appease compiler for not used */ rt = "bytes"; #else @@ -1940,6 +2003,69 @@ static const char* get_blocktype_base10(double* blocks) return rt; } +#ifdef ADVANCED_STATS +static double wc_sqroot(double in) +{ + /* do 32 iterations for the sqroot */ + int iter = 32; + double root = in/3.0; + + if (in < 0.0) + return -1; + + for (int i=0; i < iter; i++) + root = (root + in / root) / 2.0; + + return root; +} + +static void bench_advanced_stats(double deltas[], double max, double min, + double sum, int runs) +{ + double mean = 0; + double sd = 0; + char msg[WC_BENCH_MAX_LINE_LEN]; + const char** word = bench_result_words3[lng_index]; + + XMEMSET(msg, 0, sizeof(msg)); + + mean = sum / runs; + + /* Calculating standard deviation */ + for (int i = 0; i < runs; i++) { + sd += ((deltas[i] - mean) * (deltas[i] - mean)); + } + sd = sd / (runs - 1); + sd = wc_sqroot(sd); + + if (csv_format == 1) { + (void)XSNPRINTF(msg, sizeof(msg), FLT_FMT_PREC2 "," + FLT_FMT_PREC2 "," FLT_FMT_PREC2 "," FLT_FMT_PREC2 ",\n", + FLT_FMT_PREC2_ARGS(3, 3, max), + FLT_FMT_PREC2_ARGS(3, 3, min), + FLT_FMT_PREC2_ARGS(3, 3, mean), + FLT_FMT_PREC2_ARGS(3, 3, sd)); + } + else{ + (void)XSNPRINTF(msg, sizeof(msg), ", %s " FLT_FMT_PREC2 " " + WOLFSSL_FIXED_TIME_UNIT ", %s " FLT_FMT_PREC2 " " + WOLFSSL_FIXED_TIME_UNIT ", %s " FLT_FMT_PREC2 " " + WOLFSSL_FIXED_TIME_UNIT ", %s " FLT_FMT_PREC2 " " + WOLFSSL_FIXED_TIME_UNIT "\n", + word[0], FLT_FMT_PREC2_ARGS(3, 3, max), + word[1], FLT_FMT_PREC2_ARGS(3, 3, min), + word[2], FLT_FMT_PREC2_ARGS(3, 3, mean), + word[3], FLT_FMT_PREC2_ARGS(3, 3, sd)); + } + printf("%s", msg); + +#ifndef WOLFSSL_SGX + XFFLUSH(stdout); +#endif + +} +#endif + /* countSz is number of bytes that 1 count represents. Normally bench_size, * except for AES direct that operates on AES_BLOCK_SIZE blocks */ static void bench_stats_sym_finish(const char* desc, int useDeviceID, @@ -1948,11 +2074,9 @@ static void bench_stats_sym_finish(const char* desc, int useDeviceID, { double total, persec = 0, blocks = (double)count; const char* blockType; - const char* timeUnit; char msg[WC_BENCH_MAX_LINE_LEN]; const char** word = bench_result_words1[lng_index]; static int sym_header_printed = 0; - int timeDigits; XMEMSET(msg, 0, sizeof(msg)); @@ -1981,11 +2105,15 @@ static void bench_stats_sym_finish(const char* desc, int useDeviceID, #ifdef GENERATE_MACHINE_PARSEABLE_REPORT /* machine parseable CSV */ #ifdef HAVE_GET_CYCLES - printf("%s", "\"sym\",Algorithm,HW/SW,bytes_total,seconds_total," - WOLFSSL_FIXED_UNITS_PER_SEC ",cycles_total,Cycles per byte,\n"); + printf("%s", "\"sym\",Algorithm,HW/SW,bytes_total," + WOLFSSL_FIXED_TIME_UNIT "econds_total," + WOLFSSL_FIXED_UNIT "/" WOLFSSL_FIXED_TIME_UNIT + ",cycles_total,Cycles per byte,"); #else - printf("%s", "\"sym\",Algorithm,HW/SW,bytes_total,seconds_total," - WOLFSSL_FIXED_UNITS_PER_SEC ",cycles_total,\n"); + printf("%s", "\"sym\",Algorithm,HW/SW,bytes_total," + WOLFSSL_FIXED_TIME_UNIT "econds_total," + WOLFSSL_FIXED_UNIT "/" WOLFSSL_FIXED_TIME_UNIT + ",cycles_total,"); #endif #else /* normal CSV */ @@ -1998,26 +2126,24 @@ static void bench_stats_sym_finish(const char* desc, int useDeviceID, printf("\n\nSymmetric Ciphers:\n\n"); printf("Algorithm," BENCH_DEVID_COLUMN_HEADER - WOLFSSL_FIXED_UNITS_PER_SEC ",Cycles per byte,\n"); + WOLFSSL_FIXED_UNIT "/" WOLFSSL_FIXED_TIME_UNIT + ",Cycles per byte,"); #else printf("\n\nSymmetric Ciphers:\n\n"); printf("Algorithm," BENCH_DEVID_COLUMN_HEADER - WOLFSSL_FIXED_UNITS_PER_SEC ", \n"); + WOLFSSL_FIXED_UNIT "/" WOLFSSL_FIXED_TIME_UNIT ","); #endif #endif + #ifdef ADVANCED_STATS + printf("max duration,min duration,mean duration,sd,\n"); + #else + printf("\n"); + #endif sym_header_printed = 1; } } -#ifdef BENCH_MICROSECOND - timeUnit = "μs"; - timeDigits = 8; -#else - timeUnit = "s"; - timeDigits = 3; -#endif - /* determine if we have fixed units, or auto-scale bits or bytes for units. * note that the blockType text is assigned AND the blocks param is scaled. */ @@ -2095,33 +2221,31 @@ static void bench_stats_sym_finish(const char* desc, int useDeviceID, else { #ifdef GENERATE_MACHINE_PARSEABLE_REPORT #ifdef HAVE_GET_CYCLES + (void)XSNPRINTF(msg, sizeof(msg), + "%-24s%s " FLT_FMT_PREC2 " %s %s " FLT_FMT_PREC2 " %s, " + FLT_FMT_PREC2 " %s/" WOLFSSL_FIXED_TIME_UNIT ", %lu cycles,", + desc, BENCH_DEVID_GET_NAME(useDeviceID), + FLT_FMT_PREC2_ARGS(5, 0, blocks), blockType, + word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], + FLT_FMT_PREC2_ARGS(8, 3, persec), blockType, + (unsigned long) total_cycles); + #else (void)XSNPRINTF(msg, sizeof(msg), "%-24s%s " FLT_FMT_PREC2 " %s %s " FLT_FMT_PREC2 " %s, " - FLT_FMT_PREC2 " %s/%s, %lu cycles,", + FLT_FMT_PREC2 " %s/" WOLFSSL_FIXED_TIME_UNIT ",", desc, BENCH_DEVID_GET_NAME(useDeviceID), FLT_FMT_PREC2_ARGS(5, 0, blocks), blockType, word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], - FLT_FMT_PREC2_ARGS(8, timeDigits, persec), blockType, timeUnit - (unsigned long) total_cycles); - #else - (void)XSNPRINTF(msg, sizeof(msg), - "%-24s%s " FLT_FMT_PREC2 " %s %s " FLT_FMT_PREC2 " %s, " - FLT_FMT_PREC2 " %s/%s,", - desc, BENCH_DEVID_GET_NAME(useDeviceID), - FLT_FMT_PREC2_ARGS(5, 0, blocks), blockType, - word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], - FLT_FMT_PREC2_ARGS(8, timeDigits, persec), blockType, - timeUnit); - #endif /* HAVE_GET_CYCLES */ + FLT_FMT_PREC2_ARGS(8, 3, persec), blockType); + #endif /* HAVE_GET_CYCLES */ #else (void)XSNPRINTF(msg, sizeof(msg), - "%-24s%s " FLT_FMT_PREC2 " %s %s " FLT_FMT_PREC2 " %s, " - FLT_FMT_PREC2 " %s/%s", - desc, BENCH_DEVID_GET_NAME(useDeviceID), - FLT_FMT_PREC2_ARGS(5, 0, blocks), blockType, - word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], - FLT_FMT_PREC2_ARGS(8, timeDigits, persec), blockType, - timeUnit); + "%-24s%s " FLT_FMT_PREC2 " %s %s " FLT_FMT_PREC2 " %s, " + FLT_FMT_PREC2 " %s/" WOLFSSL_FIXED_TIME_UNIT, + desc, BENCH_DEVID_GET_NAME(useDeviceID), + FLT_FMT_PREC2_ARGS(5, 0, blocks), blockType, + word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], + FLT_FMT_PREC2_ARGS(8, 3, persec), blockType); #endif #ifdef WOLFSSL_ESPIDF @@ -2175,6 +2299,7 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, #endif char msg[256]; static int asym_header_printed = 0; + int digits; XMEMSET(msg, 0, sizeof(msg)); @@ -2215,6 +2340,12 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, #endif +#ifdef BENCH_MICROSECOND + digits = 5; +#else + digits = 3; +#endif + SLEEP_ON_ERROR(ret); /* format and print to terminal */ if (csv_format == 1) { @@ -2222,44 +2353,51 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, if (asym_header_printed == 0) { #ifdef GENERATE_MACHINE_PARSEABLE_REPORT #ifdef HAVE_GET_CYCLES - printf("%s", "\"asym\",Algorithm,key size,operation,avg ms,ops/sec," - "ops,secs,cycles,cycles/op\n"); + printf("%s", "\"asym\",Algorithm,key size,operation,avg ms,ops/" + WOLFSSL_FIXED_TIME_UNIT "ec,ops," WOLFSSL_FIXED_TIME_UNIT + "ecs,cycles,cycles/op"); #else - printf("%s", "\"asym\",Algorithm,key size,operation,avg ms,ops/sec," - "ops,secs\n"); + printf("%s", "\"asym\",Algorithm,key size,operation,avg ms,ops/" + WOLFSSL_FIXED_TIME_UNIT "ec,ops," WOLFSSL_FIXED_TIME_UNIT + "ecs"); #endif #else printf("\n%sAsymmetric Ciphers:\n\n", info_prefix); - printf("%sAlgorithm,key size,operation,avg ms,ops/sec,\n", - info_prefix); + printf("%sAlgorithm,key size,operation,avg ms,ops/" + WOLFSSL_FIXED_TIME_UNIT "ec,", info_prefix); #endif + #ifdef ADVANCED_STATS + printf("max duration,min duration,mean duration,sd,\n"); + #else + printf("\n"); + #endif asym_header_printed = 1; } #ifdef GENERATE_MACHINE_PARSEABLE_REPORT #ifdef HAVE_GET_CYCLES (void)XSNPRINTF(msg, sizeof(msg), "asym,%s,%d,%s%s," FLT_FMT_PREC "," FLT_FMT_PREC ",%d," - FLT_FMT ",%lu," FLT_FMT_PREC "\n", + FLT_FMT ",%lu," FLT_FMT_PREC NEW_LINE, algo, strength, desc, desc_extra, FLT_FMT_PREC_ARGS(3, milliEach), - FLT_FMT_PREC_ARGS(3, opsSec), + FLT_FMT_PREC_ARGS(digits, opsSec), count, FLT_FMT_ARGS(total), (unsigned long)total_cycles, FLT_FMT_PREC_ARGS(6, (double)total_cycles / (double)count)); #else (void)XSNPRINTF(msg, sizeof(msg), "asym,%s,%d,%s%s," FLT_FMT_PREC "," FLT_FMT_PREC ",%d," - FLT_FMT "\n", + FLT_FMT NEW_LINE, algo, strength, desc, desc_extra, FLT_FMT_PREC_ARGS(3, milliEach), - FLT_FMT_PREC_ARGS(3, opsSec), + FLT_FMT_PREC_ARGS(digits, opsSec), count, FLT_FMT_ARGS(total)); #endif #else (void)XSNPRINTF(msg, sizeof(msg), "%s,%d,%s%s," FLT_FMT_PREC "," - FLT_FMT_PREC ",\n", algo, strength, desc, desc_extra, - FLT_FMT_PREC_ARGS(3, milliEach), - FLT_FMT_PREC_ARGS(3, opsSec)); + FLT_FMT_PREC "," NEW_LINE, algo, strength, desc, + desc_extra, FLT_FMT_PREC_ARGS(3, milliEach), + FLT_FMT_PREC_ARGS(digits, opsSec)); #endif } /* if (csv_format == 1) */ @@ -2268,32 +2406,32 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, #ifdef HAVE_GET_CYCLES (void)XSNPRINTF(msg, sizeof(msg), "%-6s %5d %8s%-2s %s %6d %s " FLT_FMT_PREC2 " %s, %s " - FLT_FMT_PREC2 " ms, " FLT_FMT_PREC " %s, %lu cycles\n", - algo, strength, desc, desc_extra, + FLT_FMT_PREC2 " ms, " FLT_FMT_PREC " %s, %lu cycles" + NEW_LINE, algo, strength, desc, desc_extra, BENCH_DEVID_GET_NAME(useDeviceID), count, word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], word[2], FLT_FMT_PREC2_ARGS(5, 3, milliEach), - FLT_FMT_PREC_ARGS(3, opsSec), word[3], + FLT_FMT_PREC_ARGS(digits, opsSec), word[3], (unsigned long)total_cycles); #else (void)XSNPRINTF(msg, sizeof(msg), "%-6s %5d %8s%-2s %s %6d %s " FLT_FMT_PREC2 " %s, %s " - FLT_FMT_PREC2 " ms, " FLT_FMT_PREC " %s\n", + FLT_FMT_PREC2 " ms, " FLT_FMT_PREC " %s" NEW_LINE, algo, strength, desc, desc_extra, BENCH_DEVID_GET_NAME(useDeviceID), count, word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], word[2], FLT_FMT_PREC2_ARGS(5, 3, milliEach), - FLT_FMT_PREC_ARGS(3, opsSec), word[3]); + FLT_FMT_PREC_ARGS(digits, opsSec), word[3]); #endif /* HAVE_GET_CYCLES */ #else (void)XSNPRINTF(msg, sizeof(msg), "%-6s %5d %8s%-2s %s %6d %s " FLT_FMT_PREC2 " %s, %s " - FLT_FMT_PREC2 " ms, " FLT_FMT_PREC " %s\n", + FLT_FMT_PREC2 " ms, " FLT_FMT_PREC " %s" NEW_LINE, algo, strength, desc, desc_extra, BENCH_DEVID_GET_NAME(useDeviceID), count, word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], word[2], FLT_FMT_PREC2_ARGS(5, 3, milliEach), - FLT_FMT_PREC_ARGS(3, opsSec), word[3]); + FLT_FMT_PREC_ARGS(digits, opsSec), word[3]); #endif } printf("%s", msg); @@ -2352,7 +2490,7 @@ static WC_INLINE void bench_stats_free(void) static void* benchmarks_do(void* args) { - int bench_buf_size; + long bench_buf_size; #ifdef WOLFSSL_ASYNC_CRYPT #ifndef WC_NO_ASYNC_THREADING @@ -2436,9 +2574,74 @@ static void* benchmarks_do(void* args) printf("%sBenchmark block buffer alloc failed!\n", err_prefix); goto exit; } - XMEMSET(bench_plain, 0, (size_t)bench_buf_size); - XMEMSET(bench_cipher, 0, (size_t)bench_buf_size); + if (hash_input) { + XFILE file; + file = XFOPEN(hash_input, "rb"); + if (file == XBADFILE) + goto exit; + + if (XFSEEK(file, 0, XSEEK_END) != 0) { + XFCLOSE(file); + goto exit; + } + + bench_buf_size = XFTELL(file); + if(XFSEEK(file, 0, XSEEK_SET) != 0) { + XFCLOSE(file); + goto exit; + } + + XFREE(bench_plain, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); + + bench_plain = (byte*)XMALLOC((size_t)bench_buf_size, + HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); + + if (bench_plain == NULL) + goto exit; + + if ((size_t)XFREAD(bench_plain, 1, bench_buf_size, file) != (size_t)bench_buf_size) { + XFCLOSE(file); + goto exit; + } + } + else { + XMEMSET(bench_plain, 0, (size_t)bench_buf_size); + } + + if (cipher_input) { + XFILE file; + file = XFOPEN(cipher_input, "rb"); + if (file == XBADFILE) + goto exit; + + if (XFSEEK(file, 0, XSEEK_END) != 0) { + XFCLOSE(file); + goto exit; + } + + bench_buf_size = XFTELL(file); + if(XFSEEK(file, 0, XSEEK_SET) != 0) { + XFCLOSE(file); + goto exit; + } + + XFREE(bench_cipher, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); + + bench_cipher = (byte*)XMALLOC((size_t)bench_buf_size, + HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); + + if (bench_cipher == NULL) + goto exit; + + if ((size_t)XFREAD(bench_cipher, 1, bench_buf_size, file) != (size_t)bench_buf_size) { + XFCLOSE(file); + goto exit; + } + } + else { + XMEMSET(bench_cipher, 0, (size_t)bench_buf_size); + } #if defined(WOLFSSL_ASYNC_CRYPT) || defined(HAVE_INTEL_QA_SYNC) bench_key = (byte*)XMALLOC(sizeof(bench_key_buf), HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); @@ -3389,6 +3592,11 @@ void bench_rng(void) double start; long pos, len, remain; WC_RNG myrng; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif #ifndef HAVE_FIPS ret = wc_InitRng_ex(&myrng, HEAP_HINT, devId); @@ -3400,6 +3608,10 @@ void bench_rng(void) return; } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -3418,11 +3630,40 @@ void bench_rng(void) remain -= len; pos += len; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); exit_rng: bench_stats_sym_finish("RNG", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_FreeRng(&myrng); } @@ -3440,9 +3681,17 @@ static void bench_aescbc_internal(int useDeviceID, int ret = 0, i, count = 0, times, pending = 0; Aes enc[BENCH_MAX_PENDING]; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -3459,6 +3708,10 @@ static void bench_aescbc_internal(int useDeviceID, } } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + bench_stats_start(&count, &start); do { for (times = 0; times < numBlocks || pending > 0; ) { @@ -3477,13 +3730,42 @@ static void bench_aescbc_internal(int useDeviceID, } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); exit_aes_enc: bench_stats_sym_finish(encLabel, useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif if (ret < 0) { goto exit; @@ -3499,6 +3781,13 @@ exit_aes_enc: } } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif + bench_stats_start(&count, &start); do { for (times = 0; times < numBlocks || pending > 0; ) { @@ -3517,12 +3806,42 @@ exit_aes_enc: } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_aes_dec: bench_stats_sym_finish(decLabel, useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif #endif /* HAVE_AES_DECRYPT */ @@ -3574,6 +3893,11 @@ static void bench_aesgcm_internal(int useDeviceID, Aes dec[BENCH_MAX_PENDING+1]; #endif double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif WC_DECLARE_VAR(bench_additional, byte, AES_AUTH_ADD_SZ, HEAP_HINT); WC_DECLARE_VAR(bench_tag, byte, AES_AUTH_TAG_SZ, HEAP_HINT); @@ -3586,6 +3910,9 @@ static void bench_aesgcm_internal(int useDeviceID, /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif #ifdef WOLFSSL_ASYNC_CRYPT if (bench_additional) #endif @@ -3610,6 +3937,10 @@ static void bench_aesgcm_internal(int useDeviceID, } } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + /* GCM uses same routine in backend for both encrypt and decrypt */ bench_stats_start(&count, &start); do { @@ -3630,16 +3961,53 @@ static void bench_aesgcm_internal(int useDeviceID, } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_aes_gcm: bench_stats_sym_finish(encLabel, useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif #ifdef HAVE_AES_DECRYPT XMEMSET(dec, 0, sizeof(dec)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif + /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { if ((ret = wc_AesInit(&dec[i], HEAP_HINT, @@ -3674,13 +4042,42 @@ exit_aes_gcm: } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); exit_aes_gcm_dec: bench_stats_sym_finish(decLabel, useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif #endif /* HAVE_AES_DECRYPT */ (void)decLabel; @@ -3714,6 +4111,11 @@ static void bench_aesgcm_stream_internal(int useDeviceID, Aes dec[BENCH_MAX_PENDING]; #endif double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif WC_DECLARE_VAR(bench_additional, byte, AES_AUTH_ADD_SZ, HEAP_HINT); WC_DECLARE_VAR(bench_tag, byte, AES_AUTH_TAG_SZ, HEAP_HINT); @@ -3779,12 +4181,42 @@ static void bench_aesgcm_stream_internal(int useDeviceID, } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_aes_gcm: bench_stats_sym_finish(encLabel, useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif #ifdef HAVE_AES_DECRYPT /* init keys */ @@ -3802,6 +4234,13 @@ exit_aes_gcm: } } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif + bench_stats_start(&count, &start); do { for (times = 0; times < numBlocks || pending > 0; ) { @@ -3827,13 +4266,42 @@ exit_aes_gcm: } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); exit_aes_gcm_dec: bench_stats_sym_finish(decLabel, useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif #endif /* HAVE_AES_DECRYPT */ (void)decLabel; @@ -3914,6 +4382,11 @@ void bench_gmac(int useDeviceID) Gmac gmac; double start; byte tag[AES_AUTH_TAG_SZ]; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif /* determine GCM GHASH method */ #ifdef GCM_SMALL @@ -3928,6 +4401,10 @@ void bench_gmac(int useDeviceID) const char* gmacStr = "GMAC Default"; #endif +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + /* init keys */ XMEMSET(bench_plain, 0, bench_size); XMEMSET(tag, 0, sizeof(tag)); @@ -3945,10 +4422,41 @@ void bench_gmac(int useDeviceID) tag, sizeof(tag)); count++; - } while (bench_stats_check(start)); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + wc_AesFree((Aes*)&gmac); bench_stats_sym_finish(gmacStr, 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif + } #endif /* HAVE_AESGCM */ @@ -3962,6 +4470,11 @@ static void bench_aesecb_internal(int useDeviceID, int ret = 0, i, count = 0, times, pending = 0; Aes enc[BENCH_MAX_PENDING]; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif #ifdef HAVE_FIPS static const int benchSz = AES_BLOCK_SIZE; #else @@ -3970,6 +4483,9 @@ static void bench_aesecb_internal(int useDeviceID, /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -4011,12 +4527,42 @@ static void bench_aesecb_internal(int useDeviceID, } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_aes_enc: bench_stats_sym_finish(encLabel, useDeviceID, count, benchSz, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif #ifdef HAVE_AES_DECRYPT /* init keys */ @@ -4028,6 +4574,13 @@ exit_aes_enc: } } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif + bench_stats_start(&count, &start); do { int outer_loop_limit = (10 * ((int)bench_size / benchSz)) + 1; @@ -4051,12 +4604,42 @@ exit_aes_enc: } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_aes_dec: bench_stats_sym_finish(decLabel, useDeviceID, count, benchSz, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif #endif /* HAVE_AES_DECRYPT */ @@ -4091,8 +4674,17 @@ static void bench_aescfb_internal(const byte* key, { Aes enc; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, ret, count; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + ret = wc_AesSetKey(&enc, key, keySz, iv, AES_ENCRYPTION); if (ret != 0) { printf("AesSetKey failed, ret = %d\n", ret); @@ -4107,10 +4699,40 @@ static void bench_aescfb_internal(const byte* key, printf("wc_AesCfbEncrypt failed, ret = %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish(label, 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } void bench_aescfb(void) @@ -4135,8 +4757,17 @@ static void bench_aesofb_internal(const byte* key, { Aes enc; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, ret, count; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + ret = wc_AesInit(&enc, NULL, INVALID_DEVID); if (ret != 0) { printf("AesInit failed, ret = %d\n", ret); @@ -4157,10 +4788,40 @@ static void bench_aesofb_internal(const byte* key, printf("wc_AesCfbEncrypt failed, ret = %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish(label, 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_AesFree(&enc); } @@ -4185,8 +4846,17 @@ void bench_aesxts(void) { XtsAes aes; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count, ret; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + static unsigned char k1[] = { 0xa1, 0xb9, 0x0c, 0xba, 0x3f, 0x06, 0xac, 0x35, 0x3b, 0x2c, 0x34, 0x38, 0x76, 0x08, 0x17, 0x62, @@ -4214,10 +4884,40 @@ void bench_aesxts(void) printf("wc_AesXtsEncrypt failed, ret = %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("AES-XTS-enc", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_AesXtsFree(&aes); /* decryption benchmark */ @@ -4228,6 +4928,13 @@ void bench_aesxts(void) return; } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif + bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -4236,10 +4943,40 @@ void bench_aesxts(void) printf("wc_AesXtsDecrypt failed, ret = %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("AES-XTS-dec", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_AesXtsFree(&aes); } #endif /* WOLFSSL_AES_XTS */ @@ -4252,8 +4989,17 @@ static void bench_aesctr_internal(const byte* key, word32 keySz, { Aes enc; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count, ret = 0; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + if ((ret = wc_AesInit(&enc, HEAP_HINT, useDeviceID ? devId : INVALID_DEVID)) != 0) { printf("wc_AesInit failed, ret = %d\n", ret); @@ -4272,10 +5018,40 @@ static void bench_aesctr_internal(const byte* key, word32 keySz, printf("wc_AesCtrEncrypt failed, ret = %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish(label, useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_AesFree(&enc); } @@ -4300,6 +5076,11 @@ void bench_aesccm(int useDeviceID) { Aes enc; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret, i, count; WC_DECLARE_VAR(bench_additional, byte, AES_AUTH_ADD_SZ, HEAP_HINT); @@ -4314,6 +5095,9 @@ void bench_aesccm(int useDeviceID) XMEMSET(bench_tag, 0, AES_AUTH_TAG_SZ); XMEMSET(bench_additional, 0, AES_AUTH_ADD_SZ); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if ((ret = wc_AesInit(&enc, HEAP_HINT, useDeviceID ? devId : INVALID_DEVID)) != 0) { @@ -4332,27 +5116,94 @@ void bench_aesccm(int useDeviceID) ret |= wc_AesCcmEncrypt(&enc, bench_cipher, bench_plain, bench_size, bench_iv, 12, bench_tag, AES_AUTH_TAG_SZ, bench_additional, 0); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish(AES_AAD_STRING("AES-CCM-enc"), useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif if (ret != 0) { printf("wc_AesCcmEncrypt failed, ret = %d\n", ret); goto exit; } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif + bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { ret |= wc_AesCcmDecrypt(&enc, bench_plain, bench_cipher, bench_size, bench_iv, 12, bench_tag, AES_AUTH_TAG_SZ, bench_additional, 0); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish(AES_AAD_STRING("AES-CCM-dec"), useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif if (ret != 0) { printf("wc_AesCcmEncrypt failed, ret = %d\n", ret); goto exit; @@ -4377,6 +5228,13 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* byte siv[AES_BLOCK_SIZE]; int count = 0; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; + + XMEMSET(deltas, 0, sizeof(deltas)); +#endif bench_stats_start(&count, &start); do { @@ -4388,10 +5246,45 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* printf("wc_AesSivEncrypt failed (%d)\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish(encLabel, 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif bench_stats_start(&count, &start); do { @@ -4403,10 +5296,40 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* printf("wc_AesSivDecrypt failed (%d)\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish(decLabel, 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } void bench_aessiv(void) @@ -4426,6 +5349,13 @@ void bench_poly1305(void) byte mac[16]; double start; int ret = 0, i, count; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; + + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { ret = wc_Poly1305SetKey(&enc, bench_key, 32); @@ -4442,11 +5372,36 @@ void bench_poly1305(void) printf("Poly1305Update failed: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } wc_Poly1305Final(&enc, mac); count += i; - } while (bench_stats_check(start)); - bench_stats_sym_finish("POLY1305", 0, count, bench_size, start, ret); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -4463,11 +5418,40 @@ void bench_poly1305(void) break; } wc_Poly1305Final(&enc, mac); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); - bench_stats_sym_finish("POLY1305", 0, count, bench_size, start, ret); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } + bench_stats_sym_finish("POLY1305", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #endif /* HAVE_POLY1305 */ @@ -4478,6 +5462,13 @@ void bench_camellia(void) Camellia cam; double start; int ret, i, count; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; + + XMEMSET(deltas, 0, sizeof(deltas)); +#endif ret = wc_CamelliaSetKey(&cam, bench_key, 16, bench_iv); if (ret != 0) { @@ -4494,10 +5485,40 @@ void bench_camellia(void) printf("CamelliaCbcEncrypt failed: %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("Camellia", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #endif @@ -4506,10 +5527,19 @@ void bench_sm4_cbc(void) { wc_Sm4 sm4; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret; int i; int count; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + ret = wc_Sm4SetKey(&sm4, bench_key, SM4_KEY_SIZE); if (ret != 0) { printf("Sm4SetKey failed, ret = %d\n", ret); @@ -4529,10 +5559,45 @@ void bench_sm4_cbc(void) printf("Sm4CbcEncrypt failed: %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("SM4-CBC-enc", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif bench_stats_start(&count, &start); do { @@ -4542,10 +5607,40 @@ void bench_sm4_cbc(void) printf("Sm4CbcDecrypt failed: %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("SM4-CBC-dec", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #endif @@ -4554,6 +5649,11 @@ void bench_sm4_gcm(void) { wc_Sm4 sm4; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret; int i; int count; @@ -4567,6 +5667,10 @@ void bench_sm4_gcm(void) } #endif +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + ret = wc_Sm4GcmSetKey(&sm4, bench_key, SM4_KEY_SIZE); if (ret != 0) { printf("Sm4GcmSetKey failed, ret = %d\n", ret); @@ -4583,10 +5687,45 @@ void bench_sm4_gcm(void) printf("Sm4GcmEncrypt failed: %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("SM4-GCM-enc", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif bench_stats_start(&count, &start); do { @@ -4598,10 +5737,40 @@ void bench_sm4_gcm(void) printf("Sm4GcmDecrypt failed: %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("SM4-GCM-dec", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #endif @@ -4610,6 +5779,11 @@ void bench_sm4_ccm() { wc_Sm4 enc; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret, i, count; WC_DECLARE_VAR(bench_additional, byte, AES_AUTH_ADD_SZ, HEAP_HINT); @@ -4624,6 +5798,9 @@ void bench_sm4_ccm() XMEMSET(bench_tag, 0, AES_AUTH_TAG_SZ); XMEMSET(bench_additional, 0, AES_AUTH_ADD_SZ); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if ((ret = wc_Sm4SetKey(&enc, bench_key, 16)) != 0) { printf("wc_Sm4SetKey failed, ret = %d\n", ret); @@ -4636,25 +5813,92 @@ void bench_sm4_ccm() ret |= wc_Sm4CcmEncrypt(&enc, bench_cipher, bench_plain, bench_size, bench_iv, 12, bench_tag, AES_AUTH_TAG_SZ, bench_additional, 0); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("SM4-CCM-enc", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif if (ret != 0) { printf("wc_Sm4Encrypt failed, ret = %d\n", ret); goto exit; } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif + bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { ret |= wc_Sm4CcmDecrypt(&enc, bench_plain, bench_cipher, bench_size, bench_iv, 12, bench_tag, AES_AUTH_TAG_SZ, bench_additional, 0); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("SM4-CCM-dec", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif if (ret != 0) { printf("wc_Sm4Decrypt failed, ret = %d\n", ret); goto exit; @@ -4672,9 +5916,17 @@ void bench_des(int useDeviceID) int ret = 0, i, count = 0, times, pending = 0; Des3 enc[BENCH_MAX_PENDING]; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -4709,11 +5961,41 @@ void bench_des(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_3des: bench_stats_sym_finish("3DES", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -4730,9 +6012,17 @@ void bench_arc4(int useDeviceID) int ret = 0, i, count = 0, times, pending = 0; Arc4 enc[BENCH_MAX_PENDING]; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -4766,11 +6056,41 @@ void bench_arc4(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_arc4: bench_stats_sym_finish("ARC4", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -4787,6 +6107,13 @@ void bench_chacha(void) ChaCha enc; double start; int i, count; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; + + XMEMSET(deltas, 0, sizeof(deltas)); +#endif XMEMSET(&enc, 0, sizeof(enc)); wc_Chacha_SetKey(&enc, bench_key, 16); @@ -4796,10 +6123,40 @@ void bench_chacha(void) for (i = 0; i < numBlocks; i++) { wc_Chacha_SetIV(&enc, bench_iv, 0); wc_Chacha_Process(&enc, bench_cipher, bench_plain, bench_size); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("CHACHA", 0, count, bench_size, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #endif /* HAVE_CHACHA*/ @@ -4808,9 +6165,17 @@ void bench_chacha20_poly1305_aead(void) { double start; int ret = 0, i, count; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif byte authTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]; XMEMSET(authTag, 0, sizeof(authTag)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif bench_stats_start(&count, &start); do { @@ -4821,10 +6186,40 @@ void bench_chacha20_poly1305_aead(void) printf("wc_ChaCha20Poly1305_Encrypt error: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("CHA-POLY", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #endif /* HAVE_CHACHA && HAVE_POLY1305 */ @@ -4835,6 +6230,12 @@ void bench_md5(int useDeviceID) wc_Md5 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif + WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_MD5_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -4842,6 +6243,9 @@ void bench_md5(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -4875,6 +6279,28 @@ void bench_md5(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -4894,7 +6320,11 @@ void bench_md5(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -4907,12 +6337,41 @@ void bench_md5(int useDeviceID) ret = wc_Md5Final(hash, digest[0]); if (ret != 0) goto exit_md5; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_md5: bench_stats_sym_finish("MD5", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -4933,6 +6392,11 @@ void bench_sha(int useDeviceID) wc_Sha hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -4940,6 +6404,9 @@ void bench_sha(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -4973,6 +6440,28 @@ void bench_sha(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -4992,7 +6481,11 @@ void bench_sha(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -5006,12 +6499,41 @@ void bench_sha(int useDeviceID) ret = wc_ShaFinal(hash, digest[0]); if (ret != 0) goto exit_sha; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_sha: bench_stats_sym_finish("SHA", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -5030,6 +6552,11 @@ void bench_sha224(int useDeviceID) wc_Sha224 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA224_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -5037,6 +6564,9 @@ void bench_sha224(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -5067,6 +6597,28 @@ void bench_sha224(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -5085,7 +6637,11 @@ void bench_sha224(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -5101,11 +6657,18 @@ void bench_sha224(int useDeviceID) goto exit_sha224; } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_sha224: bench_stats_sym_finish("SHA-224", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -5117,12 +6680,18 @@ exit: } #endif + #ifndef NO_SHA256 void bench_sha256(int useDeviceID) { wc_Sha256 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA256_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -5130,6 +6699,9 @@ void bench_sha256(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -5163,6 +6735,28 @@ void bench_sha256(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -5181,7 +6775,11 @@ void bench_sha256(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -5195,16 +6793,43 @@ void bench_sha256(int useDeviceID) ret = wc_Sha256Final(hash, digest[0]); if (ret != 0) goto exit_sha256; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_sha256: bench_stats_sym_finish("SHA-256", useDeviceID, count, bench_size, start, ret); - +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: - for (i = 0; i < BENCH_MAX_PENDING; i++) { wc_Sha256Free(&hash[i]); } @@ -5219,6 +6844,11 @@ void bench_sha384(int useDeviceID) wc_Sha384 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA384_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -5226,6 +6856,9 @@ void bench_sha384(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -5256,6 +6889,28 @@ void bench_sha384(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -5274,7 +6929,11 @@ void bench_sha384(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -5288,13 +6947,42 @@ void bench_sha384(int useDeviceID) ret = wc_Sha384Final(hash, digest[0]); if (ret != 0) goto exit_sha384; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_sha384: bench_stats_sym_finish("SHA-384", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -5312,6 +7000,11 @@ void bench_sha512(int useDeviceID) wc_Sha512 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA512_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -5319,6 +7012,9 @@ void bench_sha512(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -5349,6 +7045,28 @@ void bench_sha512(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -5367,7 +7085,11 @@ void bench_sha512(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -5381,13 +7103,42 @@ void bench_sha512(int useDeviceID) ret = wc_Sha512Final(hash, digest[0]); if (ret != 0) goto exit_sha512; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_sha512: bench_stats_sym_finish("SHA-512", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -5405,13 +7156,21 @@ void bench_sha512_224(int useDeviceID) wc_Sha512_224 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; - WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif + WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA512_224_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA512_224_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -5442,6 +7201,28 @@ void bench_sha512_224(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -5460,7 +7241,11 @@ void bench_sha512_224(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -5474,13 +7259,42 @@ void bench_sha512_224(int useDeviceID) ret = wc_Sha512_224Final(hash, digest[0]); if (ret != 0) goto exit_sha512_224; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_sha512_224: bench_stats_sym_finish("SHA-512/224", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -5499,13 +7313,21 @@ void bench_sha512_256(int useDeviceID) wc_Sha512_256 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; - WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif + WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA512_256_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA512_256_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -5536,6 +7358,28 @@ void bench_sha512_256(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -5554,7 +7398,11 @@ void bench_sha512_256(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -5568,13 +7416,42 @@ void bench_sha512_256(int useDeviceID) ret = wc_Sha512_256Final(hash, digest[0]); if (ret != 0) goto exit_sha512_256; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_sha512_256: bench_stats_sym_finish("SHA-512/256", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -5596,6 +7473,11 @@ void bench_sha3_224(int useDeviceID) wc_Sha3 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_224_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -5603,6 +7485,9 @@ void bench_sha3_224(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -5633,6 +7518,28 @@ void bench_sha3_224(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -5651,7 +7558,11 @@ void bench_sha3_224(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -5665,13 +7576,42 @@ void bench_sha3_224(int useDeviceID) ret = wc_Sha3_224_Final(hash, digest[0]); if (ret != 0) goto exit_sha3_224; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_sha3_224: bench_stats_sym_finish("SHA3-224", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -5688,6 +7628,11 @@ void bench_sha3_256(int useDeviceID) { wc_Sha3 hash[BENCH_MAX_PENDING]; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_256_DIGEST_SIZE, HEAP_HINT); @@ -5696,6 +7641,9 @@ void bench_sha3_256(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -5726,6 +7674,28 @@ void bench_sha3_256(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -5744,7 +7714,11 @@ void bench_sha3_256(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -5758,13 +7732,42 @@ void bench_sha3_256(int useDeviceID) ret = wc_Sha3_256_Final(hash, digest[0]); if (ret != 0) goto exit_sha3_256; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_sha3_256: bench_stats_sym_finish("SHA3-256", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -5782,6 +7785,11 @@ void bench_sha3_384(int useDeviceID) wc_Sha3 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_384_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -5789,6 +7797,9 @@ void bench_sha3_384(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -5819,6 +7830,28 @@ void bench_sha3_384(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -5837,7 +7870,11 @@ void bench_sha3_384(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -5851,13 +7888,42 @@ void bench_sha3_384(int useDeviceID) ret = wc_Sha3_384_Final(hash, digest[0]); if (ret != 0) goto exit_sha3_384; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_sha3_384: bench_stats_sym_finish("SHA3-384", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -5875,13 +7941,21 @@ void bench_sha3_512(int useDeviceID) wc_Sha3 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; - WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif + WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_512_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_512_DIGEST_SIZE, HEAP_HINT); /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -5912,6 +7986,28 @@ void bench_sha3_512(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -5930,7 +8026,11 @@ void bench_sha3_512(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -5944,13 +8044,42 @@ void bench_sha3_512(int useDeviceID) ret = wc_Sha3_512_Final(hash, digest[0]); if (ret != 0) goto exit_sha3_512; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_sha3_512: bench_stats_sym_finish("SHA3-512", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -5967,6 +8096,11 @@ void bench_shake128(int useDeviceID) { wc_Shake hash[BENCH_MAX_PENDING]; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_128_BLOCK_SIZE, HEAP_HINT); @@ -5975,6 +8109,9 @@ void bench_shake128(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -6005,6 +8142,28 @@ void bench_shake128(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -6024,7 +8183,11 @@ void bench_shake128(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -6039,13 +8202,42 @@ void bench_shake128(int useDeviceID) WC_SHA3_128_BLOCK_SIZE); if (ret != 0) goto exit_shake128; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_shake128: bench_stats_sym_finish("SHAKE128", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -6062,6 +8254,11 @@ void bench_shake256(int useDeviceID) { wc_Shake hash[BENCH_MAX_PENDING]; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_256_BLOCK_SIZE, HEAP_HINT); @@ -6070,6 +8267,9 @@ void bench_shake256(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -6100,6 +8300,28 @@ void bench_shake256(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -6119,7 +8341,11 @@ void bench_shake256(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -6134,13 +8360,42 @@ void bench_shake256(int useDeviceID) WC_SHA3_256_BLOCK_SIZE); if (ret != 0) goto exit_shake256; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_shake256: bench_stats_sym_finish("SHAKE256", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -6158,6 +8413,11 @@ void bench_sm3(int useDeviceID) { wc_Sm3 hash[BENCH_MAX_PENDING]; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SM3_DIGEST_SIZE, HEAP_HINT); @@ -6166,6 +8426,9 @@ void bench_sm3(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { /* init keys */ @@ -6195,6 +8458,28 @@ void bench_sm3(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; @@ -6212,7 +8497,11 @@ void bench_sm3(int useDeviceID) } } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -6226,12 +8515,41 @@ void bench_sm3(int useDeviceID) ret = wc_Sm3Final(hash, digest[0]); if (ret != 0) goto exit_sm3; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } exit_sm3: bench_stats_sym_finish("SM3", useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -6250,8 +8568,17 @@ void bench_ripemd(void) RipeMd hash; byte digest[RIPEMD_DIGEST_SIZE]; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count, ret = 0; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + if (digest_stream) { ret = wc_InitRipeMd(&hash); if (ret != 0) { @@ -6267,6 +8594,28 @@ void bench_ripemd(void) printf("wc_RipeMdUpdate failed, retval %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } ret = wc_RipeMdFinal(&hash, digest); if (ret != 0) { @@ -6275,7 +8624,11 @@ void bench_ripemd(void) } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -6296,11 +8649,40 @@ void bench_ripemd(void) printf("wc_RipeMdFinal failed, retval %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } bench_stats_sym_finish("RIPEMD", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif return; } @@ -6314,6 +8696,13 @@ void bench_blake2b(void) byte digest[64]; double start; int ret = 0, i, count; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; + + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { ret = wc_InitBlake2b(&b2b, 64); @@ -6330,6 +8719,28 @@ void bench_blake2b(void) printf("Blake2bUpdate failed, ret = %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } ret = wc_Blake2bFinal(&b2b, digest, 64); if (ret != 0) { @@ -6337,7 +8748,11 @@ void bench_blake2b(void) return; } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -6358,11 +8773,40 @@ void bench_blake2b(void) printf("Blake2bFinal failed, ret = %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } bench_stats_sym_finish("BLAKE2b", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #endif @@ -6373,6 +8817,13 @@ void bench_blake2s(void) byte digest[32]; double start; int ret = 0, i, count; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; + + XMEMSET(deltas, 0, sizeof(deltas)); +#endif if (digest_stream) { ret = wc_InitBlake2s(&b2s, 32); @@ -6389,6 +8840,28 @@ void bench_blake2s(void) printf("Blake2sUpdate failed, ret = %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } ret = wc_Blake2sFinal(&b2s, digest, 32); if (ret != 0) { @@ -6396,7 +8869,11 @@ void bench_blake2s(void) return; } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } else { bench_stats_start(&count, &start); @@ -6417,11 +8894,40 @@ void bench_blake2s(void) printf("Blake2sFinal failed, ret = %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); } bench_stats_sym_finish("BLAKE2s", 0, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #endif @@ -6434,6 +8940,11 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID) byte digest[AES_BLOCK_SIZE]; word32 digestSz = sizeof(digest); double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret, i, count; #ifdef WOLFSSL_SECO_CAAM unsigned int keyID; @@ -6455,6 +8966,10 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID) #endif (void)useDeviceID; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + bench_stats_start(&count, &start); do { #ifdef HAVE_FIPS @@ -6479,6 +8994,28 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID) printf("CmacUpdate failed, ret = %d\n", ret); return; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* Note: final force zero's the Cmac struct */ ret = wc_CmacFinal(&cmac, digest, &digestSz); @@ -6487,8 +9024,16 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID) return; } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish(outMsg, useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } void bench_cmac(int useDeviceID) @@ -6509,8 +9054,17 @@ void bench_scrypt(void) { byte derived[64]; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret, i, count; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + bench_stats_start(&count, &start); do { for (i = 0; i < scryptCnt; i++) { @@ -6521,11 +9075,41 @@ void bench_scrypt(void) printf("scrypt failed, ret = %d\n", ret); goto exit; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit: bench_stats_asym_finish("scrypt", 17, "", 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #endif /* HAVE_SCRYPT */ @@ -6538,6 +9122,11 @@ static void bench_hmac(int useDeviceID, int type, int digestSz, Hmac hmac[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif #ifdef WOLFSSL_ASYNC_CRYPT WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_MAX_DIGEST_SIZE, HEAP_HINT); @@ -6551,6 +9140,9 @@ static void bench_hmac(int useDeviceID, int type, int digestSz, /* clear for done cleanup */ XMEMSET(hmac, 0, sizeof(hmac)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -6604,11 +9196,41 @@ static void bench_hmac(int useDeviceID, int type, int digestSz, goto exit_hmac; } } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for i */ } while (pending > 0); - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_hmac: bench_stats_sym_finish(label, useDeviceID, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -6726,6 +9348,11 @@ void bench_pbkdf2(void) { double start; int ret = 0, count = 0; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif const char* passwd32 = "passwordpasswordpasswordpassword"; WOLFSSL_SMALL_STACK_STATIC const byte salt32[] = { 0x78, 0x57, 0x8E, 0x5a, 0x5d, 0x63, 0xcb, 0x06, @@ -6734,13 +9361,47 @@ void bench_pbkdf2(void) 0x78, 0x57, 0x8E, 0x5a, 0x5d, 0x63, 0xcb, 0x06 }; byte derived[32]; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + bench_stats_start(&count, &start); do { ret = wc_PBKDF2(derived, (const byte*)passwd32, (int)XSTRLEN(passwd32), salt32, (int)sizeof(salt32), 1000, 32, WC_SHA256); count++; - } while (bench_stats_check(start)); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("PBKDF2", 32, count, 32, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #endif /* !NO_PWDBASED */ @@ -6750,30 +9411,104 @@ void bench_pbkdf2(void) void bench_siphash(void) { double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret = 0, count; const char* passwd16 = "passwordpassword"; byte out[16]; int i; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { ret = wc_SipHash((const byte*)passwd16, bench_plain, bench_size, out, 8); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("SipHash-8", 1, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { ret = wc_SipHash((const byte*)passwd16, bench_plain, bench_size, out, 16); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_sym_finish("SipHash-16", 1, count, bench_size, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #endif @@ -6850,6 +9585,11 @@ static void bench_rsaKeyGen_helper(int useDeviceID, word32 keySz) RsaKey genKey[BENCH_MAX_PENDING]; #endif double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret = 0, i, count = 0, times, pending = 0; const long rsa_e_val = WC_RSA_EXPONENT; const char**desc = bench_desc_words[lng_index]; @@ -6865,6 +9605,9 @@ static void bench_rsaKeyGen_helper(int useDeviceID, word32 keySz) /* clear for done cleanup */ XMEMSET(genKey, 0, sizeof(*genKey) * BENCH_MAX_PENDING); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif bench_stats_start(&count, &start); do { @@ -6891,12 +9634,42 @@ static void bench_rsaKeyGen_helper(int useDeviceID, word32 keySz) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit: bench_stats_asym_finish("RSA", (int)keySz, desc[2], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif /* cleanup */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -7046,6 +9819,11 @@ static void bench_rsa_helper(int useDeviceID, RsaKey rsaKey[BENCH_MAX_PENDING], const int len = (int)TEST_STRING_SZ; #endif double start = 0.0F; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif const char**desc = bench_desc_words[lng_index]; #ifndef WOLFSSL_RSA_VERIFY_ONLY WC_DECLARE_VAR(message, byte, TEST_STRING_SZ, HEAP_HINT); @@ -7088,6 +9866,10 @@ static void bench_rsa_helper(int useDeviceID, RsaKey rsaKey[BENCH_MAX_PENDING], XMEMCPY(message, messageStr, len); #endif +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + if (!rsa_sign_verify) { #ifndef WOLFSSL_RSA_VERIFY_ONLY /* begin public RSA */ @@ -7112,12 +9894,42 @@ static void bench_rsa_helper(int useDeviceID, RsaKey rsaKey[BENCH_MAX_PENDING], } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); + exit_rsa_verify: bench_stats_asym_finish("RSA", (int)rsaKeySz, desc[0], useDeviceID, count, start, ret); + #ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + #endif #endif /* !WOLFSSL_RSA_VERIFY_ONLY */ #ifndef WOLFSSL_RSA_PUBLIC_ONLY @@ -7125,6 +9937,13 @@ exit_rsa_verify: goto exit; } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif + /* capture resulting encrypt length */ idx = (word32)(rsaKeySz/8); @@ -7148,12 +9967,42 @@ exit_rsa_verify: } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); + exit_rsa_pub: bench_stats_asym_finish("RSA", (int)rsaKeySz, desc[1], useDeviceID, count, start, ret); + #ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + #endif #endif /* !WOLFSSL_RSA_PUBLIC_ONLY */ } else { @@ -7178,16 +10027,53 @@ exit_rsa_pub: } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); + exit_rsa_sign: bench_stats_asym_finish("RSA", (int)rsaKeySz, desc[4], useDeviceID, count, start, ret); - + #ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + #endif if (ret < 0) { goto exit; } + +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif + #endif /* !WOLFSSL_RSA_PUBLIC_ONLY && !WOLFSSL_RSA_VERIFY_ONLY */ /* capture resulting encrypt length */ @@ -7234,13 +10120,42 @@ exit_rsa_sign: } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) + #ifdef ADVANCED_STATS + || runs < minimum_runs + #endif + ); exit_rsa_verifyinline: bench_stats_asym_finish("RSA", (int)rsaKeySz, desc[5], useDeviceID, count, start, ret); + #ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + #endif } exit: @@ -7473,6 +10388,11 @@ void bench_dh(int useDeviceID) int count = 0, times, pending = 0; const byte* tmp = NULL; double start = 0.0F; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif #ifdef WOLFSSL_SMALL_STACK DhKey *dhKey = NULL; #else @@ -7595,6 +10515,9 @@ void bench_dh(int useDeviceID) XMEMSET(dhKey[i], 0, sizeof(DhKey)); } #endif +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -7632,6 +10555,10 @@ void bench_dh(int useDeviceID) } } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + /* Key Gen */ bench_stats_start(&count, &start); PRIVATE_KEY_UNLOCK(); @@ -7655,18 +10582,55 @@ void bench_dh(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + PRIVATE_KEY_LOCK(); exit_dh_gen: bench_stats_asym_finish("DH", dhKeySz, desc[2], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif if (ret < 0) { goto exit; } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif + /* Generate key to use as other public */ PRIVATE_KEY_UNLOCK(); ret = wc_DhGenerateKeyPair(&dhKey[0], &gRng, @@ -7695,14 +10659,44 @@ exit_dh_gen: } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + PRIVATE_KEY_LOCK(); exit: bench_stats_asym_finish("DH", dhKeySz, desc[3], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif /* cleanup */ #ifdef WOLFSSL_SMALL_STACK @@ -7732,8 +10726,17 @@ static void bench_kyber_keygen(int type, const char* name, int keySize, { int ret = 0, times, count, pending = 0; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif const char**desc = bench_desc_words[lng_index]; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + /* KYBER Make Key */ bench_stats_start(&count, &start); do { @@ -7752,19 +10755,52 @@ static void bench_kyber_keygen(int type, const char* name, int keySize, #endif if (ret != 0) goto exit; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } - while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); exit: bench_stats_asym_finish(name, keySize, desc[2], 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } static void bench_kyber_encap(const char* name, int keySize, KyberKey* key) { int ret = 0, times, count, pending = 0; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif const char**desc = bench_desc_words[lng_index]; byte ct[KYBER_MAX_CIPHER_TEXT_SIZE]; byte ss[KYBER_SS_SZ]; @@ -7775,6 +10811,10 @@ static void bench_kyber_encap(const char* name, int keySize, KyberKey* key) return; } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + /* KYBER Encapsulate */ bench_stats_start(&count, &start); do { @@ -7789,13 +10829,48 @@ static void bench_kyber_encap(const char* name, int keySize, KyberKey* key) #endif if (ret != 0) goto exit_encap; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } - while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); exit_encap: bench_stats_asym_finish(name, keySize, desc[9], 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif + +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif /* KYBER Decapsulate */ bench_stats_start(&count, &start); @@ -7805,13 +10880,41 @@ exit_encap: ret = wc_KyberKey_Decapsulate(key, ss, ct, ctSz); if (ret != 0) goto exit_decap; + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } - while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); exit_decap: bench_stats_asym_finish(name, keySize, desc[13], 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } void bench_kyber(int type) @@ -8162,13 +11265,47 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm) printf("wc_LmsKey_Sign failed: %d\n", ret); goto exit_lms_sign_verify; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); bench_stats_asym_finish(str, (int)sigSz, "sign", 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif count = 0; bench_stats_start(&count, &start); @@ -8181,14 +11318,43 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm) printf("wc_LmsKey_Verify failed: %d\n", ret); goto exit_lms_sign_verify; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); exit_lms_sign_verify: bench_stats_asym_finish(str, (int)sigSz, "verify", 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif if (loaded) { @@ -8500,6 +11666,11 @@ void bench_eccMakeKey(int useDeviceID, int curveId) #endif char name[BENCH_ECC_NAME_SZ]; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif const char**desc = bench_desc_words[lng_index]; #ifdef WOLFSSL_SMALL_STACK @@ -8516,6 +11687,9 @@ void bench_eccMakeKey(int useDeviceID, int curveId) /* clear for done cleanup */ XMEMSET(genKey, 0, sizeof(*genKey) * BENCH_MAX_PENDING); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif /* ECC Make Key */ bench_stats_start(&count, &start); @@ -8544,15 +11718,44 @@ void bench_eccMakeKey(int useDeviceID, int curveId) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); exit: (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECC [%15s]", wc_ecc_get_name(curveId)); bench_stats_asym_finish(name, keySize * 8, desc[2], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif /* cleanup */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -8592,6 +11795,11 @@ void bench_ecc(int useDeviceID, int curveId) word32 x[BENCH_MAX_PENDING]; double start = 0; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif const char**desc = bench_desc_words[lng_index]; #ifdef HAVE_ECC_DHE @@ -8639,6 +11847,9 @@ void bench_ecc(int useDeviceID, int curveId) XMEMSET(genKey, 0, sizeof(*genKey) * BENCH_MAX_PENDING); #ifdef HAVE_ECC_DHE XMEMSET(genKey2, 0, sizeof(*genKey2) * BENCH_MAX_PENDING); +#endif +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); #endif keySize = wc_ecc_get_curve_size_from_id(curveId); @@ -8697,9 +11908,36 @@ void bench_ecc(int useDeviceID, int curveId) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + PRIVATE_KEY_UNLOCK(); exit_ecdhe: (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECDHE [%15s]", @@ -8707,10 +11945,19 @@ exit_ecdhe: bench_stats_asym_finish(name, keySize * 8, desc[3], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif if (ret < 0) { goto exit; } + #endif /* HAVE_ECC_DHE */ #if !defined(NO_ASN) && defined(HAVE_ECC_SIGN) @@ -8747,9 +11994,35 @@ exit_ecdhe: } } /* bench_async_check */ } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); exit_ecdsa_sign: (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECDSA [%15s]", @@ -8757,6 +12030,14 @@ exit_ecdsa_sign: bench_stats_asym_finish(name, keySize * 8, desc[4], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif if (ret < 0) { goto exit; @@ -8790,9 +12071,35 @@ exit_ecdsa_sign: } } /* if bench_async_check */ } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); exit_ecdsa_verify: (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECDSA [%15s]", @@ -8800,6 +12107,9 @@ exit_ecdsa_verify: bench_stats_asym_finish(name, keySize * 8, desc[5], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif #endif /* HAVE_ECC_VERIFY */ #endif /* !NO_ASN && HAVE_ECC_SIGN */ @@ -8861,6 +12171,11 @@ void bench_eccEncrypt(int curveId) word32 bench_plainSz = bench_size; int ret, i, count; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif const char**desc = bench_desc_words[lng_index]; #ifdef WOLFSSL_SMALL_STACK @@ -8921,6 +12236,10 @@ void bench_eccEncrypt(int curveId) msg[i] = (byte)i; } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + bench_stats_start(&count, &start); do { for (i = 0; i < ntimes; i++) { @@ -8931,14 +12250,48 @@ void bench_eccEncrypt(int curveId) printf("wc_ecc_encrypt failed! %d\n", ret); goto exit_enc; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); exit_enc: (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECC [%15s]", wc_ecc_get_name(curveId)); bench_stats_asym_finish(name, keySize * 8, desc[6], 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif bench_stats_start(&count, &start); do { @@ -8950,11 +12303,41 @@ exit_enc: printf("wc_ecc_decrypt failed! %d\n", ret); goto exit_dec; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_dec: bench_stats_asym_finish(name, keySize * 8, desc[7], 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif exit: @@ -8988,6 +12371,11 @@ static void bench_sm2_MakeKey(int useDeviceID) ecc_key genKey[BENCH_MAX_PENDING]; char name[BENCH_ECC_NAME_SZ]; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif const char**desc = bench_desc_words[lng_index]; deviceID = useDeviceID ? devId : INVALID_DEVID; @@ -8995,6 +12383,9 @@ static void bench_sm2_MakeKey(int useDeviceID) /* clear for done cleanup */ XMEMSET(&genKey, 0, sizeof(genKey)); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif /* ECC Make Key */ bench_stats_start(&count, &start); @@ -9022,14 +12413,44 @@ static void bench_sm2_MakeKey(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit: (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECC [%15s]", wc_ecc_get_name(ECC_SM2P256V1)); bench_stats_asym_finish(name, keySize * 8, desc[2], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif /* cleanup */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -9055,6 +12476,11 @@ void bench_sm2(int useDeviceID) #endif word32 x[BENCH_MAX_PENDING]; double start = 0; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif const char**desc = bench_desc_words[lng_index]; #ifdef HAVE_ECC_DHE @@ -9081,6 +12507,10 @@ void bench_sm2(int useDeviceID) #ifdef HAVE_ECC_DHE XMEMSET(&genKey2, 0, sizeof(genKey2)); #endif +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + keySize = wc_ecc_get_curve_size_from_id(ECC_SM2P256V1); /* init keys */ @@ -9138,15 +12568,45 @@ void bench_sm2(int useDeviceID) } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + PRIVATE_KEY_UNLOCK(); exit_ecdhe: (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECDHE [%15s]", wc_ecc_get_name(ECC_SM2P256V1)); bench_stats_asym_finish(name, keySize * 8, desc[3], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif if (ret < 0) { goto exit; @@ -9162,6 +12622,13 @@ exit_ecdhe: } } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif + /* ECC Sign */ bench_stats_start(&count, &start); do { @@ -9183,14 +12650,44 @@ exit_ecdhe: } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_ecdsa_sign: (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECDSA [%15s]", wc_ecc_get_name(ECC_SM2P256V1)); bench_stats_asym_finish(name, keySize * 8, desc[4], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif if (ret < 0) { goto exit; @@ -9219,14 +12716,45 @@ exit_ecdsa_sign: } } } /* for i */ + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for times */ count += times; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_ecdsa_verify: (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECDSA [%15s]", wc_ecc_get_name(ECC_SM2P256V1)); bench_stats_asym_finish(name, keySize * 8, desc[5], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif + #endif /* HAVE_ECC_VERIFY */ #endif /* !NO_ASN && HAVE_ECC_SIGN */ @@ -9265,9 +12793,18 @@ void bench_curve25519KeyGen(int useDeviceID) { curve25519_key genKey; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret = 0, i, count; const char**desc = bench_desc_words[lng_index]; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + /* Key Gen */ bench_stats_start(&count, &start); do { @@ -9285,11 +12822,41 @@ void bench_curve25519KeyGen(int useDeviceID) printf("wc_curve25519_make_key failed: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish("CURVE", 25519, desc[2], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #ifdef HAVE_CURVE25519_SHARED_SECRET @@ -9297,11 +12864,20 @@ void bench_curve25519KeyAgree(int useDeviceID) { curve25519_key genKey, genKey2; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret, i, count; byte shared[32]; const char**desc = bench_desc_words[lng_index]; word32 x = 0; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + wc_curve25519_init_ex(&genKey, HEAP_HINT, useDeviceID ? devId : INVALID_DEVID); wc_curve25519_init_ex(&genKey2, HEAP_HINT, @@ -9329,12 +12905,42 @@ void bench_curve25519KeyAgree(int useDeviceID) printf("curve25519_shared_secret failed: %d\n", ret); goto exit; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit: bench_stats_asym_finish("CURVE", 25519, desc[3], useDeviceID, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_curve25519_free(&genKey2); wc_curve25519_free(&genKey); @@ -9348,9 +12954,18 @@ void bench_ed25519KeyGen(void) #ifdef HAVE_ED25519_MAKE_KEY ed25519_key genKey; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; const char**desc = bench_desc_words[lng_index]; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + /* Key Gen */ bench_stats_start(&count, &start); do { @@ -9358,10 +12973,40 @@ void bench_ed25519KeyGen(void) wc_ed25519_init(&genKey); (void)wc_ed25519_make_key(&gRng, 32, &genKey); wc_ed25519_free(&genKey); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish("ED", 25519, desc[2], 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif #endif /* HAVE_ED25519_MAKE_KEY */ } @@ -9374,6 +13019,11 @@ void bench_ed25519KeySign(void) ed25519_key genKey; #ifdef HAVE_ED25519_SIGN double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; byte sig[ED25519_SIG_SIZE]; byte msg[512]; @@ -9396,6 +13046,10 @@ void bench_ed25519KeySign(void) for (i = 0; i < (int)sizeof(msg); i++) msg[i] = (byte)i; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + bench_stats_start(&count, &start); do { for (i = 0; i < agreeTimes; i++) { @@ -9405,11 +13059,46 @@ void bench_ed25519KeySign(void) printf("ed25519_sign_msg failed\n"); goto exit_ed_sign; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_ed_sign: bench_stats_asym_finish("ED", 25519, desc[4], 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif #ifdef HAVE_ED25519_VERIFY bench_stats_start(&count, &start); @@ -9422,11 +13111,41 @@ exit_ed_sign: printf("ed25519_verify_msg failed\n"); goto exit_ed_verify; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_ed_verify: bench_stats_asym_finish("ED", 25519, desc[5], 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif #endif /* HAVE_ED25519_VERIFY */ #endif /* HAVE_ED25519_SIGN */ @@ -9439,9 +13158,18 @@ void bench_curve448KeyGen(void) { curve448_key genKey; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret = 0, i, count; const char**desc = bench_desc_words[lng_index]; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + /* Key Gen */ bench_stats_start(&count, &start); do { @@ -9452,10 +13180,40 @@ void bench_curve448KeyGen(void) printf("wc_curve448_make_key failed: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish("CURVE", 448, desc[2], 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } #ifdef HAVE_CURVE448_SHARED_SECRET @@ -9463,11 +13221,20 @@ void bench_curve448KeyAgree(void) { curve448_key genKey, genKey2; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int ret, i, count; byte shared[56]; const char**desc = bench_desc_words[lng_index]; word32 x = 0; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + wc_curve448_init(&genKey); wc_curve448_init(&genKey2); @@ -9493,11 +13260,41 @@ void bench_curve448KeyAgree(void) printf("curve448_shared_secret failed: %d\n", ret); goto exit; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit: bench_stats_asym_finish("CURVE", 448, desc[3], 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_curve448_free(&genKey2); wc_curve448_free(&genKey); @@ -9510,9 +13307,18 @@ void bench_ed448KeyGen(void) { ed448_key genKey; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; const char**desc = bench_desc_words[lng_index]; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + /* Key Gen */ bench_stats_start(&count, &start); do { @@ -9520,10 +13326,40 @@ void bench_ed448KeyGen(void) wc_ed448_init(&genKey); (void)wc_ed448_make_key(&gRng, ED448_KEY_SIZE, &genKey); wc_ed448_free(&genKey); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish("ED", 448, desc[2], 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } @@ -9533,6 +13369,11 @@ void bench_ed448KeySign(void) ed448_key genKey; #ifdef HAVE_ED448_SIGN double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; byte sig[ED448_SIG_SIZE]; byte msg[512]; @@ -9553,6 +13394,10 @@ void bench_ed448KeySign(void) for (i = 0; i < (int)sizeof(msg); i++) msg[i] = (byte)i; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + bench_stats_start(&count, &start); do { for (i = 0; i < agreeTimes; i++) { @@ -9563,11 +13408,46 @@ void bench_ed448KeySign(void) printf("ed448_sign_msg failed\n"); goto exit_ed_sign; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_ed_sign: bench_stats_asym_finish("ED", 448, desc[4], 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif #ifdef HAVE_ED448_VERIFY bench_stats_start(&count, &start); @@ -9580,11 +13460,41 @@ exit_ed_sign: printf("ed448_verify_msg failed\n"); goto exit_ed_verify; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + exit_ed_verify: bench_stats_asym_finish("ED", 448, desc[5], 0, count, start, ret); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif #endif /* HAVE_ED448_VERIFY */ #endif /* HAVE_ED448_SIGN */ @@ -9598,10 +13508,19 @@ void bench_eccsiKeyGen(void) { EccsiKey genKey; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; const char**desc = bench_desc_words[lng_index]; int ret; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + /* Key Gen */ bench_stats_start(&count, &start); do { @@ -9613,16 +13532,51 @@ void bench_eccsiKeyGen(void) break; } wc_FreeEccsiKey(&genKey); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish("ECCSI", 256, desc[2], 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } void bench_eccsiPairGen(void) { EccsiKey genKey; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; const char**desc = bench_desc_words[lng_index]; mp_int ssk; @@ -9635,6 +13589,10 @@ void bench_eccsiPairGen(void) wc_InitEccsiKey(&genKey, NULL, INVALID_DEVID); (void)wc_MakeEccsiKey(&genKey, &gRng); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + /* RSK Gen */ bench_stats_start(&count, &start); do { @@ -9645,10 +13603,40 @@ void bench_eccsiPairGen(void) printf("wc_MakeEccsiPair failed: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish("ECCSI", 256, desc[12], 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_FreeEccsiKey(&genKey); wc_ecc_del_point(pvt); @@ -9661,6 +13649,11 @@ void bench_eccsiValidate(void) { EccsiKey genKey; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; const char**desc = bench_desc_words[lng_index]; mp_int ssk; @@ -9669,6 +13662,10 @@ void bench_eccsiValidate(void) int valid; int ret; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + (void)mp_init(&ssk); pvt = wc_ecc_new_point(); wc_InitEccsiKey(&genKey, NULL, INVALID_DEVID); @@ -9687,10 +13684,40 @@ void bench_eccsiValidate(void) valid); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish("ECCSI", 256, desc[11], 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_FreeEccsiKey(&genKey); wc_ecc_del_point(pvt); @@ -9701,6 +13728,11 @@ void bench_eccsi(void) { EccsiKey genKey; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; const char**desc = bench_desc_words[lng_index]; mp_int ssk; @@ -9714,6 +13746,10 @@ void bench_eccsi(void) int ret; int verified; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + (void)mp_init(&ssk); pvt = wc_ecc_new_point(); (void)wc_InitEccsiKey(&genKey, NULL, INVALID_DEVID); @@ -9735,10 +13771,45 @@ void bench_eccsi(void) printf("wc_SignEccsiHash failed: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish("ECCSI", 256, desc[4], 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif /* Derive */ bench_stats_start(&count, &start); @@ -9752,10 +13823,40 @@ void bench_eccsi(void) verified); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish("ECCSI", 256, desc[5], 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_FreeEccsiKey(&genKey); wc_ecc_del_point(pvt); @@ -9769,10 +13870,19 @@ void bench_sakkeKeyGen(void) { SakkeKey genKey; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; const char**desc = bench_desc_words[lng_index]; int ret; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + /* Key Gen */ bench_stats_start(&count, &start); do { @@ -9784,22 +13894,61 @@ void bench_sakkeKeyGen(void) break; } wc_FreeSakkeKey(&genKey); + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish("SAKKE", 1024, desc[2], 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif } void bench_sakkeRskGen(void) { SakkeKey genKey; double start; + #ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; const char**desc = bench_desc_words[lng_index]; ecc_point* rsk; static const byte id[] = { 0x01, 0x23, 0x34, 0x45 }; int ret; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + rsk = wc_ecc_new_point(); wc_InitSakkeKey_ex(&genKey, 128, ECC_SAKKE_1, NULL, INVALID_DEVID); (void)wc_MakeSakkeKey(&genKey, &gRng); @@ -9813,10 +13962,40 @@ void bench_sakkeRskGen(void) printf("wc_MakeSakkeRsk failed: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish("SAKKE", 1024, desc[8], 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_FreeSakkeKey(&genKey); wc_ecc_del_point(rsk); @@ -9828,6 +14007,11 @@ void bench_sakkeValidate(void) { SakkeKey genKey; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; const char**desc = bench_desc_words[lng_index]; ecc_point* rsk; @@ -9835,6 +14019,10 @@ void bench_sakkeValidate(void) int valid; int ret; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + rsk = wc_ecc_new_point(); (void)wc_InitSakkeKey_ex(&genKey, 128, ECC_SAKKE_1, NULL, INVALID_DEVID); (void)wc_MakeSakkeKey(&genKey, &gRng); @@ -9851,10 +14039,40 @@ void bench_sakkeValidate(void) valid); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish("SAKKE", 1024, desc[11], 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_FreeSakkeKey(&genKey); wc_ecc_del_point(rsk); @@ -9864,6 +14082,11 @@ void bench_sakke(void) { SakkeKey genKey; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; const char**desc = bench_desc_words[lng_index]; ecc_point* rsk; @@ -9880,6 +14103,9 @@ void bench_sakke(void) word32 iTableLen = 0; XMEMCPY(ssv, ssv_init, sizeof ssv); +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif rsk = wc_ecc_new_point(); (void)wc_InitSakkeKey_ex(&genKey, 128, ECC_SAKKE_1, NULL, INVALID_DEVID); @@ -9899,12 +14125,46 @@ void bench_sakke(void) printf("wc_MakeSakkeEncapsulatedSSV failed: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } /* for */ count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); bench_stats_asym_finish_ex("SAKKE", 1024, desc[9], "-1", 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif /* Derive */ bench_stats_start(&count, &start); @@ -9917,12 +14177,42 @@ void bench_sakke(void) printf("wc_DeriveSakkeSSV failed: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } if (ret != 0) break; count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish_ex("SAKKE", 1024, desc[10], "-1", 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif /* Calculate Point I and generate table. */ (void)wc_MakeSakkePointI(&genKey, id, sizeof(id)); @@ -9944,12 +14234,46 @@ void bench_sakke(void) printf("wc_MakeSakkeEncapsulatedSSV failed: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); bench_stats_asym_finish_ex("SAKKE", 1024, desc[9], "-2", 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif (void)wc_SetSakkeRsk(&genKey, rsk, table, len); @@ -9964,13 +14288,47 @@ void bench_sakke(void) printf("wc_DeriveSakkeSSV failed: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } if (ret != 0) break; count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); bench_stats_asym_finish_ex("SAKKE", 1024, desc[10], "-2", 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif len = 0; (void)wc_GenerateSakkeRskTable(&genKey, rsk, NULL, &len); @@ -9991,12 +14349,47 @@ void bench_sakke(void) printf("wc_DeriveSakkeSSV failed: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } if (ret != 0) break; count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish_ex("SAKKE", 1024, desc[10], "-3", 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif wc_ClearSakkePointITable(&genKey); /* Derive with RSK table */ @@ -10010,12 +14403,42 @@ void bench_sakke(void) printf("wc_DeriveSakkeSSV failed: %d\n", ret); break; } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } if (ret != 0) break; count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); + bench_stats_asym_finish_ex("SAKKE", 1024, desc[10], "-4", 0, count, start, 0); +#ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); +#endif wc_FreeSakkeKey(&genKey); wc_ecc_del_point(rsk); @@ -10030,6 +14453,11 @@ void bench_falconKeySign(byte level) int ret = 0; falcon_key key; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; byte sig[FALCON_MAX_SIG_SIZE]; byte msg[512]; @@ -10085,14 +14513,49 @@ void bench_falconKeySign(byte level) printf("wc_falcon_sign_msg failed\n"); } } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); if (ret == 0) { bench_stats_asym_finish("FALCON", level, desc[4], 0, count, start, ret); + #ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + #endif } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif bench_stats_start(&count, &start); do { @@ -10107,13 +14570,42 @@ void bench_falconKeySign(byte level) ret = -1; } } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); if (ret == 0) { bench_stats_asym_finish("FALCON", level, desc[5], 0, count, start, ret); + #ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + #endif } wc_falcon_free(&key); @@ -10126,12 +14618,21 @@ void bench_dilithiumKeySign(byte level) int ret = 0; dilithium_key key; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; byte sig[DILITHIUM_MAX_SIG_SIZE]; byte msg[512]; word32 x = 0; const char**desc = bench_desc_words[lng_index]; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + ret = wc_dilithium_init(&key); if (ret != 0) { printf("wc_dilithium_init failed %d\n", ret); @@ -10187,14 +14688,49 @@ void bench_dilithiumKeySign(byte level) printf("wc_dilithium_sign_msg failed\n"); } } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); if (ret == 0) { bench_stats_asym_finish("DILITHIUM", level, desc[4], 0, count, start, ret); + #ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + #endif } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif bench_stats_start(&count, &start); do { @@ -10210,13 +14746,42 @@ void bench_dilithiumKeySign(byte level) ret = -1; } } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); if (ret == 0) { bench_stats_asym_finish("DILITHIUM", level, desc[5], 0, count, start, ret); + #ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + #endif } wc_dilithium_free(&key); @@ -10229,12 +14794,21 @@ void bench_sphincsKeySign(byte level, byte optim) int ret = 0; sphincs_key key; double start; +#ifdef ADVANCED_STATS + double deltas[MAX_SAMPLE_RUNS]; + double max = 0, min = 0, sum = 0, prev = 0, delta; + int runs = 0; +#endif int i, count; byte sig[SPHINCS_MAX_SIG_SIZE]; byte msg[512]; word32 x = 0; const char**desc = bench_desc_words[lng_index]; +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif + ret = wc_sphincs_init(&key); if (ret != 0) { printf("wc_sphincs_init failed %d\n", ret); @@ -10314,9 +14888,35 @@ void bench_sphincsKeySign(byte level, byte optim) printf("wc_sphincs_sign_msg failed\n"); } } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); if (ret == 0) { if (optim == FAST_VARIANT) { @@ -10327,8 +14927,18 @@ void bench_sphincsKeySign(byte level, byte optim) bench_stats_asym_finish("SPHINCS-SMALL", level, desc[4], 0, count, start, ret); } + #ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + #endif } +#ifdef ADVANCED_STATS + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif + bench_stats_start(&count, &start); do { for (i = 0; i < agreeTimes; i++) { @@ -10343,9 +14953,35 @@ void bench_sphincsKeySign(byte level, byte optim) ret = -1; } } + #ifdef ADVANCED_STATS + if (runs == 0) { + delta = current_time(0) - start; + min = delta; + max = delta; + } + else { + delta = current_time(0) - prev; + if (max < delta) + max = delta; + else if (min > delta) + min = delta; + } + + if (runs < MAX_SAMPLE_RUNS) { + deltas[runs] = delta; + sum += delta; + runs++; + } + + prev = current_time(0); + #endif } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef ADVANCED_STATS + || runs < minimum_runs +#endif + ); if (ret == 0) { if (optim == FAST_VARIANT) { @@ -10356,6 +14992,9 @@ void bench_sphincsKeySign(byte level, byte optim) bench_stats_asym_finish("SPHINCS-SMALL", level, desc[5], 0, count, start, ret); } + #ifdef ADVANCED_STATS + bench_advanced_stats(deltas, max, min, sum, runs); + #endif } wc_sphincs_free(&key); @@ -10817,6 +15456,14 @@ static void Usage(void) e++; #ifdef WC_BENCH_TRACK_STATS printf("%s", bench_Usage_msg1[lng_index][e]); /* option -print */ +#endif + e++; + printf("%s", bench_Usage_msg1[lng_index][e]); /* option -hash_input */ + e++; + printf("%s", bench_Usage_msg1[lng_index][e]); /* option -cipher_input */ +#ifdef ADVANCED_STATS + e++; + printf("%s", bench_Usage_msg1[lng_index][e]); /* option -cipher_input */ #endif } @@ -10995,6 +15642,32 @@ int wolfcrypt_benchmark_main(int argc, char** argv) if (argc > 1) numBlocks = XATOI(argv[1]); } + else if (string_matches(argv[1], "-hash_input")) { + argc--; + argv++; + if (argc > 1) + hash_input = argv[1]; + } + else if (string_matches(argv[1], "-cipher_input")) { + argc--; + argv++; + if (argc > 1) + cipher_input = argv[1]; + } +#ifdef ADVANCED_STATS + else if (string_matches(argv[1], "-min_runs")) { + argc--; + argv++; + if (argc > 1) { + minimum_runs = XATOI(argv[1]); + if (minimum_runs > MAX_SAMPLE_RUNS) { + printf("\nINFO: Specified runs is larger than compiled " + "MAX_SAMPLE_RUNS. Using %d runs.\n\n", MAX_SAMPLE_RUNS); + minimum_runs = MAX_SAMPLE_RUNS; + } + } + } +#endif else if (argv[1][0] == '-') { optMatched = 0; #ifndef WOLFSSL_BENCHMARK_ALL From 86a2b050fe19172a615ea2561d67a6f476091fb7 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Mon, 23 Oct 2023 16:46:36 -0600 Subject: [PATCH 04/17] Gate on NO_FILESYSTEM --- wolfcrypt/benchmark/benchmark.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 2a0a1e2fc..3df9b7057 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -2575,6 +2575,7 @@ static void* benchmarks_do(void* args) goto exit; } +#ifndef NO_FILESYSTEM if (hash_input) { XFILE file; file = XFOPEN(hash_input, "rb"); @@ -2642,6 +2643,8 @@ static void* benchmarks_do(void* args) else { XMEMSET(bench_cipher, 0, (size_t)bench_buf_size); } +#endif + #if defined(WOLFSSL_ASYNC_CRYPT) || defined(HAVE_INTEL_QA_SYNC) bench_key = (byte*)XMALLOC(sizeof(bench_key_buf), HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); @@ -15458,9 +15461,13 @@ static void Usage(void) printf("%s", bench_Usage_msg1[lng_index][e]); /* option -print */ #endif e++; +#ifndef NO_FILESYSTEM printf("%s", bench_Usage_msg1[lng_index][e]); /* option -hash_input */ +#endif e++; +#ifndef NO_FILESYSTEM printf("%s", bench_Usage_msg1[lng_index][e]); /* option -cipher_input */ +#endif #ifdef ADVANCED_STATS e++; printf("%s", bench_Usage_msg1[lng_index][e]); /* option -cipher_input */ From 16ecc9b5f8d8479d017343faf309b77df477bca3 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Tue, 24 Oct 2023 14:10:20 -0600 Subject: [PATCH 05/17] Address feedback and don't print avg ms if mean is displayed --- wolfcrypt/benchmark/benchmark.c | 1468 ++++++++++++++++--------------- 1 file changed, 782 insertions(+), 686 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 3df9b7057..9747735fd 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -41,9 +41,9 @@ * BENCH_MICROSECOND * * display mean, max, min and sd of operation durations: - * ADVANCED_STATS + * MULTI_VALUE_STATISTICS * - * related to ADVANCED_STATS, use the below to specify how many sample + * related to MULTI_VALUE_STATISTICS, use the below to specify how many sample * observations are recorded to produce the stats above (defaults to 1000) * MAX_SAMPLE_RUNS * @@ -238,13 +238,13 @@ #define WOLFSSL_FIXED_TIME_UNIT "s" #endif -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS #ifndef MAX_SAMPLE_RUNS #define MAX_SAMPLE_RUNS 1000 #endif - #define NEW_LINE "" + #define STATS_CLAUSE_SEPARATOR "" #else - #define NEW_LINE "\n" + #define STATS_CLAUSE_SEPARATOR "\n" #endif #ifdef WOLFSSL_NO_FLOAT_FMT @@ -1075,7 +1075,7 @@ static const char* bench_Usage_msg1[][25] = { "-print ベンチマーク統計の要約を表示する\n", /* TODO: translate below */ "-hash_input Input data to use for hash benchmarking\n", - "-cipher_input Input data to use for cipher benchmarking\n" + "-cipher_input Input data to use for cipher benchmarking\n", "-min_runs Specify minimum number of operation runs\n" }, #endif @@ -1113,7 +1113,7 @@ static const char* bench_desc_words[][15] = { #endif -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS static const char* bench_result_words3[][5] = { /* 0 English */ { "max duration", "min duration" , "mean duration", "sd", NULL }, @@ -1132,13 +1132,13 @@ static const char* bench_result_words3[][5] = { /* s == size in bytes that 1 count represents, normally BENCH_SIZE */ #define SHOW_INTEL_CYCLES(b, n, s) \ (void)XSNPRINTF((b) + XSTRLEN(b), (n) - XSTRLEN(b), \ - " %s = " FLT_FMT_PREC2 NEW_LINE, \ + " %s = " FLT_FMT_PREC2 STATS_CLAUSE_SEPARATOR, \ bench_result_words1[lng_index][2], \ FLT_FMT_PREC2_ARGS(6, 2, count == 0 ? 0 : \ (double)total_cycles / ((word64)count*(s)))) #define SHOW_INTEL_CYCLES_CSV(b, n, s) \ (void)XSNPRINTF((b) + XSTRLEN(b), (n) - XSTRLEN(b), FLT_FMT_PREC "," \ - NEW_LINE, FLT_FMT_PREC_ARGS(6, count == 0 ? 0 : \ + STATS_CLAUSE_SEPARATOR, FLT_FMT_PREC_ARGS(6, count == 0 ? 0 : \ (double)total_cycles / ((word64)count*(s)))) #elif defined(LINUX_CYCLE_COUNT) #include @@ -1163,14 +1163,16 @@ static const char* bench_result_words3[][5] = { } while (0); /* s == size in bytes that 1 count represents, normally BENCH_SIZE */ - #define SHOW_INTEL_CYCLES(b, n, s) \ - (void)XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), \ - " %s = " FLT_FMT_PREC2 NEW_LINE, \ - bench_result_words1[lng_index][2], \ - FLT_FMT_PREC2_ARGS(6, 2, (double)total_cycles / (count*s))) - #define SHOW_INTEL_CYCLES_CSV(b, n, s) \ - (void)XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), FLT_FMT_PREC "," \ - NEW_LINE, FLT_FMT_PREC_ARGS(6, (double)total_cycles / (count*s))) + #define SHOW_INTEL_CYCLES(b, n, s) \ + (void)XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), \ + " %s = " FLT_FMT_PREC2 STATS_CLAUSE_SEPARATOR, \ + bench_result_words1[lng_index][2], \ + FLT_FMT_PREC2_ARGS(6, 2, (double)total_cycles / \ + (count*s))) + #define SHOW_INTEL_CYCLES_CSV(b, n, s) \ + (void)XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), FLT_FMT_PREC "," \ + STATS_CLAUSE_SEPARATOR, FLT_FMT_PREC_ARGS(6, (double)total_cycles \ + / (count*s))) #elif defined(SYNERGY_CYCLE_COUNT) #include "hal_data.h" @@ -1182,13 +1184,13 @@ static const char* bench_result_words3[][5] = { #define END_INTEL_CYCLES total_cycles = DWT->CYCCNT - begin_cycles; /* s == size in bytes that 1 count represents, normally BENCH_SIZE */ - #define SHOW_INTEL_CYCLES(b, n, s) \ - (void)XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), \ - " %s = " FLT_FMT_PREC2 NEW_LINE, \ - bench_result_words1[lng_index][2], \ + #define SHOW_INTEL_CYCLES(b, n, s) \ + (void)XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), \ + " %s = " FLT_FMT_PREC2 STATS_CLAUSE_SEPARATOR, \ + bench_result_words1[lng_index][2], \ FLT_FMT_PREC2_ARGS(6, 2, (double)total_cycles / (count*s))) - #define SHOW_INTEL_CYCLES_CSV(b, n, s) \ - (void)XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), FLT_FMT_PREC ",\n", \ + #define SHOW_INTEL_CYCLES_CSV(b, n, s) \ + (void)XSNPRINTF(b + XSTRLEN(b), n - XSTRLEN(b), FLT_FMT_PREC ",\n", \ FLT_FMT_PREC_ARGS(6, (double)total_cycles / (count*s))) #elif defined(WOLFSSL_ESPIDF) static THREAD_LS_T word64 begin_cycles; @@ -1289,9 +1291,9 @@ static const char* bench_result_words3[][5] = { #define INIT_CYCLE_COUNTER #define BEGIN_INTEL_CYCLES #define END_INTEL_CYCLES - #ifdef ADVANCED_STATS - #define SHOW_INTEL_CYCLES(b, n, s) - #define SHOW_INTEL_CYCLES_CSV(b, n, s) + #ifdef MULTI_VALUE_STATISTICS + #define SHOW_INTEL_CYCLES(b, n, s) WC_DO_NOTHING + #define SHOW_INTEL_CYCLES_CSV(b, n, s) WC_DO_NOTHING #else #define SHOW_INTEL_CYCLES(b, n, s) b[XSTRLEN(b)] = '\n' #define SHOW_INTEL_CYCLES_CSV(b, n, s) b[XSTRLEN(b)] = '\n' @@ -1634,7 +1636,7 @@ static word32 bench_size = BENCH_SIZE; static int base2 = 1; static int digest_stream = 1; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS static int minimum_runs = 0; #endif @@ -1720,7 +1722,7 @@ static void benchmark_static_init(int force) #endif base2 = 1; digest_stream = 1; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS minimum_runs = 0; #endif @@ -2003,7 +2005,7 @@ static const char* get_blocktype_base10(double* blocks) return rt; } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS static double wc_sqroot(double in) { /* do 32 iterations for the sqroot */ @@ -2019,7 +2021,7 @@ static double wc_sqroot(double in) return root; } -static void bench_advanced_stats(double deltas[], double max, double min, +static void bench_multi_value_stats(double deltas[], double max, double min, double sum, int runs) { double mean = 0; @@ -2135,7 +2137,7 @@ static void bench_stats_sym_finish(const char* desc, int useDeviceID, WOLFSSL_FIXED_UNIT "/" WOLFSSL_FIXED_TIME_UNIT ","); #endif #endif - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS printf("max duration,min duration,mean duration,sd,\n"); #else printf("\n"); @@ -2299,7 +2301,11 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, #endif char msg[256]; static int asym_header_printed = 0; - int digits; +#ifdef BENCH_MICROSECOND + const int digits = 5; +#else + const int digits = 3; +#endif XMEMSET(msg, 0, sizeof(msg)); @@ -2337,16 +2343,96 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, milliEach = each / 1000; /* milliseconds */ #else milliEach = each * 1000; /* milliseconds */ - -#endif - -#ifdef BENCH_MICROSECOND - digits = 5; -#else - digits = 3; #endif SLEEP_ON_ERROR(ret); + +#ifdef MULTI_VALUE_STATISTICS /* Print without avg ms */ + (void)milliEach; + + /* format and print to terminal */ + if (csv_format == 1) { + /* only print out header once */ + if (asym_header_printed == 0) { +#ifdef GENERATE_MACHINE_PARSEABLE_REPORT + #ifdef HAVE_GET_CYCLES + printf("%s", "\"asym\",Algorithm,key size,operation,ops/" + WOLFSSL_FIXED_TIME_UNIT "ec,ops," WOLFSSL_FIXED_TIME_UNIT + "ecs,cycles,cycles/op,"); + #else + printf("%s", "\"asym\",Algorithm,key size,operation,ops/" + WOLFSSL_FIXED_TIME_UNIT "ec,ops," WOLFSSL_FIXED_TIME_UNIT + "ecs,"); + #endif +#else + printf("\n%sAsymmetric Ciphers:\n\n", info_prefix); + printf("%sAlgorithm,key size,operation,ops/" + WOLFSSL_FIXED_TIME_UNIT "ec,", info_prefix); +#endif + #ifdef MULTI_VALUE_STATISTICS + printf("max duration,min duration,mean duration,sd,\n"); + #else + printf("\n"); + #endif + asym_header_printed = 1; + } +#ifdef GENERATE_MACHINE_PARSEABLE_REPORT + #ifdef HAVE_GET_CYCLES + (void)XSNPRINTF(msg, sizeof(msg), + "asym,%s,%d,%s%s," FLT_FMT_PREC ",%d," + FLT_FMT ",%lu," FLT_FMT_PREC STATS_CLAUSE_SEPARATOR, + algo, strength, desc, desc_extra, + FLT_FMT_PREC_ARGS(digits, opsSec), + count, FLT_FMT_ARGS(total), (unsigned long)total_cycles, + FLT_FMT_PREC_ARGS(6, + (double)total_cycles / (double)count)); + #else + (void)XSNPRINTF(msg, sizeof(msg), + "asym,%s,%d,%s%s," FLT_FMT_PREC ",%d," + FLT_FMT STATS_CLAUSE_SEPARATOR, + algo, strength, desc, desc_extra, + FLT_FMT_PREC_ARGS(digits, opsSec), + count, FLT_FMT_ARGS(total)); + #endif +#else + (void)XSNPRINTF(msg, sizeof(msg), "%s,%d,%s%s," + FLT_FMT_PREC "," STATS_CLAUSE_SEPARATOR, + algo, strength, desc, desc_extra, + FLT_FMT_PREC_ARGS(digits, opsSec)); +#endif + } /* if (csv_format == 1) */ + + else { +#ifdef GENERATE_MACHINE_PARSEABLE_REPORT + #ifdef HAVE_GET_CYCLES + (void)XSNPRINTF(msg, sizeof(msg), + "%-6s %5d %8s%-2s %s %6d %s " FLT_FMT_PREC2 " %s, " + FLT_FMT_PREC " %s, %lu cycles" STATS_CLAUSE_SEPARATOR, + algo, strength, desc, desc_extra, + BENCH_DEVID_GET_NAME(useDeviceID), count, word[0], + FLT_FMT_PREC2_ARGS(5, 3, total), word[1], + FLT_FMT_PREC_ARGS(digits, opsSec), word[3], + (unsigned long)total_cycles); + #else + (void)XSNPRINTF(msg, sizeof(msg), + "%-6s %5d %8s%-2s %s %6d %s " FLT_FMT_PREC2 " %s, " + FLT_FMT_PREC " %s" STATS_CLAUSE_SEPARATOR, + algo, strength, desc, desc_extra, + BENCH_DEVID_GET_NAME(useDeviceID), count, word[0], + FLT_FMT_PREC2_ARGS(5, 3, total), word[1], + FLT_FMT_PREC_ARGS(digits, opsSec), word[3]); + #endif /* HAVE_GET_CYCLES */ +#else + (void)XSNPRINTF(msg, sizeof(msg), + "%-6s %5d %8s%-2s %s %6d %s " FLT_FMT_PREC2 " %s, " + FLT_FMT_PREC " %s" STATS_CLAUSE_SEPARATOR, + algo, strength, desc, desc_extra, + BENCH_DEVID_GET_NAME(useDeviceID), count, word[0], + FLT_FMT_PREC2_ARGS(5, 3, total), word[1], + FLT_FMT_PREC_ARGS(digits, opsSec), word[3]); +#endif + } +#else /* MULTI_VALUE_STATISTICS. Print with avg ms */ /* format and print to terminal */ if (csv_format == 1) { /* only print out header once */ @@ -2355,18 +2441,18 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, #ifdef HAVE_GET_CYCLES printf("%s", "\"asym\",Algorithm,key size,operation,avg ms,ops/" WOLFSSL_FIXED_TIME_UNIT "ec,ops," WOLFSSL_FIXED_TIME_UNIT - "ecs,cycles,cycles/op"); + "ecs,cycles,cycles/op,"); #else printf("%s", "\"asym\",Algorithm,key size,operation,avg ms,ops/" WOLFSSL_FIXED_TIME_UNIT "ec,ops," WOLFSSL_FIXED_TIME_UNIT - "ecs"); + "ecs,"); #endif #else printf("\n%sAsymmetric Ciphers:\n\n", info_prefix); printf("%sAlgorithm,key size,operation,avg ms,ops/" WOLFSSL_FIXED_TIME_UNIT "ec,", info_prefix); #endif - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS printf("max duration,min duration,mean duration,sd,\n"); #else printf("\n"); @@ -2377,7 +2463,7 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, #ifdef HAVE_GET_CYCLES (void)XSNPRINTF(msg, sizeof(msg), "asym,%s,%d,%s%s," FLT_FMT_PREC "," FLT_FMT_PREC ",%d," - FLT_FMT ",%lu," FLT_FMT_PREC NEW_LINE, + FLT_FMT ",%lu," FLT_FMT_PREC STATS_CLAUSE_SEPARATOR, algo, strength, desc, desc_extra, FLT_FMT_PREC_ARGS(3, milliEach), FLT_FMT_PREC_ARGS(digits, opsSec), @@ -2387,7 +2473,7 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, #else (void)XSNPRINTF(msg, sizeof(msg), "asym,%s,%d,%s%s," FLT_FMT_PREC "," FLT_FMT_PREC ",%d," - FLT_FMT NEW_LINE, + FLT_FMT STATS_CLAUSE_SEPARATOR, algo, strength, desc, desc_extra, FLT_FMT_PREC_ARGS(3, milliEach), FLT_FMT_PREC_ARGS(digits, opsSec), @@ -2395,8 +2481,9 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, #endif #else (void)XSNPRINTF(msg, sizeof(msg), "%s,%d,%s%s," FLT_FMT_PREC "," - FLT_FMT_PREC "," NEW_LINE, algo, strength, desc, - desc_extra, FLT_FMT_PREC_ARGS(3, milliEach), + FLT_FMT_PREC "," STATS_CLAUSE_SEPARATOR, + algo, strength, desc, desc_extra, + FLT_FMT_PREC_ARGS(3, milliEach), FLT_FMT_PREC_ARGS(digits, opsSec)); #endif } /* if (csv_format == 1) */ @@ -2407,7 +2494,8 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, (void)XSNPRINTF(msg, sizeof(msg), "%-6s %5d %8s%-2s %s %6d %s " FLT_FMT_PREC2 " %s, %s " FLT_FMT_PREC2 " ms, " FLT_FMT_PREC " %s, %lu cycles" - NEW_LINE, algo, strength, desc, desc_extra, + STATS_CLAUSE_SEPARATOR, + algo, strength, desc, desc_extra, BENCH_DEVID_GET_NAME(useDeviceID), count, word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], word[2], FLT_FMT_PREC2_ARGS(5, 3, milliEach), @@ -2416,7 +2504,8 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, #else (void)XSNPRINTF(msg, sizeof(msg), "%-6s %5d %8s%-2s %s %6d %s " FLT_FMT_PREC2 " %s, %s " - FLT_FMT_PREC2 " ms, " FLT_FMT_PREC " %s" NEW_LINE, + FLT_FMT_PREC2 " ms, " FLT_FMT_PREC " %s" + STATS_CLAUSE_SEPARATOR, algo, strength, desc, desc_extra, BENCH_DEVID_GET_NAME(useDeviceID), count, word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], word[2], @@ -2426,7 +2515,8 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, #else (void)XSNPRINTF(msg, sizeof(msg), "%-6s %5d %8s%-2s %s %6d %s " FLT_FMT_PREC2 " %s, %s " - FLT_FMT_PREC2 " ms, " FLT_FMT_PREC " %s" NEW_LINE, + FLT_FMT_PREC2 " ms, " FLT_FMT_PREC " %s" + STATS_CLAUSE_SEPARATOR, algo, strength, desc, desc_extra, BENCH_DEVID_GET_NAME(useDeviceID), count, word[0], FLT_FMT_PREC2_ARGS(5, 3, total), word[1], word[2], @@ -2434,6 +2524,7 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, FLT_FMT_PREC_ARGS(digits, opsSec), word[3]); #endif } +#endif /* MULTI_VALUE_STATISTICS */ printf("%s", msg); /* show errors */ @@ -2601,7 +2692,8 @@ static void* benchmarks_do(void* args) if (bench_plain == NULL) goto exit; - if ((size_t)XFREAD(bench_plain, 1, bench_buf_size, file) != (size_t)bench_buf_size) { + if ((size_t)XFREAD(bench_plain, 1, bench_buf_size, file) + != (size_t)bench_buf_size) { XFCLOSE(file); goto exit; } @@ -2635,7 +2727,8 @@ static void* benchmarks_do(void* args) if (bench_cipher == NULL) goto exit; - if ((size_t)XFREAD(bench_cipher, 1, bench_buf_size, file) != (size_t)bench_buf_size) { + if ((size_t)XFREAD(bench_cipher, 1, bench_buf_size, file) + != (size_t)bench_buf_size) { XFCLOSE(file); goto exit; } @@ -3595,7 +3688,7 @@ void bench_rng(void) double start; long pos, len, remain; WC_RNG myrng; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -3611,7 +3704,7 @@ void bench_rng(void) return; } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -3633,7 +3726,7 @@ void bench_rng(void) remain -= len; pos += len; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -3658,14 +3751,14 @@ void bench_rng(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_rng: bench_stats_sym_finish("RNG", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_FreeRng(&myrng); @@ -3684,7 +3777,7 @@ static void bench_aescbc_internal(int useDeviceID, int ret = 0, i, count = 0, times, pending = 0; Aes enc[BENCH_MAX_PENDING]; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -3692,7 +3785,7 @@ static void bench_aescbc_internal(int useDeviceID, /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -3711,7 +3804,7 @@ static void bench_aescbc_internal(int useDeviceID, } } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -3733,7 +3826,7 @@ static void bench_aescbc_internal(int useDeviceID, } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -3758,7 +3851,7 @@ static void bench_aescbc_internal(int useDeviceID, } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -3766,8 +3859,8 @@ static void bench_aescbc_internal(int useDeviceID, exit_aes_enc: bench_stats_sym_finish(encLabel, useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif if (ret < 0) { @@ -3784,7 +3877,7 @@ exit_aes_enc: } } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -3809,7 +3902,7 @@ exit_aes_enc: } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -3834,7 +3927,7 @@ exit_aes_enc: } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -3842,8 +3935,8 @@ exit_aes_enc: exit_aes_dec: bench_stats_sym_finish(decLabel, useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #endif /* HAVE_AES_DECRYPT */ @@ -3896,7 +3989,7 @@ static void bench_aesgcm_internal(int useDeviceID, Aes dec[BENCH_MAX_PENDING+1]; #endif double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -3913,7 +4006,7 @@ static void bench_aesgcm_internal(int useDeviceID, /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif #ifdef WOLFSSL_ASYNC_CRYPT @@ -3940,7 +4033,7 @@ static void bench_aesgcm_internal(int useDeviceID, } } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -3964,7 +4057,7 @@ static void bench_aesgcm_internal(int useDeviceID, } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -3989,7 +4082,7 @@ static void bench_aesgcm_internal(int useDeviceID, } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -3997,14 +4090,14 @@ static void bench_aesgcm_internal(int useDeviceID, exit_aes_gcm: bench_stats_sym_finish(encLabel, useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #ifdef HAVE_AES_DECRYPT XMEMSET(dec, 0, sizeof(dec)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -4045,7 +4138,7 @@ exit_aes_gcm: } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -4070,7 +4163,7 @@ exit_aes_gcm: } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -4078,8 +4171,8 @@ exit_aes_gcm: exit_aes_gcm_dec: bench_stats_sym_finish(decLabel, useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #endif /* HAVE_AES_DECRYPT */ @@ -4114,7 +4207,7 @@ static void bench_aesgcm_stream_internal(int useDeviceID, Aes dec[BENCH_MAX_PENDING]; #endif double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -4184,7 +4277,7 @@ static void bench_aesgcm_stream_internal(int useDeviceID, } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -4209,7 +4302,7 @@ static void bench_aesgcm_stream_internal(int useDeviceID, } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -4217,8 +4310,8 @@ static void bench_aesgcm_stream_internal(int useDeviceID, exit_aes_gcm: bench_stats_sym_finish(encLabel, useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #ifdef HAVE_AES_DECRYPT @@ -4237,7 +4330,7 @@ exit_aes_gcm: } } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -4269,7 +4362,7 @@ exit_aes_gcm: } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -4294,7 +4387,7 @@ exit_aes_gcm: } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -4302,8 +4395,8 @@ exit_aes_gcm: exit_aes_gcm_dec: bench_stats_sym_finish(decLabel, useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #endif /* HAVE_AES_DECRYPT */ @@ -4385,7 +4478,7 @@ void bench_gmac(int useDeviceID) Gmac gmac; double start; byte tag[AES_AUTH_TAG_SZ]; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -4404,7 +4497,7 @@ void bench_gmac(int useDeviceID) const char* gmacStr = "GMAC Default"; #endif -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -4425,7 +4518,7 @@ void bench_gmac(int useDeviceID) tag, sizeof(tag)); count++; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -4448,7 +4541,7 @@ void bench_gmac(int useDeviceID) prev = current_time(0); #endif } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -4456,8 +4549,8 @@ void bench_gmac(int useDeviceID) wc_AesFree((Aes*)&gmac); bench_stats_sym_finish(gmacStr, 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -4473,7 +4566,7 @@ static void bench_aesecb_internal(int useDeviceID, int ret = 0, i, count = 0, times, pending = 0; Aes enc[BENCH_MAX_PENDING]; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -4486,7 +4579,7 @@ static void bench_aesecb_internal(int useDeviceID, /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -4530,7 +4623,7 @@ static void bench_aesecb_internal(int useDeviceID, } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -4555,7 +4648,7 @@ static void bench_aesecb_internal(int useDeviceID, } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -4563,8 +4656,8 @@ static void bench_aesecb_internal(int useDeviceID, exit_aes_enc: bench_stats_sym_finish(encLabel, useDeviceID, count, benchSz, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #ifdef HAVE_AES_DECRYPT @@ -4577,7 +4670,7 @@ exit_aes_enc: } } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -4607,7 +4700,7 @@ exit_aes_enc: } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -4632,7 +4725,7 @@ exit_aes_enc: } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -4640,8 +4733,8 @@ exit_aes_enc: exit_aes_dec: bench_stats_sym_finish(decLabel, useDeviceID, count, benchSz, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #endif /* HAVE_AES_DECRYPT */ @@ -4677,14 +4770,14 @@ static void bench_aescfb_internal(const byte* key, { Aes enc; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; #endif int i, ret, count; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -4702,7 +4795,7 @@ static void bench_aescfb_internal(const byte* key, printf("wc_AesCfbEncrypt failed, ret = %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -4727,14 +4820,14 @@ static void bench_aescfb_internal(const byte* key, } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish(label, 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -4760,14 +4853,14 @@ static void bench_aesofb_internal(const byte* key, { Aes enc; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; #endif int i, ret, count; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -4791,7 +4884,7 @@ static void bench_aesofb_internal(const byte* key, printf("wc_AesCfbEncrypt failed, ret = %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -4816,14 +4909,14 @@ static void bench_aesofb_internal(const byte* key, } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish(label, 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_AesFree(&enc); @@ -4849,14 +4942,14 @@ void bench_aesxts(void) { XtsAes aes; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; #endif int i, count, ret; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -4887,7 +4980,7 @@ void bench_aesxts(void) printf("wc_AesXtsEncrypt failed, ret = %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -4912,14 +5005,14 @@ void bench_aesxts(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("AES-XTS-enc", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_AesXtsFree(&aes); @@ -4931,7 +5024,7 @@ void bench_aesxts(void) return; } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -4946,7 +5039,7 @@ void bench_aesxts(void) printf("wc_AesXtsDecrypt failed, ret = %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -4971,14 +5064,14 @@ void bench_aesxts(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("AES-XTS-dec", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_AesXtsFree(&aes); } @@ -4992,14 +5085,14 @@ static void bench_aesctr_internal(const byte* key, word32 keySz, { Aes enc; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; #endif int i, count, ret = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -5021,7 +5114,7 @@ static void bench_aesctr_internal(const byte* key, word32 keySz, printf("wc_AesCtrEncrypt failed, ret = %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5046,14 +5139,14 @@ static void bench_aesctr_internal(const byte* key, word32 keySz, } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish(label, useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_AesFree(&enc); @@ -5079,7 +5172,7 @@ void bench_aesccm(int useDeviceID) { Aes enc; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -5098,7 +5191,7 @@ void bench_aesccm(int useDeviceID) XMEMSET(bench_tag, 0, AES_AUTH_TAG_SZ); XMEMSET(bench_additional, 0, AES_AUTH_ADD_SZ); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -5119,7 +5212,7 @@ void bench_aesccm(int useDeviceID) ret |= wc_AesCcmEncrypt(&enc, bench_cipher, bench_plain, bench_size, bench_iv, 12, bench_tag, AES_AUTH_TAG_SZ, bench_additional, 0); - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5144,22 +5237,22 @@ void bench_aesccm(int useDeviceID) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish(AES_AAD_STRING("AES-CCM-enc"), useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif if (ret != 0) { printf("wc_AesCcmEncrypt failed, ret = %d\n", ret); goto exit; } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -5172,7 +5265,7 @@ void bench_aesccm(int useDeviceID) ret |= wc_AesCcmDecrypt(&enc, bench_plain, bench_cipher, bench_size, bench_iv, 12, bench_tag, AES_AUTH_TAG_SZ, bench_additional, 0); - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5197,15 +5290,15 @@ void bench_aesccm(int useDeviceID) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish(AES_AAD_STRING("AES-CCM-dec"), useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif if (ret != 0) { printf("wc_AesCcmEncrypt failed, ret = %d\n", ret); @@ -5231,7 +5324,7 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* byte siv[AES_BLOCK_SIZE]; int count = 0; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -5249,7 +5342,7 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* printf("wc_AesSivEncrypt failed (%d)\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5274,14 +5367,14 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish(encLabel, 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -5299,7 +5392,7 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* printf("wc_AesSivDecrypt failed (%d)\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5324,14 +5417,14 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish(decLabel, 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -5352,7 +5445,7 @@ void bench_poly1305(void) byte mac[16]; double start; int ret = 0, i, count; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -5375,7 +5468,7 @@ void bench_poly1305(void) printf("Poly1305Update failed: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5401,7 +5494,7 @@ void bench_poly1305(void) wc_Poly1305Final(&enc, mac); count += i; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -5421,7 +5514,7 @@ void bench_poly1305(void) break; } wc_Poly1305Final(&enc, mac); - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5446,14 +5539,14 @@ void bench_poly1305(void) } count += i; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); } bench_stats_sym_finish("POLY1305", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } #endif /* HAVE_POLY1305 */ @@ -5465,7 +5558,7 @@ void bench_camellia(void) Camellia cam; double start; int ret, i, count; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -5488,7 +5581,7 @@ void bench_camellia(void) printf("CamelliaCbcEncrypt failed: %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5513,14 +5606,14 @@ void bench_camellia(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("Camellia", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } #endif @@ -5530,7 +5623,7 @@ void bench_sm4_cbc(void) { wc_Sm4 sm4; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -5539,7 +5632,7 @@ void bench_sm4_cbc(void) int i; int count; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -5562,7 +5655,7 @@ void bench_sm4_cbc(void) printf("Sm4CbcEncrypt failed: %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5587,14 +5680,14 @@ void bench_sm4_cbc(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("SM4-CBC-enc", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -5610,7 +5703,7 @@ void bench_sm4_cbc(void) printf("Sm4CbcDecrypt failed: %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5635,14 +5728,14 @@ void bench_sm4_cbc(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("SM4-CBC-dec", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } #endif @@ -5652,7 +5745,7 @@ void bench_sm4_gcm(void) { wc_Sm4 sm4; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -5670,7 +5763,7 @@ void bench_sm4_gcm(void) } #endif -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -5690,7 +5783,7 @@ void bench_sm4_gcm(void) printf("Sm4GcmEncrypt failed: %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5715,14 +5808,14 @@ void bench_sm4_gcm(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("SM4-GCM-enc", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -5740,7 +5833,7 @@ void bench_sm4_gcm(void) printf("Sm4GcmDecrypt failed: %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5765,14 +5858,14 @@ void bench_sm4_gcm(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("SM4-GCM-dec", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } #endif @@ -5782,7 +5875,7 @@ void bench_sm4_ccm() { wc_Sm4 enc; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -5801,7 +5894,7 @@ void bench_sm4_ccm() XMEMSET(bench_tag, 0, AES_AUTH_TAG_SZ); XMEMSET(bench_additional, 0, AES_AUTH_ADD_SZ); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -5816,7 +5909,7 @@ void bench_sm4_ccm() ret |= wc_Sm4CcmEncrypt(&enc, bench_cipher, bench_plain, bench_size, bench_iv, 12, bench_tag, AES_AUTH_TAG_SZ, bench_additional, 0); - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5841,21 +5934,21 @@ void bench_sm4_ccm() } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("SM4-CCM-enc", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif if (ret != 0) { printf("wc_Sm4Encrypt failed, ret = %d\n", ret); goto exit; } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -5868,7 +5961,7 @@ void bench_sm4_ccm() ret |= wc_Sm4CcmDecrypt(&enc, bench_plain, bench_cipher, bench_size, bench_iv, 12, bench_tag, AES_AUTH_TAG_SZ, bench_additional, 0); - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5893,14 +5986,14 @@ void bench_sm4_ccm() } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("SM4-CCM-dec", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif if (ret != 0) { printf("wc_Sm4Decrypt failed, ret = %d\n", ret); @@ -5919,7 +6012,7 @@ void bench_des(int useDeviceID) int ret = 0, i, count = 0, times, pending = 0; Des3 enc[BENCH_MAX_PENDING]; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -5927,7 +6020,7 @@ void bench_des(int useDeviceID) /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -5964,7 +6057,7 @@ void bench_des(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -5989,15 +6082,15 @@ void bench_des(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_3des: bench_stats_sym_finish("3DES", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -6015,7 +6108,7 @@ void bench_arc4(int useDeviceID) int ret = 0, i, count = 0, times, pending = 0; Arc4 enc[BENCH_MAX_PENDING]; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -6023,7 +6116,7 @@ void bench_arc4(int useDeviceID) /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -6059,7 +6152,7 @@ void bench_arc4(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -6084,15 +6177,15 @@ void bench_arc4(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_arc4: bench_stats_sym_finish("ARC4", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -6110,7 +6203,7 @@ void bench_chacha(void) ChaCha enc; double start; int i, count; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -6126,7 +6219,7 @@ void bench_chacha(void) for (i = 0; i < numBlocks; i++) { wc_Chacha_SetIV(&enc, bench_iv, 0); wc_Chacha_Process(&enc, bench_cipher, bench_plain, bench_size); - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -6151,14 +6244,14 @@ void bench_chacha(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("CHACHA", 0, count, bench_size, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } #endif /* HAVE_CHACHA*/ @@ -6168,7 +6261,7 @@ void bench_chacha20_poly1305_aead(void) { double start; int ret = 0, i, count; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -6176,7 +6269,7 @@ void bench_chacha20_poly1305_aead(void) byte authTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]; XMEMSET(authTag, 0, sizeof(authTag)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -6189,7 +6282,7 @@ void bench_chacha20_poly1305_aead(void) printf("wc_ChaCha20Poly1305_Encrypt error: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -6214,14 +6307,14 @@ void bench_chacha20_poly1305_aead(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("CHA-POLY", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } #endif /* HAVE_CHACHA && HAVE_POLY1305 */ @@ -6233,7 +6326,7 @@ void bench_md5(int useDeviceID) wc_Md5 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -6246,7 +6339,7 @@ void bench_md5(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -6282,7 +6375,7 @@ void bench_md5(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -6324,7 +6417,7 @@ void bench_md5(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -6340,7 +6433,7 @@ void bench_md5(int useDeviceID) ret = wc_Md5Final(hash, digest[0]); if (ret != 0) goto exit_md5; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -6365,15 +6458,15 @@ void bench_md5(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); } exit_md5: bench_stats_sym_finish("MD5", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -6395,7 +6488,7 @@ void bench_sha(int useDeviceID) wc_Sha hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -6407,7 +6500,7 @@ void bench_sha(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -6443,7 +6536,7 @@ void bench_sha(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -6485,7 +6578,7 @@ void bench_sha(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -6502,7 +6595,7 @@ void bench_sha(int useDeviceID) ret = wc_ShaFinal(hash, digest[0]); if (ret != 0) goto exit_sha; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -6527,15 +6620,15 @@ void bench_sha(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); } exit_sha: bench_stats_sym_finish("SHA", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -6555,7 +6648,7 @@ void bench_sha224(int useDeviceID) wc_Sha224 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -6567,7 +6660,7 @@ void bench_sha224(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -6600,7 +6693,7 @@ void bench_sha224(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -6641,7 +6734,7 @@ void bench_sha224(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -6661,7 +6754,7 @@ void bench_sha224(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -6669,8 +6762,8 @@ void bench_sha224(int useDeviceID) exit_sha224: bench_stats_sym_finish("SHA-224", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -6690,7 +6783,7 @@ void bench_sha256(int useDeviceID) wc_Sha256 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -6702,7 +6795,7 @@ void bench_sha256(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -6738,7 +6831,7 @@ void bench_sha256(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -6779,7 +6872,7 @@ void bench_sha256(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -6796,7 +6889,7 @@ void bench_sha256(int useDeviceID) ret = wc_Sha256Final(hash, digest[0]); if (ret != 0) goto exit_sha256; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -6821,7 +6914,7 @@ void bench_sha256(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -6829,8 +6922,8 @@ void bench_sha256(int useDeviceID) exit_sha256: bench_stats_sym_finish("SHA-256", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -6847,7 +6940,7 @@ void bench_sha384(int useDeviceID) wc_Sha384 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -6859,7 +6952,7 @@ void bench_sha384(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -6892,7 +6985,7 @@ void bench_sha384(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -6933,7 +7026,7 @@ void bench_sha384(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -6950,7 +7043,7 @@ void bench_sha384(int useDeviceID) ret = wc_Sha384Final(hash, digest[0]); if (ret != 0) goto exit_sha384; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -6975,7 +7068,7 @@ void bench_sha384(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -6983,8 +7076,8 @@ void bench_sha384(int useDeviceID) exit_sha384: bench_stats_sym_finish("SHA-384", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -7003,7 +7096,7 @@ void bench_sha512(int useDeviceID) wc_Sha512 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -7015,7 +7108,7 @@ void bench_sha512(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -7048,7 +7141,7 @@ void bench_sha512(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -7089,7 +7182,7 @@ void bench_sha512(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -7106,7 +7199,7 @@ void bench_sha512(int useDeviceID) ret = wc_Sha512Final(hash, digest[0]); if (ret != 0) goto exit_sha512; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -7131,7 +7224,7 @@ void bench_sha512(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -7139,8 +7232,8 @@ void bench_sha512(int useDeviceID) exit_sha512: bench_stats_sym_finish("SHA-512", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -7159,7 +7252,7 @@ void bench_sha512_224(int useDeviceID) wc_Sha512_224 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -7171,7 +7264,7 @@ void bench_sha512_224(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -7204,7 +7297,7 @@ void bench_sha512_224(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -7245,7 +7338,7 @@ void bench_sha512_224(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -7262,7 +7355,7 @@ void bench_sha512_224(int useDeviceID) ret = wc_Sha512_224Final(hash, digest[0]); if (ret != 0) goto exit_sha512_224; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -7287,7 +7380,7 @@ void bench_sha512_224(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -7295,8 +7388,8 @@ void bench_sha512_224(int useDeviceID) exit_sha512_224: bench_stats_sym_finish("SHA-512/224", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -7316,7 +7409,7 @@ void bench_sha512_256(int useDeviceID) wc_Sha512_256 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -7328,7 +7421,7 @@ void bench_sha512_256(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -7361,7 +7454,7 @@ void bench_sha512_256(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -7402,7 +7495,7 @@ void bench_sha512_256(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -7419,7 +7512,7 @@ void bench_sha512_256(int useDeviceID) ret = wc_Sha512_256Final(hash, digest[0]); if (ret != 0) goto exit_sha512_256; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -7444,7 +7537,7 @@ void bench_sha512_256(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -7452,8 +7545,8 @@ void bench_sha512_256(int useDeviceID) exit_sha512_256: bench_stats_sym_finish("SHA-512/256", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -7476,7 +7569,7 @@ void bench_sha3_224(int useDeviceID) wc_Sha3 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -7488,7 +7581,7 @@ void bench_sha3_224(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -7521,7 +7614,7 @@ void bench_sha3_224(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -7562,7 +7655,7 @@ void bench_sha3_224(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -7579,7 +7672,7 @@ void bench_sha3_224(int useDeviceID) ret = wc_Sha3_224_Final(hash, digest[0]); if (ret != 0) goto exit_sha3_224; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -7604,7 +7697,7 @@ void bench_sha3_224(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -7612,8 +7705,8 @@ void bench_sha3_224(int useDeviceID) exit_sha3_224: bench_stats_sym_finish("SHA3-224", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -7631,7 +7724,7 @@ void bench_sha3_256(int useDeviceID) { wc_Sha3 hash[BENCH_MAX_PENDING]; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -7644,7 +7737,7 @@ void bench_sha3_256(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -7677,7 +7770,7 @@ void bench_sha3_256(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -7718,7 +7811,7 @@ void bench_sha3_256(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -7735,7 +7828,7 @@ void bench_sha3_256(int useDeviceID) ret = wc_Sha3_256_Final(hash, digest[0]); if (ret != 0) goto exit_sha3_256; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -7760,7 +7853,7 @@ void bench_sha3_256(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -7768,8 +7861,8 @@ void bench_sha3_256(int useDeviceID) exit_sha3_256: bench_stats_sym_finish("SHA3-256", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -7788,7 +7881,7 @@ void bench_sha3_384(int useDeviceID) wc_Sha3 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -7800,7 +7893,7 @@ void bench_sha3_384(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -7833,7 +7926,7 @@ void bench_sha3_384(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -7874,7 +7967,7 @@ void bench_sha3_384(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -7891,7 +7984,7 @@ void bench_sha3_384(int useDeviceID) ret = wc_Sha3_384_Final(hash, digest[0]); if (ret != 0) goto exit_sha3_384; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -7916,7 +8009,7 @@ void bench_sha3_384(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -7924,8 +8017,8 @@ void bench_sha3_384(int useDeviceID) exit_sha3_384: bench_stats_sym_finish("SHA3-384", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -7944,7 +8037,7 @@ void bench_sha3_512(int useDeviceID) wc_Sha3 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -7956,7 +8049,7 @@ void bench_sha3_512(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -7989,7 +8082,7 @@ void bench_sha3_512(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8030,7 +8123,7 @@ void bench_sha3_512(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -8047,7 +8140,7 @@ void bench_sha3_512(int useDeviceID) ret = wc_Sha3_512_Final(hash, digest[0]); if (ret != 0) goto exit_sha3_512; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8072,7 +8165,7 @@ void bench_sha3_512(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -8080,8 +8173,8 @@ void bench_sha3_512(int useDeviceID) exit_sha3_512: bench_stats_sym_finish("SHA3-512", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -8099,7 +8192,7 @@ void bench_shake128(int useDeviceID) { wc_Shake hash[BENCH_MAX_PENDING]; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -8112,7 +8205,7 @@ void bench_shake128(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -8145,7 +8238,7 @@ void bench_shake128(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8187,7 +8280,7 @@ void bench_shake128(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -8205,7 +8298,7 @@ void bench_shake128(int useDeviceID) WC_SHA3_128_BLOCK_SIZE); if (ret != 0) goto exit_shake128; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8230,7 +8323,7 @@ void bench_shake128(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -8238,8 +8331,8 @@ void bench_shake128(int useDeviceID) exit_shake128: bench_stats_sym_finish("SHAKE128", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -8257,7 +8350,7 @@ void bench_shake256(int useDeviceID) { wc_Shake hash[BENCH_MAX_PENDING]; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -8270,7 +8363,7 @@ void bench_shake256(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -8303,7 +8396,7 @@ void bench_shake256(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8345,7 +8438,7 @@ void bench_shake256(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -8363,7 +8456,7 @@ void bench_shake256(int useDeviceID) WC_SHA3_256_BLOCK_SIZE); if (ret != 0) goto exit_shake256; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8388,7 +8481,7 @@ void bench_shake256(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -8396,8 +8489,8 @@ void bench_shake256(int useDeviceID) exit_shake256: bench_stats_sym_finish("SHAKE256", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -8416,7 +8509,7 @@ void bench_sm3(int useDeviceID) { wc_Sm3 hash[BENCH_MAX_PENDING]; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -8429,7 +8522,7 @@ void bench_sm3(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -8461,7 +8554,7 @@ void bench_sm3(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8501,7 +8594,7 @@ void bench_sm3(int useDeviceID) } /* for i */ } while (pending > 0); } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -8518,7 +8611,7 @@ void bench_sm3(int useDeviceID) ret = wc_Sm3Final(hash, digest[0]); if (ret != 0) goto exit_sm3; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8543,15 +8636,15 @@ void bench_sm3(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); } exit_sm3: bench_stats_sym_finish("SM3", useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -8571,14 +8664,14 @@ void bench_ripemd(void) RipeMd hash; byte digest[RIPEMD_DIGEST_SIZE]; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; #endif int i, count, ret = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -8597,7 +8690,7 @@ void bench_ripemd(void) printf("wc_RipeMdUpdate failed, retval %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8628,7 +8721,7 @@ void bench_ripemd(void) count += i; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -8652,7 +8745,7 @@ void bench_ripemd(void) printf("wc_RipeMdFinal failed, retval %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8677,14 +8770,14 @@ void bench_ripemd(void) } count += i; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); } bench_stats_sym_finish("RIPEMD", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif return; @@ -8699,7 +8792,7 @@ void bench_blake2b(void) byte digest[64]; double start; int ret = 0, i, count; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -8722,7 +8815,7 @@ void bench_blake2b(void) printf("Blake2bUpdate failed, ret = %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8752,7 +8845,7 @@ void bench_blake2b(void) } count += i; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -8776,7 +8869,7 @@ void bench_blake2b(void) printf("Blake2bFinal failed, ret = %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8801,14 +8894,14 @@ void bench_blake2b(void) } count += i; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); } bench_stats_sym_finish("BLAKE2b", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } #endif @@ -8820,7 +8913,7 @@ void bench_blake2s(void) byte digest[32]; double start; int ret = 0, i, count; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -8843,7 +8936,7 @@ void bench_blake2s(void) printf("Blake2sUpdate failed, ret = %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8873,7 +8966,7 @@ void bench_blake2s(void) } count += i; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -8897,7 +8990,7 @@ void bench_blake2s(void) printf("Blake2sFinal failed, ret = %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -8922,14 +9015,14 @@ void bench_blake2s(void) } count += i; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); } bench_stats_sym_finish("BLAKE2s", 0, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } #endif @@ -8943,7 +9036,7 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID) byte digest[AES_BLOCK_SIZE]; word32 digestSz = sizeof(digest); double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -8969,7 +9062,7 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID) #endif (void)useDeviceID; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -8997,7 +9090,7 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID) printf("CmacUpdate failed, ret = %d\n", ret); return; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -9028,14 +9121,14 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish(outMsg, useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -9057,14 +9150,14 @@ void bench_scrypt(void) { byte derived[64]; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; #endif int ret, i, count; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -9078,7 +9171,7 @@ void bench_scrypt(void) printf("scrypt failed, ret = %d\n", ret); goto exit; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -9103,15 +9196,15 @@ void bench_scrypt(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit: bench_stats_asym_finish("scrypt", 17, "", 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -9125,7 +9218,7 @@ static void bench_hmac(int useDeviceID, int type, int digestSz, Hmac hmac[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -9143,7 +9236,7 @@ static void bench_hmac(int useDeviceID, int type, int digestSz, /* clear for done cleanup */ XMEMSET(hmac, 0, sizeof(hmac)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -9199,7 +9292,7 @@ static void bench_hmac(int useDeviceID, int type, int digestSz, goto exit_hmac; } } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -9224,15 +9317,15 @@ static void bench_hmac(int useDeviceID, int type, int digestSz, } /* for i */ } while (pending > 0); } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_hmac: bench_stats_sym_finish(label, useDeviceID, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -9351,7 +9444,7 @@ void bench_pbkdf2(void) { double start; int ret = 0, count = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -9364,7 +9457,7 @@ void bench_pbkdf2(void) 0x78, 0x57, 0x8E, 0x5a, 0x5d, 0x63, 0xcb, 0x06 }; byte derived[32]; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -9373,7 +9466,7 @@ void bench_pbkdf2(void) ret = wc_PBKDF2(derived, (const byte*)passwd32, (int)XSTRLEN(passwd32), salt32, (int)sizeof(salt32), 1000, 32, WC_SHA256); count++; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -9396,14 +9489,14 @@ void bench_pbkdf2(void) prev = current_time(0); #endif } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("PBKDF2", 32, count, 32, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } #endif /* !NO_PWDBASED */ @@ -9414,7 +9507,7 @@ void bench_pbkdf2(void) void bench_siphash(void) { double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -9424,7 +9517,7 @@ void bench_siphash(void) byte out[16]; int i; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -9433,7 +9526,7 @@ void bench_siphash(void) for (i = 0; i < numBlocks; i++) { ret = wc_SipHash((const byte*)passwd16, bench_plain, bench_size, out, 8); - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -9458,14 +9551,14 @@ void bench_siphash(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("SipHash-8", 1, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -9478,7 +9571,7 @@ void bench_siphash(void) for (i = 0; i < numBlocks; i++) { ret = wc_SipHash((const byte*)passwd16, bench_plain, bench_size, out, 16); - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -9503,14 +9596,14 @@ void bench_siphash(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_sym_finish("SipHash-16", 1, count, bench_size, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } #endif @@ -9588,7 +9681,7 @@ static void bench_rsaKeyGen_helper(int useDeviceID, word32 keySz) RsaKey genKey[BENCH_MAX_PENDING]; #endif double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -9608,7 +9701,7 @@ static void bench_rsaKeyGen_helper(int useDeviceID, word32 keySz) /* clear for done cleanup */ XMEMSET(genKey, 0, sizeof(*genKey) * BENCH_MAX_PENDING); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -9637,7 +9730,7 @@ static void bench_rsaKeyGen_helper(int useDeviceID, word32 keySz) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -9662,7 +9755,7 @@ static void bench_rsaKeyGen_helper(int useDeviceID, word32 keySz) } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -9670,8 +9763,8 @@ static void bench_rsaKeyGen_helper(int useDeviceID, word32 keySz) exit: bench_stats_asym_finish("RSA", (int)keySz, desc[2], useDeviceID, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif /* cleanup */ @@ -9822,7 +9915,7 @@ static void bench_rsa_helper(int useDeviceID, RsaKey rsaKey[BENCH_MAX_PENDING], const int len = (int)TEST_STRING_SZ; #endif double start = 0.0F; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -9869,7 +9962,7 @@ static void bench_rsa_helper(int useDeviceID, RsaKey rsaKey[BENCH_MAX_PENDING], XMEMCPY(message, messageStr, len); #endif -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -9897,7 +9990,7 @@ static void bench_rsa_helper(int useDeviceID, RsaKey rsaKey[BENCH_MAX_PENDING], } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -9922,7 +10015,7 @@ static void bench_rsa_helper(int useDeviceID, RsaKey rsaKey[BENCH_MAX_PENDING], } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -9930,8 +10023,8 @@ static void bench_rsa_helper(int useDeviceID, RsaKey rsaKey[BENCH_MAX_PENDING], exit_rsa_verify: bench_stats_asym_finish("RSA", (int)rsaKeySz, desc[0], useDeviceID, count, start, ret); - #ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + #ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #endif /* !WOLFSSL_RSA_VERIFY_ONLY */ @@ -9940,7 +10033,7 @@ exit_rsa_verify: goto exit; } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -9970,7 +10063,7 @@ exit_rsa_verify: } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -9995,7 +10088,7 @@ exit_rsa_verify: } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -10003,8 +10096,8 @@ exit_rsa_verify: exit_rsa_pub: bench_stats_asym_finish("RSA", (int)rsaKeySz, desc[1], useDeviceID, count, start, ret); - #ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + #ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #endif /* !WOLFSSL_RSA_PUBLIC_ONLY */ } @@ -10030,7 +10123,7 @@ exit_rsa_pub: } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -10055,7 +10148,7 @@ exit_rsa_pub: } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -10063,14 +10156,14 @@ exit_rsa_pub: exit_rsa_sign: bench_stats_asym_finish("RSA", (int)rsaKeySz, desc[4], useDeviceID, count, start, ret); - #ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + #ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif if (ret < 0) { goto exit; } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -10123,7 +10216,7 @@ exit_rsa_sign: } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -10148,7 +10241,7 @@ exit_rsa_sign: } /* for times */ count += times; } while (bench_stats_check(start) - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -10156,8 +10249,8 @@ exit_rsa_sign: exit_rsa_verifyinline: bench_stats_asym_finish("RSA", (int)rsaKeySz, desc[5], useDeviceID, count, start, ret); - #ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + #ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -10391,7 +10484,7 @@ void bench_dh(int useDeviceID) int count = 0, times, pending = 0; const byte* tmp = NULL; double start = 0.0F; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -10518,7 +10611,7 @@ void bench_dh(int useDeviceID) XMEMSET(dhKey[i], 0, sizeof(DhKey)); } #endif -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -10558,7 +10651,7 @@ void bench_dh(int useDeviceID) } } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -10585,7 +10678,7 @@ void bench_dh(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -10610,7 +10703,7 @@ void bench_dh(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -10619,15 +10712,15 @@ void bench_dh(int useDeviceID) exit_dh_gen: bench_stats_asym_finish("DH", dhKeySz, desc[2], useDeviceID, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif if (ret < 0) { goto exit; } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -10662,7 +10755,7 @@ exit_dh_gen: } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -10687,7 +10780,7 @@ exit_dh_gen: } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -10697,8 +10790,8 @@ exit_dh_gen: exit: bench_stats_asym_finish("DH", dhKeySz, desc[3], useDeviceID, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif /* cleanup */ @@ -10729,14 +10822,14 @@ static void bench_kyber_keygen(int type, const char* name, int keySize, { int ret = 0, times, count, pending = 0; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; #endif const char**desc = bench_desc_words[lng_index]; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -10758,7 +10851,7 @@ static void bench_kyber_keygen(int type, const char* name, int keySize, #endif if (ret != 0) goto exit; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -10783,15 +10876,15 @@ static void bench_kyber_keygen(int type, const char* name, int keySize, } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit: bench_stats_asym_finish(name, keySize, desc[2], 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -10799,7 +10892,7 @@ static void bench_kyber_encap(const char* name, int keySize, KyberKey* key) { int ret = 0, times, count, pending = 0; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -10814,7 +10907,7 @@ static void bench_kyber_encap(const char* name, int keySize, KyberKey* key) return; } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -10832,7 +10925,7 @@ static void bench_kyber_encap(const char* name, int keySize, KyberKey* key) #endif if (ret != 0) goto exit_encap; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -10857,18 +10950,18 @@ static void bench_kyber_encap(const char* name, int keySize, KyberKey* key) } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_encap: bench_stats_asym_finish(name, keySize, desc[9], 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -10883,7 +10976,7 @@ exit_encap: ret = wc_KyberKey_Decapsulate(key, ss, ct, ctSz); if (ret != 0) goto exit_decap; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -10908,15 +11001,15 @@ exit_encap: } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_decap: bench_stats_asym_finish(name, keySize, desc[13], 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -11268,7 +11361,7 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm) printf("wc_LmsKey_Sign failed: %d\n", ret); goto exit_lms_sign_verify; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -11294,15 +11387,15 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm) count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish(str, (int)sigSz, "sign", 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -11321,7 +11414,7 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm) printf("wc_LmsKey_Verify failed: %d\n", ret); goto exit_lms_sign_verify; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -11347,7 +11440,7 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm) count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -11355,8 +11448,8 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm) exit_lms_sign_verify: bench_stats_asym_finish(str, (int)sigSz, "verify", 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif @@ -11669,7 +11762,7 @@ void bench_eccMakeKey(int useDeviceID, int curveId) #endif char name[BENCH_ECC_NAME_SZ]; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -11690,7 +11783,7 @@ void bench_eccMakeKey(int useDeviceID, int curveId) /* clear for done cleanup */ XMEMSET(genKey, 0, sizeof(*genKey) * BENCH_MAX_PENDING); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -11721,7 +11814,7 @@ void bench_eccMakeKey(int useDeviceID, int curveId) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -11746,7 +11839,7 @@ void bench_eccMakeKey(int useDeviceID, int curveId) } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -11756,8 +11849,8 @@ exit: wc_ecc_get_name(curveId)); bench_stats_asym_finish(name, keySize * 8, desc[2], useDeviceID, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif /* cleanup */ @@ -11798,7 +11891,7 @@ void bench_ecc(int useDeviceID, int curveId) word32 x[BENCH_MAX_PENDING]; double start = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -11851,7 +11944,7 @@ void bench_ecc(int useDeviceID, int curveId) #ifdef HAVE_ECC_DHE XMEMSET(genKey2, 0, sizeof(*genKey2) * BENCH_MAX_PENDING); #endif -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif keySize = wc_ecc_get_curve_size_from_id(curveId); @@ -11911,7 +12004,7 @@ void bench_ecc(int useDeviceID, int curveId) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -11936,7 +12029,7 @@ void bench_ecc(int useDeviceID, int curveId) } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -11948,8 +12041,8 @@ exit_ecdhe: bench_stats_asym_finish(name, keySize * 8, desc[3], useDeviceID, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -11997,7 +12090,7 @@ exit_ecdhe: } } /* bench_async_check */ } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -12022,7 +12115,7 @@ exit_ecdhe: } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -12033,8 +12126,8 @@ exit_ecdsa_sign: bench_stats_asym_finish(name, keySize * 8, desc[4], useDeviceID, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -12074,7 +12167,7 @@ exit_ecdsa_sign: } } /* if bench_async_check */ } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -12099,7 +12192,7 @@ exit_ecdsa_sign: } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -12110,8 +12203,8 @@ exit_ecdsa_verify: bench_stats_asym_finish(name, keySize * 8, desc[5], useDeviceID, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #endif /* HAVE_ECC_VERIFY */ #endif /* !NO_ASN && HAVE_ECC_SIGN */ @@ -12174,7 +12267,7 @@ void bench_eccEncrypt(int curveId) word32 bench_plainSz = bench_size; int ret, i, count; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -12239,7 +12332,7 @@ void bench_eccEncrypt(int curveId) msg[i] = (byte)i; } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -12253,7 +12346,7 @@ void bench_eccEncrypt(int curveId) printf("wc_ecc_encrypt failed! %d\n", ret); goto exit_enc; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -12278,7 +12371,7 @@ void bench_eccEncrypt(int curveId) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -12287,8 +12380,8 @@ exit_enc: (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECC [%15s]", wc_ecc_get_name(curveId)); bench_stats_asym_finish(name, keySize * 8, desc[6], 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -12306,7 +12399,7 @@ exit_enc: printf("wc_ecc_decrypt failed! %d\n", ret); goto exit_dec; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -12331,15 +12424,15 @@ exit_enc: } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_dec: bench_stats_asym_finish(name, keySize * 8, desc[7], 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif exit: @@ -12374,7 +12467,7 @@ static void bench_sm2_MakeKey(int useDeviceID) ecc_key genKey[BENCH_MAX_PENDING]; char name[BENCH_ECC_NAME_SZ]; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -12386,7 +12479,7 @@ static void bench_sm2_MakeKey(int useDeviceID) /* clear for done cleanup */ XMEMSET(&genKey, 0, sizeof(genKey)); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -12416,7 +12509,7 @@ static void bench_sm2_MakeKey(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -12441,7 +12534,7 @@ static void bench_sm2_MakeKey(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -12449,10 +12542,10 @@ static void bench_sm2_MakeKey(int useDeviceID) exit: (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECC [%15s]", wc_ecc_get_name(ECC_SM2P256V1)); - bench_stats_asym_finish(name, keySize * 8, desc[2], useDeviceID, count, start, - ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + bench_stats_asym_finish(name, keySize * 8, desc[2], useDeviceID, count, + start, ret); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif /* cleanup */ @@ -12479,7 +12572,7 @@ void bench_sm2(int useDeviceID) #endif word32 x[BENCH_MAX_PENDING]; double start = 0; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -12510,7 +12603,7 @@ void bench_sm2(int useDeviceID) #ifdef HAVE_ECC_DHE XMEMSET(&genKey2, 0, sizeof(genKey2)); #endif -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -12571,7 +12664,7 @@ void bench_sm2(int useDeviceID) } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -12596,19 +12689,20 @@ void bench_sm2(int useDeviceID) } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); PRIVATE_KEY_UNLOCK(); exit_ecdhe: - (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECDHE [%15s]", wc_ecc_get_name(ECC_SM2P256V1)); + (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECDHE [%15s]", + wc_ecc_get_name(ECC_SM2P256V1)); - bench_stats_asym_finish(name, keySize * 8, desc[3], useDeviceID, count, start, - ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + bench_stats_asym_finish(name, keySize * 8, desc[3], useDeviceID, count, + start, ret); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif if (ret < 0) { @@ -12625,7 +12719,7 @@ exit_ecdhe: } } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -12653,7 +12747,7 @@ exit_ecdhe: } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -12678,18 +12772,19 @@ exit_ecdhe: } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_ecdsa_sign: - (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECDSA [%15s]", wc_ecc_get_name(ECC_SM2P256V1)); + (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECDSA [%15s]", + wc_ecc_get_name(ECC_SM2P256V1)); - bench_stats_asym_finish(name, keySize * 8, desc[4], useDeviceID, count, start, - ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + bench_stats_asym_finish(name, keySize * 8, desc[4], useDeviceID, count, + start, ret); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif if (ret < 0) { @@ -12719,7 +12814,7 @@ exit_ecdsa_sign: } } } /* for i */ - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -12744,18 +12839,19 @@ exit_ecdsa_sign: } /* for times */ count += times; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_ecdsa_verify: - (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECDSA [%15s]", wc_ecc_get_name(ECC_SM2P256V1)); + (void)XSNPRINTF(name, BENCH_ECC_NAME_SZ, "ECDSA [%15s]", + wc_ecc_get_name(ECC_SM2P256V1)); - bench_stats_asym_finish(name, keySize * 8, desc[5], useDeviceID, count, start, - ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + bench_stats_asym_finish(name, keySize * 8, desc[5], useDeviceID, count, + start, ret); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #endif /* HAVE_ECC_VERIFY */ @@ -12796,7 +12892,7 @@ void bench_curve25519KeyGen(int useDeviceID) { curve25519_key genKey; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -12804,7 +12900,7 @@ void bench_curve25519KeyGen(int useDeviceID) int ret = 0, i, count; const char**desc = bench_desc_words[lng_index]; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -12825,7 +12921,7 @@ void bench_curve25519KeyGen(int useDeviceID) printf("wc_curve25519_make_key failed: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -12850,15 +12946,15 @@ void bench_curve25519KeyGen(int useDeviceID) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish("CURVE", 25519, desc[2], useDeviceID, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -12867,7 +12963,7 @@ void bench_curve25519KeyAgree(int useDeviceID) { curve25519_key genKey, genKey2; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -12877,7 +12973,7 @@ void bench_curve25519KeyAgree(int useDeviceID) const char**desc = bench_desc_words[lng_index]; word32 x = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -12908,7 +13004,7 @@ void bench_curve25519KeyAgree(int useDeviceID) printf("curve25519_shared_secret failed: %d\n", ret); goto exit; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -12933,7 +13029,7 @@ void bench_curve25519KeyAgree(int useDeviceID) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -12941,8 +13037,8 @@ void bench_curve25519KeyAgree(int useDeviceID) exit: bench_stats_asym_finish("CURVE", 25519, desc[3], useDeviceID, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_curve25519_free(&genKey2); @@ -12957,7 +13053,7 @@ void bench_ed25519KeyGen(void) #ifdef HAVE_ED25519_MAKE_KEY ed25519_key genKey; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -12965,7 +13061,7 @@ void bench_ed25519KeyGen(void) int i, count; const char**desc = bench_desc_words[lng_index]; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -12976,7 +13072,7 @@ void bench_ed25519KeyGen(void) wc_ed25519_init(&genKey); (void)wc_ed25519_make_key(&gRng, 32, &genKey); wc_ed25519_free(&genKey); - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13001,14 +13097,14 @@ void bench_ed25519KeyGen(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish("ED", 25519, desc[2], 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #endif /* HAVE_ED25519_MAKE_KEY */ } @@ -13022,7 +13118,7 @@ void bench_ed25519KeySign(void) ed25519_key genKey; #ifdef HAVE_ED25519_SIGN double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -13049,7 +13145,7 @@ void bench_ed25519KeySign(void) for (i = 0; i < (int)sizeof(msg); i++) msg[i] = (byte)i; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -13062,7 +13158,7 @@ void bench_ed25519KeySign(void) printf("ed25519_sign_msg failed\n"); goto exit_ed_sign; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13087,15 +13183,15 @@ void bench_ed25519KeySign(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_ed_sign: bench_stats_asym_finish("ED", 25519, desc[4], 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -13114,7 +13210,7 @@ exit_ed_sign: printf("ed25519_verify_msg failed\n"); goto exit_ed_verify; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13139,15 +13235,15 @@ exit_ed_sign: } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_ed_verify: bench_stats_asym_finish("ED", 25519, desc[5], 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #endif /* HAVE_ED25519_VERIFY */ #endif /* HAVE_ED25519_SIGN */ @@ -13161,7 +13257,7 @@ void bench_curve448KeyGen(void) { curve448_key genKey; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -13169,7 +13265,7 @@ void bench_curve448KeyGen(void) int ret = 0, i, count; const char**desc = bench_desc_words[lng_index]; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -13183,7 +13279,7 @@ void bench_curve448KeyGen(void) printf("wc_curve448_make_key failed: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13208,14 +13304,14 @@ void bench_curve448KeyGen(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish("CURVE", 448, desc[2], 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -13224,7 +13320,7 @@ void bench_curve448KeyAgree(void) { curve448_key genKey, genKey2; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -13234,7 +13330,7 @@ void bench_curve448KeyAgree(void) const char**desc = bench_desc_words[lng_index]; word32 x = 0; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -13263,7 +13359,7 @@ void bench_curve448KeyAgree(void) printf("curve448_shared_secret failed: %d\n", ret); goto exit; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13288,15 +13384,15 @@ void bench_curve448KeyAgree(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit: bench_stats_asym_finish("CURVE", 448, desc[3], 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_curve448_free(&genKey2); @@ -13310,7 +13406,7 @@ void bench_ed448KeyGen(void) { ed448_key genKey; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -13318,7 +13414,7 @@ void bench_ed448KeyGen(void) int i, count; const char**desc = bench_desc_words[lng_index]; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -13329,7 +13425,7 @@ void bench_ed448KeyGen(void) wc_ed448_init(&genKey); (void)wc_ed448_make_key(&gRng, ED448_KEY_SIZE, &genKey); wc_ed448_free(&genKey); - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13354,14 +13450,14 @@ void bench_ed448KeyGen(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish("ED", 448, desc[2], 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -13372,7 +13468,7 @@ void bench_ed448KeySign(void) ed448_key genKey; #ifdef HAVE_ED448_SIGN double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -13397,7 +13493,7 @@ void bench_ed448KeySign(void) for (i = 0; i < (int)sizeof(msg); i++) msg[i] = (byte)i; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -13411,7 +13507,7 @@ void bench_ed448KeySign(void) printf("ed448_sign_msg failed\n"); goto exit_ed_sign; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13436,15 +13532,15 @@ void bench_ed448KeySign(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_ed_sign: bench_stats_asym_finish("ED", 448, desc[4], 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -13463,7 +13559,7 @@ exit_ed_sign: printf("ed448_verify_msg failed\n"); goto exit_ed_verify; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13488,15 +13584,15 @@ exit_ed_sign: } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); exit_ed_verify: bench_stats_asym_finish("ED", 448, desc[5], 0, count, start, ret); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif #endif /* HAVE_ED448_VERIFY */ #endif /* HAVE_ED448_SIGN */ @@ -13511,7 +13607,7 @@ void bench_eccsiKeyGen(void) { EccsiKey genKey; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -13520,7 +13616,7 @@ void bench_eccsiKeyGen(void) const char**desc = bench_desc_words[lng_index]; int ret; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -13535,7 +13631,7 @@ void bench_eccsiKeyGen(void) break; } wc_FreeEccsiKey(&genKey); - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13560,14 +13656,14 @@ void bench_eccsiKeyGen(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish("ECCSI", 256, desc[2], 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -13575,7 +13671,7 @@ void bench_eccsiPairGen(void) { EccsiKey genKey; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -13592,7 +13688,7 @@ void bench_eccsiPairGen(void) wc_InitEccsiKey(&genKey, NULL, INVALID_DEVID); (void)wc_MakeEccsiKey(&genKey, &gRng); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -13606,7 +13702,7 @@ void bench_eccsiPairGen(void) printf("wc_MakeEccsiPair failed: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13631,14 +13727,14 @@ void bench_eccsiPairGen(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish("ECCSI", 256, desc[12], 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_FreeEccsiKey(&genKey); @@ -13652,7 +13748,7 @@ void bench_eccsiValidate(void) { EccsiKey genKey; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -13665,7 +13761,7 @@ void bench_eccsiValidate(void) int valid; int ret; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -13687,7 +13783,7 @@ void bench_eccsiValidate(void) valid); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13712,14 +13808,14 @@ void bench_eccsiValidate(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish("ECCSI", 256, desc[11], 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_FreeEccsiKey(&genKey); @@ -13731,7 +13827,7 @@ void bench_eccsi(void) { EccsiKey genKey; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -13749,7 +13845,7 @@ void bench_eccsi(void) int ret; int verified; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -13774,7 +13870,7 @@ void bench_eccsi(void) printf("wc_SignEccsiHash failed: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13799,14 +13895,14 @@ void bench_eccsi(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish("ECCSI", 256, desc[4], 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -13826,7 +13922,7 @@ void bench_eccsi(void) verified); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13851,14 +13947,14 @@ void bench_eccsi(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish("ECCSI", 256, desc[5], 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_FreeEccsiKey(&genKey); @@ -13873,7 +13969,7 @@ void bench_sakkeKeyGen(void) { SakkeKey genKey; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -13882,7 +13978,7 @@ void bench_sakkeKeyGen(void) const char**desc = bench_desc_words[lng_index]; int ret; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -13897,7 +13993,7 @@ void bench_sakkeKeyGen(void) break; } wc_FreeSakkeKey(&genKey); - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13922,14 +14018,14 @@ void bench_sakkeKeyGen(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish("SAKKE", 1024, desc[2], 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -13937,7 +14033,7 @@ void bench_sakkeRskGen(void) { SakkeKey genKey; double start; - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -13948,7 +14044,7 @@ void bench_sakkeRskGen(void) static const byte id[] = { 0x01, 0x23, 0x34, 0x45 }; int ret; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -13965,7 +14061,7 @@ void bench_sakkeRskGen(void) printf("wc_MakeSakkeRsk failed: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -13990,14 +14086,14 @@ void bench_sakkeRskGen(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish("SAKKE", 1024, desc[8], 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_FreeSakkeKey(&genKey); @@ -14010,7 +14106,7 @@ void bench_sakkeValidate(void) { SakkeKey genKey; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -14022,7 +14118,7 @@ void bench_sakkeValidate(void) int valid; int ret; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -14042,7 +14138,7 @@ void bench_sakkeValidate(void) valid); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14067,14 +14163,14 @@ void bench_sakkeValidate(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish("SAKKE", 1024, desc[11], 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_FreeSakkeKey(&genKey); @@ -14085,7 +14181,7 @@ void bench_sakke(void) { SakkeKey genKey; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -14106,7 +14202,7 @@ void bench_sakke(void) word32 iTableLen = 0; XMEMCPY(ssv, ssv_init, sizeof ssv); -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -14128,7 +14224,7 @@ void bench_sakke(void) printf("wc_MakeSakkeEncapsulatedSSV failed: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14153,15 +14249,15 @@ void bench_sakke(void) } /* for */ count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish_ex("SAKKE", 1024, desc[9], "-1", 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -14180,7 +14276,7 @@ void bench_sakke(void) printf("wc_DeriveSakkeSSV failed: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14206,15 +14302,15 @@ void bench_sakke(void) if (ret != 0) break; count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish_ex("SAKKE", 1024, desc[10], "-1", 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif /* Calculate Point I and generate table. */ @@ -14237,7 +14333,7 @@ void bench_sakke(void) printf("wc_MakeSakkeEncapsulatedSSV failed: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14262,15 +14358,15 @@ void bench_sakke(void) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish_ex("SAKKE", 1024, desc[9], "-2", 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -14291,7 +14387,7 @@ void bench_sakke(void) printf("wc_DeriveSakkeSSV failed: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14317,15 +14413,15 @@ void bench_sakke(void) if (ret != 0) break; count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish_ex("SAKKE", 1024, desc[10], "-2", 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -14352,7 +14448,7 @@ void bench_sakke(void) printf("wc_DeriveSakkeSSV failed: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14378,15 +14474,15 @@ void bench_sakke(void) if (ret != 0) break; count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish_ex("SAKKE", 1024, desc[10], "-3", 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; @@ -14406,7 +14502,7 @@ void bench_sakke(void) printf("wc_DeriveSakkeSSV failed: %d\n", ret); break; } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14432,15 +14528,15 @@ void bench_sakke(void) if (ret != 0) break; count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); bench_stats_asym_finish_ex("SAKKE", 1024, desc[10], "-4", 0, count, start, 0); -#ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif wc_FreeSakkeKey(&genKey); @@ -14456,7 +14552,7 @@ void bench_falconKeySign(byte level) int ret = 0; falcon_key key; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -14516,7 +14612,7 @@ void bench_falconKeySign(byte level) printf("wc_falcon_sign_msg failed\n"); } } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14541,7 +14637,7 @@ void bench_falconKeySign(byte level) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -14549,11 +14645,11 @@ void bench_falconKeySign(byte level) if (ret == 0) { bench_stats_asym_finish("FALCON", level, desc[4], 0, count, start, ret); - #ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + #ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -14573,7 +14669,7 @@ void bench_falconKeySign(byte level) ret = -1; } } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14598,7 +14694,7 @@ void bench_falconKeySign(byte level) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -14606,8 +14702,8 @@ void bench_falconKeySign(byte level) if (ret == 0) { bench_stats_asym_finish("FALCON", level, desc[5], 0, count, start, ret); - #ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + #ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -14621,7 +14717,7 @@ void bench_dilithiumKeySign(byte level) int ret = 0; dilithium_key key; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -14632,7 +14728,7 @@ void bench_dilithiumKeySign(byte level) word32 x = 0; const char**desc = bench_desc_words[lng_index]; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -14691,7 +14787,7 @@ void bench_dilithiumKeySign(byte level) printf("wc_dilithium_sign_msg failed\n"); } } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14716,7 +14812,7 @@ void bench_dilithiumKeySign(byte level) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -14724,11 +14820,11 @@ void bench_dilithiumKeySign(byte level) if (ret == 0) { bench_stats_asym_finish("DILITHIUM", level, desc[4], 0, count, start, ret); - #ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + #ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -14749,7 +14845,7 @@ void bench_dilithiumKeySign(byte level) ret = -1; } } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14774,7 +14870,7 @@ void bench_dilithiumKeySign(byte level) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -14782,8 +14878,8 @@ void bench_dilithiumKeySign(byte level) if (ret == 0) { bench_stats_asym_finish("DILITHIUM", level, desc[5], 0, count, start, ret); - #ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + #ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -14797,7 +14893,7 @@ void bench_sphincsKeySign(byte level, byte optim) int ret = 0; sphincs_key key; double start; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS double deltas[MAX_SAMPLE_RUNS]; double max = 0, min = 0, sum = 0, prev = 0, delta; int runs = 0; @@ -14808,7 +14904,7 @@ void bench_sphincsKeySign(byte level, byte optim) word32 x = 0; const char**desc = bench_desc_words[lng_index]; -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -14891,7 +14987,7 @@ void bench_sphincsKeySign(byte level, byte optim) printf("wc_sphincs_sign_msg failed\n"); } } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14916,7 +15012,7 @@ void bench_sphincsKeySign(byte level, byte optim) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -14930,12 +15026,12 @@ void bench_sphincsKeySign(byte level, byte optim) bench_stats_asym_finish("SPHINCS-SMALL", level, desc[4], 0, count, start, ret); } - #ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + #ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; @@ -14956,7 +15052,7 @@ void bench_sphincsKeySign(byte level, byte optim) ret = -1; } } - #ifdef ADVANCED_STATS + #ifdef MULTI_VALUE_STATISTICS if (runs == 0) { delta = current_time(0) - start; min = delta; @@ -14981,7 +15077,7 @@ void bench_sphincsKeySign(byte level, byte optim) } count += i; } while (bench_stats_check(start) -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs #endif ); @@ -14995,8 +15091,8 @@ void bench_sphincsKeySign(byte level, byte optim) bench_stats_asym_finish("SPHINCS-SMALL", level, desc[5], 0, count, start, ret); } - #ifdef ADVANCED_STATS - bench_advanced_stats(deltas, max, min, sum, runs); + #ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); #endif } @@ -15468,9 +15564,9 @@ static void Usage(void) #ifndef NO_FILESYSTEM printf("%s", bench_Usage_msg1[lng_index][e]); /* option -cipher_input */ #endif -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS e++; - printf("%s", bench_Usage_msg1[lng_index][e]); /* option -cipher_input */ + printf("%s", bench_Usage_msg1[lng_index][e]); /* option -min_runs */ #endif } @@ -15661,7 +15757,7 @@ int wolfcrypt_benchmark_main(int argc, char** argv) if (argc > 1) cipher_input = argv[1]; } -#ifdef ADVANCED_STATS +#ifdef MULTI_VALUE_STATISTICS else if (string_matches(argv[1], "-min_runs")) { argc--; argv++; From 46a5465c3f13230029166fa20b97cae440cc99e4 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Tue, 24 Oct 2023 16:31:14 -0600 Subject: [PATCH 06/17] Remove redundant macro --- wolfcrypt/benchmark/benchmark.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 9747735fd..544960f00 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -2369,11 +2369,7 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, printf("%sAlgorithm,key size,operation,ops/" WOLFSSL_FIXED_TIME_UNIT "ec,", info_prefix); #endif - #ifdef MULTI_VALUE_STATISTICS printf("max duration,min duration,mean duration,sd,\n"); - #else - printf("\n"); - #endif asym_header_printed = 1; } #ifdef GENERATE_MACHINE_PARSEABLE_REPORT @@ -2452,11 +2448,7 @@ static void bench_stats_asym_finish_ex(const char* algo, int strength, printf("%sAlgorithm,key size,operation,avg ms,ops/" WOLFSSL_FIXED_TIME_UNIT "ec,", info_prefix); #endif - #ifdef MULTI_VALUE_STATISTICS - printf("max duration,min duration,mean duration,sd,\n"); - #else printf("\n"); - #endif asym_header_printed = 1; } #ifdef GENERATE_MACHINE_PARSEABLE_REPORT From 1303c0512c6e5a4adcafa372a970e26e148811f9 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Wed, 25 Oct 2023 13:52:10 -0600 Subject: [PATCH 07/17] Extract some code blocks into macros --- wolfcrypt/benchmark/benchmark.c | 3343 +++---------------------------- 1 file changed, 229 insertions(+), 3114 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 544960f00..cf533c353 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -243,8 +243,32 @@ #define MAX_SAMPLE_RUNS 1000 #endif #define STATS_CLAUSE_SEPARATOR "" + #define DECLARE_MULTI_VALUE_STATS_VARS() double deltas[MAX_SAMPLE_RUNS];\ + double max = 0, min = 0, sum = 0,\ + prev = 0, delta;\ + int runs = 0; + #define RECORD_MULTI_VALUE_STATS() if (runs == 0) {\ + delta = current_time(0) - start;\ + min = delta;\ + max = delta;\ + }\ + else {\ + delta = current_time(0) - prev;\ + if (max < delta)\ + max = delta;\ + else if (min > delta)\ + min = delta;\ + }\ + if (runs < MAX_SAMPLE_RUNS) {\ + deltas[runs] = delta;\ + sum += delta;\ + runs++;\ + }\ + prev = current_time(0) #else #define STATS_CLAUSE_SEPARATOR "\n" + #define DECLARE_MULTI_VALUE_STATS_VARS() + #define RECORD_MULTI_VALUE_STATS() WC_DO_NOTHING #endif #ifdef WOLFSSL_NO_FLOAT_FMT @@ -3680,11 +3704,7 @@ void bench_rng(void) double start; long pos, len, remain; WC_RNG myrng; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() #ifndef HAVE_FIPS ret = wc_InitRng_ex(&myrng, HEAP_HINT, devId); @@ -3718,28 +3738,7 @@ void bench_rng(void) remain -= len; pos += len; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -3769,11 +3768,7 @@ static void bench_aescbc_internal(int useDeviceID, int ret = 0, i, count = 0, times, pending = 0; Aes enc[BENCH_MAX_PENDING]; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); @@ -3818,28 +3813,7 @@ static void bench_aescbc_internal(int useDeviceID, } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -3894,28 +3868,7 @@ exit_aes_enc: } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -3981,11 +3934,7 @@ static void bench_aesgcm_internal(int useDeviceID, Aes dec[BENCH_MAX_PENDING+1]; #endif double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_VAR(bench_additional, byte, AES_AUTH_ADD_SZ, HEAP_HINT); WC_DECLARE_VAR(bench_tag, byte, AES_AUTH_TAG_SZ, HEAP_HINT); @@ -4049,28 +3998,7 @@ static void bench_aesgcm_internal(int useDeviceID, } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -4130,28 +4058,7 @@ exit_aes_gcm: } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -4199,11 +4106,7 @@ static void bench_aesgcm_stream_internal(int useDeviceID, Aes dec[BENCH_MAX_PENDING]; #endif double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_VAR(bench_additional, byte, AES_AUTH_ADD_SZ, HEAP_HINT); WC_DECLARE_VAR(bench_tag, byte, AES_AUTH_TAG_SZ, HEAP_HINT); @@ -4269,28 +4172,7 @@ static void bench_aesgcm_stream_internal(int useDeviceID, } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -4354,28 +4236,7 @@ exit_aes_gcm: } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -4470,11 +4331,7 @@ void bench_gmac(int useDeviceID) Gmac gmac; double start; byte tag[AES_AUTH_TAG_SZ]; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() /* determine GCM GHASH method */ #ifdef GCM_SMALL @@ -4510,28 +4367,7 @@ void bench_gmac(int useDeviceID) tag, sizeof(tag)); count++; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } while (bench_stats_check(start) #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs @@ -4558,11 +4394,7 @@ static void bench_aesecb_internal(int useDeviceID, int ret = 0, i, count = 0, times, pending = 0; Aes enc[BENCH_MAX_PENDING]; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef HAVE_FIPS static const int benchSz = AES_BLOCK_SIZE; #else @@ -4615,28 +4447,7 @@ static void bench_aesecb_internal(int useDeviceID, } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -4692,28 +4503,7 @@ exit_aes_enc: } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -4762,12 +4552,8 @@ static void bench_aescfb_internal(const byte* key, { Aes enc; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, ret, count; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -4787,28 +4573,7 @@ static void bench_aescfb_internal(const byte* key, printf("wc_AesCfbEncrypt failed, ret = %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -4845,12 +4610,8 @@ static void bench_aesofb_internal(const byte* key, { Aes enc; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, ret, count; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -4876,28 +4637,7 @@ static void bench_aesofb_internal(const byte* key, printf("wc_AesCfbEncrypt failed, ret = %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -4934,12 +4674,8 @@ void bench_aesxts(void) { XtsAes aes; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count, ret; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -4972,28 +4708,7 @@ void bench_aesxts(void) printf("wc_AesXtsEncrypt failed, ret = %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5031,28 +4746,7 @@ void bench_aesxts(void) printf("wc_AesXtsDecrypt failed, ret = %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5077,12 +4771,8 @@ static void bench_aesctr_internal(const byte* key, word32 keySz, { Aes enc; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count, ret = 0; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -5106,28 +4796,7 @@ static void bench_aesctr_internal(const byte* key, word32 keySz, printf("wc_AesCtrEncrypt failed, ret = %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5164,12 +4833,8 @@ void bench_aesccm(int useDeviceID) { Aes enc; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret, i, count; + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_VAR(bench_additional, byte, AES_AUTH_ADD_SZ, HEAP_HINT); WC_DECLARE_VAR(bench_tag, byte, AES_AUTH_TAG_SZ, HEAP_HINT); @@ -5204,28 +4869,7 @@ void bench_aesccm(int useDeviceID) ret |= wc_AesCcmEncrypt(&enc, bench_cipher, bench_plain, bench_size, bench_iv, 12, bench_tag, AES_AUTH_TAG_SZ, bench_additional, 0); - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5257,28 +4901,7 @@ void bench_aesccm(int useDeviceID) ret |= wc_AesCcmDecrypt(&enc, bench_plain, bench_cipher, bench_size, bench_iv, 12, bench_tag, AES_AUTH_TAG_SZ, bench_additional, 0); - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5316,11 +4939,9 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* byte siv[AES_BLOCK_SIZE]; int count = 0; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; + DECLARE_MULTI_VALUE_STATS_VARS() +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -5334,28 +4955,7 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* printf("wc_AesSivEncrypt failed (%d)\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5384,28 +4984,7 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* printf("wc_AesSivDecrypt failed (%d)\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5437,11 +5016,9 @@ void bench_poly1305(void) byte mac[16]; double start; int ret = 0, i, count; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; + DECLARE_MULTI_VALUE_STATS_VARS() +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -5460,28 +5037,7 @@ void bench_poly1305(void) printf("Poly1305Update failed: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } wc_Poly1305Final(&enc, mac); count += i; @@ -5506,28 +5062,7 @@ void bench_poly1305(void) break; } wc_Poly1305Final(&enc, mac); - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5550,11 +5085,9 @@ void bench_camellia(void) Camellia cam; double start; int ret, i, count; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; + DECLARE_MULTI_VALUE_STATS_VARS() +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -5573,28 +5106,7 @@ void bench_camellia(void) printf("CamelliaCbcEncrypt failed: %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5615,14 +5127,10 @@ void bench_sm4_cbc(void) { wc_Sm4 sm4; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret; int i; int count; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -5647,28 +5155,7 @@ void bench_sm4_cbc(void) printf("Sm4CbcEncrypt failed: %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5695,28 +5182,7 @@ void bench_sm4_cbc(void) printf("Sm4CbcDecrypt failed: %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5737,14 +5203,10 @@ void bench_sm4_gcm(void) { wc_Sm4 sm4; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret; int i; int count; + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_VAR(bench_additional, byte, AES_AUTH_ADD_SZ, HEAP_HINT); WC_DECLARE_VAR(bench_tag, byte, AES_AUTH_TAG_SZ, HEAP_HINT); @@ -5775,28 +5237,7 @@ void bench_sm4_gcm(void) printf("Sm4GcmEncrypt failed: %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5825,28 +5266,7 @@ void bench_sm4_gcm(void) printf("Sm4GcmDecrypt failed: %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5867,12 +5287,8 @@ void bench_sm4_ccm() { wc_Sm4 enc; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret, i, count; + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_VAR(bench_additional, byte, AES_AUTH_ADD_SZ, HEAP_HINT); WC_DECLARE_VAR(bench_tag, byte, AES_AUTH_TAG_SZ, HEAP_HINT); @@ -5901,28 +5317,7 @@ void bench_sm4_ccm() ret |= wc_Sm4CcmEncrypt(&enc, bench_cipher, bench_plain, bench_size, bench_iv, 12, bench_tag, AES_AUTH_TAG_SZ, bench_additional, 0); - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -5953,28 +5348,7 @@ void bench_sm4_ccm() ret |= wc_Sm4CcmDecrypt(&enc, bench_plain, bench_cipher, bench_size, bench_iv, 12, bench_tag, AES_AUTH_TAG_SZ, bench_additional, 0); - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -6004,11 +5378,7 @@ void bench_des(int useDeviceID) int ret = 0, i, count = 0, times, pending = 0; Des3 enc[BENCH_MAX_PENDING]; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); @@ -6049,28 +5419,7 @@ void bench_des(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -6100,11 +5449,7 @@ void bench_arc4(int useDeviceID) int ret = 0, i, count = 0, times, pending = 0; Arc4 enc[BENCH_MAX_PENDING]; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); @@ -6144,28 +5489,7 @@ void bench_arc4(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -6195,13 +5519,7 @@ void bench_chacha(void) ChaCha enc; double start; int i, count; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; - - XMEMSET(deltas, 0, sizeof(deltas)); -#endif + DECLARE_MULTI_VALUE_STATS_VARS() XMEMSET(&enc, 0, sizeof(enc)); wc_Chacha_SetKey(&enc, bench_key, 16); @@ -6211,28 +5529,7 @@ void bench_chacha(void) for (i = 0; i < numBlocks; i++) { wc_Chacha_SetIV(&enc, bench_iv, 0); wc_Chacha_Process(&enc, bench_cipher, bench_plain, bench_size); - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -6253,11 +5550,7 @@ void bench_chacha20_poly1305_aead(void) { double start; int ret = 0, i, count; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() byte authTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]; XMEMSET(authTag, 0, sizeof(authTag)); @@ -6274,28 +5567,7 @@ void bench_chacha20_poly1305_aead(void) printf("wc_ChaCha20Poly1305_Encrypt error: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -6318,11 +5590,7 @@ void bench_md5(int useDeviceID) wc_Md5 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_MD5_DIGEST_SIZE, HEAP_HINT); @@ -6367,28 +5635,7 @@ void bench_md5(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -6425,28 +5672,7 @@ void bench_md5(int useDeviceID) ret = wc_Md5Final(hash, digest[0]); if (ret != 0) goto exit_md5; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -6480,11 +5706,7 @@ void bench_sha(int useDeviceID) wc_Sha hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -6528,28 +5750,7 @@ void bench_sha(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -6587,28 +5788,7 @@ void bench_sha(int useDeviceID) ret = wc_ShaFinal(hash, digest[0]); if (ret != 0) goto exit_sha; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -6640,11 +5820,7 @@ void bench_sha224(int useDeviceID) wc_Sha224 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA224_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -6685,28 +5861,7 @@ void bench_sha224(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -6775,11 +5930,7 @@ void bench_sha256(int useDeviceID) wc_Sha256 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA256_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -6823,28 +5974,7 @@ void bench_sha256(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -6881,28 +6011,7 @@ void bench_sha256(int useDeviceID) ret = wc_Sha256Final(hash, digest[0]); if (ret != 0) goto exit_sha256; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -6932,11 +6041,7 @@ void bench_sha384(int useDeviceID) wc_Sha384 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA384_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -6977,28 +6082,7 @@ void bench_sha384(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -7035,28 +6119,7 @@ void bench_sha384(int useDeviceID) ret = wc_Sha384Final(hash, digest[0]); if (ret != 0) goto exit_sha384; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -7088,11 +6151,7 @@ void bench_sha512(int useDeviceID) wc_Sha512 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA512_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -7133,28 +6192,7 @@ void bench_sha512(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -7191,28 +6229,7 @@ void bench_sha512(int useDeviceID) ret = wc_Sha512Final(hash, digest[0]); if (ret != 0) goto exit_sha512; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -7244,11 +6261,7 @@ void bench_sha512_224(int useDeviceID) wc_Sha512_224 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA512_224_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -7289,28 +6302,7 @@ void bench_sha512_224(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -7347,28 +6339,7 @@ void bench_sha512_224(int useDeviceID) ret = wc_Sha512_224Final(hash, digest[0]); if (ret != 0) goto exit_sha512_224; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -7401,12 +6372,8 @@ void bench_sha512_256(int useDeviceID) wc_Sha512_256 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif - WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, + DECLARE_MULTI_VALUE_STATS_VARS() + WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA512_256_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA512_256_DIGEST_SIZE, HEAP_HINT); @@ -7446,28 +6413,7 @@ void bench_sha512_256(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -7504,28 +6450,7 @@ void bench_sha512_256(int useDeviceID) ret = wc_Sha512_256Final(hash, digest[0]); if (ret != 0) goto exit_sha512_256; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -7561,11 +6486,7 @@ void bench_sha3_224(int useDeviceID) wc_Sha3 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_224_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -7606,28 +6527,7 @@ void bench_sha3_224(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -7664,28 +6564,7 @@ void bench_sha3_224(int useDeviceID) ret = wc_Sha3_224_Final(hash, digest[0]); if (ret != 0) goto exit_sha3_224; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -7716,11 +6595,7 @@ void bench_sha3_256(int useDeviceID) { wc_Sha3 hash[BENCH_MAX_PENDING]; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() int ret = 0, i, count = 0, times, pending = 0; WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_256_DIGEST_SIZE, HEAP_HINT); @@ -7762,28 +6637,7 @@ void bench_sha3_256(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -7820,28 +6674,7 @@ void bench_sha3_256(int useDeviceID) ret = wc_Sha3_256_Final(hash, digest[0]); if (ret != 0) goto exit_sha3_256; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -7873,11 +6706,7 @@ void bench_sha3_384(int useDeviceID) wc_Sha3 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_384_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -7918,28 +6747,7 @@ void bench_sha3_384(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -7976,28 +6784,7 @@ void bench_sha3_384(int useDeviceID) ret = wc_Sha3_384_Final(hash, digest[0]); if (ret != 0) goto exit_sha3_384; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -8029,12 +6816,8 @@ void bench_sha3_512(int useDeviceID) wc_Sha3 hash[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif - WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, + DECLARE_MULTI_VALUE_STATS_VARS() + WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_512_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_512_DIGEST_SIZE, HEAP_HINT); @@ -8074,28 +6857,7 @@ void bench_sha3_512(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -8132,28 +6894,7 @@ void bench_sha3_512(int useDeviceID) ret = wc_Sha3_512_Final(hash, digest[0]); if (ret != 0) goto exit_sha3_512; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -8184,12 +6925,8 @@ void bench_shake128(int useDeviceID) { wc_Shake hash[BENCH_MAX_PENDING]; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret = 0, i, count = 0, times, pending = 0; + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_128_BLOCK_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -8230,28 +6967,7 @@ void bench_shake128(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -8290,28 +7006,7 @@ void bench_shake128(int useDeviceID) WC_SHA3_128_BLOCK_SIZE); if (ret != 0) goto exit_shake128; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -8342,12 +7037,8 @@ void bench_shake256(int useDeviceID) { wc_Shake hash[BENCH_MAX_PENDING]; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret = 0, i, count = 0, times, pending = 0; + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SHA3_256_BLOCK_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, @@ -8388,28 +7079,7 @@ void bench_shake256(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -8448,28 +7118,7 @@ void bench_shake256(int useDeviceID) WC_SHA3_256_BLOCK_SIZE); if (ret != 0) goto exit_shake256; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -8501,12 +7150,8 @@ void bench_sm3(int useDeviceID) { wc_Sm3 hash[BENCH_MAX_PENDING]; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret = 0, i, count = 0, times, pending = 0; + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SM3_DIGEST_SIZE, HEAP_HINT); WC_INIT_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_SM3_DIGEST_SIZE, @@ -8546,28 +7191,7 @@ void bench_sm3(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; @@ -8603,28 +7227,7 @@ void bench_sm3(int useDeviceID) ret = wc_Sm3Final(hash, digest[0]); if (ret != 0) goto exit_sm3; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -8656,12 +7259,8 @@ void bench_ripemd(void) RipeMd hash; byte digest[RIPEMD_DIGEST_SIZE]; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count, ret = 0; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -8682,28 +7281,7 @@ void bench_ripemd(void) printf("wc_RipeMdUpdate failed, retval %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } ret = wc_RipeMdFinal(&hash, digest); if (ret != 0) { @@ -8737,28 +7315,7 @@ void bench_ripemd(void) printf("wc_RipeMdFinal failed, retval %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -8784,11 +7341,9 @@ void bench_blake2b(void) byte digest[64]; double start; int ret = 0, i, count; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; + DECLARE_MULTI_VALUE_STATS_VARS() +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -8807,28 +7362,7 @@ void bench_blake2b(void) printf("Blake2bUpdate failed, ret = %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } ret = wc_Blake2bFinal(&b2b, digest, 64); if (ret != 0) { @@ -8861,28 +7395,7 @@ void bench_blake2b(void) printf("Blake2bFinal failed, ret = %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -8905,11 +7418,9 @@ void bench_blake2s(void) byte digest[32]; double start; int ret = 0, i, count; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; + DECLARE_MULTI_VALUE_STATS_VARS() +#ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); #endif @@ -8928,28 +7439,7 @@ void bench_blake2s(void) printf("Blake2sUpdate failed, ret = %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } ret = wc_Blake2sFinal(&b2s, digest, 32); if (ret != 0) { @@ -8982,28 +7472,7 @@ void bench_blake2s(void) printf("Blake2sFinal failed, ret = %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -9028,12 +7497,8 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID) byte digest[AES_BLOCK_SIZE]; word32 digestSz = sizeof(digest); double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret, i, count; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef WOLFSSL_SECO_CAAM unsigned int keyID; int keyGroup = 1; /* group one was chosen arbitrarily */ @@ -9082,28 +7547,7 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID) printf("CmacUpdate failed, ret = %d\n", ret); return; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* Note: final force zero's the Cmac struct */ ret = wc_CmacFinal(&cmac, digest, &digestSz); @@ -9142,12 +7586,8 @@ void bench_scrypt(void) { byte derived[64]; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret, i, count; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -9163,28 +7603,7 @@ void bench_scrypt(void) printf("scrypt failed, ret = %d\n", ret); goto exit; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -9210,11 +7629,7 @@ static void bench_hmac(int useDeviceID, int type, int digestSz, Hmac hmac[BENCH_MAX_PENDING]; double start; int ret = 0, i, count = 0, times, pending = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef WOLFSSL_ASYNC_CRYPT WC_DECLARE_ARRAY(digest, byte, BENCH_MAX_PENDING, WC_MAX_DIGEST_SIZE, HEAP_HINT); @@ -9284,28 +7699,7 @@ static void bench_hmac(int useDeviceID, int type, int digestSz, goto exit_hmac; } } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for i */ } while (pending > 0); } while (bench_stats_check(start) @@ -9436,11 +7830,6 @@ void bench_pbkdf2(void) { double start; int ret = 0, count = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif const char* passwd32 = "passwordpasswordpasswordpassword"; WOLFSSL_SMALL_STACK_STATIC const byte salt32[] = { 0x78, 0x57, 0x8E, 0x5a, 0x5d, 0x63, 0xcb, 0x06, @@ -9448,6 +7837,7 @@ void bench_pbkdf2(void) 0x78, 0x57, 0x8E, 0x5a, 0x5d, 0x63, 0xcb, 0x06, 0x78, 0x57, 0x8E, 0x5a, 0x5d, 0x63, 0xcb, 0x06 }; byte derived[32]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -9458,28 +7848,7 @@ void bench_pbkdf2(void) ret = wc_PBKDF2(derived, (const byte*)passwd32, (int)XSTRLEN(passwd32), salt32, (int)sizeof(salt32), 1000, 32, WC_SHA256); count++; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } while (bench_stats_check(start) #ifdef MULTI_VALUE_STATISTICS || runs < minimum_runs @@ -9499,15 +7868,11 @@ void bench_pbkdf2(void) void bench_siphash(void) { double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret = 0, count; const char* passwd16 = "passwordpassword"; byte out[16]; int i; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -9518,28 +7883,7 @@ void bench_siphash(void) for (i = 0; i < numBlocks; i++) { ret = wc_SipHash((const byte*)passwd16, bench_plain, bench_size, out, 8); - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -9563,28 +7907,7 @@ void bench_siphash(void) for (i = 0; i < numBlocks; i++) { ret = wc_SipHash((const byte*)passwd16, bench_plain, bench_size, out, 16); - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -9673,14 +7996,10 @@ static void bench_rsaKeyGen_helper(int useDeviceID, word32 keySz) RsaKey genKey[BENCH_MAX_PENDING]; #endif double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret = 0, i, count = 0, times, pending = 0; const long rsa_e_val = WC_RSA_EXPONENT; const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef WOLFSSL_SMALL_STACK genKey = (RsaKey *)XMALLOC(sizeof(*genKey) * BENCH_MAX_PENDING, @@ -9722,28 +8041,7 @@ static void bench_rsaKeyGen_helper(int useDeviceID, word32 keySz) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -9907,12 +8205,8 @@ static void bench_rsa_helper(int useDeviceID, RsaKey rsaKey[BENCH_MAX_PENDING], const int len = (int)TEST_STRING_SZ; #endif double start = 0.0F; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifndef WOLFSSL_RSA_VERIFY_ONLY WC_DECLARE_VAR(message, byte, TEST_STRING_SZ, HEAP_HINT); #endif @@ -9982,28 +8276,7 @@ static void bench_rsa_helper(int useDeviceID, RsaKey rsaKey[BENCH_MAX_PENDING], } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -10055,28 +8328,7 @@ exit_rsa_verify: } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -10115,28 +8367,7 @@ exit_rsa_pub: } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -10208,28 +8439,7 @@ exit_rsa_sign: } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -10476,11 +8686,6 @@ void bench_dh(int useDeviceID) int count = 0, times, pending = 0; const byte* tmp = NULL; double start = 0.0F; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif #ifdef WOLFSSL_SMALL_STACK DhKey *dhKey = NULL; #else @@ -10504,6 +8709,7 @@ void bench_dh(int useDeviceID) int paramName = 0; #endif #endif + DECLARE_MULTI_VALUE_STATS_VARS() WC_DECLARE_ARRAY(pub, byte, BENCH_MAX_PENDING, BENCH_DH_KEY_SIZE, HEAP_HINT); @@ -10670,28 +8876,7 @@ void bench_dh(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -10747,28 +8932,7 @@ exit_dh_gen: } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -10814,12 +8978,8 @@ static void bench_kyber_keygen(int type, const char* name, int keySize, { int ret = 0, times, count, pending = 0; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -10843,28 +9003,7 @@ static void bench_kyber_keygen(int type, const char* name, int keySize, #endif if (ret != 0) goto exit; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -10884,15 +9023,11 @@ static void bench_kyber_encap(const char* name, int keySize, KyberKey* key) { int ret = 0, times, count, pending = 0; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif const char**desc = bench_desc_words[lng_index]; byte ct[KYBER_MAX_CIPHER_TEXT_SIZE]; byte ss[KYBER_SS_SZ]; word32 ctSz; + DECLARE_MULTI_VALUE_STATS_VARS() ret = wc_KyberKey_CipherTextSize(key, &ctSz); if (ret != 0) { @@ -10917,28 +9052,7 @@ static void bench_kyber_encap(const char* name, int keySize, KyberKey* key) #endif if (ret != 0) goto exit_encap; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -10968,28 +9082,7 @@ exit_encap: ret = wc_KyberKey_Decapsulate(key, ss, ct, ctSz); if (ret != 0) goto exit_decap; - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -11353,28 +9446,7 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm) printf("wc_LmsKey_Sign failed: %d\n", ret); goto exit_lms_sign_verify; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += times; @@ -11406,28 +9478,7 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm) printf("wc_LmsKey_Verify failed: %d\n", ret); goto exit_lms_sign_verify; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += times; @@ -11754,12 +9805,8 @@ void bench_eccMakeKey(int useDeviceID, int curveId) #endif char name[BENCH_ECC_NAME_SZ]; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef WOLFSSL_SMALL_STACK genKey = (ecc_key *)XMALLOC(sizeof(*genKey) * BENCH_MAX_PENDING, @@ -11806,28 +9853,7 @@ void bench_eccMakeKey(int useDeviceID, int curveId) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -11883,12 +9909,8 @@ void bench_ecc(int useDeviceID, int curveId) word32 x[BENCH_MAX_PENDING]; double start = 0; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef HAVE_ECC_DHE WC_DECLARE_ARRAY(shared, byte, @@ -11996,28 +10018,7 @@ void bench_ecc(int useDeviceID, int curveId) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -12082,28 +10083,7 @@ exit_ecdhe: } } /* bench_async_check */ } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -12159,28 +10139,7 @@ exit_ecdsa_sign: } } /* if bench_async_check */ } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -12259,12 +10218,8 @@ void bench_eccEncrypt(int curveId) word32 bench_plainSz = bench_size; int ret, i, count; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef WOLFSSL_SMALL_STACK userA = (ecc_key *)XMALLOC(sizeof(*userA), @@ -12338,28 +10293,7 @@ void bench_eccEncrypt(int curveId) printf("wc_ecc_encrypt failed! %d\n", ret); goto exit_enc; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -12391,28 +10325,7 @@ exit_enc: printf("wc_ecc_decrypt failed! %d\n", ret); goto exit_dec; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -12459,12 +10372,8 @@ static void bench_sm2_MakeKey(int useDeviceID) ecc_key genKey[BENCH_MAX_PENDING]; char name[BENCH_ECC_NAME_SZ]; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() deviceID = useDeviceID ? devId : INVALID_DEVID; keySize = wc_ecc_get_curve_size_from_id(ECC_SM2P256V1); @@ -12501,28 +10410,7 @@ static void bench_sm2_MakeKey(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -12564,12 +10452,8 @@ void bench_sm2(int useDeviceID) #endif word32 x[BENCH_MAX_PENDING]; double start = 0; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef HAVE_ECC_DHE WC_DECLARE_ARRAY(shared, byte, BENCH_MAX_PENDING, MAX_ECC_BYTES, HEAP_HINT); @@ -12656,28 +10540,7 @@ void bench_sm2(int useDeviceID) } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -12739,28 +10602,7 @@ exit_ecdhe: } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -12806,28 +10648,7 @@ exit_ecdsa_sign: } } } /* for i */ - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for times */ count += times; } while (bench_stats_check(start) @@ -12884,13 +10705,9 @@ void bench_curve25519KeyGen(int useDeviceID) { curve25519_key genKey; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret = 0, i, count; const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -12913,28 +10730,7 @@ void bench_curve25519KeyGen(int useDeviceID) printf("wc_curve25519_make_key failed: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -12955,15 +10751,11 @@ void bench_curve25519KeyAgree(int useDeviceID) { curve25519_key genKey, genKey2; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret, i, count; byte shared[32]; const char**desc = bench_desc_words[lng_index]; word32 x = 0; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -12996,28 +10788,7 @@ void bench_curve25519KeyAgree(int useDeviceID) printf("curve25519_shared_secret failed: %d\n", ret); goto exit; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13045,13 +10816,9 @@ void bench_ed25519KeyGen(void) #ifdef HAVE_ED25519_MAKE_KEY ed25519_key genKey; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -13064,28 +10831,7 @@ void bench_ed25519KeyGen(void) wc_ed25519_init(&genKey); (void)wc_ed25519_make_key(&gRng, 32, &genKey); wc_ed25519_free(&genKey); - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13110,16 +10856,12 @@ void bench_ed25519KeySign(void) ed25519_key genKey; #ifdef HAVE_ED25519_SIGN double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; byte sig[ED25519_SIG_SIZE]; byte msg[512]; word32 x = 0; const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #endif wc_ed25519_init(&genKey); @@ -13150,28 +10892,7 @@ void bench_ed25519KeySign(void) printf("ed25519_sign_msg failed\n"); goto exit_ed_sign; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13202,28 +10923,7 @@ exit_ed_sign: printf("ed25519_verify_msg failed\n"); goto exit_ed_verify; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13249,13 +10949,9 @@ void bench_curve448KeyGen(void) { curve448_key genKey; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret = 0, i, count; const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -13271,28 +10967,7 @@ void bench_curve448KeyGen(void) printf("wc_curve448_make_key failed: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13312,15 +10987,11 @@ void bench_curve448KeyAgree(void) { curve448_key genKey, genKey2; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int ret, i, count; byte shared[56]; const char**desc = bench_desc_words[lng_index]; word32 x = 0; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -13351,28 +11022,7 @@ void bench_curve448KeyAgree(void) printf("curve448_shared_secret failed: %d\n", ret); goto exit; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13398,13 +11048,9 @@ void bench_ed448KeyGen(void) { ed448_key genKey; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -13417,28 +11063,7 @@ void bench_ed448KeyGen(void) wc_ed448_init(&genKey); (void)wc_ed448_make_key(&gRng, ED448_KEY_SIZE, &genKey); wc_ed448_free(&genKey); - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13460,16 +11085,12 @@ void bench_ed448KeySign(void) ed448_key genKey; #ifdef HAVE_ED448_SIGN double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; byte sig[ED448_SIG_SIZE]; byte msg[512]; word32 x = 0; const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #endif wc_ed448_init(&genKey); @@ -13499,28 +11120,7 @@ void bench_ed448KeySign(void) printf("ed448_sign_msg failed\n"); goto exit_ed_sign; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13551,28 +11151,7 @@ exit_ed_sign: printf("ed448_verify_msg failed\n"); goto exit_ed_verify; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13599,14 +11178,10 @@ void bench_eccsiKeyGen(void) { EccsiKey genKey; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; const char**desc = bench_desc_words[lng_index]; int ret; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -13623,28 +11198,7 @@ void bench_eccsiKeyGen(void) break; } wc_FreeEccsiKey(&genKey); - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13663,17 +11217,13 @@ void bench_eccsiPairGen(void) { EccsiKey genKey; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; const char**desc = bench_desc_words[lng_index]; mp_int ssk; ecc_point* pvt; static const byte id[] = { 0x01, 0x23, 0x34, 0x45 }; int ret; + DECLARE_MULTI_VALUE_STATS_VARS() (void)mp_init(&ssk); pvt = wc_ecc_new_point(); @@ -13694,28 +11244,7 @@ void bench_eccsiPairGen(void) printf("wc_MakeEccsiPair failed: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13740,11 +11269,6 @@ void bench_eccsiValidate(void) { EccsiKey genKey; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; const char**desc = bench_desc_words[lng_index]; mp_int ssk; @@ -13752,6 +11276,7 @@ void bench_eccsiValidate(void) static const byte id[] = { 0x01, 0x23, 0x34, 0x45 }; int valid; int ret; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -13775,28 +11300,7 @@ void bench_eccsiValidate(void) valid); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13819,11 +11323,6 @@ void bench_eccsi(void) { EccsiKey genKey; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; const char**desc = bench_desc_words[lng_index]; mp_int ssk; @@ -13836,6 +11335,7 @@ void bench_eccsi(void) word32 sigSz = sizeof(sig); int ret; int verified; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -13862,28 +11362,7 @@ void bench_eccsi(void) printf("wc_SignEccsiHash failed: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13914,28 +11393,7 @@ void bench_eccsi(void) verified); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -13961,14 +11419,10 @@ void bench_sakkeKeyGen(void) { SakkeKey genKey; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; const char**desc = bench_desc_words[lng_index]; int ret; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -13985,28 +11439,7 @@ void bench_sakkeKeyGen(void) break; } wc_FreeSakkeKey(&genKey); - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -14025,16 +11458,12 @@ void bench_sakkeRskGen(void) { SakkeKey genKey; double start; - #ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; const char**desc = bench_desc_words[lng_index]; ecc_point* rsk; static const byte id[] = { 0x01, 0x23, 0x34, 0x45 }; int ret; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -14053,28 +11482,7 @@ void bench_sakkeRskGen(void) printf("wc_MakeSakkeRsk failed: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -14098,17 +11506,13 @@ void bench_sakkeValidate(void) { SakkeKey genKey; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; const char**desc = bench_desc_words[lng_index]; ecc_point* rsk; static const byte id[] = { 0x01, 0x23, 0x34, 0x45 }; int valid; int ret; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -14130,28 +11534,7 @@ void bench_sakkeValidate(void) valid); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -14173,11 +11556,6 @@ void bench_sakke(void) { SakkeKey genKey; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; const char**desc = bench_desc_words[lng_index]; ecc_point* rsk; @@ -14192,6 +11570,7 @@ void bench_sakke(void) word32 len = 0; byte* iTable = NULL; word32 iTableLen = 0; + DECLARE_MULTI_VALUE_STATS_VARS() XMEMCPY(ssv, ssv_init, sizeof ssv); #ifdef MULTI_VALUE_STATISTICS @@ -14216,28 +11595,7 @@ void bench_sakke(void) printf("wc_MakeSakkeEncapsulatedSSV failed: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } /* for */ count += i; } while (bench_stats_check(start) @@ -14268,28 +11626,7 @@ void bench_sakke(void) printf("wc_DeriveSakkeSSV failed: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } if (ret != 0) break; count += i; @@ -14325,28 +11662,7 @@ void bench_sakke(void) printf("wc_MakeSakkeEncapsulatedSSV failed: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -14379,28 +11695,7 @@ void bench_sakke(void) printf("wc_DeriveSakkeSSV failed: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } if (ret != 0) break; count += i; @@ -14440,28 +11735,7 @@ void bench_sakke(void) printf("wc_DeriveSakkeSSV failed: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } if (ret != 0) break; count += i; @@ -14494,28 +11768,7 @@ void bench_sakke(void) printf("wc_DeriveSakkeSSV failed: %d\n", ret); break; } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } if (ret != 0) break; count += i; @@ -14544,16 +11797,12 @@ void bench_falconKeySign(byte level) int ret = 0; falcon_key key; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; byte sig[FALCON_MAX_SIG_SIZE]; byte msg[512]; word32 x = 0; const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() ret = wc_falcon_init(&key); if (ret != 0) { @@ -14604,28 +11853,7 @@ void bench_falconKeySign(byte level) printf("wc_falcon_sign_msg failed\n"); } } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -14661,28 +11889,7 @@ void bench_falconKeySign(byte level) ret = -1; } } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -14709,16 +11916,12 @@ void bench_dilithiumKeySign(byte level) int ret = 0; dilithium_key key; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; byte sig[DILITHIUM_MAX_SIG_SIZE]; byte msg[512]; word32 x = 0; const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -14779,28 +11982,7 @@ void bench_dilithiumKeySign(byte level) printf("wc_dilithium_sign_msg failed\n"); } } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -14837,28 +12019,7 @@ void bench_dilithiumKeySign(byte level) ret = -1; } } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -14885,16 +12046,12 @@ void bench_sphincsKeySign(byte level, byte optim) int ret = 0; sphincs_key key; double start; -#ifdef MULTI_VALUE_STATISTICS - double deltas[MAX_SAMPLE_RUNS]; - double max = 0, min = 0, sum = 0, prev = 0, delta; - int runs = 0; -#endif int i, count; byte sig[SPHINCS_MAX_SIG_SIZE]; byte msg[512]; word32 x = 0; const char**desc = bench_desc_words[lng_index]; + DECLARE_MULTI_VALUE_STATS_VARS() #ifdef MULTI_VALUE_STATISTICS XMEMSET(deltas, 0, sizeof(deltas)); @@ -14979,28 +12136,7 @@ void bench_sphincsKeySign(byte level, byte optim) printf("wc_sphincs_sign_msg failed\n"); } } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) @@ -15044,28 +12180,7 @@ void bench_sphincsKeySign(byte level, byte optim) ret = -1; } } - #ifdef MULTI_VALUE_STATISTICS - if (runs == 0) { - delta = current_time(0) - start; - min = delta; - max = delta; - } - else { - delta = current_time(0) - prev; - if (max < delta) - max = delta; - else if (min > delta) - min = delta; - } - - if (runs < MAX_SAMPLE_RUNS) { - deltas[runs] = delta; - sum += delta; - runs++; - } - - prev = current_time(0); - #endif + RECORD_MULTI_VALUE_STATS(); } count += i; } while (bench_stats_check(start) From 2cde8430930e1eaf5f27a385235758918e38e4ac Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Wed, 1 Nov 2023 16:47:21 -0600 Subject: [PATCH 08/17] Measure max & min durations within the confines of MAX_SAMPLE_RUNS --- wolfcrypt/benchmark/benchmark.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index cf533c353..6c950e4dc 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -254,12 +254,12 @@ }\ else {\ delta = current_time(0) - prev;\ + }\ + if (runs < MAX_SAMPLE_RUNS) {\ if (max < delta)\ max = delta;\ else if (min > delta)\ min = delta;\ - }\ - if (runs < MAX_SAMPLE_RUNS) {\ deltas[runs] = delta;\ sum += delta;\ runs++;\ From c0f3fe4434fa454c1b804413ae2c7282b470b212 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Wed, 1 Nov 2023 17:35:15 -0600 Subject: [PATCH 09/17] Benchmarks: use clock_gettime() for ns resolution --- wolfcrypt/benchmark/benchmark.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 6c950e4dc..3c43aa2bb 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -12489,16 +12489,16 @@ void bench_sphincsKeySign(byte level, byte optim) double current_time(int reset) { - struct timeval tv; + struct timespec tv; (void)reset; - LIBCALL_CHECK_RET(gettimeofday(&tv, 0)); + LIBCALL_CHECK_RET(clock_gettime(CLOCK_REALTIME, &tv)); #ifdef BENCH_MICROSECOND - return (double)tv.tv_sec * 1000000 + (double)tv.tv_usec; + return (double)tv.tv_sec * 1000000 + (double)tv.tv_nsec / 1000; #else - return (double)tv.tv_sec + (double)tv.tv_usec / 1000000; + return (double)tv.tv_sec + (double)tv.tv_nsec / 1000000000; #endif } From 138d699cc7d926fab72ed2c3537bb8806a834da3 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Wed, 8 Nov 2023 11:09:00 -0700 Subject: [PATCH 10/17] Apply changes to new srtp-kdf code --- wolfcrypt/benchmark/benchmark.c | 61 ++++++++++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 4 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 3c43aa2bb..f3d58d5a1 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -7938,6 +7938,11 @@ void bench_srtpkdf(void) const byte index[6] = { 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA }; int kdrIdx = 0; int i; + DECLARE_MULTI_VALUE_STATS_VARS() + +#ifdef MULTI_VALUE_STATISTICS + XMEMSET(deltas, 0, sizeof(deltas)); +#endif bench_stats_start(&count, &start); do { @@ -7945,10 +7950,23 @@ void bench_srtpkdf(void) ret = wc_SRTP_KDF(key, AES_128_KEY_SIZE, salt, sizeof(salt), kdrIdx, index, keyE, AES_128_KEY_SIZE, keyA, sizeof(keyA), keyS, sizeof(keyS)); + RECORD_MULTI_VALUE_STATS(); } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef MULTI_VALUE_STATISTICS + || runs < minimum_runs +#endif + ); bench_stats_asym_finish("KDF", 128, "SRTP", 0, count, start, ret); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif bench_stats_start(&count, &start); do { @@ -7956,10 +7974,23 @@ void bench_srtpkdf(void) ret = wc_SRTP_KDF(key, AES_256_KEY_SIZE, salt, sizeof(salt), kdrIdx, index, keyE, AES_256_KEY_SIZE, keyA, sizeof(keyA), keyS, sizeof(keyS)); + RECORD_MULTI_VALUE_STATS(); } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef MULTI_VALUE_STATISTICS + || runs < minimum_runs +#endif + ); bench_stats_asym_finish("KDF", 256, "SRTP", 0, count, start, ret); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif bench_stats_start(&count, &start); do { @@ -7967,10 +7998,23 @@ void bench_srtpkdf(void) ret = wc_SRTCP_KDF(key, AES_128_KEY_SIZE, salt, sizeof(salt), kdrIdx, index, keyE, AES_128_KEY_SIZE, keyA, sizeof(keyA), keyS, sizeof(keyS)); + RECORD_MULTI_VALUE_STATS(); } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef MULTI_VALUE_STATISTICS + || runs < minimum_runs +#endif + ); bench_stats_asym_finish("KDF", 128, "SRTCP", 0, count, start, ret); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); + + XMEMSET(deltas, 0, sizeof(deltas)); + prev = 0; + runs = 0; + sum = 0; +#endif bench_stats_start(&count, &start); do { @@ -7978,10 +8022,19 @@ void bench_srtpkdf(void) ret = wc_SRTCP_KDF(key, AES_256_KEY_SIZE, salt, sizeof(salt), kdrIdx, index, keyE, AES_256_KEY_SIZE, keyA, sizeof(keyA), keyS, sizeof(keyS)); + RECORD_MULTI_VALUE_STATS(); } count += i; - } while (bench_stats_check(start)); + } while (bench_stats_check(start) +#ifdef MULTI_VALUE_STATISTICS + || runs < minimum_runs +#endif + ); bench_stats_asym_finish("KDF", 256, "SRTCP", 0, count, start, ret); +#ifdef MULTI_VALUE_STATISTICS + bench_multi_value_stats(deltas, max, min, sum, runs); +#endif + } #endif From b464a277c16e4b4deec047db01fefa8ba0404d20 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Mon, 13 Nov 2023 13:40:07 -0700 Subject: [PATCH 11/17] Refactor logic to remove MAX_SAMPLE_RUNS --- wolfcrypt/benchmark/benchmark.c | 594 +++++++++----------------------- 1 file changed, 156 insertions(+), 438 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index f3d58d5a1..bccbc5b3c 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -43,10 +43,6 @@ * display mean, max, min and sd of operation durations: * MULTI_VALUE_STATISTICS * - * related to MULTI_VALUE_STATISTICS, use the below to specify how many sample - * observations are recorded to produce the stats above (defaults to 1000) - * MAX_SAMPLE_RUNS - * * Enable tracking of the stats into an allocated linked list: * (use -print to display results): * WC_BENCH_TRACK_STATS @@ -239,13 +235,9 @@ #endif #ifdef MULTI_VALUE_STATISTICS - #ifndef MAX_SAMPLE_RUNS - #define MAX_SAMPLE_RUNS 1000 - #endif #define STATS_CLAUSE_SEPARATOR "" - #define DECLARE_MULTI_VALUE_STATS_VARS() double deltas[MAX_SAMPLE_RUNS];\ - double max = 0, min = 0, sum = 0,\ - prev = 0, delta;\ + #define DECLARE_MULTI_VALUE_STATS_VARS() double max = 0, min = 0, sum = 0,\ + squareSum = 0, prev = 0, delta;\ int runs = 0; #define RECORD_MULTI_VALUE_STATS() if (runs == 0) {\ delta = current_time(0) - start;\ @@ -255,15 +247,13 @@ else {\ delta = current_time(0) - prev;\ }\ - if (runs < MAX_SAMPLE_RUNS) {\ - if (max < delta)\ - max = delta;\ - else if (min > delta)\ - min = delta;\ - deltas[runs] = delta;\ - sum += delta;\ - runs++;\ - }\ + if (max < delta)\ + max = delta;\ + else if (min > delta)\ + min = delta;\ + sum += delta;\ + squareSum += delta * delta;\ + runs++;\ prev = current_time(0) #else #define STATS_CLAUSE_SEPARATOR "\n" @@ -2045,8 +2035,8 @@ static double wc_sqroot(double in) return root; } -static void bench_multi_value_stats(double deltas[], double max, double min, - double sum, int runs) +static void bench_multi_value_stats(double max, double min, double sum, + double squareSum, int runs) { double mean = 0; double sd = 0; @@ -2058,10 +2048,7 @@ static void bench_multi_value_stats(double deltas[], double max, double min, mean = sum / runs; /* Calculating standard deviation */ - for (int i = 0; i < runs; i++) { - sd += ((deltas[i] - mean) * (deltas[i] - mean)); - } - sd = sd / (runs - 1); + sd = (squareSum / runs) - (mean * mean); sd = wc_sqroot(sd); if (csv_format == 1) { @@ -3716,10 +3703,6 @@ void bench_rng(void) return; } -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -3749,7 +3732,7 @@ void bench_rng(void) exit_rng: bench_stats_sym_finish("RNG", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_FreeRng(&myrng); @@ -3772,9 +3755,6 @@ static void bench_aescbc_internal(int useDeviceID, /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -3791,10 +3771,6 @@ static void bench_aescbc_internal(int useDeviceID, } } -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - bench_stats_start(&count, &start); do { for (times = 0; times < numBlocks || pending > 0; ) { @@ -3826,7 +3802,7 @@ exit_aes_enc: bench_stats_sym_finish(encLabel, useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif if (ret < 0) { @@ -3844,10 +3820,10 @@ exit_aes_enc: } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -3881,7 +3857,7 @@ exit_aes_dec: bench_stats_sym_finish(decLabel, useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #endif /* HAVE_AES_DECRYPT */ @@ -3947,9 +3923,6 @@ static void bench_aesgcm_internal(int useDeviceID, /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif #ifdef WOLFSSL_ASYNC_CRYPT if (bench_additional) #endif @@ -3974,10 +3947,6 @@ static void bench_aesgcm_internal(int useDeviceID, } } -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - /* GCM uses same routine in backend for both encrypt and decrypt */ bench_stats_start(&count, &start); do { @@ -4011,17 +3980,17 @@ exit_aes_gcm: bench_stats_sym_finish(encLabel, useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #ifdef HAVE_AES_DECRYPT XMEMSET(dec, 0, sizeof(dec)); #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif /* init keys */ @@ -4071,7 +4040,7 @@ exit_aes_gcm_dec: bench_stats_sym_finish(decLabel, useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #endif /* HAVE_AES_DECRYPT */ @@ -4185,7 +4154,7 @@ exit_aes_gcm: bench_stats_sym_finish(encLabel, useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #ifdef HAVE_AES_DECRYPT @@ -4205,10 +4174,10 @@ exit_aes_gcm: } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -4249,7 +4218,7 @@ exit_aes_gcm_dec: bench_stats_sym_finish(decLabel, useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #endif /* HAVE_AES_DECRYPT */ @@ -4346,10 +4315,6 @@ void bench_gmac(int useDeviceID) const char* gmacStr = "GMAC Default"; #endif -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - /* init keys */ XMEMSET(bench_plain, 0, bench_size); XMEMSET(tag, 0, sizeof(tag)); @@ -4378,7 +4343,7 @@ void bench_gmac(int useDeviceID) bench_stats_sym_finish(gmacStr, 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -4403,9 +4368,6 @@ static void bench_aesecb_internal(int useDeviceID, /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -4460,7 +4422,7 @@ exit_aes_enc: bench_stats_sym_finish(encLabel, useDeviceID, count, benchSz, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #ifdef HAVE_AES_DECRYPT @@ -4474,10 +4436,10 @@ exit_aes_enc: } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -4516,7 +4478,7 @@ exit_aes_dec: bench_stats_sym_finish(decLabel, useDeviceID, count, benchSz, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #endif /* HAVE_AES_DECRYPT */ @@ -4555,10 +4517,6 @@ static void bench_aescfb_internal(const byte* key, int i, ret, count; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - ret = wc_AesSetKey(&enc, key, keySz, iv, AES_ENCRYPTION); if (ret != 0) { printf("AesSetKey failed, ret = %d\n", ret); @@ -4584,7 +4542,7 @@ static void bench_aescfb_internal(const byte* key, bench_stats_sym_finish(label, 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -4613,10 +4571,6 @@ static void bench_aesofb_internal(const byte* key, int i, ret, count; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - ret = wc_AesInit(&enc, NULL, INVALID_DEVID); if (ret != 0) { printf("AesInit failed, ret = %d\n", ret); @@ -4648,7 +4602,7 @@ static void bench_aesofb_internal(const byte* key, bench_stats_sym_finish(label, 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_AesFree(&enc); @@ -4677,10 +4631,6 @@ void bench_aesxts(void) int i, count, ret; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - static unsigned char k1[] = { 0xa1, 0xb9, 0x0c, 0xba, 0x3f, 0x06, 0xac, 0x35, 0x3b, 0x2c, 0x34, 0x38, 0x76, 0x08, 0x17, 0x62, @@ -4719,7 +4669,7 @@ void bench_aesxts(void) bench_stats_sym_finish("AES-XTS-enc", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_AesXtsFree(&aes); @@ -4732,10 +4682,10 @@ void bench_aesxts(void) } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -4757,7 +4707,7 @@ void bench_aesxts(void) bench_stats_sym_finish("AES-XTS-dec", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_AesXtsFree(&aes); } @@ -4774,10 +4724,6 @@ static void bench_aesctr_internal(const byte* key, word32 keySz, int i, count, ret = 0; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - if ((ret = wc_AesInit(&enc, HEAP_HINT, useDeviceID ? devId : INVALID_DEVID)) != 0) { printf("wc_AesInit failed, ret = %d\n", ret); @@ -4807,7 +4753,7 @@ static void bench_aesctr_internal(const byte* key, word32 keySz, bench_stats_sym_finish(label, useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_AesFree(&enc); @@ -4848,9 +4794,6 @@ void bench_aesccm(int useDeviceID) XMEMSET(bench_tag, 0, AES_AUTH_TAG_SZ); XMEMSET(bench_additional, 0, AES_AUTH_ADD_SZ); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if ((ret = wc_AesInit(&enc, HEAP_HINT, useDeviceID ? devId : INVALID_DEVID)) != 0) { @@ -4881,7 +4824,7 @@ void bench_aesccm(int useDeviceID) bench_stats_sym_finish(AES_AAD_STRING("AES-CCM-enc"), useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif if (ret != 0) { printf("wc_AesCcmEncrypt failed, ret = %d\n", ret); @@ -4889,10 +4832,10 @@ void bench_aesccm(int useDeviceID) } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -4913,7 +4856,7 @@ void bench_aesccm(int useDeviceID) bench_stats_sym_finish(AES_AAD_STRING("AES-CCM-dec"), useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif if (ret != 0) { printf("wc_AesCcmEncrypt failed, ret = %d\n", ret); @@ -4941,10 +4884,6 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* double start; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -4966,12 +4905,12 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* bench_stats_sym_finish(encLabel, 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -4995,7 +4934,7 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* bench_stats_sym_finish(decLabel, 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -5018,10 +4957,6 @@ void bench_poly1305(void) int ret = 0, i, count; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - if (digest_stream) { ret = wc_Poly1305SetKey(&enc, bench_key, 32); if (ret != 0) { @@ -5073,7 +5008,7 @@ void bench_poly1305(void) } bench_stats_sym_finish("POLY1305", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #endif /* HAVE_POLY1305 */ @@ -5087,10 +5022,6 @@ void bench_camellia(void) int ret, i, count; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - ret = wc_CamelliaSetKey(&cam, bench_key, 16, bench_iv); if (ret != 0) { printf("CamelliaSetKey failed, ret = %d\n", ret); @@ -5117,7 +5048,7 @@ void bench_camellia(void) bench_stats_sym_finish("Camellia", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #endif @@ -5132,10 +5063,6 @@ void bench_sm4_cbc(void) int count; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - ret = wc_Sm4SetKey(&sm4, bench_key, SM4_KEY_SIZE); if (ret != 0) { printf("Sm4SetKey failed, ret = %d\n", ret); @@ -5166,12 +5093,12 @@ void bench_sm4_cbc(void) bench_stats_sym_finish("SM4-CBC-enc", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -5193,7 +5120,7 @@ void bench_sm4_cbc(void) bench_stats_sym_finish("SM4-CBC-dec", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #endif @@ -5217,10 +5144,6 @@ void bench_sm4_gcm(void) } #endif -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - ret = wc_Sm4GcmSetKey(&sm4, bench_key, SM4_KEY_SIZE); if (ret != 0) { printf("Sm4GcmSetKey failed, ret = %d\n", ret); @@ -5248,12 +5171,12 @@ void bench_sm4_gcm(void) bench_stats_sym_finish("SM4-GCM-enc", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -5277,7 +5200,7 @@ void bench_sm4_gcm(void) bench_stats_sym_finish("SM4-GCM-dec", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #endif @@ -5302,9 +5225,6 @@ void bench_sm4_ccm() XMEMSET(bench_tag, 0, AES_AUTH_TAG_SZ); XMEMSET(bench_additional, 0, AES_AUTH_ADD_SZ); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if ((ret = wc_Sm4SetKey(&enc, bench_key, 16)) != 0) { printf("wc_Sm4SetKey failed, ret = %d\n", ret); @@ -5328,7 +5248,7 @@ void bench_sm4_ccm() bench_stats_sym_finish("SM4-CCM-enc", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif if (ret != 0) { printf("wc_Sm4Encrypt failed, ret = %d\n", ret); @@ -5336,10 +5256,10 @@ void bench_sm4_ccm() } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -5359,7 +5279,7 @@ void bench_sm4_ccm() bench_stats_sym_finish("SM4-CCM-dec", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif if (ret != 0) { printf("wc_Sm4Decrypt failed, ret = %d\n", ret); @@ -5382,9 +5302,6 @@ void bench_des(int useDeviceID) /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -5431,7 +5348,7 @@ void bench_des(int useDeviceID) exit_3des: bench_stats_sym_finish("3DES", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -5453,9 +5370,6 @@ void bench_arc4(int useDeviceID) /* clear for done cleanup */ XMEMSET(enc, 0, sizeof(enc)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -5501,7 +5415,7 @@ void bench_arc4(int useDeviceID) exit_arc4: bench_stats_sym_finish("ARC4", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -5540,7 +5454,7 @@ void bench_chacha(void) bench_stats_sym_finish("CHACHA", 0, count, bench_size, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #endif /* HAVE_CHACHA*/ @@ -5554,9 +5468,6 @@ void bench_chacha20_poly1305_aead(void) byte authTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]; XMEMSET(authTag, 0, sizeof(authTag)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif bench_stats_start(&count, &start); do { @@ -5578,7 +5489,7 @@ void bench_chacha20_poly1305_aead(void) bench_stats_sym_finish("CHA-POLY", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #endif /* HAVE_CHACHA && HAVE_POLY1305 */ @@ -5599,9 +5510,6 @@ void bench_md5(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -5684,7 +5592,7 @@ void bench_md5(int useDeviceID) exit_md5: bench_stats_sym_finish("MD5", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -5714,9 +5622,6 @@ void bench_sha(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -5800,7 +5705,7 @@ void bench_sha(int useDeviceID) exit_sha: bench_stats_sym_finish("SHA", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -5828,9 +5733,6 @@ void bench_sha224(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -5910,7 +5812,7 @@ exit_sha224: bench_stats_sym_finish("SHA-224", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -5938,9 +5840,6 @@ void bench_sha256(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -6024,7 +5923,7 @@ exit_sha256: bench_stats_sym_finish("SHA-256", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -6049,9 +5948,6 @@ void bench_sha384(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -6132,7 +6028,7 @@ exit_sha384: bench_stats_sym_finish("SHA-384", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -6159,9 +6055,6 @@ void bench_sha512(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -6242,7 +6135,7 @@ exit_sha512: bench_stats_sym_finish("SHA-512", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -6269,9 +6162,6 @@ void bench_sha512_224(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -6352,7 +6242,7 @@ exit_sha512_224: bench_stats_sym_finish("SHA-512/224", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -6380,9 +6270,6 @@ void bench_sha512_256(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -6463,7 +6350,7 @@ exit_sha512_256: bench_stats_sym_finish("SHA-512/256", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -6494,9 +6381,6 @@ void bench_sha3_224(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -6577,7 +6461,7 @@ exit_sha3_224: bench_stats_sym_finish("SHA3-224", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -6604,9 +6488,6 @@ void bench_sha3_256(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -6687,7 +6568,7 @@ exit_sha3_256: bench_stats_sym_finish("SHA3-256", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -6714,9 +6595,6 @@ void bench_sha3_384(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -6797,7 +6675,7 @@ exit_sha3_384: bench_stats_sym_finish("SHA3-384", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -6824,9 +6702,6 @@ void bench_sha3_512(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -6907,7 +6782,7 @@ exit_sha3_512: bench_stats_sym_finish("SHA3-512", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -6934,9 +6809,6 @@ void bench_shake128(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -7019,7 +6891,7 @@ exit_shake128: bench_stats_sym_finish("SHAKE128", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -7046,9 +6918,6 @@ void bench_shake256(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -7131,7 +7000,7 @@ exit_shake256: bench_stats_sym_finish("SHAKE256", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -7159,9 +7028,6 @@ void bench_sm3(int useDeviceID) /* clear for done cleanup */ XMEMSET(hash, 0, sizeof(hash)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif if (digest_stream) { /* init keys */ @@ -7239,7 +7105,7 @@ void bench_sm3(int useDeviceID) exit_sm3: bench_stats_sym_finish("SM3", useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -7262,10 +7128,6 @@ void bench_ripemd(void) int i, count, ret = 0; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - if (digest_stream) { ret = wc_InitRipeMd(&hash); if (ret != 0) { @@ -7326,7 +7188,7 @@ void bench_ripemd(void) } bench_stats_sym_finish("RIPEMD", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif return; @@ -7343,10 +7205,6 @@ void bench_blake2b(void) int ret = 0, i, count; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - if (digest_stream) { ret = wc_InitBlake2b(&b2b, 64); if (ret != 0) { @@ -7406,7 +7264,7 @@ void bench_blake2b(void) } bench_stats_sym_finish("BLAKE2b", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #endif @@ -7420,10 +7278,6 @@ void bench_blake2s(void) int ret = 0, i, count; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - if (digest_stream) { ret = wc_InitBlake2s(&b2s, 32); if (ret != 0) { @@ -7483,7 +7337,7 @@ void bench_blake2s(void) } bench_stats_sym_finish("BLAKE2s", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #endif @@ -7519,10 +7373,6 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID) #endif (void)useDeviceID; -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - bench_stats_start(&count, &start); do { #ifdef HAVE_FIPS @@ -7564,7 +7414,7 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID) bench_stats_sym_finish(outMsg, useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -7589,10 +7439,6 @@ void bench_scrypt(void) int ret, i, count; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - bench_stats_start(&count, &start); do { for (i = 0; i < scryptCnt; i++) { @@ -7615,7 +7461,7 @@ void bench_scrypt(void) exit: bench_stats_asym_finish("scrypt", 17, "", 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -7643,9 +7489,6 @@ static void bench_hmac(int useDeviceID, int type, int digestSz, /* clear for done cleanup */ XMEMSET(hmac, 0, sizeof(hmac)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -7711,7 +7554,7 @@ static void bench_hmac(int useDeviceID, int type, int digestSz, exit_hmac: bench_stats_sym_finish(label, useDeviceID, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -7839,10 +7682,6 @@ void bench_pbkdf2(void) byte derived[32]; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - bench_stats_start(&count, &start); do { ret = wc_PBKDF2(derived, (const byte*)passwd32, (int)XSTRLEN(passwd32), @@ -7857,7 +7696,7 @@ void bench_pbkdf2(void) bench_stats_sym_finish("PBKDF2", 32, count, 32, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #endif /* !NO_PWDBASED */ @@ -7874,10 +7713,6 @@ void bench_siphash(void) int i; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -7894,12 +7729,12 @@ void bench_siphash(void) bench_stats_sym_finish("SipHash-8", 1, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -7918,7 +7753,7 @@ void bench_siphash(void) bench_stats_sym_finish("SipHash-16", 1, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #endif @@ -7940,10 +7775,6 @@ void bench_srtpkdf(void) int i; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -7960,12 +7791,12 @@ void bench_srtpkdf(void) ); bench_stats_asym_finish("KDF", 128, "SRTP", 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -7984,12 +7815,12 @@ void bench_srtpkdf(void) ); bench_stats_asym_finish("KDF", 256, "SRTP", 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -8008,12 +7839,12 @@ void bench_srtpkdf(void) ); bench_stats_asym_finish("KDF", 128, "SRTCP", 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -8032,7 +7863,7 @@ void bench_srtpkdf(void) ); bench_stats_asym_finish("KDF", 256, "SRTCP", 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -8065,9 +7896,6 @@ static void bench_rsaKeyGen_helper(int useDeviceID, word32 keySz) /* clear for done cleanup */ XMEMSET(genKey, 0, sizeof(*genKey) * BENCH_MAX_PENDING); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif bench_stats_start(&count, &start); do { @@ -8107,7 +7935,7 @@ exit: bench_stats_asym_finish("RSA", (int)keySz, desc[2], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif /* cleanup */ @@ -8301,10 +8129,6 @@ static void bench_rsa_helper(int useDeviceID, RsaKey rsaKey[BENCH_MAX_PENDING], XMEMCPY(message, messageStr, len); #endif -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - if (!rsa_sign_verify) { #ifndef WOLFSSL_RSA_VERIFY_ONLY /* begin public RSA */ @@ -8342,7 +8166,7 @@ exit_rsa_verify: bench_stats_asym_finish("RSA", (int)rsaKeySz, desc[0], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #endif /* !WOLFSSL_RSA_VERIFY_ONLY */ @@ -8352,10 +8176,10 @@ exit_rsa_verify: } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif /* capture resulting encrypt length */ @@ -8394,7 +8218,7 @@ exit_rsa_pub: bench_stats_asym_finish("RSA", (int)rsaKeySz, desc[1], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #endif /* !WOLFSSL_RSA_PUBLIC_ONLY */ } @@ -8433,17 +8257,17 @@ exit_rsa_sign: bench_stats_asym_finish("RSA", (int)rsaKeySz, desc[4], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif if (ret < 0) { goto exit; } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif #endif /* !WOLFSSL_RSA_PUBLIC_ONLY && !WOLFSSL_RSA_VERIFY_ONLY */ @@ -8505,7 +8329,7 @@ exit_rsa_verifyinline: bench_stats_asym_finish("RSA", (int)rsaKeySz, desc[5], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -8862,9 +8686,6 @@ void bench_dh(int useDeviceID) XMEMSET(dhKey[i], 0, sizeof(DhKey)); } #endif -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -8902,9 +8723,6 @@ void bench_dh(int useDeviceID) } } -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif /* Key Gen */ bench_stats_start(&count, &start); @@ -8943,7 +8761,7 @@ exit_dh_gen: bench_stats_asym_finish("DH", dhKeySz, desc[2], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif if (ret < 0) { @@ -8951,10 +8769,10 @@ exit_dh_gen: } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif /* Generate key to use as other public */ @@ -9000,7 +8818,7 @@ exit: bench_stats_asym_finish("DH", dhKeySz, desc[3], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif /* cleanup */ @@ -9034,10 +8852,6 @@ static void bench_kyber_keygen(int type, const char* name, int keySize, const char**desc = bench_desc_words[lng_index]; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - /* KYBER Make Key */ bench_stats_start(&count, &start); do { @@ -9068,7 +8882,7 @@ static void bench_kyber_keygen(int type, const char* name, int keySize, exit: bench_stats_asym_finish(name, keySize, desc[2], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -9087,10 +8901,6 @@ static void bench_kyber_encap(const char* name, int keySize, KyberKey* key) return; } -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - /* KYBER Encapsulate */ bench_stats_start(&count, &start); do { @@ -9117,14 +8927,14 @@ static void bench_kyber_encap(const char* name, int keySize, KyberKey* key) exit_encap: bench_stats_asym_finish(name, keySize, desc[9], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif /* KYBER Decapsulate */ @@ -9147,7 +8957,7 @@ exit_encap: exit_decap: bench_stats_asym_finish(name, keySize, desc[13], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -9512,12 +9322,12 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm) bench_stats_asym_finish(str, (int)sigSz, "sign", 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif count = 0; @@ -9545,7 +9355,7 @@ exit_lms_sign_verify: bench_stats_asym_finish(str, (int)sigSz, "verify", 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif @@ -9875,9 +9685,6 @@ void bench_eccMakeKey(int useDeviceID, int curveId) /* clear for done cleanup */ XMEMSET(genKey, 0, sizeof(*genKey) * BENCH_MAX_PENDING); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif /* ECC Make Key */ bench_stats_start(&count, &start); @@ -9921,7 +9728,7 @@ exit: bench_stats_asym_finish(name, keySize * 8, desc[2], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif /* cleanup */ @@ -10010,9 +9817,6 @@ void bench_ecc(int useDeviceID, int curveId) XMEMSET(genKey, 0, sizeof(*genKey) * BENCH_MAX_PENDING); #ifdef HAVE_ECC_DHE XMEMSET(genKey2, 0, sizeof(*genKey2) * BENCH_MAX_PENDING); -#endif -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); #endif keySize = wc_ecc_get_curve_size_from_id(curveId); @@ -10088,12 +9892,12 @@ exit_ecdhe: bench_stats_asym_finish(name, keySize * 8, desc[3], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif if (ret < 0) { @@ -10152,12 +9956,12 @@ exit_ecdsa_sign: bench_stats_asym_finish(name, keySize * 8, desc[4], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif if (ret < 0) { @@ -10208,7 +10012,7 @@ exit_ecdsa_verify: bench_stats_asym_finish(name, keySize * 8, desc[5], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #endif /* HAVE_ECC_VERIFY */ #endif /* !NO_ASN && HAVE_ECC_SIGN */ @@ -10332,10 +10136,6 @@ void bench_eccEncrypt(int curveId) msg[i] = (byte)i; } -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - bench_stats_start(&count, &start); do { for (i = 0; i < ntimes; i++) { @@ -10360,12 +10160,12 @@ exit_enc: wc_ecc_get_name(curveId)); bench_stats_asym_finish(name, keySize * 8, desc[6], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -10390,7 +10190,7 @@ exit_enc: exit_dec: bench_stats_asym_finish(name, keySize * 8, desc[7], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif exit: @@ -10433,9 +10233,6 @@ static void bench_sm2_MakeKey(int useDeviceID) /* clear for done cleanup */ XMEMSET(&genKey, 0, sizeof(genKey)); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif /* ECC Make Key */ bench_stats_start(&count, &start); @@ -10478,7 +10275,7 @@ exit: bench_stats_asym_finish(name, keySize * 8, desc[2], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif /* cleanup */ @@ -10532,9 +10329,6 @@ void bench_sm2(int useDeviceID) #ifdef HAVE_ECC_DHE XMEMSET(&genKey2, 0, sizeof(genKey2)); #endif -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif keySize = wc_ecc_get_curve_size_from_id(ECC_SM2P256V1); @@ -10610,7 +10404,7 @@ exit_ecdhe: bench_stats_asym_finish(name, keySize * 8, desc[3], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif if (ret < 0) { @@ -10628,10 +10422,10 @@ exit_ecdhe: } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif /* ECC Sign */ @@ -10671,7 +10465,7 @@ exit_ecdsa_sign: bench_stats_asym_finish(name, keySize * 8, desc[4], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif if (ret < 0) { @@ -10717,7 +10511,7 @@ exit_ecdsa_verify: bench_stats_asym_finish(name, keySize * 8, desc[5], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #endif /* HAVE_ECC_VERIFY */ @@ -10762,10 +10556,6 @@ void bench_curve25519KeyGen(int useDeviceID) const char**desc = bench_desc_words[lng_index]; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - /* Key Gen */ bench_stats_start(&count, &start); do { @@ -10795,7 +10585,7 @@ void bench_curve25519KeyGen(int useDeviceID) bench_stats_asym_finish("CURVE", 25519, desc[2], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -10810,10 +10600,6 @@ void bench_curve25519KeyAgree(int useDeviceID) word32 x = 0; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - wc_curve25519_init_ex(&genKey, HEAP_HINT, useDeviceID ? devId : INVALID_DEVID); wc_curve25519_init_ex(&genKey2, HEAP_HINT, @@ -10854,7 +10640,7 @@ exit: bench_stats_asym_finish("CURVE", 25519, desc[3], useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_curve25519_free(&genKey2); @@ -10873,10 +10659,6 @@ void bench_ed25519KeyGen(void) const char**desc = bench_desc_words[lng_index]; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - /* Key Gen */ bench_stats_start(&count, &start); do { @@ -10895,7 +10677,7 @@ void bench_ed25519KeyGen(void) bench_stats_asym_finish("ED", 25519, desc[2], 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #endif /* HAVE_ED25519_MAKE_KEY */ } @@ -10932,10 +10714,6 @@ void bench_ed25519KeySign(void) for (i = 0; i < (int)sizeof(msg); i++) msg[i] = (byte)i; -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - bench_stats_start(&count, &start); do { for (i = 0; i < agreeTimes; i++) { @@ -10957,12 +10735,12 @@ void bench_ed25519KeySign(void) exit_ed_sign: bench_stats_asym_finish("ED", 25519, desc[4], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif #ifdef HAVE_ED25519_VERIFY @@ -10988,7 +10766,7 @@ exit_ed_sign: exit_ed_verify: bench_stats_asym_finish("ED", 25519, desc[5], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #endif /* HAVE_ED25519_VERIFY */ #endif /* HAVE_ED25519_SIGN */ @@ -11006,10 +10784,6 @@ void bench_curve448KeyGen(void) const char**desc = bench_desc_words[lng_index]; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - /* Key Gen */ bench_stats_start(&count, &start); do { @@ -11031,7 +10805,7 @@ void bench_curve448KeyGen(void) bench_stats_asym_finish("CURVE", 448, desc[2], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -11046,10 +10820,6 @@ void bench_curve448KeyAgree(void) word32 x = 0; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - wc_curve448_init(&genKey); wc_curve448_init(&genKey2); @@ -11087,7 +10857,7 @@ void bench_curve448KeyAgree(void) exit: bench_stats_asym_finish("CURVE", 448, desc[3], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_curve448_free(&genKey2); @@ -11105,10 +10875,6 @@ void bench_ed448KeyGen(void) const char**desc = bench_desc_words[lng_index]; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - /* Key Gen */ bench_stats_start(&count, &start); do { @@ -11127,7 +10893,7 @@ void bench_ed448KeyGen(void) bench_stats_asym_finish("ED", 448, desc[2], 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -11159,10 +10925,6 @@ void bench_ed448KeySign(void) for (i = 0; i < (int)sizeof(msg); i++) msg[i] = (byte)i; -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - bench_stats_start(&count, &start); do { for (i = 0; i < agreeTimes; i++) { @@ -11185,12 +10947,12 @@ void bench_ed448KeySign(void) exit_ed_sign: bench_stats_asym_finish("ED", 448, desc[4], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif #ifdef HAVE_ED448_VERIFY @@ -11216,7 +10978,7 @@ exit_ed_sign: exit_ed_verify: bench_stats_asym_finish("ED", 448, desc[5], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif #endif /* HAVE_ED448_VERIFY */ #endif /* HAVE_ED448_SIGN */ @@ -11236,10 +10998,6 @@ void bench_eccsiKeyGen(void) int ret; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - /* Key Gen */ bench_stats_start(&count, &start); do { @@ -11262,7 +11020,7 @@ void bench_eccsiKeyGen(void) bench_stats_asym_finish("ECCSI", 256, desc[2], 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -11283,10 +11041,6 @@ void bench_eccsiPairGen(void) wc_InitEccsiKey(&genKey, NULL, INVALID_DEVID); (void)wc_MakeEccsiKey(&genKey, &gRng); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - /* RSK Gen */ bench_stats_start(&count, &start); do { @@ -11308,7 +11062,7 @@ void bench_eccsiPairGen(void) bench_stats_asym_finish("ECCSI", 256, desc[12], 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_FreeEccsiKey(&genKey); @@ -11331,10 +11085,6 @@ void bench_eccsiValidate(void) int ret; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - (void)mp_init(&ssk); pvt = wc_ecc_new_point(); wc_InitEccsiKey(&genKey, NULL, INVALID_DEVID); @@ -11364,7 +11114,7 @@ void bench_eccsiValidate(void) bench_stats_asym_finish("ECCSI", 256, desc[11], 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_FreeEccsiKey(&genKey); @@ -11390,10 +11140,6 @@ void bench_eccsi(void) int verified; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - (void)mp_init(&ssk); pvt = wc_ecc_new_point(); (void)wc_InitEccsiKey(&genKey, NULL, INVALID_DEVID); @@ -11426,12 +11172,12 @@ void bench_eccsi(void) bench_stats_asym_finish("ECCSI", 256, desc[4], 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif /* Derive */ @@ -11457,7 +11203,7 @@ void bench_eccsi(void) bench_stats_asym_finish("ECCSI", 256, desc[5], 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_FreeEccsiKey(&genKey); @@ -11477,10 +11223,6 @@ void bench_sakkeKeyGen(void) int ret; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - /* Key Gen */ bench_stats_start(&count, &start); do { @@ -11503,7 +11245,7 @@ void bench_sakkeKeyGen(void) bench_stats_asym_finish("SAKKE", 1024, desc[2], 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -11518,10 +11260,6 @@ void bench_sakkeRskGen(void) int ret; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - rsk = wc_ecc_new_point(); wc_InitSakkeKey_ex(&genKey, 128, ECC_SAKKE_1, NULL, INVALID_DEVID); (void)wc_MakeSakkeKey(&genKey, &gRng); @@ -11546,7 +11284,7 @@ void bench_sakkeRskGen(void) bench_stats_asym_finish("SAKKE", 1024, desc[8], 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_FreeSakkeKey(&genKey); @@ -11567,10 +11305,6 @@ void bench_sakkeValidate(void) int ret; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - rsk = wc_ecc_new_point(); (void)wc_InitSakkeKey_ex(&genKey, 128, ECC_SAKKE_1, NULL, INVALID_DEVID); (void)wc_MakeSakkeKey(&genKey, &gRng); @@ -11598,7 +11332,7 @@ void bench_sakkeValidate(void) bench_stats_asym_finish("SAKKE", 1024, desc[11], 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_FreeSakkeKey(&genKey); @@ -11626,9 +11360,6 @@ void bench_sakke(void) DECLARE_MULTI_VALUE_STATS_VARS() XMEMCPY(ssv, ssv_init, sizeof ssv); -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif rsk = wc_ecc_new_point(); (void)wc_InitSakkeKey_ex(&genKey, 128, ECC_SAKKE_1, NULL, INVALID_DEVID); @@ -11660,12 +11391,12 @@ void bench_sakke(void) bench_stats_asym_finish_ex("SAKKE", 1024, desc[9], "-1", 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif /* Derive */ @@ -11692,7 +11423,7 @@ void bench_sakke(void) bench_stats_asym_finish_ex("SAKKE", 1024, desc[10], "-1", 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif /* Calculate Point I and generate table. */ @@ -11727,12 +11458,12 @@ void bench_sakke(void) bench_stats_asym_finish_ex("SAKKE", 1024, desc[9], "-2", 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif (void)wc_SetSakkeRsk(&genKey, rsk, table, len); @@ -11761,12 +11492,12 @@ void bench_sakke(void) bench_stats_asym_finish_ex("SAKKE", 1024, desc[10], "-2", 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif len = 0; @@ -11801,12 +11532,12 @@ void bench_sakke(void) bench_stats_asym_finish_ex("SAKKE", 1024, desc[10], "-3", 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif wc_ClearSakkePointITable(&genKey); @@ -11834,7 +11565,7 @@ void bench_sakke(void) bench_stats_asym_finish_ex("SAKKE", 1024, desc[10], "-4", 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif wc_FreeSakkeKey(&genKey); @@ -11919,14 +11650,14 @@ void bench_falconKeySign(byte level) bench_stats_asym_finish("FALCON", level, desc[4], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -11955,7 +11686,7 @@ void bench_falconKeySign(byte level) bench_stats_asym_finish("FALCON", level, desc[5], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -11976,10 +11707,6 @@ void bench_dilithiumKeySign(byte level) const char**desc = bench_desc_words[lng_index]; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - ret = wc_dilithium_init(&key); if (ret != 0) { printf("wc_dilithium_init failed %d\n", ret); @@ -12048,14 +11775,14 @@ void bench_dilithiumKeySign(byte level) bench_stats_asym_finish("DILITHIUM", level, desc[4], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -12085,7 +11812,7 @@ void bench_dilithiumKeySign(byte level) bench_stats_asym_finish("DILITHIUM", level, desc[5], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -12106,10 +11833,6 @@ void bench_sphincsKeySign(byte level, byte optim) const char**desc = bench_desc_words[lng_index]; DECLARE_MULTI_VALUE_STATS_VARS() -#ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); -#endif - ret = wc_sphincs_init(&key); if (ret != 0) { printf("wc_sphincs_init failed %d\n", ret); @@ -12208,15 +11931,15 @@ void bench_sphincsKeySign(byte level, byte optim) start, ret); } #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } #ifdef MULTI_VALUE_STATISTICS - XMEMSET(deltas, 0, sizeof(deltas)); prev = 0; runs = 0; sum = 0; + squareSum = 0; #endif bench_stats_start(&count, &start); @@ -12252,7 +11975,7 @@ void bench_sphincsKeySign(byte level, byte optim) start, ret); } #ifdef MULTI_VALUE_STATISTICS - bench_multi_value_stats(deltas, max, min, sum, runs); + bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } @@ -12923,11 +12646,6 @@ int wolfcrypt_benchmark_main(int argc, char** argv) argv++; if (argc > 1) { minimum_runs = XATOI(argv[1]); - if (minimum_runs > MAX_SAMPLE_RUNS) { - printf("\nINFO: Specified runs is larger than compiled " - "MAX_SAMPLE_RUNS. Using %d runs.\n\n", MAX_SAMPLE_RUNS); - minimum_runs = MAX_SAMPLE_RUNS; - } } } #endif From ac89c90afd1f0a0cc9e52f2afae6b1eb6a3a5a3e Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Wed, 15 Nov 2023 10:26:03 -0700 Subject: [PATCH 12/17] Add RESET_MULTI_VALUE_STATS_VARS macro --- wolfcrypt/benchmark/benchmark.c | 237 ++++++++------------------------ 1 file changed, 57 insertions(+), 180 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index bccbc5b3c..891c7173c 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -255,10 +255,15 @@ squareSum += delta * delta;\ runs++;\ prev = current_time(0) + #define RESET_MULTI_VALUE_STATS() prev = 0;\ + runs = 0;\ + sum = 0;\ + squareSum = 0 #else #define STATS_CLAUSE_SEPARATOR "\n" #define DECLARE_MULTI_VALUE_STATS_VARS() #define RECORD_MULTI_VALUE_STATS() WC_DO_NOTHING + #define RESET_MULTI_VALUE_STATS() WC_DO_NOTHING #endif #ifdef WOLFSSL_NO_FLOAT_FMT @@ -3819,12 +3824,7 @@ exit_aes_enc: } } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); bench_stats_start(&count, &start); do { @@ -3986,12 +3986,7 @@ exit_aes_gcm: #ifdef HAVE_AES_DECRYPT XMEMSET(dec, 0, sizeof(dec)); -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -4173,12 +4168,7 @@ exit_aes_gcm: } } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); bench_stats_start(&count, &start); do { @@ -4435,12 +4425,7 @@ exit_aes_enc: } } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); bench_stats_start(&count, &start); do { @@ -4681,12 +4666,7 @@ void bench_aesxts(void) return; } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); bench_stats_start(&count, &start); do { @@ -4831,12 +4811,7 @@ void bench_aesccm(int useDeviceID) goto exit; } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); bench_stats_start(&count, &start); do { @@ -4906,13 +4881,10 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* bench_stats_sym_finish(encLabel, 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -5094,13 +5066,10 @@ void bench_sm4_cbc(void) bench_stats_sym_finish("SM4-CBC-enc", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -5172,13 +5141,10 @@ void bench_sm4_gcm(void) bench_stats_sym_finish("SM4-GCM-enc", 0, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -5255,12 +5221,7 @@ void bench_sm4_ccm() goto exit; } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); bench_stats_start(&count, &start); do { @@ -7730,13 +7691,10 @@ void bench_siphash(void) bench_stats_sym_finish("SipHash-8", 1, count, bench_size, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -7792,13 +7750,10 @@ void bench_srtpkdf(void) bench_stats_asym_finish("KDF", 128, "SRTP", 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -7816,13 +7771,10 @@ void bench_srtpkdf(void) bench_stats_asym_finish("KDF", 256, "SRTP", 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -7840,13 +7792,10 @@ void bench_srtpkdf(void) bench_stats_asym_finish("KDF", 128, "SRTCP", 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + bench_stats_start(&count, &start); do { for (i = 0; i < numBlocks; i++) { @@ -8175,12 +8124,7 @@ exit_rsa_verify: goto exit; } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); /* capture resulting encrypt length */ idx = (word32)(rsaKeySz/8); @@ -8263,12 +8207,7 @@ exit_rsa_sign: goto exit; } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); #endif /* !WOLFSSL_RSA_PUBLIC_ONLY && !WOLFSSL_RSA_VERIFY_ONLY */ @@ -8768,12 +8707,7 @@ exit_dh_gen: goto exit; } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); /* Generate key to use as other public */ PRIVATE_KEY_UNLOCK(); @@ -8930,12 +8864,7 @@ exit_encap: bench_multi_value_stats(max, min, sum, squareSum, runs); #endif -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); /* KYBER Decapsulate */ bench_stats_start(&count, &start); @@ -9323,13 +9252,9 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm) count, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); count = 0; bench_stats_start(&count, &start); @@ -9893,13 +9818,10 @@ exit_ecdhe: useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + if (ret < 0) { goto exit; } @@ -9957,13 +9879,10 @@ exit_ecdsa_sign: useDeviceID, count, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + if (ret < 0) { goto exit; } @@ -10161,13 +10080,10 @@ exit_enc: bench_stats_asym_finish(name, keySize * 8, desc[6], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + bench_stats_start(&count, &start); do { for (i = 0; i < ntimes; i++) { @@ -10421,12 +10337,7 @@ exit_ecdhe: } } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); /* ECC Sign */ bench_stats_start(&count, &start); @@ -10736,13 +10647,10 @@ exit_ed_sign: bench_stats_asym_finish("ED", 25519, desc[4], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + #ifdef HAVE_ED25519_VERIFY bench_stats_start(&count, &start); do { @@ -10948,13 +10856,10 @@ exit_ed_sign: bench_stats_asym_finish("ED", 448, desc[4], 0, count, start, ret); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + #ifdef HAVE_ED448_VERIFY bench_stats_start(&count, &start); do { @@ -11173,13 +11078,10 @@ void bench_eccsi(void) bench_stats_asym_finish("ECCSI", 256, desc[4], 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + /* Derive */ bench_stats_start(&count, &start); do { @@ -11392,13 +11294,10 @@ void bench_sakke(void) 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + /* Derive */ bench_stats_start(&count, &start); do { @@ -11459,13 +11358,10 @@ void bench_sakke(void) count, start, 0); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + (void)wc_SetSakkeRsk(&genKey, rsk, table, len); /* Derive with Point I table */ @@ -11493,13 +11389,10 @@ void bench_sakke(void) count, start, 0); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + len = 0; (void)wc_GenerateSakkeRskTable(&genKey, rsk, NULL, &len); if (len > 0) { @@ -11533,13 +11426,10 @@ void bench_sakke(void) 0, count, start, 0); #ifdef MULTI_VALUE_STATISTICS bench_multi_value_stats(max, min, sum, squareSum, runs); - - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; #endif + RESET_MULTI_VALUE_STATS(); + wc_ClearSakkePointITable(&genKey); /* Derive with RSK table */ bench_stats_start(&count, &start); @@ -11653,12 +11543,8 @@ void bench_falconKeySign(byte level) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + + RESET_MULTI_VALUE_STATS(); bench_stats_start(&count, &start); do { @@ -11778,12 +11664,8 @@ void bench_dilithiumKeySign(byte level) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + + RESET_MULTI_VALUE_STATS(); bench_stats_start(&count, &start); do { @@ -11935,12 +11817,7 @@ void bench_sphincsKeySign(byte level, byte optim) #endif } -#ifdef MULTI_VALUE_STATISTICS - prev = 0; - runs = 0; - sum = 0; - squareSum = 0; -#endif + RESET_MULTI_VALUE_STATS(); bench_stats_start(&count, &start); do { From 2c7248492fe41991e96b78c7c583f152e39c4221 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Wed, 15 Nov 2023 10:27:24 -0700 Subject: [PATCH 13/17] Rename macro --- wolfcrypt/benchmark/benchmark.c | 70 ++++++++++++++++----------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 891c7173c..c4dd01eba 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -255,7 +255,7 @@ squareSum += delta * delta;\ runs++;\ prev = current_time(0) - #define RESET_MULTI_VALUE_STATS() prev = 0;\ + #define RESET_MULTI_VALUE_STATS_VARS() prev = 0;\ runs = 0;\ sum = 0;\ squareSum = 0 @@ -263,7 +263,7 @@ #define STATS_CLAUSE_SEPARATOR "\n" #define DECLARE_MULTI_VALUE_STATS_VARS() #define RECORD_MULTI_VALUE_STATS() WC_DO_NOTHING - #define RESET_MULTI_VALUE_STATS() WC_DO_NOTHING + #define RESET_MULTI_VALUE_STATS_VARS() WC_DO_NOTHING #endif #ifdef WOLFSSL_NO_FLOAT_FMT @@ -3824,7 +3824,7 @@ exit_aes_enc: } } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -3986,7 +3986,7 @@ exit_aes_gcm: #ifdef HAVE_AES_DECRYPT XMEMSET(dec, 0, sizeof(dec)); - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); /* init keys */ for (i = 0; i < BENCH_MAX_PENDING; i++) { @@ -4168,7 +4168,7 @@ exit_aes_gcm: } } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -4425,7 +4425,7 @@ exit_aes_enc: } } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -4666,7 +4666,7 @@ void bench_aesxts(void) return; } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -4811,7 +4811,7 @@ void bench_aesccm(int useDeviceID) goto exit; } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -4883,7 +4883,7 @@ static void bench_aessiv_internal(const byte* key, word32 keySz, const char* bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -5068,7 +5068,7 @@ void bench_sm4_cbc(void) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -5143,7 +5143,7 @@ void bench_sm4_gcm(void) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -5221,7 +5221,7 @@ void bench_sm4_ccm() goto exit; } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -7693,7 +7693,7 @@ void bench_siphash(void) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -7752,7 +7752,7 @@ void bench_srtpkdf(void) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -7773,7 +7773,7 @@ void bench_srtpkdf(void) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -7794,7 +7794,7 @@ void bench_srtpkdf(void) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -8124,7 +8124,7 @@ exit_rsa_verify: goto exit; } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); /* capture resulting encrypt length */ idx = (word32)(rsaKeySz/8); @@ -8207,7 +8207,7 @@ exit_rsa_sign: goto exit; } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); #endif /* !WOLFSSL_RSA_PUBLIC_ONLY && !WOLFSSL_RSA_VERIFY_ONLY */ @@ -8707,7 +8707,7 @@ exit_dh_gen: goto exit; } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); /* Generate key to use as other public */ PRIVATE_KEY_UNLOCK(); @@ -8864,7 +8864,7 @@ exit_encap: bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); /* KYBER Decapsulate */ bench_stats_start(&count, &start); @@ -9254,7 +9254,7 @@ static void bench_lms_sign_verify(enum wc_LmsParm parm) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); count = 0; bench_stats_start(&count, &start); @@ -9820,7 +9820,7 @@ exit_ecdhe: bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); if (ret < 0) { goto exit; @@ -9881,7 +9881,7 @@ exit_ecdsa_sign: bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); if (ret < 0) { goto exit; @@ -10082,7 +10082,7 @@ exit_enc: bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -10337,7 +10337,7 @@ exit_ecdhe: } } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); /* ECC Sign */ bench_stats_start(&count, &start); @@ -10649,7 +10649,7 @@ exit_ed_sign: bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); #ifdef HAVE_ED25519_VERIFY bench_stats_start(&count, &start); @@ -10858,7 +10858,7 @@ exit_ed_sign: bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); #ifdef HAVE_ED448_VERIFY bench_stats_start(&count, &start); @@ -11080,7 +11080,7 @@ void bench_eccsi(void) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); /* Derive */ bench_stats_start(&count, &start); @@ -11296,7 +11296,7 @@ void bench_sakke(void) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); /* Derive */ bench_stats_start(&count, &start); @@ -11360,7 +11360,7 @@ void bench_sakke(void) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); (void)wc_SetSakkeRsk(&genKey, rsk, table, len); @@ -11391,7 +11391,7 @@ void bench_sakke(void) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); len = 0; (void)wc_GenerateSakkeRskTable(&genKey, rsk, NULL, &len); @@ -11428,7 +11428,7 @@ void bench_sakke(void) bench_multi_value_stats(max, min, sum, squareSum, runs); #endif - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); wc_ClearSakkePointITable(&genKey); /* Derive with RSK table */ @@ -11544,7 +11544,7 @@ void bench_falconKeySign(byte level) #endif } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -11665,7 +11665,7 @@ void bench_dilithiumKeySign(byte level) #endif } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { @@ -11817,7 +11817,7 @@ void bench_sphincsKeySign(byte level, byte optim) #endif } - RESET_MULTI_VALUE_STATS(); + RESET_MULTI_VALUE_STATS_VARS(); bench_stats_start(&count, &start); do { From 07d6d75d72b0833d079f13ffc6ef0fa61a6375c3 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Fri, 17 Nov 2023 13:28:30 -0700 Subject: [PATCH 14/17] Fix for sanitizer finds --- wolfcrypt/benchmark/benchmark.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index c4dd01eba..8a196a1da 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -2676,6 +2676,7 @@ static void* benchmarks_do(void* args) #ifndef NO_FILESYSTEM if (hash_input) { + int rawSz; XFILE file; file = XFOPEN(hash_input, "rb"); if (file == XBADFILE) @@ -2694,14 +2695,20 @@ static void* benchmarks_do(void* args) XFREE(bench_plain, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); - bench_plain = (byte*)XMALLOC((size_t)bench_buf_size, + rawSz = bench_buf_size; + if (bench_buf_size % 16) + bench_buf_size += 16 - (bench_buf_size % 16); + + bench_size = bench_buf_size; + + bench_plain = (byte*)XMALLOC((size_t)bench_buf_size + 16*2, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); if (bench_plain == NULL) goto exit; - if ((size_t)XFREAD(bench_plain, 1, bench_buf_size, file) - != (size_t)bench_buf_size) { + if ((size_t)XFREAD(bench_plain, 1, rawSz, file) + != (size_t)rawSz) { XFCLOSE(file); goto exit; } @@ -2711,6 +2718,7 @@ static void* benchmarks_do(void* args) } if (cipher_input) { + int rawSz; XFILE file; file = XFOPEN(cipher_input, "rb"); if (file == XBADFILE) @@ -2729,14 +2737,21 @@ static void* benchmarks_do(void* args) XFREE(bench_cipher, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); - bench_cipher = (byte*)XMALLOC((size_t)bench_buf_size, + rawSz = bench_buf_size; + if (bench_buf_size % 16) + bench_buf_size += 16 - (bench_buf_size % 16); + + if (bench_size > bench_buf_size) + bench_size = bench_buf_size; + + bench_cipher = (byte*)XMALLOC((size_t)bench_buf_size + 16*2, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); if (bench_cipher == NULL) goto exit; - if ((size_t)XFREAD(bench_cipher, 1, bench_buf_size, file) - != (size_t)bench_buf_size) { + if ((size_t)XFREAD(bench_cipher, 1, rawSz, file) + != (size_t)rawSz) { XFCLOSE(file); goto exit; } @@ -4351,9 +4366,9 @@ static void bench_aesecb_internal(int useDeviceID, double start; DECLARE_MULTI_VALUE_STATS_VARS() #ifdef HAVE_FIPS - static const int benchSz = AES_BLOCK_SIZE; + const int benchSz = AES_BLOCK_SIZE; #else - static const int benchSz = BENCH_SIZE; + const int benchSz = (const int)bench_size; #endif /* clear for done cleanup */ From ca195445a3e3f9c3afe769b529b282c2880599f3 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Fri, 17 Nov 2023 13:33:34 -0700 Subject: [PATCH 15/17] Add proper casts --- wolfcrypt/benchmark/benchmark.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 8a196a1da..0a0afa8ae 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -2695,11 +2695,11 @@ static void* benchmarks_do(void* args) XFREE(bench_plain, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); - rawSz = bench_buf_size; + rawSz = (int)bench_buf_size; if (bench_buf_size % 16) bench_buf_size += 16 - (bench_buf_size % 16); - bench_size = bench_buf_size; + bench_size = (word32)bench_buf_size; bench_plain = (byte*)XMALLOC((size_t)bench_buf_size + 16*2, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); @@ -2737,12 +2737,12 @@ static void* benchmarks_do(void* args) XFREE(bench_cipher, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); - rawSz = bench_buf_size; + rawSz = (int)bench_buf_size; if (bench_buf_size % 16) bench_buf_size += 16 - (bench_buf_size % 16); if (bench_size > bench_buf_size) - bench_size = bench_buf_size; + bench_size = (word32)bench_buf_size; bench_cipher = (byte*)XMALLOC((size_t)bench_buf_size + 16*2, HEAP_HINT, DYNAMIC_TYPE_WOLF_BIGINT); From a95a7c7e08b9442a218c5b659d3efd99b9ee4a1f Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Fri, 17 Nov 2023 13:55:49 -0700 Subject: [PATCH 16/17] One last missing cast --- wolfcrypt/benchmark/benchmark.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index 0a0afa8ae..cf109ef34 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -2741,7 +2741,7 @@ static void* benchmarks_do(void* args) if (bench_buf_size % 16) bench_buf_size += 16 - (bench_buf_size % 16); - if (bench_size > bench_buf_size) + if (bench_size > (word32)bench_buf_size) bench_size = (word32)bench_buf_size; bench_cipher = (byte*)XMALLOC((size_t)bench_buf_size + 16*2, From 64b98981de7979b30cff8e88051bae566c094635 Mon Sep 17 00:00:00 2001 From: Lealem Amedie Date: Fri, 17 Nov 2023 16:44:24 -0700 Subject: [PATCH 17/17] Fix for g++ --- wolfcrypt/benchmark/benchmark.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wolfcrypt/benchmark/benchmark.c b/wolfcrypt/benchmark/benchmark.c index cf109ef34..b5c89aa0a 100644 --- a/wolfcrypt/benchmark/benchmark.c +++ b/wolfcrypt/benchmark/benchmark.c @@ -4368,7 +4368,7 @@ static void bench_aesecb_internal(int useDeviceID, #ifdef HAVE_FIPS const int benchSz = AES_BLOCK_SIZE; #else - const int benchSz = (const int)bench_size; + const int benchSz = (int)bench_size; #endif /* clear for done cleanup */