clash-lib-0.2.0.1: CAES Language for Synchronous Hardware - As a Library

Safe HaskellNone

CLaSH.Normalize.Types

Description

Types used in Normalize modules

Synopsis

Documentation

data NormalizeState Source

State of the NormalizeMonad

Constructors

NormalizeState 

Fields

_normalized :: HashMap TmName Term

Global binders

_specialisations :: Map (TmName, Int, Either Term Type) (TmName, Type)

Cache of previously specialised functions:

  • Key: (name of the original function, argument position, specialised term/type)
  • Elem: (name of specialised function,type of specialised function)
_inlined :: HashMap TmName [TmName]

Cache of function where inlining took place:

  • Key: function where inlining took place
  • Elem: functions which were inlined
_newInlined :: [TmName]

Inlined functions in the current traversal

_curFun :: TmName

Function which is currently normalized

type NormalizeMonad = State NormalizeStateSource

State monad that stores specialisation and inlining information

type NormalizeSession = RewriteSession NormalizeMonadSource

RewriteSession with extra Normalisation information

type NormRewrite = Rewrite NormalizeMonadSource

A Transform action in the context of the RewriteMonad and NormalizeMonad