diff options
author | nicolas.nardino <nicolas.nardino@ens-lyon.fr> | 2021-07-28 22:04:34 +0200 |
---|---|---|
committer | nicolas.nardino <nicolas.nardino@ens-lyon.fr> | 2021-07-28 22:04:34 +0200 |
commit | f100ea0135d6d93307c9ef35ddc2423f23556955 (patch) | |
tree | a1498661249fa8643bc7270814be0d0aafb0aafe /scheduling | |
parent | ee2112a9bacc246e0434a19fc93aab335fd56ddd (diff) | |
download | compcert-kvx-f100ea0135d6d93307c9ef35ddc2423f23556955.tar.gz compcert-kvx-f100ea0135d6d93307c9ef35ddc2423f23556955.zip |
Changes heuristic for case "no instruction decreases pressure"
Diffstat (limited to 'scheduling')
-rw-r--r-- | scheduling/InstructionScheduler.ml | 21 |
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 ;; |