@@ -24,7 +24,7 @@ module Streamly.Internal.Data.Unboxed
24import Data.Complex (Complex((:+)))
24import Data.Complex (Complex((:+)))
25import GHC.Base (IO(..))
25import GHC.Base (IO(..))
26import GHC.Int (Int32(..), Int64(..))
26import GHC.Int (Int32(..), Int64(..))
27−import GHC.Word (Word8(..), Word64(..))
27+import GHC.Word (Word32(..), Word64(..), Word8(..))
28import Foreign.Storable (Storable(..))
28import Foreign.Storable (Storable(..))
30import GHC.Exts
30import GHC.Exts
@@ -119,6 +119,7 @@ unpin arr@(MutableByteArray marr#) =
119#define SIZEOF_HSINT_PRIMITIVE 8#
119#define SIZEOF_HSINT_PRIMITIVE 8#
120#define SIZEOF_HSWORD_PRIMITIVE 8#
120#define SIZEOF_HSWORD_PRIMITIVE 8#
121#define SIZEOF_WORD8_PRIMITIVE 1#
121#define SIZEOF_WORD8_PRIMITIVE 1#
122+#define SIZEOF_WORD32_PRIMITIVE 4#
122#define SIZEOF_WORD64_PRIMITIVE 8#
123#define SIZEOF_WORD64_PRIMITIVE 8#
123#define SIZEOF_HSDOUBLE_PRIMITIVE 8#
124#define SIZEOF_HSDOUBLE_PRIMITIVE 8#
124#define SIZEOF_INT32_PRIMITIVE 4#
125#define SIZEOF_INT32_PRIMITIVE 4#
@@ -196,6 +197,18 @@ writeWord8ArrayAsWord# ::
196writeWord8ArrayAsWord# arr# i# =
197writeWord8ArrayAsWord# arr# i# =
197 writeWordArray# arr# (quotInt# i# SIZEOF_HSWORD_PRIMITIVE)
198 writeWordArray# arr# (quotInt# i# SIZEOF_HSWORD_PRIMITIVE)
200+{-# INLINE readWord8ArrayAsWord32# #-}
201+readWord8ArrayAsWord32# ::
202+ MutableByteArray# d -> Int# -> State# d -> (# State# d, Word# #)
203+readWord8ArrayAsWord32# arr# i# =
204+ readWord32Array# arr# (quotInt# i# SIZEOF_WORD32_PRIMITIVE)
206+{-# INLINE writeWord8ArrayAsWord32# #-}
207+writeWord8ArrayAsWord32# ::
208+ MutableByteArray# d -> Int# -> Word# -> State# d -> State# d
209+writeWord8ArrayAsWord32# arr# i# =
210+ writeWord32Array# arr# (quotInt# i# SIZEOF_WORD32_PRIMITIVE)
199{-# INLINE readWord8ArrayAsWord64# #-}
212{-# INLINE readWord8ArrayAsWord64# #-}
200readWord8ArrayAsWord64# ::
213readWord8ArrayAsWord64# ::
201 MutableByteArray# d -> Int# -> State# d -> (# State# d, WORD64TYP #)
214 MutableByteArray# d -> Int# -> State# d -> (# State# d, WORD64TYP #)
@@ -313,6 +326,11 @@ DERIVE_UNBOXED( Word8
313 , readWord8Array#
326 , readWord8Array#
314 , writeWord8Array#)
327 , writeWord8Array#)
329+DERIVE_UNBOXED( Word32
331+ , readWord8ArrayAsWord32#
332+ , writeWord8ArrayAsWord32#)
316DERIVE_UNBOXED( Word64
334DERIVE_UNBOXED( Word64
318 , readWord8ArrayAsWord64#
336 , readWord8ArrayAsWord64#