GHC/CmmToAsm/PPC/Cond.hs

    module GHC.CmmToAsm.PPC.Cond (
            Cond(..),
            condNegate,
            condUnsigned,
    )

    where

    import GHC.Prelude

    import GHC.Utils.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