module HaskellWorks.Prim.Bits
  ( Pdep(..)
  , Pext(..)
  , module X
  ) where

import Data.Word
import HaskellWorks.Prim.Bits.Fast as X

class Pdep a where
  pdep :: a -> a -> a

instance Pdep Word64 where
  pdep :: Word64 -> Word64 -> Word64
pdep = Word64 -> Word64 -> Word64
pdep64
  {-# INLINE pdep #-}

instance Pdep Word32 where
  pdep :: Word32 -> Word32 -> Word32
pdep = Word32 -> Word32 -> Word32
pdep32
  {-# INLINE pdep #-}

class Pext a where
  pext :: a -> a -> a

instance Pext Word64 where
  pext :: Word64 -> Word64 -> Word64
pext = Word64 -> Word64 -> Word64
pext64
  {-# INLINE pext #-}

instance Pext Word32 where
  pext :: Word32 -> Word32 -> Word32
pext = Word32 -> Word32 -> Word32
pext32
  {-# INLINE pext #-}