nativeGen/PPC/Cond.hs

    {-# OPTIONS -fno-warn-tabs #-}
    -- The above warning supression flag is a temporary kludge.
    -- While working on this module you are encouraged to remove it and
    -- detab the module (please do the detabbing in a separate patch). See
    --     http://ghc.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#TabsvsSpaces
    -- for details

    module PPC.Cond (
    	Cond(..),
    	condNegate,
    	condUnsigned,
    	condToSigned,
    	condToUnsigned,
    )

    where

    import Panic

    data Cond
    	= ALWAYS
    	| EQQ
    	| GE
    	| GEU
    	| GTT
    	| GU
    	| LE
    	| LEU
    	| LTT
    	| LU
    	| NE
    	deriving Eq

    condNegate :: Cond -> Cond
    condNegate ALWAYS  = panic "condNegate: ALWAYS"
    condNegate EQQ     = NE
    condNegate GE      = LTT
    condNegate GEU     = LU
    condNegate GTT     = LE
    condNegate GU      = LEU
    condNegate LE      = GTT
    condNegate LEU     = GU
    condNegate LTT     = GE
    condNegate LU      = GEU
    condNegate NE      = EQQ

    -- Condition utils
    condUnsigned :: Cond -> Bool
    condUnsigned GU  = True
    condUnsigned LU  = True
    condUnsigned GEU = True
    condUnsigned LEU = True
    condUnsigned _   = False

    condToSigned :: Cond -> Cond
    condToSigned GU  = GTT
    condToSigned LU  = LTT
    condToSigned GEU = GE
    condToSigned LEU = LE
    condToSigned x   = x

    condToUnsigned :: Cond -> Cond
    condToUnsigned GTT = GU
    condToUnsigned LTT = LU
    condToUnsigned GE  = GEU
    condToUnsigned LE  = LEU
    condToUnsigned x   = x