From f100ea0135d6d93307c9ef35ddc2423f23556955 Mon Sep 17 00:00:00 2001 From: "nicolas.nardino" Date: Wed, 28 Jul 2021 22:04:34 +0200 Subject: Changes heuristic for case "no instruction decreases pressure" --- scheduling/InstructionScheduler.ml | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'scheduling') 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 ;; -- cgit