    -- |
    -- Module      : Data.Memory.ExtendedWords
    -- License     : BSD-style
    -- Maintainer  : Vincent Hanquez <vincent@snarc.org>
    -- Stability   : experimental
    -- Portability : unknown
    --
    -- Extra Word size
    --
    module Data.Memory.ExtendedWords
        ( Word128(..)
        ) where

    import Data.Word (Word64)

    -- | A simple Extended Word128 composed of 2 Word64
    data Word128 = Word128 !Word64 !Word64 deriving (Int -> Word128 -> ShowS
    [Word128] -> ShowS
    Word128 -> String
    (Int -> Word128 -> ShowS)
    -> (Word128 -> String) -> ([Word128] -> ShowS) -> Show Word128
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> Word128 -> ShowS
    showsPrec :: Int -> Word128 -> ShowS
    $cshow :: Word128 -> String
    show :: Word128 -> String
    $cshowList :: [Word128] -> ShowS
    showList :: [Word128] -> ShowS
    Show, Word128 -> Word128 -> Bool
    (Word128 -> Word128 -> Bool)
    -> (Word128 -> Word128 -> Bool) -> Eq Word128
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: Word128 -> Word128 -> Bool
    == :: Word128 -> Word128 -> Bool
    $c/= :: Word128 -> Word128 -> Bool
    /= :: Word128 -> Word128 -> Bool
    Eq)