{-# LANGUAGE GADTs #-}
{-# LANGUAGE TypeFamilies #-}
module Data.Array.Accelerate.Numeric.LinearAlgebra.LLVM.Native.Base
where
import Data.Array.Accelerate.Representation.Array
import Data.Array.Accelerate.Array.Data
import Data.Array.Accelerate.Array.Unique
import Data.Primitive.Vec
import Data.Array.Accelerate.Numeric.LinearAlgebra.Type
import Foreign.Ptr (Ptr)
import qualified Blas.Primitive.Types as C
type family ArrayPtrs e :: *
type instance ArrayPtrs Float = Ptr Float
type instance ArrayPtrs Double = Ptr Double
type instance ArrayPtrs (Vec2 Float) = Ptr Float
type instance ArrayPtrs (Vec2 Double) = Ptr Double
encodeTranspose :: Transpose -> C.Transpose
encodeTranspose :: Transpose -> Transpose
encodeTranspose Transpose
N = Transpose
C.NoTrans
encodeTranspose Transpose
T = Transpose
C.Trans
encodeTranspose Transpose
H = Transpose
C.ConjTrans
{-# INLINE withArray #-}
withArray
:: NumericR s e
-> Array sh e
-> (ArrayPtrs e -> IO b)
-> IO b
withArray :: NumericR s e -> Array sh e -> (ArrayPtrs e -> IO b) -> IO b
withArray NumericR s e
nR (Array sh
_ ArrayData e
ad) ArrayPtrs e -> IO b
k = NumericR s e -> ArrayData e -> (ArrayPtrs e -> IO b) -> IO b
forall s e b.
NumericR s e -> ArrayData e -> (ArrayPtrs e -> IO b) -> IO b
withArrayData NumericR s e
nR ArrayData e
ad ArrayPtrs e -> IO b
k
{-# INLINE withArrayData #-}
withArrayData
:: NumericR s e
-> ArrayData e
-> (ArrayPtrs e -> IO b)
-> IO b
withArrayData :: NumericR s e -> ArrayData e -> (ArrayPtrs e -> IO b) -> IO b
withArrayData NumericR s e
NumericRfloat32 = ArrayData e -> (ArrayPtrs e -> IO b) -> IO b
forall a b. UniqueArray a -> (Ptr a -> IO b) -> IO b
withUniqueArrayPtr
withArrayData NumericR s e
NumericRfloat64 = ArrayData e -> (ArrayPtrs e -> IO b) -> IO b
forall a b. UniqueArray a -> (Ptr a -> IO b) -> IO b
withUniqueArrayPtr
withArrayData NumericR s e
NumericRcomplex32 = ArrayData e -> (ArrayPtrs e -> IO b) -> IO b
forall a b. UniqueArray a -> (Ptr a -> IO b) -> IO b
withUniqueArrayPtr
withArrayData NumericR s e
NumericRcomplex64 = ArrayData e -> (ArrayPtrs e -> IO b) -> IO b
forall a b. UniqueArray a -> (Ptr a -> IO b) -> IO b
withUniqueArrayPtr