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

Safe HaskellNone
LanguageHaskell2010

Futhark.Optimise.Simplify.Lore

Description

Definition of the lore used by the simplification engine.

Synopsis

Documentation

data Wise lore Source #

Instances
(Annotations lore, CanBeWise (Op lore)) => Annotations (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Associated Types

type LetAttr (Wise lore) :: Type Source #

type ExpAttr (Wise lore) :: Type Source #

type BodyAttr (Wise lore) :: Type Source #

type FParamAttr (Wise lore) :: Type Source #

type LParamAttr (Wise lore) :: Type Source #

type RetType (Wise lore) :: Type Source #

type BranchType (Wise lore) :: Type Source #

type Op (Wise lore) :: Type Source #

(PrettyLore lore, CanBeWise (Op lore)) => PrettyLore (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Methods

ppExpLore :: ExpAttr (Wise lore) -> Exp (Wise lore) -> Maybe Doc Source #

(Attributes lore, CanBeWise (Op lore)) => Attributes (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Methods

expTypesFromPattern :: (HasScope (Wise lore) m, Monad m) => Pattern (Wise lore) -> m [BranchType (Wise lore)] Source #

(Attributes lore, CanBeWise (Op lore)) => Aliased (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Methods

bodyAliases :: Body (Wise lore) -> [Names] Source #

consumedInBody :: Body (Wise lore) -> Names Source #

(Bindable lore, CanBeWise (Op lore)) => Bindable (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Methods

mkExpPat :: [Ident] -> [Ident] -> Exp (Wise lore) -> Pattern (Wise lore) Source #

mkExpAttr :: Pattern (Wise lore) -> Exp (Wise lore) -> ExpAttr (Wise lore) Source #

mkBody :: Stms (Wise lore) -> Result -> Body (Wise lore) Source #

mkLetNames :: (MonadFreshNames m, HasScope (Wise lore) m) => [VName] -> Exp (Wise lore) -> m (Stm (Wise lore)) Source #

BinderOps (Wise SOACS) Source # 
Instance details

Defined in Futhark.Representation.SOACS.Simplify

BinderOps (Wise InKernel) Source # 
Instance details

Defined in Futhark.Representation.Kernels.Simplify

BinderOps (Wise Kernels) Source # 
Instance details

Defined in Futhark.Representation.Kernels.Simplify

BinderOps (Wise ExplicitMemory) Source # 
Instance details

Defined in Futhark.Pass.ExplicitAllocations

SimplifiableLore lore => LocalScope (Wise lore) (SimpleM lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Engine

Methods

localScope :: Scope (Wise lore) -> SimpleM lore a -> SimpleM lore a Source #

SimplifiableLore lore => HasScope (Wise lore) (SimpleM lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Engine

Methods

lookupType :: VName -> SimpleM lore Type Source #

lookupInfo :: VName -> SimpleM lore (NameInfo (Wise lore)) Source #

askScope :: SimpleM lore (Scope (Wise lore)) Source #

asksScope :: (Scope (Wise lore) -> a) -> SimpleM lore a Source #

type LetAttr (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

type LetAttr (Wise lore) = (VarWisdom, LetAttr lore)
type ExpAttr (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

type ExpAttr (Wise lore) = (ExpWisdom, ExpAttr lore)
type BodyAttr (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

type BodyAttr (Wise lore)
type FParamAttr (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

type FParamAttr (Wise lore) = FParamAttr lore
type LParamAttr (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

type LParamAttr (Wise lore) = LParamAttr lore
type RetType (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

type RetType (Wise lore) = RetType lore
type BranchType (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

type BranchType (Wise lore) = BranchType lore
type Op (Wise lore) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

type Op (Wise lore) = OpWithWisdom (Op lore)

data VarWisdom Source #

The wisdom of the let-bound variable.

Instances
Eq VarWisdom Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Ord VarWisdom Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Show VarWisdom Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

FreeIn VarWisdom Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Substitute VarWisdom Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Rename VarWisdom Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

PrettyAnnot (PatElemT attr) => PrettyAnnot (PatElemT (VarWisdom, attr)) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Methods

ppAnnot :: PatElemT (VarWisdom, attr) -> Maybe Doc Source #

AliasesOf (VarWisdom, attr) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Methods

aliasesOf :: (VarWisdom, attr) -> Names Source #

RangeOf (VarWisdom, attr) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Methods

rangeOf :: (VarWisdom, attr) -> Range Source #

removeStmWisdom :: CanBeWise (Op lore) => Stm (Wise lore) -> Stm lore Source #

removeLambdaWisdom :: CanBeWise (Op lore) => Lambda (Wise lore) -> Lambda lore Source #

removeProgWisdom :: CanBeWise (Op lore) => Prog (Wise lore) -> Prog lore Source #

removeFunDefWisdom :: CanBeWise (Op lore) => FunDef (Wise lore) -> FunDef lore Source #

removeExpWisdom :: CanBeWise (Op lore) => Exp (Wise lore) -> Exp lore Source #

removeBodyWisdom :: CanBeWise (Op lore) => Body (Wise lore) -> Body lore Source #

addWisdomToPattern :: (Attributes lore, CanBeWise (Op lore)) => Pattern lore -> Exp (Wise lore) -> Pattern (Wise lore) Source #

mkWiseBody :: (Attributes lore, CanBeWise (Op lore)) => BodyAttr lore -> Stms (Wise lore) -> Result -> Body (Wise lore) Source #

mkWiseLetStm :: (Attributes lore, CanBeWise (Op lore)) => Pattern lore -> StmAux (ExpAttr lore) -> Exp (Wise lore) -> Stm (Wise lore) Source #

mkWiseExpAttr :: (Attributes lore, CanBeWise (Op lore)) => Pattern (Wise lore) -> ExpAttr lore -> Exp (Wise lore) -> ExpAttr (Wise lore) Source #

class (AliasedOp (OpWithWisdom op), RangedOp (OpWithWisdom op), IsOp (OpWithWisdom op), UsageInOp (OpWithWisdom op)) => CanBeWise op where Source #

Associated Types

type OpWithWisdom op :: * Source #

Methods

removeOpWisdom :: OpWithWisdom op -> op Source #

Instances
CanBeWise () Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Lore

Associated Types

type OpWithWisdom () :: Type Source #

Methods

removeOpWisdom :: OpWithWisdom () -> () Source #

(Attributes lore, CanBeWise (Op lore)) => CanBeWise (SOAC lore) Source # 
Instance details

Defined in Futhark.Representation.SOACS.SOAC

Associated Types

type OpWithWisdom (SOAC lore) :: Type Source #

Methods

removeOpWisdom :: OpWithWisdom (SOAC lore) -> SOAC lore Source #

(Attributes lore, CanBeWise (Op lore)) => CanBeWise (KernelExp lore) Source # 
Instance details

Defined in Futhark.Representation.Kernels.KernelExp

Associated Types

type OpWithWisdom (KernelExp lore) :: Type Source #

(Attributes lore, CanBeWise (Op lore)) => CanBeWise (Kernel lore) Source # 
Instance details

Defined in Futhark.Representation.Kernels.Kernel

Associated Types

type OpWithWisdom (Kernel lore) :: Type Source #

Methods

removeOpWisdom :: OpWithWisdom (Kernel lore) -> Kernel lore Source #

CanBeWise inner => CanBeWise (MemOp inner) Source # 
Instance details

Defined in Futhark.Representation.ExplicitMemory

Associated Types

type OpWithWisdom (MemOp inner) :: Type Source #

Methods

removeOpWisdom :: OpWithWisdom (MemOp inner) -> MemOp inner Source #