    {-# OPTIONS_GHC -XNoImplicitPrelude #-}
    {-# OPTIONS_HADDOCK hide #-}
    -----------------------------------------------------------------------------
    -- |
    -- Module      :  GHC.IntWord32
    -- Copyright   :  (c) The University of Glasgow, 1997-2008
    -- License     :  see libraries/ghc-prim/LICENSE
    --
    -- Maintainer  :  cvs-ghc@haskell.org
    -- Stability   :  internal
    -- Portability :  non-portable (GHC Extensions)
    --
    -- Primitive operations on Int32# and Word32# on platforms where
    -- WORD_SIZE_IN_BITS < 32.
    --
    -----------------------------------------------------------------------------

    #include "MachDeps.h"

    -- #hide
    module GHC.IntWord32 (
    #if WORD_SIZE_IN_BITS < 32
        Int32#, Word32#, module GHC.IntWord32
    #endif
     ) where

    #if WORD_SIZE_IN_BITS < 32
    import GHC.Bool
    import GHC.Prim

    foreign import unsafe "stg_eqWord32"      eqWord32#      :: Word32# -> Word32# -> Bool
    foreign import unsafe "stg_neWord32"      neWord32#      :: Word32# -> Word32# -> Bool
    foreign import unsafe "stg_ltWord32"      ltWord32#      :: Word32# -> Word32# -> Bool
    foreign import unsafe "stg_leWord32"      leWord32#      :: Word32# -> Word32# -> Bool
    foreign import unsafe "stg_gtWord32"      gtWord32#      :: Word32# -> Word32# -> Bool
    foreign import unsafe "stg_geWord32"      geWord32#      :: Word32# -> Word32# -> Bool

    foreign import unsafe "stg_eqInt32"       eqInt32#       :: Int32# -> Int32# -> Bool
    foreign import unsafe "stg_neInt32"       neInt32#       :: Int32# -> Int32# -> Bool
    foreign import unsafe "stg_ltInt32"       ltInt32#       :: Int32# -> Int32# -> Bool
    foreign import unsafe "stg_leInt32"       leInt32#       :: Int32# -> Int32# -> Bool
    foreign import unsafe "stg_gtInt32"       gtInt32#       :: Int32# -> Int32# -> Bool
    foreign import unsafe "stg_geInt32"       geInt32#       :: Int32# -> Int32# -> Bool

    foreign import unsafe "stg_int32ToWord32" int32ToWord32# :: Int32# -> Word32#
    foreign import unsafe "stg_word32ToInt32" word32ToInt32# :: Word32# -> Int32#
    foreign import unsafe "stg_intToInt32"    intToInt32#    :: Int# -> Int32#
    foreign import unsafe "stg_wordToWord32"  wordToWord32#  :: Word# -> Word32#
    foreign import unsafe "stg_word32ToWord"  word32ToWord#  :: Word32# -> Word#

    foreign import unsafe "stg_plusInt32"     plusInt32#     :: Int32# -> Int32# -> Int32#
    foreign import unsafe "stg_minusInt32"    minusInt32#    :: Int32# -> Int32# -> Int32#
    foreign import unsafe "stg_timesInt32"    timesInt32#    :: Int32# -> Int32# -> Int32#
    foreign import unsafe "stg_negateInt32"   negateInt32#   :: Int32# -> Int32#
    foreign import unsafe "stg_quotInt32"     quotInt32#     :: Int32# -> Int32# -> Int32#
    foreign import unsafe "stg_remInt32"      remInt32#      :: Int32# -> Int32# -> Int32#
    foreign import unsafe "stg_quotWord32"    quotWord32#    :: Word32# -> Word32# -> Word32#
    foreign import unsafe "stg_remWord32"     remWord32#     :: Word32# -> Word32# -> Word32#

    foreign import unsafe "stg_and32"         and32#         :: Word32# -> Word32# -> Word32#
    foreign import unsafe "stg_or32"          or32#          :: Word32# -> Word32# -> Word32#
    foreign import unsafe "stg_xor32"         xor32#         :: Word32# -> Word32# -> Word32#
    foreign import unsafe "stg_not32"         not32#         :: Word32# -> Word32#

    foreign import unsafe "stg_iShiftL32"     iShiftL32#     :: Int32# -> Int# -> Int32#
    foreign import unsafe "stg_iShiftRA32"    iShiftRA32#    :: Int32# -> Int# -> Int32#
    foreign import unsafe "stg_shiftL32"      shiftL32#      :: Word32# -> Int# -> Word32#
    foreign import unsafe "stg_shiftRL32"     shiftRL32#     :: Word32# -> Int# -> Word32#

    #endif