summaryrefslogtreecommitdiff
path: root/riscv
diff options
context:
space:
mode:
authorPrashanth Mundkur2018-07-09 15:20:36 -0700
committerPrashanth Mundkur2018-07-09 15:20:47 -0700
commit1f950bdf4f6f80b472ec06eb07a3144666840126 (patch)
treeb1adbf8f67f9321f4c1870fe00b22d05462e86bb /riscv
parent53ce89769a10be9a47af72b5fb440afa74bb4d02 (diff)
Log some timing info at the end of riscv execution.
Diffstat (limited to 'riscv')
-rw-r--r--riscv/platform_main.ml25
1 files changed, 20 insertions, 5 deletions
diff --git a/riscv/platform_main.ml b/riscv/platform_main.ml
index 8dd47547..4c33e24d 100644
--- a/riscv/platform_main.ml
+++ b/riscv/platform_main.ml
@@ -87,11 +87,7 @@ let elf_arg =
| _ -> (prerr_endline "Please provide an ELF file."; exit 0)
)
-let () =
- Random.self_init ();
-
- let pc = Platform.init elf_arg in
-
+let run pc =
sail_call
(fun r ->
try ( zinit_platform (); (* devices *)
@@ -105,3 +101,22 @@ let () =
| ZError_internal_error (_) ->
prerr_endline "Error: internal error"
)
+
+let show_times init_s init_e run_e insts =
+ let init_time = init_e.Unix.tms_utime -. init_s.Unix.tms_utime in
+ let exec_time = run_e.Unix.tms_utime -. init_e.Unix.tms_utime in
+ Printf.eprintf "\nInitialization: %g secs\n" init_time;
+ Printf.eprintf "Execution: %g secs\n" exec_time;
+ Printf.eprintf "Instructions retired: %Ld\n" insts;
+ Printf.eprintf "Perf: %g ips\n" ((Int64.to_float insts) /. exec_time)
+
+let () =
+ Random.self_init ();
+
+ let init_start = Unix.times () in
+ let pc = Platform.init elf_arg in
+ let init_end = Unix.times () in
+ let _ = run pc in
+ let run_end = Unix.times () in
+ let insts = Big_int.to_int64 (uint (!Riscv.zminstret)) in
+ show_times init_start init_end run_end insts