summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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