{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE CPP #-}
module GHC.Word.Compat (Word8, pattern GHC.Word.Compat.W8#,
Word16, pattern GHC.Word.Compat.W16#,
Word32, pattern GHC.Word.Compat.W32#,
Word64(..),
Word(..),
uncheckedShiftL64#,
uncheckedShiftRL64#,
byteSwap16,
byteSwap32,
byteSwap64,
#if MIN_VERSION_base(4,12,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.Prim
import GHC.Word as W
pattern W8# :: Word# -> Word8
#if MIN_VERSION_ghc_prim(0,8,0)
pattern W8# x <- (W.W8# (word8ToWord# -> x)) where
W8# x = W.W8# (wordToWord8# x)
#else
pattern $bW8# :: Word# -> Word8
$mW8# :: forall r. Word8 -> (Word# -> r) -> (Void# -> r) -> r
W8# x = W.W8# x
#endif
pattern W16# :: Word# -> Word16
#if MIN_VERSION_ghc_prim(0,8,0)
pattern W16# x <- (W.W16# (word16ToWord# -> x)) where
W16# x = W.W16# (wordToWord16# x)
#else
pattern $bW16# :: Word# -> Word16
$mW16# :: forall r. Word16 -> (Word# -> r) -> (Void# -> r) -> r
W16# x = W.W16# x
#endif
pattern W32# :: Word# -> Word32
#if MIN_VERSION_ghc_prim(0,8,0)
pattern W32# x <- (W.W32# (word32ToWord# -> x)) where
W32# x = W.W32# (wordToWord32# x)
#else
pattern $bW32# :: Word# -> Word32
$mW32# :: forall r. Word32 -> (Word# -> r) -> (Void# -> r) -> r
W32# x = W.W32# x
#endif