/*Allows you to time insts. Results vary because the CPU does parallel and out-of-order execution. */ #define SAMPLE_SIZE 10000000 U0 TimeIns() { I64 i, start, end, overhead_time, test_time; F64 d = 5.0; //Measure Loop Overhead start = TSCGet; for (i = 0; i < SAMPLE_SIZE; i++); end = TSCGet; overhead_time = end - start; "\nOverhead Cycles:%12.6f\n", ToF64(overhead_time) / SAMPLE_SIZE; start = TSCGet; for (i = 0; i < SAMPLE_SIZE; i++) { #exe {PassTrace(0b10000000000);}; //Time these insts d *= 1.00001; #exe {PassTrace(0);}; } end = TSCGet; test_time = end - start; "Measured Cycles:%12.6f\n", ToF64(test_time - overhead_time) / SAMPLE_SIZE; } TimeIns; TimeIns; TimeIns;