-- | An architecture independent description of a register's class. module RegClass ( RegClass (..) ) where import Outputable import Unique -- | The class of a register. -- Used in the register allocator. -- We treat all registers in a class as being interchangable. -- data RegClass = RcInteger | RcFloat | RcDouble | RcDoubleSSE -- x86 only: the SSE regs are a separate class deriving Eq instance Uniquable RegClass where getUnique RcInteger = mkRegClassUnique 0 getUnique RcFloat = mkRegClassUnique 1 getUnique RcDouble = mkRegClassUnique 2 getUnique RcDoubleSSE = mkRegClassUnique 3 instance Outputable RegClass where ppr RcInteger = Outputable.text "I" ppr RcFloat = Outputable.text "F" ppr RcDouble = Outputable.text "D" ppr RcDoubleSSE = Outputable.text "S"