module Futhark.Pass.ExplicitAllocations.Seq ( explicitAllocations, simplifiable, ) where import Futhark.IR.Seq import Futhark.IR.SeqMem import Futhark.Pass import Futhark.Pass.ExplicitAllocations explicitAllocations :: Pass Seq SeqMem explicitAllocations :: Pass Seq SeqMem explicitAllocations = Space -> (Op Seq -> AllocM Seq SeqMem (Op SeqMem)) -> (Exp SeqMem -> AllocM Seq SeqMem [ExpHint]) -> Pass Seq SeqMem forall fromrep torep (inner :: * -> *). Allocable fromrep torep inner => Space -> (Op fromrep -> AllocM fromrep torep (Op torep)) -> (Exp torep -> AllocM fromrep torep [ExpHint]) -> Pass fromrep torep explicitAllocationsGeneric Space DefaultSpace (AllocM Seq SeqMem (Op SeqMem) -> Op Seq -> AllocM Seq SeqMem (Op SeqMem) forall a b. a -> b -> a const (AllocM Seq SeqMem (Op SeqMem) -> Op Seq -> AllocM Seq SeqMem (Op SeqMem)) -> AllocM Seq SeqMem (Op SeqMem) -> Op Seq -> AllocM Seq SeqMem (Op SeqMem) forall a b. (a -> b) -> a -> b $ Op SeqMem -> AllocM Seq SeqMem (Op SeqMem) forall a. a -> AllocM Seq SeqMem a forall (f :: * -> *) a. Applicative f => a -> f a pure (Op SeqMem -> AllocM Seq SeqMem (Op SeqMem)) -> Op SeqMem -> AllocM Seq SeqMem (Op SeqMem) forall a b. (a -> b) -> a -> b $ NoOp SeqMem -> MemOp NoOp SeqMem forall (inner :: * -> *) rep. inner rep -> MemOp inner rep Inner NoOp SeqMem forall {k} (rep :: k). NoOp rep NoOp) Exp SeqMem -> AllocM Seq SeqMem [ExpHint] forall rep (m :: * -> *). (ASTRep rep, HasScope rep m) => Exp rep -> m [ExpHint] defaultExpHints