futhark-0.20.2: An optimising compiler for a functional, array-oriented language.
Safe HaskellNone
LanguageHaskell2010

Futhark.Optimise.Simplify

Synopsis

Documentation

simplifyProg :: SimplifiableRep rep => SimpleOps rep -> RuleBook (Wise rep) -> HoistBlockers rep -> Prog rep -> PassM (Prog rep) Source #

Simplify the given program. Even if the output differs from the output, meaningful simplification may not have taken place - the order of bindings may simply have been rearranged.

simplifySomething :: (MonadFreshNames m, SimplifiableRep rep) => (a -> SimpleM rep b) -> (b -> a) -> SimpleOps rep -> RuleBook (Wise rep) -> HoistBlockers rep -> SymbolTable (Wise rep) -> a -> m a Source #

Run a simplification operation to convergence.

simplifyFun :: (MonadFreshNames m, SimplifiableRep rep) => SimpleOps rep -> RuleBook (Wise rep) -> HoistBlockers rep -> SymbolTable (Wise rep) -> FunDef rep -> m (FunDef rep) Source #

Simplify the given function. Even if the output differs from the output, meaningful simplification may not have taken place - the order of bindings may simply have been rearranged. Runs in a loop until convergence.

simplifyLambda :: (MonadFreshNames m, HasScope rep m, SimplifiableRep rep) => SimpleOps rep -> RuleBook (Wise rep) -> HoistBlockers rep -> Lambda rep -> m (Lambda rep) Source #

Simplify just a single Lambda.

simplifyStms :: (MonadFreshNames m, SimplifiableRep rep) => SimpleOps rep -> RuleBook (Wise rep) -> HoistBlockers rep -> Scope rep -> Stms rep -> m (SymbolTable (Wise rep), Stms rep) Source #

Simplify a sequence of Stms.

data SimpleOps rep Source #

Constructors

SimpleOps 

Fields

Instances

Instances details
MonadReader (SimpleOps rep, Env rep) (SimpleM rep) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Engine

Methods

ask :: SimpleM rep (SimpleOps rep, Env rep) #

local :: ((SimpleOps rep, Env rep) -> (SimpleOps rep, Env rep)) -> SimpleM rep a -> SimpleM rep a #

reader :: ((SimpleOps rep, Env rep) -> a) -> SimpleM rep a #

data SimpleM rep a Source #

Instances

Instances details
Monad (SimpleM rep) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Engine

Methods

(>>=) :: SimpleM rep a -> (a -> SimpleM rep b) -> SimpleM rep b #

(>>) :: SimpleM rep a -> SimpleM rep b -> SimpleM rep b #

return :: a -> SimpleM rep a #

Functor (SimpleM rep) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Engine

Methods

fmap :: (a -> b) -> SimpleM rep a -> SimpleM rep b #

(<$) :: a -> SimpleM rep b -> SimpleM rep a #

Applicative (SimpleM rep) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Engine

Methods

pure :: a -> SimpleM rep a #

(<*>) :: SimpleM rep (a -> b) -> SimpleM rep a -> SimpleM rep b #

liftA2 :: (a -> b -> c) -> SimpleM rep a -> SimpleM rep b -> SimpleM rep c #

(*>) :: SimpleM rep a -> SimpleM rep b -> SimpleM rep b #

(<*) :: SimpleM rep a -> SimpleM rep b -> SimpleM rep a #

MonadFreshNames (SimpleM rep) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Engine

SimplifiableRep rep => LocalScope (Wise rep) (SimpleM rep) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Engine

Methods

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

SimplifiableRep rep => HasScope (Wise rep) (SimpleM rep) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Engine

Methods

lookupType :: VName -> SimpleM rep Type Source #

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

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

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

MonadReader (SimpleOps rep, Env rep) (SimpleM rep) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Engine

Methods

ask :: SimpleM rep (SimpleOps rep, Env rep) #

local :: ((SimpleOps rep, Env rep) -> (SimpleOps rep, Env rep)) -> SimpleM rep a -> SimpleM rep a #

reader :: ((SimpleOps rep, Env rep) -> a) -> SimpleM rep a #

MonadState (VNameSource, Bool, Certs) (SimpleM rep) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Engine

Methods

get :: SimpleM rep (VNameSource, Bool, Certs) #

put :: (VNameSource, Bool, Certs) -> SimpleM rep () #

state :: ((VNameSource, Bool, Certs) -> (a, (VNameSource, Bool, Certs))) -> SimpleM rep a #

type SimplifyOp rep op = op -> SimpleM rep (OpWithWisdom op, Stms (Wise rep)) Source #

data RuleBook rep Source #

A collection of both top-down and bottom-up rules.

Instances

Instances details
Semigroup (RuleBook rep) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Rule

Methods

(<>) :: RuleBook rep -> RuleBook rep -> RuleBook rep #

sconcat :: NonEmpty (RuleBook rep) -> RuleBook rep #

stimes :: Integral b => b -> RuleBook rep -> RuleBook rep #

Monoid (RuleBook rep) Source # 
Instance details

Defined in Futhark.Optimise.Simplify.Rule

Methods

mempty :: RuleBook rep #

mappend :: RuleBook rep -> RuleBook rep -> RuleBook rep #

mconcat :: [RuleBook rep] -> RuleBook rep #