hw-prim 0.6.2.23 → 0.6.2.24
raw patch · 2 files changed
+145/−51 lines, 2 filesdep +ghc-primdep ~QuickCheckdep ~hedgehogdep ~hspecPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependencies added: ghc-prim
Dependency ranges changed: QuickCheck, hedgehog, hspec
API changes (from Hackage documentation)
+ HaskellWorks.Data.Branchless: geWord16 :: Word16 -> Word16 -> Word16
+ HaskellWorks.Data.Branchless: geWord32 :: Word32 -> Word32 -> Word32
+ HaskellWorks.Data.Branchless: geWord64 :: Word64 -> Word64 -> Word64
+ HaskellWorks.Data.Branchless: geWord8 :: Word8 -> Word8 -> Word8
+ HaskellWorks.Data.Branchless: gtWord16 :: Word16 -> Word16 -> Word16
+ HaskellWorks.Data.Branchless: gtWord32 :: Word32 -> Word32 -> Word32
+ HaskellWorks.Data.Branchless: gtWord64 :: Word64 -> Word64 -> Word64
+ HaskellWorks.Data.Branchless: gtWord8 :: Word8 -> Word8 -> Word8
+ HaskellWorks.Data.Branchless: leWord16 :: Word16 -> Word16 -> Word16
+ HaskellWorks.Data.Branchless: leWord32 :: Word32 -> Word32 -> Word32
+ HaskellWorks.Data.Branchless: leWord64 :: Word64 -> Word64 -> Word64
+ HaskellWorks.Data.Branchless: leWord8 :: Word8 -> Word8 -> Word8
+ HaskellWorks.Data.Branchless: ltWord16 :: Word16 -> Word16 -> Word16
+ HaskellWorks.Data.Branchless: ltWord32 :: Word32 -> Word32 -> Word32
+ HaskellWorks.Data.Branchless: ltWord64 :: Word64 -> Word64 -> Word64
+ HaskellWorks.Data.Branchless: ltWord8 :: Word8 -> Word8 -> Word8
Files
- hw-prim.cabal +54/−51
- src/HaskellWorks/Data/Branchless.hs +91/−0
hw-prim.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2 name: hw-prim-version: 0.6.2.23+version: 0.6.2.24 synopsis: Primitive functions and data types description: Primitive functions and data types. category: Data@@ -10,10 +10,10 @@ bug-reports: https://github.com/haskell-works/hw-prim/issues author: John Ky maintainer: newhoggy@gmail.com-copyright: 2016-2018 John Ky+copyright: 2016-2019 John Ky license: BSD-3-Clause license-file: LICENSE-tested-with: GHC == 8.6.3, GHC == 8.4.4, GHC == 8.2.2, GHC == 8.0.2+tested-with: GHC == 8.6.5, GHC == 8.4.4, GHC == 8.2.2 build-type: Simple extra-source-files: README.md@@ -34,11 +34,12 @@ common criterion { build-depends: criterion >= 1.2 && < 1.6 } common directory { build-depends: directory >= 1.2 && < 1.4 } common exceptions { build-depends: exceptions >= 0.8 && < 0.11 }-common hedgehog { build-depends: hedgehog >= 0.5 && < 0.7 }+common ghc-prim { build-depends: ghc-prim }+common hedgehog { build-depends: hedgehog >= 0.5 && < 1.1 } common hspec { build-depends: hspec >= 2.4 && < 2.6 } common hw-hspec-hedgehog { build-depends: hw-hspec-hedgehog >= 0.1 && < 0.2 } common mmap { build-depends: mmap >= 0.5 && < 0.6 }-common semigroups { build-depends: semigroups >= 0.8.4 && < 0.19 }+common semigroups { build-depends: semigroups >= 0.8.4 && < 0.20 } common transformers { build-depends: transformers >= 0.4 && < 0.6 } common vector { build-depends: vector >= 0.12 && < 0.13 } @@ -52,47 +53,49 @@ import: base , common , bytestring+ , ghc-prim , mmap , semigroups , transformers , vector exposed-modules:- HaskellWorks.Data.AtIndex- HaskellWorks.Data.ByteString- HaskellWorks.Data.ByteString.Builder- HaskellWorks.Data.ByteString.Lazy- HaskellWorks.Data.Char- HaskellWorks.Data.Char.IsChar- HaskellWorks.Data.Concat- HaskellWorks.Data.Container- HaskellWorks.Data.Decode- HaskellWorks.Data.Drop- HaskellWorks.Data.Empty- HaskellWorks.Data.Filter- HaskellWorks.Data.FromByteString- HaskellWorks.Data.FromForeignRegion- HaskellWorks.Data.Generate- HaskellWorks.Data.Head- HaskellWorks.Data.Length- HaskellWorks.Data.Naive- HaskellWorks.Data.Positioning- HaskellWorks.Data.Product- HaskellWorks.Data.Search- HaskellWorks.Data.Sign- HaskellWorks.Data.Snoc- HaskellWorks.Data.Take- HaskellWorks.Data.TreeCursor- HaskellWorks.Data.Uncons- HaskellWorks.Data.Unsign- HaskellWorks.Data.Vector.AsVector64- HaskellWorks.Data.Vector.AsVector64ns- HaskellWorks.Data.Vector.AsVector64s- HaskellWorks.Data.Vector.AsVector8- HaskellWorks.Data.Vector.AsVector8ns- HaskellWorks.Data.Vector.AsVector8s- HaskellWorks.Data.Vector.BoxedVectorLike- HaskellWorks.Data.Vector.Storable- HaskellWorks.Data.Vector.StorableVectorLike+ HaskellWorks.Data.AtIndex+ HaskellWorks.Data.Branchless+ HaskellWorks.Data.ByteString+ HaskellWorks.Data.ByteString.Builder+ HaskellWorks.Data.ByteString.Lazy+ HaskellWorks.Data.Char+ HaskellWorks.Data.Char.IsChar+ HaskellWorks.Data.Concat+ HaskellWorks.Data.Container+ HaskellWorks.Data.Decode+ HaskellWorks.Data.Drop+ HaskellWorks.Data.Empty+ HaskellWorks.Data.Filter+ HaskellWorks.Data.FromByteString+ HaskellWorks.Data.FromForeignRegion+ HaskellWorks.Data.Generate+ HaskellWorks.Data.Head+ HaskellWorks.Data.Length+ HaskellWorks.Data.Naive+ HaskellWorks.Data.Positioning+ HaskellWorks.Data.Product+ HaskellWorks.Data.Search+ HaskellWorks.Data.Sign+ HaskellWorks.Data.Snoc+ HaskellWorks.Data.Take+ HaskellWorks.Data.TreeCursor+ HaskellWorks.Data.Uncons+ HaskellWorks.Data.Unsign+ HaskellWorks.Data.Vector.AsVector64+ HaskellWorks.Data.Vector.AsVector64ns+ HaskellWorks.Data.Vector.AsVector64s+ HaskellWorks.Data.Vector.AsVector8+ HaskellWorks.Data.Vector.AsVector8ns+ HaskellWorks.Data.Vector.AsVector8s+ HaskellWorks.Data.Vector.BoxedVectorLike+ HaskellWorks.Data.Vector.Storable+ HaskellWorks.Data.Vector.StorableVectorLike other-modules: Paths_hw_prim autogen-modules: Paths_hw_prim hs-source-dirs: src@@ -115,16 +118,16 @@ type: exitcode-stdio-1.0 main-is: Spec.hs other-modules:- HaskellWorks.Data.ByteStringSpec- HaskellWorks.Data.FromByteStringSpec- HaskellWorks.Data.FromForeignRegionSpec- HaskellWorks.Data.SearchSpec- HaskellWorks.Data.Vector.AsVector64nsSpec- HaskellWorks.Data.Vector.AsVector64sSpec- HaskellWorks.Data.Vector.AsVector8nsSpec- HaskellWorks.Data.Vector.AsVector8sSpec- HaskellWorks.Data.Vector.StorableSpec- Paths_hw_prim+ HaskellWorks.Data.ByteStringSpec+ HaskellWorks.Data.FromByteStringSpec+ HaskellWorks.Data.FromForeignRegionSpec+ HaskellWorks.Data.SearchSpec+ HaskellWorks.Data.Vector.AsVector64nsSpec+ HaskellWorks.Data.Vector.AsVector64sSpec+ HaskellWorks.Data.Vector.AsVector8nsSpec+ HaskellWorks.Data.Vector.AsVector8sSpec+ HaskellWorks.Data.Vector.StorableSpec+ Paths_hw_prim autogen-modules: Paths_hw_prim build-depends: hw-prim hs-source-dirs: test
+ src/HaskellWorks/Data/Branchless.hs view
@@ -0,0 +1,91 @@+{-# LANGUAGE MagicHash #-}++module HaskellWorks.Data.Branchless+ ( ltWord8+ , ltWord16+ , ltWord32+ , ltWord64++ , leWord8+ , leWord16+ , leWord32+ , leWord64++ , gtWord8+ , gtWord16+ , gtWord32+ , gtWord64++ , geWord8+ , geWord16+ , geWord32+ , geWord64+ ) where++import GHC.Int+import GHC.Prim+import GHC.Word (Word16 (..), Word32 (..), Word64 (..), Word8 (..))++ltWord8 :: Word8 -> Word8 -> Word8+ltWord8 (W8# a#) (W8# b#) = fromIntegral (I8# (ltWord# a# b#))+{-# INLINE ltWord8 #-}++ltWord16 :: Word16 -> Word16 -> Word16+ltWord16 (W16# a#) (W16# b#) = fromIntegral (I16# (ltWord# a# b#))+{-# INLINE ltWord16 #-}++ltWord32 :: Word32 -> Word32 -> Word32+ltWord32 (W32# a#) (W32# b#) = fromIntegral (I32# (ltWord# a# b#))+{-# INLINE ltWord32 #-}++ltWord64 :: Word64 -> Word64 -> Word64+ltWord64 (W64# a#) (W64# b#) = fromIntegral (I64# (ltWord# a# b#))+{-# INLINE ltWord64 #-}++leWord8 :: Word8 -> Word8 -> Word8+leWord8 (W8# a#) (W8# b#) = fromIntegral (I8# (leWord# a# b#))+{-# INLINE leWord8 #-}++leWord16 :: Word16 -> Word16 -> Word16+leWord16 (W16# a#) (W16# b#) = fromIntegral (I16# (leWord# a# b#))+{-# INLINE leWord16 #-}++leWord32 :: Word32 -> Word32 -> Word32+leWord32 (W32# a#) (W32# b#) = fromIntegral (I32# (leWord# a# b#))+{-# INLINE leWord32 #-}++leWord64 :: Word64 -> Word64 -> Word64+leWord64 (W64# a#) (W64# b#) = fromIntegral (I64# (leWord# a# b#))+{-# INLINE leWord64 #-}++gtWord8 :: Word8 -> Word8 -> Word8+gtWord8 (W8# a#) (W8# b#) = fromIntegral (I8# (gtWord# a# b#))+{-# INLINE gtWord8 #-}++gtWord16 :: Word16 -> Word16 -> Word16+gtWord16 (W16# a#) (W16# b#) = fromIntegral (I16# (gtWord# a# b#))+{-# INLINE gtWord16 #-}++gtWord32 :: Word32 -> Word32 -> Word32+gtWord32 (W32# a#) (W32# b#) = fromIntegral (I32# (gtWord# a# b#))+{-# INLINE gtWord32 #-}++gtWord64 :: Word64 -> Word64 -> Word64+gtWord64 (W64# a#) (W64# b#) = fromIntegral (I64# (gtWord# a# b#))+{-# INLINE gtWord64 #-}++geWord8 :: Word8 -> Word8 -> Word8+geWord8 (W8# a#) (W8# b#) = fromIntegral (I8# (geWord# a# b#))+{-# INLINE geWord8 #-}++geWord16 :: Word16 -> Word16 -> Word16+geWord16 (W16# a#) (W16# b#) = fromIntegral (I16# (geWord# a# b#))+{-# INLINE geWord16 #-}++geWord32 :: Word32 -> Word32 -> Word32+geWord32 (W32# a#) (W32# b#) = fromIntegral (I32# (geWord# a# b#))+{-# INLINE geWord32 #-}++geWord64 :: Word64 -> Word64 -> Word64+geWord64 (W64# a#) (W64# b#) = fromIntegral (I64# (geWord# a# b#))+{-# INLINE geWord64 #-}