{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE CPP #-}
module GHC.Word.Compat (W.Word8,
W.Word16,
W.Word32,
W.Word64,
W.Word(..),
#if MIN_VERSION_ghc_prim(0,8,0)
pattern GHC.Word.Compat.W8#,
pattern GHC.Word.Compat.W16#,
pattern GHC.Word.Compat.W32#,
#else
pattern W.W8#,
pattern W.W16#,
pattern W.W32#,
#endif
#if MIN_VERSION_ghc_prim(0,9,0)
pattern GHC.Word.Compat.W64#,
#else
pattern W.W64#,
#endif
uncheckedShiftL64#,
uncheckedShiftRL64#,
byteSwap16,
byteSwap32,
byteSwap64,
#if MIN_VERSION_base(4,14,0)
bitReverse8,
bitReverse16,
bitReverse32,
bitReverse64,
#endif
eqWord, neWord, gtWord, geWord, ltWord, leWord,
eqWord8, neWord8, gtWord8, geWord8, ltWord8, leWord8,
eqWord16, neWord16, gtWord16, geWord16, ltWord16, leWord16,
eqWord32, neWord32, gtWord32, geWord32, ltWord32, leWord32,
eqWord64, neWord64, gtWord64, geWord64, ltWord64, leWord64) where
import GHC.Word hiding (Word8(..), Word16(..), Word32(..), Word64(..))
import qualified GHC.Word as W
#if MIN_VERSION_ghc_prim(0,8,0)
import GHC.Prim
pattern W8# :: Word# -> W.Word8
pattern $bW8# :: Word# -> Word8
$mW8# :: forall {r}. Word8 -> (Word# -> r) -> ((# #) -> r) -> r
W8# x <- (W.W8# (word8ToWord# -> x)) where
W8# Word#
x = Word8# -> Word8
W.W8# (Word# -> Word8#
wordToWord8# Word#
x)
{-# COMPLETE W8# #-}
pattern W16# :: Word# -> W.Word16
pattern $bW16# :: Word# -> Word16
$mW16# :: forall {r}. Word16 -> (Word# -> r) -> ((# #) -> r) -> r
W16# x <- (W.W16# (word16ToWord# -> x)) where
W16# Word#
x = Word16# -> Word16
W.W16# (Word# -> Word16#
wordToWord16# Word#
x)
{-# COMPLETE W16# #-}
pattern W32# :: Word# -> W.Word32
pattern $bW32# :: Word# -> Word32
$mW32# :: forall {r}. Word32 -> (Word# -> r) -> ((# #) -> r) -> r
W32# x <- (W.W32# (word32ToWord# -> x)) where
W32# Word#
x = Word32# -> Word32
W.W32# (Word# -> Word32#
wordToWord32# Word#
x)
{-# COMPLETE W32# #-}
#endif
#if MIN_VERSION_ghc_prim(0,9,0)
pattern W64# :: Word# -> W.Word64
pattern W64# x <- (W.W64# (word64ToWord# -> x)) where
W64# x = W.W64# (wordToWord64# x)
{-# COMPLETE W64# #-}
#endif