NCG: Split up the native code generator into arch specific modules
[ghc-hetmet.git] / compiler / nativeGen / RegClass.hs
diff --git a/compiler/nativeGen/RegClass.hs b/compiler/nativeGen/RegClass.hs
new file mode 100644 (file)
index 0000000..8b6b2d4
--- /dev/null
@@ -0,0 +1,31 @@
+
+-- | 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
+       deriving Eq
+
+
+instance Uniquable RegClass where
+    getUnique RcInteger        = mkUnique 'L' 0
+    getUnique RcFloat  = mkUnique 'L' 1
+    getUnique RcDouble = mkUnique 'L' 2
+
+instance Outputable RegClass where
+    ppr RcInteger      = Outputable.text "I"
+    ppr RcFloat                = Outputable.text "F"
+    ppr RcDouble       = Outputable.text "D"