aboutsummaryrefslogtreecommitdiffstats
path: root/src/SoftwarePipelining/SoftwarePipelining.ml
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2021-01-06 18:59:07 +0000
committerYann Herklotz <git@yannherklotz.com>2021-01-06 18:59:07 +0000
commitda34700998cbaf705c761a3d5b3a4e14994623e4 (patch)
tree84b7f00d68a2efaaef16abd32a9f642b654c0c03 /src/SoftwarePipelining/SoftwarePipelining.ml
parent67c0250258e3d38faf06c755efb2aa556b4ebe79 (diff)
downloadvericert-da34700998cbaf705c761a3d5b3a4e14994623e4.tar.gz
vericert-da34700998cbaf705c761a3d5b3a4e14994623e4.zip
Add comments to pipelining code
Diffstat (limited to 'src/SoftwarePipelining/SoftwarePipelining.ml')
-rw-r--r--src/SoftwarePipelining/SoftwarePipelining.ml6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/SoftwarePipelining/SoftwarePipelining.ml b/src/SoftwarePipelining/SoftwarePipelining.ml
index fd95134..0ba6d9d 100644
--- a/src/SoftwarePipelining/SoftwarePipelining.ml
+++ b/src/SoftwarePipelining/SoftwarePipelining.ml
@@ -38,6 +38,10 @@ let find node schedule opt =
try NI.find node schedule with
| Not_found -> opt
+(* A random heuristic is used to pick the next instruction to be scheduled from the unscheduled
+ * instructions. The scheduled instructions are given to the function, and the unscheduled
+ * instructions are created by taking all the instructions that are not in the scheduled list.
+ *)
let random ddg schedule =
let unscheduled = G.fold_vertex (fun node l ->
match find node schedule None with
@@ -55,7 +59,7 @@ module Scc = Graph.Components.Make (G)
let order = ref []
-let pipeliner ddg =
+let pipeliner ddg =
order := List.flatten (Scc.scc_list ddg);
let (sched,ii) = SPIMS.pipeliner ddg random in
let (steady,prolog,epilog,min,unroll,entrance,way_out) = SPMVE.mve ddg sched ii in