diff --git a/src/bench.c b/src/bench.c index 1dac82c..8e4d794 100644 --- a/src/bench.c +++ b/src/bench.c @@ -227,22 +227,29 @@ char *benchmark_format(struct fmt_main *format, int salts, void benchmark_cps(unsigned ARCH_WORD count, clock_t time, char *buffer) { - unsigned int cps_hi, cps_lo; + long long cps_hi; + int cps_lo; int64 tmp; - tmp.lo = count; tmp.hi = 0; + tmp.lo = (unsigned int)count; tmp.hi = (unsigned int)(count >> 32); mul64by32(&tmp, clk_tck); - cps_hi = div64by32lo(&tmp, time); + cps_hi = (long long)div64by32lo(&tmp, time); + if (cps_hi >= 1000000000000) + sprintf(buffer, "%uG", (unsigned int)(cps_hi / 1000000000)); + else + if (cps_hi >= 1000000000) + sprintf(buffer, "%uM", (unsigned int)(cps_hi / 1000000)); + else if (cps_hi >= 1000000) - sprintf(buffer, "%uK", cps_hi / 1000); + sprintf(buffer, "%uK", (unsigned int)(cps_hi / 1000)); else if (cps_hi >= 100) - sprintf(buffer, "%u", cps_hi); + sprintf(buffer, "%u", (unsigned int)cps_hi); else { mul64by32(&tmp, 10); cps_lo = div64by32lo(&tmp, time) % 10; - sprintf(buffer, "%u.%u", cps_hi, cps_lo); + sprintf(buffer, "%u.%u", (unsigned int)cps_hi, cps_lo); } }