1module SPARC.Cond (
2        Cond(..),
3        condUnsigned,
4        condToSigned,
5        condToUnsigned
6)
7
8where
9
10import GhcPrelude
11
12-- | Branch condition codes.
13data Cond
14        = ALWAYS
15        | EQQ
16        | GE
17        | GEU
18        | GTT
19        | GU
20        | LE
21        | LEU
22        | LTT
23        | LU
24        | NE
25        | NEG
26        | NEVER
27        | POS
28        | VC
29        | VS
30        deriving Eq
31
32
33condUnsigned :: Cond -> Bool
34condUnsigned GU  = True
35condUnsigned LU  = True
36condUnsigned GEU = True
37condUnsigned LEU = True
38condUnsigned _   = False
39
40
41condToSigned :: Cond -> Cond
42condToSigned GU  = GTT
43condToSigned LU  = LTT
44condToSigned GEU = GE
45condToSigned LEU = LE
46condToSigned x   = x
47
48
49condToUnsigned :: Cond -> Cond
50condToUnsigned GTT = GU
51condToUnsigned LTT = LU
52condToUnsigned GE  = GEU
53condToUnsigned LE  = LEU
54condToUnsigned x   = x
55