PPC NCG: Emit more portable `fcmpu 0, ...` instead of `fcmpu cr0, ...`
authorHerbert Valerio Riedel <hvr@gnu.org>
Mon, 21 Mar 2016 10:30:03 +0000 (11:30 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Mon, 21 Mar 2016 21:40:51 +0000 (22:40 +0100)
Use `fcmpu 0, ...` rather than `fcmpu cr0, ...` for better
portability since some non-GNU assembler (such as IBM's `as`) tend to not
support the symbolic register name `cr0`. This matches the syntax that
GCC emits for PPC targets.

compiler/nativeGen/PPC/Ppr.hs

index 08c02f0..9326813 100644 (file)
@@ -764,10 +764,14 @@ pprInstr (FNEG reg1 reg2) = pprUnary (sLit "fneg") reg1 reg2
 
 pprInstr (FCMP reg1 reg2) = hcat [
         char '\t',
-        text "fcmpu\tcr0, ",
+        text "fcmpu\t0, ",
             -- Note: we're using fcmpu, not fcmpo
             -- The difference is with fcmpo, compare with NaN is an invalid operation.
-            -- We don't handle invalid fp ops, so we don't care
+            -- We don't handle invalid fp ops, so we don't care.
+            -- Morever, we use `fcmpu 0, ...` rather than `fcmpu cr0, ...` for
+            -- better portability since some non-GNU assembler (such as
+            -- IBM's `as`) tend not to support the symbolic register name cr0.
+            -- This matches the syntax that GCC seems to emit for PPC targets.
         pprReg reg1,
         text ", ",
         pprReg reg2