futhark-0.25.32: An optimising compiler for a functional, array-oriented language.

Safe Haskell | None
Language | GHC2021

Futhark.IR.MCMem

Contents

- Simplification
- Module re-exports

Synopsis

- data MCMem
- simplifyProg :: Prog MCMem -> PassM (Prog MCMem)
- module Futhark.IR.Mem
- module Futhark.IR.SegOp
- module Futhark.IR.MC.Op

# Documentation

data MCMem Source #

#### Instances

Instances details

Analyse MCMem Source # |
Instance details Defined in Futhark.Analysis.AccessPattern Methods analyseOp :: Op MCMem -> Context MCMem -> [VName] -> (Context MCMem, IndexTable MCMem)
BuilderOps MCMem Source # |
Instance details Defined in Futhark.IR.MCMem Methods mkExpDecB :: (MonadBuilder m, Rep m ~ MCMem) => Pat (LetDec MCMem) -> Exp MCMem -> m (ExpDec MCMem) Source # mkBodyB :: (MonadBuilder m, Rep m ~ MCMem) => Stms MCMem -> Result -> m (Body MCMem) Source # mkLetNamesB :: (MonadBuilder m, Rep m ~ MCMem) => [VName] -> Exp MCMem -> m (Stm MCMem) Source #
PrettyRep MCMem Source # |
Instance details Defined in Futhark.IR.MCMem Methods ppExpDec :: ExpDec MCMem -> Exp MCMem -> Maybe (Doc a) Source #
ASTRep MCMem Source # |
Instance details Defined in Futhark.IR.MCMem Methods expTypesFromPat :: (HasScope MCMem m, Monad m) => Pat (LetDec MCMem) -> m [BranchType MCMem] Source #
RepTypes MCMem Source # |

Instance details

Defined in Futhark.IR.MCMem

Associated Types

type LetDec MCMem |
Instance details Defined in Futhark.IR.MCMem type LetDec MCMem = LetDecMem
type ExpDec MCMem |
Instance details Defined in Futhark.IR.MCMem type ExpDec MCMem = ()
type BodyDec MCMem |
Instance details Defined in Futhark.IR.MCMem type BodyDec MCMem = ()
type FParamInfo MCMem |
Instance details Defined in Futhark.IR.MCMem type FParamInfo MCMem = FParamMem
type LParamInfo MCMem |
Instance details Defined in Futhark.IR.MCMem type LParamInfo MCMem = LParamMem
type RetType MCMem |
Instance details Defined in Futhark.IR.MCMem type RetType MCMem = RetTypeMem
type BranchType MCMem |
Instance details Defined in Futhark.IR.MCMem type BranchType MCMem = BranchTypeMem
type OpC MCMem |
Instance details Defined in Futhark.IR.MCMem type OpC MCMem = MemOp (MCOp (NoOp :: Type -> Type))

Checkable MCMem Source # |

Instance details

Defined in Futhark.IR.MCMem

Methods

checkExpDec :: ExpDec MCMem -> TypeM MCMem () Source #

checkBodyDec :: BodyDec MCMem -> TypeM MCMem () Source #

checkFParamDec :: VName -> FParamInfo MCMem -> TypeM MCMem () Source #

checkLParamDec :: VName -> LParamInfo MCMem -> TypeM MCMem () Source #

checkLetBoundDec :: VName -> LetDec MCMem -> TypeM MCMem () Source #

checkRetType :: [RetType MCMem] -> TypeM MCMem () Source #

matchPat :: Pat (LetDec (Aliases MCMem)) -> Exp (Aliases MCMem) -> TypeM MCMem () Source #

primFParam :: VName -> PrimType -> TypeM MCMem (FParam (Aliases MCMem)) Source #

matchReturnType :: [RetType MCMem] -> Result -> TypeM MCMem () Source #

matchBranchType :: [BranchType MCMem] -> Body (Aliases MCMem) -> TypeM MCMem () Source #

matchLoopResult :: [FParam (Aliases MCMem)] -> Result -> TypeM MCMem () Source #

checkOp :: Op (Aliases MCMem) -> TypeM MCMem () Source #

HasMemBlock (Aliases MCMem) Source # |
Instance details Defined in Futhark.Optimise.ArrayShortCircuiting.DataStructs Methods getScopeMemInfo :: VName -> Scope (Aliases MCMem) -> Maybe ArrayMemBound Source #
BuilderOps (Wise MCMem) Source # |

Instance details

Defined in Futhark.IR.MCMem

Methods

mkExpDecB :: (MonadBuilder m, Rep m ~ Wise MCMem) => Pat (LetDec (Wise MCMem)) -> Exp (Wise MCMem) -> m (ExpDec (Wise MCMem)) Source #

mkBodyB :: (MonadBuilder m, Rep m ~ Wise MCMem) => Stms (Wise MCMem) -> Result -> m (Body (Wise MCMem)) Source #

mkLetNamesB :: (MonadBuilder m, Rep m ~ Wise MCMem) => [VName] -> Exp (Wise MCMem) -> m (Stm (Wise MCMem)) Source #

TraverseOpStms (Wise MCMem) Source # |
Instance details Defined in Futhark.IR.MCMem Methods traverseOpStms :: Monad m => OpStmsTraverser m (Op (Wise MCMem)) (Wise MCMem) Source #
TopDownHelper (inner (Aliases MCMem)) => TopDownHelper (MCOp inner (Aliases MCMem)) Source # |
Instance details Defined in Futhark.Optimise.ArrayShortCircuiting.TopdownAnalysis Methods innerNonNegatives :: [VName] -> MCOp inner (Aliases MCMem) -> Names innerKnownLessThan :: MCOp inner (Aliases MCMem) -> [(VName, PrimExp VName)] scopeHelper :: MCOp inner (Aliases MCMem) -> Scope rep
type BodyDec MCMem Source # |
Instance details Defined in Futhark.IR.MCMem type BodyDec MCMem = ()
type BranchType MCMem Source # |
Instance details Defined in Futhark.IR.MCMem type BranchType MCMem = BranchTypeMem
type ExpDec MCMem Source # |
Instance details Defined in Futhark.IR.MCMem type ExpDec MCMem = ()
type FParamInfo MCMem Source # |
Instance details Defined in Futhark.IR.MCMem type FParamInfo MCMem = FParamMem
type LParamInfo MCMem Source # |
Instance details Defined in Futhark.IR.MCMem type LParamInfo MCMem = LParamMem
type LetDec MCMem Source # |
Instance details Defined in Futhark.IR.MCMem type LetDec MCMem = LetDecMem
type OpC MCMem Source # |
Instance details Defined in Futhark.IR.MCMem type OpC MCMem = MemOp (MCOp (NoOp :: Type -> Type))
type RetType MCMem Source # |
Instance details Defined in Futhark.IR.MCMem type RetType MCMem = RetTypeMem

# Simplification

simplifyProg :: Prog MCMem -> PassM (Prog MCMem) Source #

# Module re-exports

module Futhark.IR.Mem

module Futhark.IR.SegOp

module Futhark.IR.MC.Op