aboutsummaryrefslogtreecommitdiffstats
path: root/scheduling/InstructionScheduler.ml
diff options
context:
space:
mode:
Diffstat (limited to 'scheduling/InstructionScheduler.ml')
-rw-r--r--scheduling/InstructionScheduler.ml21
1 files changed, 12 insertions, 9 deletions
diff --git a/scheduling/InstructionScheduler.ml b/scheduling/InstructionScheduler.ml
index 9c5c674d..d0a18e69 100644
--- a/scheduling/InstructionScheduler.ml
+++ b/scheduling/InstructionScheduler.ml
@@ -520,13 +520,15 @@ let reg_pres_scheduler (problem : problem) : solution option =
if not !Clflags.option_regpres_wait_window
then
(InstrSet.iter (fun ins ->
- if vector_less_equal usages.(ins) current_resources &&
- List.fold_left (fold_delta i) 0 mentions.(maybe) >= 0
- then result := ins
+ if vector_less_equal usages.(ins) current_resources
+ && List.fold_left (fold_delta i) 0 mentions.(maybe) >= 0
+ then (result := ins;
+ vector_subtract usages.(!result) current_resources;
+ raise Exit)
) ready;
if !result <> -1 then
- vector_subtract usages.(!result) current_resources;
- incr cnt)
+ vector_subtract usages.(!result) current_resources
+ else incr cnt)
else
(incr cnt)
);
@@ -607,6 +609,7 @@ let reg_pres_scheduler (problem : problem) : solution option =
(* DebugPrint.debug_flag := false; *)
Some times
with Exit ->
+ (* DebugPrint.debug_flag := true; *)
DebugPrint.debug "reg_pres_sched failed\n";
(* DebugPrint.debug_flag := false; *)
None
@@ -617,8 +620,8 @@ let reg_pres_scheduler (problem : problem) : solution option =
(********************************************************************)
let reg_pres_scheduler_bis (problem : problem) : solution option =
- DebugPrint.debug_flag := true;
- Printf.printf "\nNEW\n\n";
+ (* DebugPrint.debug_flag := true; *)
+ DebugPrint.debug "\nNEW\n\n";
let nr_instructions = get_nr_instructions problem in
let successors = get_successors problem
and predecessors = get_predecessors problem
@@ -803,11 +806,11 @@ let reg_pres_scheduler_bis (problem : problem) : solution option =
if target_time > !final_time then
final_time := target_time) predecessors.(nr_instructions);
times.(nr_instructions) <- !final_time;
- DebugPrint.debug_flag := false;
+ (* DebugPrint.debug_flag := false; *)
Some times
with Exit ->
DebugPrint.debug "reg_pres_sched failed\n";
- DebugPrint.debug_flag := false;
+ (* DebugPrint.debug_flag := false; *)
None
;;