[llvm-commits] CVS: llvm/lib/CodeGen/ModuloScheduling/README

Guochun Shi gshi1 at cs.uiuc.edu
Tue Jun 10 15:03:00 PDT 2003


Changes in directory llvm/lib/CodeGen/ModuloScheduling:

README added (r1.1)

---
Log message:

a simple introduction to this pass


---
Diffs of the changes:

Index: llvm/lib/CodeGen/ModuloScheduling/README
diff -c /dev/null llvm/lib/CodeGen/ModuloScheduling/README:1.1
*** /dev/null	Tue Jun 10 15:02:26 2003
--- llvm/lib/CodeGen/ModuloScheduling/README	Tue Jun 10 15:02:16 2003
***************
*** 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.	





More information about the llvm-commits mailing list