Add spill/reload pseudo instrs to MachInstrs
[ghc-hetmet.git] / compiler / nativeGen / MachInstrs.hs
index 96db72d..0c5dbdd 100644 (file)
@@ -52,8 +52,8 @@ import GHC.Exts
 -- Our flavours of the Cmm types
 
 -- Type synonyms for Cmm populated with native code
-type NatCmm        = GenCmm CmmStatic Instr
-type NatCmmTop     = GenCmmTop CmmStatic Instr
+type NatCmm        = GenCmm CmmStatic [CmmStatic] Instr
+type NatCmmTop     = GenCmmTop CmmStatic [CmmStatic] Instr
 type NatBasicBlock = GenBasicBlock Instr
 
 -- -----------------------------------------------------------------------------
@@ -226,6 +226,9 @@ data Instr
   | DELTA   Int                 -- specify current stack offset for
                                 -- benefit of subsequent passes
 
+  | SPILL   Reg Int            -- ^ spill this reg to a stack slot
+  | RELOAD  Int Reg            -- ^ reload this reg from a stack slot
+
 -- -----------------------------------------------------------------------------
 -- Alpha instructions
 
@@ -488,8 +491,8 @@ bit or 64 bit precision.
 
        | CVTSS2SD      Reg Reg         -- F32 to F64
        | CVTSD2SS      Reg Reg         -- F64 to F32
-       | CVTSS2SI      Operand Reg     -- F32 to I32/I64 (with rounding)
-       | CVTSD2SI      Operand Reg     -- F64 to I32/I64 (with rounding)
+       | CVTTSS2SIQ    Operand Reg     -- F32 to I32/I64 (with truncation)
+       | CVTTSD2SIQ    Operand Reg     -- F64 to I32/I64 (with truncation)
        | CVTSI2SS      Operand Reg     -- I32/I64 to F32
        | CVTSI2SD      Operand Reg     -- I32/I64 to F64