aboutsummaryrefslogtreecommitdiffstats
path: root/scheduling
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2021-08-23 15:20:36 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2021-08-23 15:20:36 +0200
commit4f23d3753fd51233e337fcf76c2f1abfafb2b280 (patch)
treecd125be0f4e8a51dba4f82a2d898b732338a7ba6 /scheduling
parent1fbe45e2d1f02ef6e8fb6fe7545728a744e047b8 (diff)
parentf100ea0135d6d93307c9ef35ddc2423f23556955 (diff)
downloadcompcert-kvx-4f23d3753fd51233e337fcf76c2f1abfafb2b280.tar.gz
compcert-kvx-4f23d3753fd51233e337fcf76c2f1abfafb2b280.zip
Merge remote-tracking branch 'origin/kvx-sched-w-reg-press' into kvx-work
Diffstat (limited to 'scheduling')
-rw-r--r--scheduling/InstructionScheduler.ml18
1 files changed, 12 insertions, 6 deletions
diff --git a/scheduling/InstructionScheduler.ml b/scheduling/InstructionScheduler.ml
index e3a421a5..4c9bde64 100644
--- a/scheduling/InstructionScheduler.ml
+++ b/scheduling/InstructionScheduler.ml
@@ -519,13 +519,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)
);
@@ -606,6 +608,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
@@ -616,7 +619,8 @@ let reg_pres_scheduler (problem : problem) : solution option =
(********************************************************************)
let reg_pres_scheduler_bis (problem : problem) : solution option =
- (* 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
@@ -801,9 +805,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; *)
Some times
with Exit ->
DebugPrint.debug "reg_pres_sched failed\n";
+ (* DebugPrint.debug_flag := false; *)
None
;;