opcodes: blackfin: simplify decode_CC2stat_0 logic
authorMike Frysinger <vapier@gentoo.org>
Wed, 4 Dec 2013 00:17:03 +0000 (19:17 -0500)
committerMike Frysinger <vapier@gentoo.org>
Thu, 14 Aug 2014 13:10:12 +0000 (09:10 -0400)
These multiple if statements can be condensed down into a single if
statement and an array of strings.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
opcodes/ChangeLog
opcodes/bfin-dis.c

index 5157099..4598078 100644 (file)
@@ -1,5 +1,11 @@
 2014-08-14  Mike Frysinger  <vapier@gentoo.org>
 
+       * bfin-dis.c (OUT): Define.
+       (decode_CC2stat_0): Declare new op_names array.
+       Replace multiple if statements with a single one.
+
+2014-08-14  Mike Frysinger  <vapier@gentoo.org>
+
        * bfin-dis.c (struct private): Add iw0.
        (_print_insn_bfin): Assign iw0 to priv.iw0.
        (print_insn_bfin): Drop ifetch and use priv.iw0.
index e7d6706..ba33152 100644 (file)
@@ -484,6 +484,7 @@ static const enum machine_registers decode_allregs[] =
 #ifndef OUTS
 #define OUTS(p, txt) (p)->fprintf_func ((p)->stream, "%s", txt)
 #endif
+#define OUT(p, txt, ...) (p)->fprintf_func ((p)->stream, txt, ## __VA_ARGS__)
 
 static void
 amod0 (int s0, int x0, disassemble_info *outf)
@@ -1224,6 +1225,7 @@ decode_CC2stat_0 (TIword iw0, disassemble_info *outf)
   int cbit = ((iw0 >> CC2stat_cbit_bits) & CC2stat_cbit_mask);
 
   const char *bitname = statbits (cbit);
+  const char * const op_names[] = { "", "|", "&", "^" } ;
 
   if (priv->parallel)
     return 0;
@@ -1241,48 +1243,10 @@ decode_CC2stat_0 (TIword iw0, disassemble_info *outf)
       bitname = bitnames;
     }
 
-  if (op == 0 && D == 0)
-    {
-      OUTS (outf, "CC = ");
-      OUTS (outf, bitname);
-    }
-  else if (op == 1 && D == 0)
-    {
-      OUTS (outf, "CC |= ");
-      OUTS (outf, bitname);
-    }
-  else if (op == 2 && D == 0)
-    {
-      OUTS (outf, "CC &= ");
-      OUTS (outf, bitname);
-    }
-  else if (op == 3 && D == 0)
-    {
-      OUTS (outf, "CC ^= ");
-      OUTS (outf, bitname);
-    }
-  else if (op == 0 && D == 1)
-    {
-      OUTS (outf, bitname);
-      OUTS (outf, " = CC");
-    }
-  else if (op == 1 && D == 1)
-    {
-      OUTS (outf, bitname);
-      OUTS (outf, " |= CC");
-    }
-  else if (op == 2 && D == 1)
-    {
-      OUTS (outf, bitname);
-      OUTS (outf, " &= CC");
-    }
-  else if (op == 3 && D == 1)
-    {
-      OUTS (outf, bitname);
-      OUTS (outf, " ^= CC");
-    }
+  if (D == 0)
+    OUT (outf, "CC %s= %s", op_names[op], bitname);
   else
-    return 0;
+    OUT (outf, "%s %s= CC", bitname, op_names[op]);
 
   return 2;
 }