{-# OPTIONS_GHC -fno-warn-orphans #-}
module Data.Array.Accelerate.LLVM.Native.CodeGen (
KernelMetadata(..),
) where
import Data.Array.Accelerate.LLVM.CodeGen
import Data.Array.Accelerate.LLVM.Native.CodeGen.Base
import Data.Array.Accelerate.LLVM.Native.CodeGen.Fold
import Data.Array.Accelerate.LLVM.Native.CodeGen.FoldSeg
import Data.Array.Accelerate.LLVM.Native.CodeGen.Generate
import Data.Array.Accelerate.LLVM.Native.CodeGen.Map
import Data.Array.Accelerate.LLVM.Native.CodeGen.Permute
import Data.Array.Accelerate.LLVM.Native.CodeGen.Scan
import Data.Array.Accelerate.LLVM.Native.CodeGen.Stencil
import Data.Array.Accelerate.LLVM.Native.CodeGen.Transform
import Data.Array.Accelerate.LLVM.Native.Target
instance Skeleton Native where
map :: UID
-> Gamma aenv
-> ArrayR (Array sh a)
-> TypeR b
-> IRFun1 Native aenv (a -> b)
-> CodeGen Native (IROpenAcc Native aenv (Array sh b))
map = UID
-> Gamma aenv
-> ArrayR (Array sh a)
-> TypeR b
-> IRFun1 Native aenv (a -> b)
-> CodeGen Native (IROpenAcc Native aenv (Array sh b))
forall aenv sh a b.
UID
-> Gamma aenv
-> ArrayR (Array sh a)
-> TypeR b
-> IRFun1 Native aenv (a -> b)
-> CodeGen Native (IROpenAcc Native aenv (Array sh b))
mkMap
generate :: UID
-> Gamma aenv
-> ArrayR (Array sh e)
-> IRFun1 Native aenv (sh -> e)
-> CodeGen Native (IROpenAcc Native aenv (Array sh e))
generate = UID
-> Gamma aenv
-> ArrayR (Array sh e)
-> IRFun1 Native aenv (sh -> e)
-> CodeGen Native (IROpenAcc Native aenv (Array sh e))
forall aenv sh e.
UID
-> Gamma aenv
-> ArrayR (Array sh e)
-> IRFun1 Native aenv (sh -> e)
-> CodeGen Native (IROpenAcc Native aenv (Array sh e))
mkGenerate
transform :: UID
-> Gamma aenv
-> ArrayR (Array sh a)
-> ArrayR (Array sh' b)
-> IRFun1 Native aenv (sh' -> sh)
-> IRFun1 Native aenv (a -> b)
-> CodeGen Native (IROpenAcc Native aenv (Array sh' b))
transform = UID
-> Gamma aenv
-> ArrayR (Array sh a)
-> ArrayR (Array sh' b)
-> IRFun1 Native aenv (sh' -> sh)
-> IRFun1 Native aenv (a -> b)
-> CodeGen Native (IROpenAcc Native aenv (Array sh' b))
forall aenv sh a sh' b.
UID
-> Gamma aenv
-> ArrayR (Array sh a)
-> ArrayR (Array sh' b)
-> IRFun1 Native aenv (sh' -> sh)
-> IRFun1 Native aenv (a -> b)
-> CodeGen Native (IROpenAcc Native aenv (Array sh' b))
mkTransform
fold :: UID
-> Gamma aenv
-> ArrayR (Array sh e)
-> IRFun2 Native aenv (e -> e -> e)
-> Maybe (IRExp Native aenv e)
-> MIRDelayed Native aenv (Array (sh, Int) e)
-> CodeGen Native (IROpenAcc Native aenv (Array sh e))
fold = UID
-> Gamma aenv
-> ArrayR (Array sh e)
-> IRFun2 Native aenv (e -> e -> e)
-> Maybe (IRExp Native aenv e)
-> MIRDelayed Native aenv (Array (sh, Int) e)
-> CodeGen Native (IROpenAcc Native aenv (Array sh e))
forall aenv sh e.
UID
-> Gamma aenv
-> ArrayR (Array sh e)
-> IRFun2 Native aenv (e -> e -> e)
-> Maybe (IRExp Native aenv e)
-> MIRDelayed Native aenv (Array (sh, Int) e)
-> CodeGen Native (IROpenAcc Native aenv (Array sh e))
mkFold
foldSeg :: UID
-> Gamma aenv
-> ArrayR (Array (sh, Int) e)
-> IntegralType i
-> IRFun2 Native aenv (e -> e -> e)
-> Maybe (IRExp Native aenv e)
-> MIRDelayed Native aenv (Array (sh, Int) e)
-> MIRDelayed Native aenv (Segments i)
-> CodeGen Native (IROpenAcc Native aenv (Array (sh, Int) e))
foldSeg = UID
-> Gamma aenv
-> ArrayR (Array (sh, Int) e)
-> IntegralType i
-> IRFun2 Native aenv (e -> e -> e)
-> Maybe (IRExp Native aenv e)
-> MIRDelayed Native aenv (Array (sh, Int) e)
-> MIRDelayed Native aenv (Segments i)
-> CodeGen Native (IROpenAcc Native aenv (Array (sh, Int) e))
forall aenv sh e i.
UID
-> Gamma aenv
-> ArrayR (Array (sh, Int) e)
-> IntegralType i
-> IRFun2 Native aenv (e -> e -> e)
-> Maybe (IRExp Native aenv e)
-> MIRDelayed Native aenv (Array (sh, Int) e)
-> MIRDelayed Native aenv (Segments i)
-> CodeGen Native (IROpenAcc Native aenv (Array (sh, Int) e))
mkFoldSeg
scan :: UID
-> Gamma aenv
-> ArrayR (Array (sh, Int) e)
-> Direction
-> IRFun2 Native aenv (e -> e -> e)
-> Maybe (IRExp Native aenv e)
-> MIRDelayed Native aenv (Array (sh, Int) e)
-> CodeGen Native (IROpenAcc Native aenv (Array (sh, Int) e))
scan = UID
-> Gamma aenv
-> ArrayR (Array (sh, Int) e)
-> Direction
-> IRFun2 Native aenv (e -> e -> e)
-> Maybe (IRExp Native aenv e)
-> MIRDelayed Native aenv (Array (sh, Int) e)
-> CodeGen Native (IROpenAcc Native aenv (Array (sh, Int) e))
forall aenv sh e.
UID
-> Gamma aenv
-> ArrayR (Array (sh, Int) e)
-> Direction
-> IRFun2 Native aenv (e -> e -> e)
-> Maybe (IRExp Native aenv e)
-> MIRDelayed Native aenv (Array (sh, Int) e)
-> CodeGen Native (IROpenAcc Native aenv (Array (sh, Int) e))
mkScan
scan' :: UID
-> Gamma aenv
-> ArrayR (Array (sh, Int) e)
-> Direction
-> IRFun2 Native aenv (e -> e -> e)
-> IRExp Native aenv e
-> MIRDelayed Native aenv (Array (sh, Int) e)
-> CodeGen
Native (IROpenAcc Native aenv (Array (sh, Int) e, Array sh e))
scan' = UID
-> Gamma aenv
-> ArrayR (Array (sh, Int) e)
-> Direction
-> IRFun2 Native aenv (e -> e -> e)
-> IRExp Native aenv e
-> MIRDelayed Native aenv (Array (sh, Int) e)
-> CodeGen
Native (IROpenAcc Native aenv (Array (sh, Int) e, Array sh e))
forall aenv sh e.
UID
-> Gamma aenv
-> ArrayR (Array (sh, Int) e)
-> Direction
-> IRFun2 Native aenv (e -> e -> e)
-> IRExp Native aenv e
-> MIRDelayed Native aenv (Array (sh, Int) e)
-> CodeGen
Native (IROpenAcc Native aenv (Array (sh, Int) e, Array sh e))
mkScan'
permute :: UID
-> Gamma aenv
-> ArrayR (Array sh e)
-> ShapeR sh'
-> IRPermuteFun Native aenv (e -> e -> e)
-> IRFun1 Native aenv (sh -> PrimMaybe sh')
-> MIRDelayed Native aenv (Array sh e)
-> CodeGen Native (IROpenAcc Native aenv (Array sh' e))
permute = UID
-> Gamma aenv
-> ArrayR (Array sh e)
-> ShapeR sh'
-> IRPermuteFun Native aenv (e -> e -> e)
-> IRFun1 Native aenv (sh -> PrimMaybe sh')
-> MIRDelayed Native aenv (Array sh e)
-> CodeGen Native (IROpenAcc Native aenv (Array sh' e))
forall aenv sh e sh'.
HasCallStack =>
UID
-> Gamma aenv
-> ArrayR (Array sh e)
-> ShapeR sh'
-> IRPermuteFun Native aenv (e -> e -> e)
-> IRFun1 Native aenv (sh -> PrimMaybe sh')
-> MIRDelayed Native aenv (Array sh e)
-> CodeGen Native (IROpenAcc Native aenv (Array sh' e))
mkPermute
stencil1 :: UID
-> Gamma aenv
-> StencilR sh a stencil
-> TypeR b
-> IRFun1 Native aenv (stencil -> b)
-> IRBoundary Native aenv (Array sh a)
-> MIRDelayed Native aenv (Array sh a)
-> CodeGen Native (IROpenAcc Native aenv (Array sh b))
stencil1 = UID
-> Gamma aenv
-> StencilR sh a stencil
-> TypeR b
-> IRFun1 Native aenv (stencil -> b)
-> IRBoundary Native aenv (Array sh a)
-> MIRDelayed Native aenv (Array sh a)
-> CodeGen Native (IROpenAcc Native aenv (Array sh b))
forall aenv sh a stencil b.
UID
-> Gamma aenv
-> StencilR sh a stencil
-> TypeR b
-> IRFun1 Native aenv (stencil -> b)
-> IRBoundary Native aenv (Array sh a)
-> MIRDelayed Native aenv (Array sh a)
-> CodeGen Native (IROpenAcc Native aenv (Array sh b))
mkStencil1
stencil2 :: UID
-> Gamma aenv
-> StencilR sh a stencil1
-> StencilR sh b stencil2
-> TypeR c
-> IRFun2 Native aenv (stencil1 -> stencil2 -> c)
-> IRBoundary Native aenv (Array sh a)
-> MIRDelayed Native aenv (Array sh a)
-> IRBoundary Native aenv (Array sh b)
-> MIRDelayed Native aenv (Array sh b)
-> CodeGen Native (IROpenAcc Native aenv (Array sh c))
stencil2 = UID
-> Gamma aenv
-> StencilR sh a stencil1
-> StencilR sh b stencil2
-> TypeR c
-> IRFun2 Native aenv (stencil1 -> stencil2 -> c)
-> IRBoundary Native aenv (Array sh a)
-> MIRDelayed Native aenv (Array sh a)
-> IRBoundary Native aenv (Array sh b)
-> MIRDelayed Native aenv (Array sh b)
-> CodeGen Native (IROpenAcc Native aenv (Array sh c))
forall aenv sh a stencil1 b stencil2 c.
UID
-> Gamma aenv
-> StencilR sh a stencil1
-> StencilR sh b stencil2
-> TypeR c
-> IRFun2 Native aenv (stencil1 -> stencil2 -> c)
-> IRBoundary Native aenv (Array sh a)
-> MIRDelayed Native aenv (Array sh a)
-> IRBoundary Native aenv (Array sh b)
-> MIRDelayed Native aenv (Array sh b)
-> CodeGen Native (IROpenAcc Native aenv (Array sh c))
mkStencil2