{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Data.Array.Accelerate.LLVM.Native.Execute.Marshal ( module M )
where
import Data.Array.Accelerate.LLVM.Execute.Marshal as M
import Data.Array.Accelerate.Array.Unique
import Data.Array.Accelerate.LLVM.Native.Execute.Async ()
import Data.Array.Accelerate.LLVM.Native.Target
import qualified Data.DList as DL
import qualified Foreign.LibFFI as FFI
instance Marshal Native where
type ArgR Native = FFI.Arg
marshalInt :: Int -> ArgR Native
marshalInt = Int -> ArgR Native
Int -> Arg
FFI.argInt
marshalScalarData' :: SingleType e
-> ScalarArrayData e -> Par Native (DList (ArgR Native))
marshalScalarData' SingleType e
_ = DList Arg -> Par Native (DList Arg)
forall (m :: * -> *) a. Monad m => a -> m a
return (DList Arg -> Par Native (DList Arg))
-> (ScalarArrayData e -> DList Arg)
-> ScalarArrayData e
-> Par Native (DList Arg)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Arg -> DList Arg
forall a. a -> DList a
DL.singleton (Arg -> DList Arg)
-> (ScalarArrayData e -> Arg) -> ScalarArrayData e -> DList Arg
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Ptr (ScalarArrayDataR e) -> Arg
forall a. Ptr a -> Arg
FFI.argPtr (Ptr (ScalarArrayDataR e) -> Arg)
-> (ScalarArrayData e -> Ptr (ScalarArrayDataR e))
-> ScalarArrayData e
-> Arg
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ScalarArrayData e -> Ptr (ScalarArrayDataR e)
forall a. UniqueArray a -> Ptr a
unsafeUniqueArrayPtr