add a comment
[ghc.git] / compiler / cmm / PprCmmExpr.hs
index 119f2b7..0bb79ac 100644 (file)
@@ -32,9 +32,9 @@
 -- A useful example pass over Cmm is in nativeGen/MachCodeGen.hs
 --
 
+{-# OPTIONS_GHC -fno-warn-orphans #-}
 module PprCmmExpr
     ( pprExpr, pprLit
-    , pprExpr9 {-only to import in OldPprCmm. When it dies, remove the export -}
     )
 where
 
@@ -72,11 +72,12 @@ instance Outputable GlobalReg where
 
 pprExpr :: CmmExpr -> SDoc
 pprExpr e
-    = case e of
+    = sdocWithDynFlags $ \dflags ->
+      case e of
         CmmRegOff reg i ->
                 pprExpr (CmmMachOp (MO_Add rep)
                            [CmmReg reg, CmmLit (CmmInt (fromIntegral i) rep)])
-                where rep = typeWidth (cmmRegType reg)
+                where rep = typeWidth (cmmRegType dflags reg)
         CmmLit lit -> pprLit lit
         _other     -> pprExpr1 e
 
@@ -185,13 +186,15 @@ infixMachOp mop
 --  has the natural machine word size, we do not append the type
 --
 pprLit :: CmmLit -> SDoc
-pprLit lit = case lit of
+pprLit lit = sdocWithDynFlags $ \dflags ->
+             case lit of
     CmmInt i rep ->
         hcat [ (if i < 0 then parens else id)(integer i)
-             , ppUnless (rep == wordWidth) $
+             , ppUnless (rep == wordWidth dflags) $
                space <> dcolon <+> ppr rep ]
 
     CmmFloat f rep     -> hsep [ double (fromRat f), dcolon, ppr rep ]
+    CmmVec lits        -> char '<' <> commafy (map pprLit lits) <> char '>'
     CmmLabel clbl      -> ppr clbl
     CmmLabelOff clbl i -> ppr clbl <> ppr_offset i
     CmmLabelDiffOff clbl1 clbl2 i -> ppr clbl1 <> char '-'
@@ -252,6 +255,9 @@ pprGlobalReg gr
         FloatReg   n   -> char 'F' <> int n
         DoubleReg  n   -> char 'D' <> int n
         LongReg    n   -> char 'L' <> int n
+        XmmReg     n   -> ptext (sLit "XMM") <> int n
+        YmmReg     n   -> ptext (sLit "YMM") <> int n
+        ZmmReg     n   -> ptext (sLit "ZMM") <> int n
         Sp             -> ptext (sLit "Sp")
         SpLim          -> ptext (sLit "SpLim")
         Hp             -> ptext (sLit "Hp")