at.dms.kjc.backendSupport
Class MultiLevelSplitsJoins

java.lang.Object
  extended by at.dms.kjc.backendSupport.MultiLevelSplitsJoins

public class MultiLevelSplitsJoins
extends Object

This pass will break up splits or joins (OutputSliceNodes and InputSliceNodes) that are wider than the number of memories attached to the chip. It does this by introducing new traces that are composed of an identity filter with width lte number of memories. Multiple levels of these identity traces implement the split or join that was too wide.

Author:
mgordon

Field Summary
static int IDENTITY_WORK
          The work estimate of the identity filters that we add
 
Constructor Summary
MultiLevelSplitsJoins(Partitioner partitioner, int maxWidth)
          Create an instance of the pass that will operate on the partitioning calculated by partitioner for the number of memories in RawChip.
 
Method Summary
 void doit()
          Run the pass on the entire slice graph, breaking up the wide splits and joins, creating new Slices and adding them to the partitioning.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

IDENTITY_WORK

public static int IDENTITY_WORK
The work estimate of the identity filters that we add

Constructor Detail

MultiLevelSplitsJoins

public MultiLevelSplitsJoins(Partitioner partitioner,
                             int maxWidth)
Create an instance of the pass that will operate on the partitioning calculated by partitioner for the number of memories in RawChip.

Parameters:
partitioner - The partitioning.
maxWidth - The Raw chip.
Method Detail

doit

public void doit()
Run the pass on the entire slice graph, breaking up the wide splits and joins, creating new Slices and adding them to the partitioning.