Copyright | (C) 2012-2016 University of Twente 2017 Google Inc. |
---|---|
License | BSD2 (see the file LICENSE) |
Maintainer | Christiaan Baaij <christiaan.baaij@gmail.com> |
Safe Haskell | None |
Language | Haskell2010 |
Types used in Normalize modules
Synopsis
- data NormalizeState = NormalizeState {
- _normalized :: BindingMap
- _specialisationCache :: Map (TmOccName, Int, Either Term Type) (TmName, Type)
- _specialisationHistory :: HashMap TmOccName Int
- _specialisationLimit :: !Int
- _inlineHistory :: HashMap TmOccName (HashMap TmOccName Int)
- _inlineLimit :: !Int
- _inlineFunctionLimit :: !Word
- _inlineConstantLimit :: !Word
- _primitives :: PrimMap BlackBoxTemplate
- _recursiveComponents :: HashMap TmOccName Bool
- specialisationLimit :: Lens' NormalizeState Int
- specialisationHistory :: Lens' NormalizeState (HashMap TmOccName Int)
- specialisationCache :: Lens' NormalizeState (Map (TmOccName, Int, Either Term Type) (TmName, Type))
- recursiveComponents :: Lens' NormalizeState (HashMap TmOccName Bool)
- primitives :: Lens' NormalizeState (PrimMap BlackBoxTemplate)
- normalized :: Lens' NormalizeState BindingMap
- inlineLimit :: Lens' NormalizeState Int
- inlineHistory :: Lens' NormalizeState (HashMap TmOccName (HashMap TmOccName Int))
- inlineFunctionLimit :: Lens' NormalizeState Word
- inlineConstantLimit :: Lens' NormalizeState Word
- type NormalizeMonad = State NormalizeState
- type NormalizeSession = RewriteMonad NormalizeState
- type NormRewrite = Rewrite NormalizeState
- data TermClassification = TermClassification {
- _function :: !Int
- _primitive :: !Int
- _selection :: !Int
- selection :: Lens' TermClassification Int
- primitive :: Lens' TermClassification Int
- function :: Lens' TermClassification Int
Documentation
data NormalizeState Source #
State of the NormalizeMonad
NormalizeState | |
|
specialisationLimit :: Lens' NormalizeState Int Source #
specialisationHistory :: Lens' NormalizeState (HashMap TmOccName Int) Source #
specialisationCache :: Lens' NormalizeState (Map (TmOccName, Int, Either Term Type) (TmName, Type)) Source #
recursiveComponents :: Lens' NormalizeState (HashMap TmOccName Bool) Source #
primitives :: Lens' NormalizeState (PrimMap BlackBoxTemplate) Source #
normalized :: Lens' NormalizeState BindingMap Source #
inlineLimit :: Lens' NormalizeState Int Source #
inlineHistory :: Lens' NormalizeState (HashMap TmOccName (HashMap TmOccName Int)) Source #
inlineFunctionLimit :: Lens' NormalizeState Word Source #
inlineConstantLimit :: Lens' NormalizeState Word Source #
type NormalizeMonad = State NormalizeState Source #
State monad that stores specialisation and inlining information
type NormalizeSession = RewriteMonad NormalizeState Source #
RewriteSession with extra Normalisation information
type NormRewrite = Rewrite NormalizeState Source #
A Transform
action in the context of the RewriteMonad
and NormalizeMonad
data TermClassification Source #
Description of a Term
in terms of the type "components" the Term
has.
Is used as a performance/size metric.
TermClassification | |
|
Instances
Show TermClassification Source # | |
Defined in Clash.Normalize.Types showsPrec :: Int -> TermClassification -> ShowS # show :: TermClassification -> String # showList :: [TermClassification] -> ShowS # |
selection :: Lens' TermClassification Int Source #
primitive :: Lens' TermClassification Int Source #
function :: Lens' TermClassification Int Source #