X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FnativeGen%2FPprMach.lhs;h=7f72f4d0caa8776e958c06b6d67620ed8aacac02;hb=4c892ba00b965e000246fb1f5954ee73cb1b24c0;hp=ac051ee738d1da5c98dc03b86666bb5b38845fb2;hpb=88f6ec6705990205ff66395fc16ae022e8403455;p=ghc-hetmet.git diff --git a/ghc/compiler/nativeGen/PprMach.lhs b/ghc/compiler/nativeGen/PprMach.lhs index ac051ee..7f72f4d 100644 --- a/ghc/compiler/nativeGen/PprMach.lhs +++ b/ghc/compiler/nativeGen/PprMach.lhs @@ -998,9 +998,8 @@ pprInstr (JXX cond lab) = pprCondInstr SLIT("j") cond (pprCLabel_asm lab) pprInstr (JMP (OpImm imm)) = (<>) (ptext SLIT("\tjmp ")) (pprImm imm) pprInstr (JMP op) = (<>) (ptext SLIT("\tjmp *")) (pprOperand L op) - pprInstr (CALL imm) - = hcat [ ptext SLIT("\tffree %st(0) ; call "), pprImm imm ] + = (<>) (ptext SLIT("\tcall ")) (pprImm imm) -- Simulating a flat register set on the x86 FP stack is tricky. @@ -1044,11 +1043,11 @@ pprInstr g@(GCMP sz src1 src2) hcat [gtab, text "fcompp ; fstsw %ax ; sahf ; popl %eax"]) pprInstr g@(GABS sz src dst) - = pprG g bogus + = pprG g (hcat [gtab, gpush src 0, text " ; fabs ; ", gpop dst 1]) pprInstr g@(GNEG sz src dst) - = pprG g bogus + = pprG g (hcat [gtab, gpush src 0, text " ; fchs ; ", gpop dst 1]) pprInstr g@(GSQRT sz src dst) - = pprG g bogus + = pprG g (hcat [gtab, gpush src 0, text " ; fsqrt ; ", gpop dst 1]) pprInstr g@(GADD sz src1 src2 dst) = pprG g (hcat [gtab, gpush src1 0, @@ -1067,6 +1066,11 @@ pprInstr g@(GDIV sz src1 src2 dst) text " ; fdiv ", greg src2 1, text ",%st(0)", gsemi, gpop dst 1]) +pprInstr GFREE + = vcat [ ptext SLIT("\tffree %st(0) ;ffree %st(1) ;ffree %st(2) ;ffree %st(3)"), + ptext SLIT("\tffree %st(4) ;ffree %st(5) ;ffree %st(6) ;ffree %st(7)") + ] + -------------------------- gpush reg offset = hcat [text "ffree %st(7) ; fld ", greg reg offset]