aboutsummaryrefslogtreecommitdiffstats
path: root/test/monniaux/PostpassSchedulingOracle.patch
blob: 11a36c1be3c89946f81f0f6cd228c005128238fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
diff --git a/kvx/PostpassSchedulingOracle.ml b/kvx/PostpassSchedulingOracle.ml
index 2fc561e..d3748e8 100644
--- a/kvx/PostpassSchedulingOracle.ml
+++ b/kvx/PostpassSchedulingOracle.ml
@@ -808,7 +808,7 @@ let print_bb oc bb =
   let asm_instructions = Asm.unfold_bblock bb
   in List.iter (print_inst oc) asm_instructions
 
-let do_schedule bb =
+let real_do_schedule bb =
   let problem = build_problem bb
   in let solution = (if !Clflags.option_fpostpass_sched = "ilp" then
                       validated_scheduler cascaded_scheduler
@@ -831,6 +831,19 @@ let do_schedule bb =
       end;
       bundles)
 
+let do_schedule bb =
+  let nb_instructions = Camlcoq.Z.to_int64 @@ Asmvliw.size bb
+  in let start_time = (Gc.major(); (Unix.times ()).Unix.tms_utime)
+  in let sched = real_do_schedule bb
+  in let refer = ref sched
+  in begin
+    for i = 1 to 1000-1 do
+      refer := (if i > 0 then real_do_schedule bb else real_do_schedule bb);
+    done;
+    Printf.printf "%Ld: %f\n" nb_instructions ((Unix.times ()).Unix.tms_utime -. start_time);
+    sched
+  end
+
 (**
  * Dumb schedule if the above doesn't work
  *)