ddc-core-flow-0.4.3.1: Disciplined Disciple Compiler data flow compiler.

Safe HaskellSafe
LanguageHaskell98

DDC.Core.Flow.Procedure

Description

A Procedure is an abstract imperative loop nest. The loops are represented as a separated loop anatomy, to make it easy to incrementally build them from a data flow graph expressed as a Process.

Synopsis

Documentation

data Procedure Source #

An imperative procedure made up of some loops.

data Context Source #

Constructors

ContextRate

A top-level context associated with a rate that is a parameter of the process. This context isn't created by the process itself.

ContextSelect

A nested context created by a mkSel1# function.

ContextSegment

A nested context created by a mkSegd# function.

ContextAppend 

Instances

data StmtStart Source #

Statements that can appear at the start of a loop. These initialise accumulators.

Constructors

StartStmt

Evaluate a pure expression

StartVecNew

Allocate a new vector.

StartAcc

Inititlise a new accumulator.

data StmtBody Source #

Statements that appear in the body of a loop.

Constructors

BodyStmt

Evaluate a pure expression.

Fields

BodyVecWrite

Write to a vector.

Fields

BodyAccRead

Read from an accumulator.

Fields

BodyAccWrite

Body of an accumulation operation. Writes to the accumulator.

Fields

data StmtEnd Source #

Statements that appear after a loop to cleanup.

Constructors

EndStmt

Generic ending statements.

Fields

EndAcc

Read the result of an accumulator.

EndVecTrunc

Destructively truncate a vector to its final size.

Instances