hw-simd 0.1.0.0 → 0.1.0.2
raw patch · 4 files changed
+36/−3 lines, 4 filesdep ~criterionPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependency ranges changed: criterion
API changes (from Hackage documentation)
+ HaskellWorks.Data.Simd.Comparison: instance HaskellWorks.Data.Simd.Comparison.CmpEqWord8s (Data.Vector.Storable.Vector GHC.Word.Word8)
+ HaskellWorks.Data.Simd.Comparison: instance HaskellWorks.Data.Simd.Comparison.CmpEqWord8s [Data.Vector.Storable.Vector GHC.Word.Word64]
+ HaskellWorks.Data.Simd.Comparison: instance HaskellWorks.Data.Simd.Comparison.CmpEqWord8s [Data.Vector.Storable.Vector GHC.Word.Word8]
+ HaskellWorks.Data.Simd.Comparison.Avx2: instance HaskellWorks.Data.Simd.Comparison.Avx2.CmpEqWord8s (Data.Vector.Storable.Vector GHC.Word.Word8)
+ HaskellWorks.Data.Simd.Comparison.Avx2: instance HaskellWorks.Data.Simd.Comparison.Avx2.CmpEqWord8s [Data.Vector.Storable.Vector GHC.Word.Word8]
+ HaskellWorks.Data.Simd.Comparison.Stock: instance HaskellWorks.Data.Simd.Comparison.Stock.CmpEqWord8s (Data.Vector.Storable.Vector GHC.Word.Word8)
+ HaskellWorks.Data.Simd.Comparison.Stock: instance HaskellWorks.Data.Simd.Comparison.Stock.CmpEqWord8s [Data.Vector.Storable.Vector GHC.Word.Word8]
Files
- hw-simd.cabal +2/−2
- src/HaskellWorks/Data/Simd/Comparison.hs +19/−1
- src/HaskellWorks/Data/Simd/Comparison/Avx2.hs +7/−0
- src/HaskellWorks/Data/Simd/Comparison/Stock.hs +8/−0
hw-simd.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: hw-simd-version: 0.1.0.0+version: 0.1.0.2 synopsis: SIMD library description: Please see the README on Github at <https://github.com/haskell-works/hw-simd#readme> category: Data, Bit, SIMD@@ -166,7 +166,7 @@ , vector >= 0.12.0.1 && < 0.13 , cassava >= 0.5.1.0 && < 0.6 , containers- , criterion >= 1.4.1.0 && < 1.5+ , criterion >= 1.4.1.0 && < 1.6 , directory >= 1.3.1.5 && < 1.4 , hw-simd , mmap >= 0.5.9 && < 0.6
src/HaskellWorks/Data/Simd/Comparison.hs view
@@ -17,6 +17,24 @@ instance CmpEqWord8s (DVS.Vector Word64) where cmpEqWord8s w bs = if- | avx2Enabled -> AVX2.cmpEqWord8s w bs+ | avx2Enabled -> AVX2.cmpEqWord8s w bs+ | True -> STOCK.cmpEqWord8s w bs+ {-# INLINE cmpEqWord8s #-}++instance CmpEqWord8s (DVS.Vector Word8) where+ cmpEqWord8s w bs = if+ | avx2Enabled -> AVX2.cmpEqWord8s w bs+ | True -> STOCK.cmpEqWord8s w bs+ {-# INLINE cmpEqWord8s #-}++instance CmpEqWord8s [DVS.Vector Word64] where+ cmpEqWord8s w bs = if+ | avx2Enabled -> AVX2.cmpEqWord8s w bs+ | True -> STOCK.cmpEqWord8s w bs+ {-# INLINE cmpEqWord8s #-}++instance CmpEqWord8s [DVS.Vector Word8] where+ cmpEqWord8s w bs = if+ | avx2Enabled -> AVX2.cmpEqWord8s w bs | True -> STOCK.cmpEqWord8s w bs {-# INLINE cmpEqWord8s #-}
src/HaskellWorks/Data/Simd/Comparison/Avx2.hs view
@@ -17,6 +17,9 @@ class CmpEqWord8s a where cmpEqWord8s :: Word8 -> a -> a +instance CmpEqWord8s (DVS.Vector Word8) where+ cmpEqWord8s w8 v = DVS.unsafeCast (cmpEqWord8s w8 (DVS.unsafeCast v :: DVS.Vector Word64))+ instance CmpEqWord8s (DVS.Vector Word64) where cmpEqWord8s w8 v = case DVS.unsafeCast v :: DVS.Vector Word8 of u -> case DVS.unsafeToForeignPtr u of@@ -37,5 +40,9 @@ {-# INLINE cmpEqWord8s #-} instance CmpEqWord8s [DVS.Vector Word64] where+ cmpEqWord8s w8 vs = cmpEqWord8s w8 <$> vs+ {-# INLINE cmpEqWord8s #-}++instance CmpEqWord8s [DVS.Vector Word8] where cmpEqWord8s w8 vs = cmpEqWord8s w8 <$> vs {-# INLINE cmpEqWord8s #-}
src/HaskellWorks/Data/Simd/Comparison/Stock.hs view
@@ -15,6 +15,9 @@ class CmpEqWord8s a where cmpEqWord8s :: Word8 -> a -> a +instance CmpEqWord8s (DVS.Vector Word8) where+ cmpEqWord8s w8 v = DVS.unsafeCast (cmpEqWord8s w8 (DVS.unsafeCast v :: DVS.Vector Word64))+ instance CmpEqWord8s (DVS.Vector Word64) where cmpEqWord8s w8 v = DVS.constructN ((DVS.length v + 7) `div` 8) go where iw = fillWord64 w8@@ -62,3 +65,8 @@ instance CmpEqWord8s [DVS.Vector Word64] where cmpEqWord8s w8 vs = cmpEqWord8s w8 <$> vs {-# INLINE cmpEqWord8s #-}++instance CmpEqWord8s [DVS.Vector Word8] where+ cmpEqWord8s w8 vs = cmpEqWord8s w8 <$> vs+ {-# INLINE cmpEqWord8s #-}+