aboutsummaryrefslogtreecommitdiffstats
path: root/kvx/PostpassSchedulingOracle.ml
diff options
context:
space:
mode:
Diffstat (limited to 'kvx/PostpassSchedulingOracle.ml')
-rw-r--r--kvx/PostpassSchedulingOracle.ml34
1 files changed, 17 insertions, 17 deletions
diff --git a/kvx/PostpassSchedulingOracle.ml b/kvx/PostpassSchedulingOracle.ml
index 822c0dc0..2107ce22 100644
--- a/kvx/PostpassSchedulingOracle.ml
+++ b/kvx/PostpassSchedulingOracle.ml
@@ -504,8 +504,7 @@ let alu_lite_y : int array = let resmap = fun r -> match r with
| Rissue -> 3 | Rtiny -> 1 | Rlite -> 1 | _ -> 0
in Array.of_list (List.map resmap resource_names)
-let alu_nop : int array = let resmap = fun r -> match r with
- | Rissue -> 1 | Rnop -> 1 | _ -> 0
+let alu_nop : int array = let resmap = fun r -> 0
in Array.of_list (List.map resmap resource_names)
let alu_tiny : int array = let resmap = fun r -> match r with
@@ -627,16 +626,16 @@ let rec_to_usage r =
| Some U27L5 | Some U27L10 -> alu_tiny_x
| Some E27U27L10 -> alu_tiny_y
| _ -> raise InvalidEncoding)
- | Maddw -> (match encoding with None -> mau_auxr
+ | Maddw | Msbfw -> (match encoding with None -> mau_auxr
| Some U6 | Some S10 | Some U27L5 -> mau_auxr_x
| _ -> raise InvalidEncoding)
- | Maddd -> (match encoding with None | Some U6 | Some S10 -> mau_auxr
+ | Maddd | Msbfd -> (match encoding with None | Some U6 | Some S10 -> mau_auxr
| Some U27L5 | Some U27L10 -> mau_auxr_x
| Some E27U27L10 -> mau_auxr_y)
- | Mulw| Msbfw -> (match encoding with None -> mau
+ | Mulw -> (match encoding with None -> mau
| Some U6 | Some S10 | Some U27L5 -> mau_x
| _ -> raise InvalidEncoding)
- | Muld | Msbfd -> (match encoding with None | Some U6 | Some S10 -> mau
+ | Muld -> (match encoding with None | Some U6 | Some S10 -> mau
| Some U27L5 | Some U27L10 -> mau_x
| Some E27U27L10 -> mau_y)
| Nop -> alu_nop
@@ -914,19 +913,20 @@ let print_bb oc bb =
let asm_instructions = Asm.unfold_bblock bb
in List.iter (print_inst oc) asm_instructions
+let print_schedule sched =
+ print_string "[ ";
+ Array.iter (fun x -> Printf.printf "%d; " x) sched;
+ print_endline "]";;
+
let do_schedule bb =
- let problem = build_problem bb
- in let solution = (if !Clflags.option_fpostpass_sched = "ilp" then
- validated_scheduler cascaded_scheduler
- else if !Clflags.option_fpostpass_sched = "list" then
- validated_scheduler list_scheduler
- else if !Clflags.option_fpostpass_sched = "revlist" then
- validated_scheduler reverse_list_scheduler
- else if !Clflags.option_fpostpass_sched = "greedy" then
- greedy_scheduler else failwith ("Invalid scheduler:" ^ !Clflags.option_fpostpass_sched)) problem
+ let problem = build_problem bb in
+ (if debug then print_problem stdout problem);
+ let solution = scheduler_by_name (!Clflags.option_fpostpass_sched) problem
in match solution with
| None -> failwith "Could not find a valid schedule"
- | Some sol -> let bundles = bundlize_solution bb sol in
+ | Some sol ->
+ ((if debug then print_schedule sol);
+ let bundles = bundlize_solution bb sol in
(if debug then
begin
Printf.eprintf "Scheduling the following group of instructions:\n";
@@ -935,7 +935,7 @@ let do_schedule bb =
List.iter (print_bb stderr) bundles;
Printf.eprintf "--------------------------------\n"
end;
- bundles)
+ bundles))
(**
* Dumb schedule if the above doesn't work