coins.backend.sched
Class Pipelining

java.lang.Object
  extended bycoins.backend.sched.Pipelining

public class Pipelining
extends java.lang.Object


Nested Class Summary
(package private)  class Pipelining.PairIndex
           
(package private)  class Pipelining.PipeliningException
           
(package private)  class Pipelining.Reason
           
(package private)  class Pipelining.ResourceTable
           
(package private)  class Pipelining.ScheduledNode
           
(package private)  class Pipelining.ScheduleInfo
           
 
Field Summary
(package private)  BasicBlk basicBlk
           
(package private)  DependGraph dependGraph
           
(package private)  FlowGraph flowGraph
           
(package private)  Pipelining.ScheduleInfo info
           
(package private)  int[] latencyArray
           
(package private)  LirFactory lir
           
(package private)  Schedule scheduler
           
(package private)  Pipelining.ResourceTable table
           
 
Constructor Summary
Pipelining(Schedule scheduler)
           
 
Method Summary
(package private)  void constructPipelinedBlocks(BiList instLINE)
           
(package private)  BiList eliminatingUnnecessaryLoop(BiList list)
          reduce loops unsatisfying conditions
(package private)  LirNode getLirNodeFromDependent(DependNode node)
          covert DependNode to LirNode
(package private)  BiList getLoopBlks(FlowGraph flowGraph)
          get inner-most-loop basic blocks
(package private)  boolean hasLargeLatency(BasicBlk bBlk)
           
(package private)  boolean pipelining(FlowGraph fGraph, BasicBlk bBlk, DependGraph dg, BiList instLINE)
           
(package private)  void pipelining0(FlowGraph flowGraph)
          pipelining inner-most-loops in flowGraph (this method rewrites blocks and instructions)
(package private)  DependGraph reconstructDg(BasicBlk blk)
           
(package private)  int reverseOp(int op)
           
(package private)  void scheduleBranchAndDepend()
           
(package private)  void scheduleDependentNode()
           
(package private)  void scheduleNodesOfSelectedList(java.util.ArrayList selectedList)
           
(package private)  void scheduleRemainingSchedulableNodes()
           
(package private)  java.util.ArrayList selectFromSchedulable()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

scheduler

Schedule scheduler

lir

LirFactory lir

flowGraph

FlowGraph flowGraph

basicBlk

BasicBlk basicBlk

dependGraph

DependGraph dependGraph

table

Pipelining.ResourceTable table

info

Pipelining.ScheduleInfo info

latencyArray

int[] latencyArray
Constructor Detail

Pipelining

public Pipelining(Schedule scheduler)
Method Detail

pipelining

boolean pipelining(FlowGraph fGraph,
                   BasicBlk bBlk,
                   DependGraph dg,
                   BiList instLINE)

hasLargeLatency

boolean hasLargeLatency(BasicBlk bBlk)

scheduleBranchAndDepend

void scheduleBranchAndDepend()

selectFromSchedulable

java.util.ArrayList selectFromSchedulable()

scheduleNodesOfSelectedList

void scheduleNodesOfSelectedList(java.util.ArrayList selectedList)

scheduleDependentNode

void scheduleDependentNode()

scheduleRemainingSchedulableNodes

void scheduleRemainingSchedulableNodes()

constructPipelinedBlocks

void constructPipelinedBlocks(BiList instLINE)

reconstructDg

DependGraph reconstructDg(BasicBlk blk)

getLirNodeFromDependent

LirNode getLirNodeFromDependent(DependNode node)
covert DependNode to LirNode

Parameters:
node - DependNode coverting to LirNode
Returns:
LirNode providing from DependNode

reverseOp

int reverseOp(int op)

getLoopBlks

BiList getLoopBlks(FlowGraph flowGraph)
get inner-most-loop basic blocks

Returns:
list of nner-most-loop block

eliminatingUnnecessaryLoop

BiList eliminatingUnnecessaryLoop(BiList list)
reduce loops unsatisfying conditions

Parameters:
list - list of loop block
Returns:
list of blocks for pipelining

pipelining0

void pipelining0(FlowGraph flowGraph)
pipelining inner-most-loops in flowGraph (this method rewrites blocks and instructions)

Parameters:
flowGraph - FlowGraph for pipelining