word-compat-0.0: src/GHC/Word/Compat.hs
{-# 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(..),
-- * Shifts
uncheckedShiftL64#,
uncheckedShiftRL64#,
-- * Byte swapping
byteSwap16,
byteSwap32,
byteSwap64,
-- * Bit reversal
bitReverse8,
bitReverse16,
bitReverse32,
bitReverse64,
-- * Equality operators
-- | See GHC.Classes#matching_overloaded_methods_in_rules
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 W8# = W8#
#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 W16# = W16#
#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 W32# = W32#
#endif