aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen
diff options
context:
space:
mode:
authorGuochun Shi <gshi1@uiuc.edu>2003-06-10 20:02:16 +0000
committerGuochun Shi <gshi1@uiuc.edu>2003-06-10 20:02:16 +0000
commit0b970dad72c63ba99820b2a437aecee31ebdbc9f (patch)
treeb1c4fb2022a506f7f73a7e031c0a9ea3a1bfb32e /lib/CodeGen
parentf325261856a16dfa34d323db7c15cf85a8ea3f4e (diff)
downloadexternal_llvm-0b970dad72c63ba99820b2a437aecee31ebdbc9f.zip
external_llvm-0b970dad72c63ba99820b2a437aecee31ebdbc9f.tar.gz
external_llvm-0b970dad72c63ba99820b2a437aecee31ebdbc9f.tar.bz2
a simple introduction to this pass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6675 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r--lib/CodeGen/ModuloScheduling/README33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/CodeGen/ModuloScheduling/README b/lib/CodeGen/ModuloScheduling/README
new file mode 100644
index 0000000..4add2a2
--- /dev/null
+++ b/lib/CodeGen/ModuloScheduling/README
@@ -0,0 +1,33 @@
+The moduloScheduling pass includes two passes
+
+
+1. building graph
+The pass will build an instance of class ModuloSchedGraph for each loop-including basicblock in a function. The steps to build a graph:
+ a)build one node for each instruction in the basicblock
+ ---ModuloScheduGraph::buildNodesforBB()
+ b)add def-use edges
+ ---ModuloScheduGraph::addDefUseEdges()
+ c)add cd edges
+ ---ModuloScheduGraph::addCDEdges()
+ d)add mem dependency edges
+ ---ModuloScheduGraph::addMemEdges()
+ e)compute resource restriction II and recurrenct II
+ ---ModuloScheduGraph::computeResII()
+ ---ModuloScheduGraph::computeRecII()
+ f)compute each node's property, including ASAP,ALAP, Mov, Depth and Height.
+ ---ModuloScheduGraph::computeNodeProperty
+ g)sort all nodes
+ ---ModuloScheduGraph::orderNodes()
+
+
+2. compute schedule
+The second step is to compute a schule and replace the orginal basic block with three basicblocks: prelogue, kernelblock and epilog.
+
+ a)compute the schedule according the algorithm described in the paper
+ ---ModuloScheduling::computeSchedule()
+
+ b)replace the original basicblock.(to be done)
+ ---ModuloScheduling::constructPrologue();
+ ---ModuloScheduling::constructKernel();
+ ---ModuloScheduling::constructEpilogue();
+ These three functions are not working yet.