diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2021-08-23 15:20:36 +0200 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2021-08-23 15:20:36 +0200 |
commit | 4f23d3753fd51233e337fcf76c2f1abfafb2b280 (patch) | |
tree | cd125be0f4e8a51dba4f82a2d898b732338a7ba6 /scheduling | |
parent | 1fbe45e2d1f02ef6e8fb6fe7545728a744e047b8 (diff) | |
parent | f100ea0135d6d93307c9ef35ddc2423f23556955 (diff) | |
download | compcert-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.ml | 18 |
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 ;; |