{-# OPTIONS -fno-warn-orphans #-} -- | `DPrim` and `DT` instances for scalar types. module Data.Array.Parallel.Unlifted.Distributed.Data.Scalar.Base where import Data.Array.Parallel.Unlifted.Distributed.Primitive.DPrim import Data.Array.Parallel.Unlifted.Distributed.Primitive import Data.Word import qualified Data.Array.Parallel.Unlifted.Sequential.Vector as V import qualified Data.Vector.Unboxed.Mutable as MV import Prelude as P -- Integer ----------------------------------------------------------------------- -- FIXME: fake instances instance DPrim Integer instance DT Integer -- Char ----------------------------------------------------------------------- instance DPrim Char where mkDPrim = DChar unDPrim (DChar a) = a mkMDPrim = MDChar unMDPrim (MDChar a) = a instance DT Char where data Dist Char = DChar !(V.Vector Char) data MDist Char s = MDChar !(MV.STVector s Char) indexD = primIndexD newMD = primNewMD readMD = primReadMD writeMD = primWriteMD unsafeFreezeMD = primUnsafeFreezeMD sizeD = primSizeD sizeMD = primSizeMD -- Int ------------------------------------------------------------------------ instance DPrim Int where mkDPrim = DInt unDPrim (DInt a) = a mkMDPrim = MDInt unMDPrim (MDInt a) = a instance DT Int where data Dist Int = DInt !(V.Vector Int) data MDist Int s = MDInt !(MV.STVector s Int) indexD = primIndexD newMD = primNewMD readMD = primReadMD writeMD = primWriteMD unsafeFreezeMD = primUnsafeFreezeMD sizeD = primSizeD sizeMD = primSizeMD measureD n = "Int " P.++ show n -- Word8 ---------------------------------------------------------------------- instance DPrim Word8 where mkDPrim = DWord8 unDPrim (DWord8 a) = a mkMDPrim = MDWord8 unMDPrim (MDWord8 a) = a instance DT Word8 where data Dist Word8 = DWord8 !(V.Vector Word8) data MDist Word8 s = MDWord8 !(MV.STVector s Word8) indexD = primIndexD newMD = primNewMD readMD = primReadMD writeMD = primWriteMD unsafeFreezeMD = primUnsafeFreezeMD sizeD = primSizeD sizeMD = primSizeMD -- Float ---------------------------------------------------------------------- instance DPrim Float where mkDPrim = DFloat unDPrim (DFloat a) = a mkMDPrim = MDFloat unMDPrim (MDFloat a) = a instance DT Float where data Dist Float = DFloat !(V.Vector Float) data MDist Float s = MDFloat !(MV.STVector s Float) indexD = primIndexD newMD = primNewMD readMD = primReadMD writeMD = primWriteMD unsafeFreezeMD = primUnsafeFreezeMD sizeD = primSizeD sizeMD = primSizeMD -- Double --------------------------------------------------------------------- instance DPrim Double where mkDPrim = DDouble unDPrim (DDouble a) = a mkMDPrim = MDDouble unMDPrim (MDDouble a) = a instance DT Double where data Dist Double = DDouble !(V.Vector Double) data MDist Double s = MDDouble !(MV.STVector s Double) indexD = primIndexD newMD = primNewMD readMD = primReadMD writeMD = primWriteMD unsafeFreezeMD = primUnsafeFreezeMD sizeD = primSizeD sizeMD = primSizeMD