summaryrefslogtreecommitdiff
path: root/compiler/GHC/CmmToAsm/PPC/Ppr.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/CmmToAsm/PPC/Ppr.hs')
-rw-r--r--compiler/GHC/CmmToAsm/PPC/Ppr.hs18
1 files changed, 18 insertions, 0 deletions
diff --git a/compiler/GHC/CmmToAsm/PPC/Ppr.hs b/compiler/GHC/CmmToAsm/PPC/Ppr.hs
index ba364df1b0..f1d6733327 100644
--- a/compiler/GHC/CmmToAsm/PPC/Ppr.hs
+++ b/compiler/GHC/CmmToAsm/PPC/Ppr.hs
@@ -934,6 +934,9 @@ pprInstr platform instr = case instr of
FNEG reg1 reg2
-> pprUnary (text "fneg") reg1 reg2
+ FMADD signs fmt dst ra rc rb
+ -> pprTernaryF (pprFMASign signs) fmt dst ra rc rb
+
FCMP reg1 reg2
-> line $ hcat [
char '\t',
@@ -1083,6 +1086,21 @@ pprBinaryF op fmt reg1 reg2 reg3 = line $ hcat [
pprReg reg3
]
+pprTernaryF :: IsDoc doc => Line doc -> Format -> Reg -> Reg -> Reg -> Reg -> doc
+pprTernaryF op fmt rt ra rc rb = line $ hcat [
+ char '\t',
+ op,
+ pprFFormat fmt,
+ char '\t',
+ pprReg rt,
+ text ", ",
+ pprReg ra,
+ text ", ",
+ pprReg rc,
+ text ", ",
+ pprReg rb
+ ]
+
pprRI :: IsLine doc => Platform -> RI -> doc
pprRI _ (RIReg r) = pprReg r
pprRI platform (RIImm r) = pprImm platform r