{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_HADDOCK hide #-}
module Data.Array.Accelerate.LLVM.Foreign
where
import Data.Array.Accelerate.Array.Sugar as A
import Data.Array.Accelerate.LLVM.CodeGen.Sugar
import Data.Array.Accelerate.LLVM.Execute.Async
import Data.Array.Accelerate.LLVM.State
import Data.Typeable
class Foreign arch where
foreignAcc :: (A.Foreign asm, Typeable a, Typeable b)
=> arch
-> asm (a -> b)
-> Maybe (StreamR arch -> a -> LLVM arch b)
foreignAcc _ _ = Nothing
foreignExp :: (A.Foreign asm, Typeable x, Typeable y)
=> arch
-> asm (x -> y)
-> Maybe (IRFun1 arch () (x -> y))
foreignExp _ _ = Nothing