{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleContexts #-}
module Futhark.CodeGen.ImpGen.Kernels.SegMap
( compileSegMap ) where
import Control.Monad.Except
import Prelude hiding (quot, rem)
import Futhark.Representation.ExplicitMemory
import Futhark.CodeGen.ImpGen.Kernels.Base
compileSegMap :: Pattern ExplicitMemory
-> KernelSpace
-> KernelBody InKernel
-> CallKernelGen ()
compileSegMap pat space kbody = do
(constants, init_constants) <- kernelInitialisation space
sKernel constants "segmap" $ do
init_constants
compileKernelStms constants (kernelBodyStms kbody) $
zipWithM_ (compileKernelResult constants) (patternElements pat) $
kernelBodyResult kbody