FIX #1843: Generate different instructions on PPC
[ghc-hetmet.git] / compiler / nativeGen / PprMach.hs
index 26a6f28..5210940 100644 (file)
@@ -1408,13 +1408,6 @@ pprInstr g@(GLD1 dst)
 pprInstr g@(GFTOI src dst) 
    = pprInstr (GDTOI src dst)
 pprInstr g@(GDTOI src dst) 
-   = pprG g (hcat [gtab, text "subl $4, %esp ; ", 
-                   gpush src 0, gsemi, text "fistpl 0(%esp) ; popl ", 
-                   pprReg I32 dst])
-
-pprInstr g@(GITOF src dst) 
-   = pprInstr (GITOD src dst)
-pprInstr g@(GITOD src dst) 
    = pprG g (vcat [
          hcat [gtab, text "subl $8, %esp ; fnstcw 4(%esp)"],
          hcat [gtab, gpush src 0],
@@ -1428,6 +1421,13 @@ pprInstr g@(GITOD src dst)
    where
      reg = pprReg I32 dst
 
+pprInstr g@(GITOF src dst) 
+   = pprInstr (GITOD src dst)
+pprInstr g@(GITOD src dst) 
+   = pprG g (hcat [gtab, text "pushl ", pprReg I32 src, 
+                   text " ; ffree %st(7); fildl (%esp) ; ",
+                   gpop dst 1, text " ; addl $4,%esp"])
+
 {- Gruesome swamp follows.  If you're unfortunate enough to have ventured
    this far into the jungle AND you give a Rat's Ass (tm) what's going
    on, here's the deal.  Generate code to do a floating point comparison