-- | Functionality for identifying chunks of interesting parallelism -- inside of a map nesting. module Futhark.Pass.ExtractKernels.Split ( splitMap) where import Control.Monad.RWS.Strict import Control.Monad.Reader import Control.Monad.Trans.Maybe import qualified Data.Map.Strict as M import qualified Data.Set as S import Data.Maybe import Data.List import qualified Data.Semigroup as Sem import Futhark.Representation.SOACS import Futhark.Representation.SOACS.Simplify (simplifyStms, simpleSOACS) import qualified Futhark.Representation.Kernels as Out import Futhark.Representation.Kernels.Kernel import Futhark.MonadFreshNames import Futhark.Tools import qualified Futhark.Transform.FirstOrderTransform as FOT import qualified Futhark.Pass.ExtractKernels.Kernelise as Kernelise import Futhark.Transform.Rename import Futhark.Pass import Futhark.Transform.CopyPropagate import Futhark.Pass.ExtractKernels.Distribution import Futhark.Pass.ExtractKernels.ISRWIM import Futhark.Pass.ExtractKernels.BlockedKernel import Futhark.Pass.ExtractKernels.Segmented import Futhark.Pass.ExtractKernels.Interchange import Futhark.Pass.ExtractKernels.Intragroup import Futhark.Util import Futhark.Util.Log type KernelsStms = Out.Stms Out.Kernels type InKernelStms = Out.Stms Out.InKernel type InKernelLambda = Out.Lambda Out.InKernel splitMap :: (MonadFreshNames m) => Scope SOACS -> a -> m [a] splitMap scope loop = return [loop]