SPARC NCG: Use .skip instead of .space in assembler
[ghc-hetmet.git] / compiler / nativeGen / PprMach.hs
index eb880fc..8fc9e3d 100644 (file)
@@ -21,7 +21,7 @@
 
 module PprMach ( 
        pprNatCmmTop, pprBasicBlock, pprSectionHeader, pprData,
-       pprInstr, pprSize, pprUserReg
+       pprInstr, pprSize, pprUserReg, pprImm
   ) where
 
 #include "HsVersions.h"
@@ -402,11 +402,14 @@ pprSize x = ptext (case x of
        FF32  -> sLit ""
        FF64  -> sLit "d"
     )
+
+-- suffix to store/ ST instruction
 pprStSize :: Size -> Doc
 pprStSize x = ptext (case x of
        II8   -> sLit "b"
        II16  -> sLit "h"
        II32  -> sLit ""
+       II64  -> sLit "x"
        FF32  -> sLit ""
        FF64  -> sLit "d"
 #endif
@@ -689,7 +692,7 @@ pprData :: CmmStatic -> Doc
 pprData (CmmAlign bytes)         = pprAlign bytes
 pprData (CmmDataLabel lbl)       = pprLabel lbl
 pprData (CmmString str)          = pprASCII str
-pprData (CmmUninitialised bytes) = ptext (sLit ".space ") <> int bytes
+pprData (CmmUninitialised bytes) = ptext (sLit ".skip ") <> int bytes
 pprData (CmmStaticLit lit)       = pprDataItem lit
 
 pprGloblDecl :: CLabel -> Doc
@@ -2002,9 +2005,19 @@ pprInstr (SLL reg1 ri reg2) = pprRegRIReg (sLit "sll") False reg1 ri reg2
 pprInstr (SRL reg1 ri reg2) = pprRegRIReg (sLit "srl") False reg1 ri reg2
 pprInstr (SRA reg1 ri reg2) = pprRegRIReg (sLit "sra") False reg1 ri reg2
 
-pprInstr (RDY rd) = ptext (sLit "\trd\t%y,") <> pprReg rd
-pprInstr (SMUL b reg1 ri reg2) = pprRegRIReg (sLit "smul")  b reg1 ri reg2
-pprInstr (UMUL b reg1 ri reg2) = pprRegRIReg (sLit "umul")  b reg1 ri reg2
+pprInstr (RDY rd)              = ptext (sLit "\trd\t%y,") <> pprReg rd
+pprInstr (WRY reg1 reg2)       
+       = ptext (sLit "\twr\t") 
+               <> pprReg reg1 
+               <> char ','
+               <> pprReg reg2
+               <> char ','
+               <> ptext (sLit "%y") 
+
+pprInstr (SMUL b reg1 ri reg2) = pprRegRIReg (sLit "smul")  b reg1 ri reg2
+pprInstr (UMUL b reg1 ri reg2) = pprRegRIReg (sLit "umul")  b reg1 ri reg2
+pprInstr (SDIV b reg1 ri reg2) = pprRegRIReg (sLit "sdiv")  b reg1 ri reg2
+pprInstr (UDIV b reg1 ri reg2) = pprRegRIReg (sLit "udiv")  b reg1 ri reg2
 
 pprInstr (SETHI imm reg)
   = hcat [
@@ -2073,6 +2086,7 @@ pprInstr (FxTOy size1 size2 reg1 reg2)
        ptext
        (case size2 of
            II32  -> sLit "i\t"
+           II64  -> sLit "x\t"
            FF32  -> sLit "s\t"
            FF64  -> sLit "d\t"),
        pprReg reg1, comma, pprReg reg2