module Futhark.CodeGen.ImpGen.OpenCL ( compileProg , Warnings ) where import Data.Bifunctor (second) import Futhark.IR.KernelsMem import qualified Futhark.CodeGen.ImpCode.OpenCL as OpenCL import Futhark.CodeGen.ImpGen.Kernels import Futhark.CodeGen.ImpGen.Kernels.ToOpenCL import Futhark.MonadFreshNames compileProg :: MonadFreshNames m => Prog KernelsMem -> m (Warnings, OpenCL.Program) compileProg :: Prog KernelsMem -> m (Warnings, Program) compileProg Prog KernelsMem prog = (Program -> Program) -> (Warnings, Program) -> (Warnings, Program) forall (p :: * -> * -> *) b c a. Bifunctor p => (b -> c) -> p a b -> p a c second Program -> Program kernelsToOpenCL ((Warnings, Program) -> (Warnings, Program)) -> m (Warnings, Program) -> m (Warnings, Program) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Prog KernelsMem -> m (Warnings, Program) forall (m :: * -> *). MonadFreshNames m => Prog KernelsMem -> m (Warnings, Program) compileProgOpenCL Prog KernelsMem prog