Package at.dms.kjc.sir.lowering.fusion

Provides compiler passes to fuse (combine) a set of filters into a single filter.

See:
          Description

Class Summary
FindVarDecls Unused! Finds variable definitions and accesses that have type "Int" or "Float" and replaces them with numbered variables.
FuseAll This class fuses all the pipelines that it can in a stream graph.
FusePipe This is the high-level fusion class for pipelines.
FusePipelines This class fuses sub-segments of pipelines with various characteristics.
FuseSimpleSplit This flattens certain cases of split/joins into a single filter.
FuseSplit This flattens any set of filters into a single splitjoin.
Lifter Canonicalize stream structure eliminating some redundancies.
ReplaceVarDecls Used by FindVarDecls.findAndReplace.
 

Package at.dms.kjc.sir.lowering.fusion Description

Provides compiler passes to fuse (combine) a set of filters into a single filter. Currently this transformation is applied for two reasons:

The main fusion classes are FusePipe and FuseSplit, which apply to pipelines and splitjoins, respectively. (Fusion of feedback loops is not yet implemented, though it should be straightforward to write.) There are two alternate implementations of pipeline fusion, as described in the LCTES'05 paper: one that uses modulo addressing (ModuloPipelineFusion) and one that avoids modulo operations (ShiftPipelineFusion). There is also an optimized splitjoin fusion (FuseSimpleSplit) for certain cases of splitjoins.

The FuseAll class can be used to fuse everything in a hierarchical stream graph. Lifter provides graph canonicalization (removing pipeline wrappers, for example) that are sometimes produced by fusion (as well as other transformations).

See Also:
at.dms.kjc.raw, at.dms.kjc.cluster, SJToPipe