diff options
author | Mike Frysinger <vapier@gentoo.org> | 2013-12-03 19:17:03 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2014-08-14 09:10:12 -0400 |
commit | b3f3b4b0308163d60eaff8ba2727997149fd1d2a (patch) | |
tree | 912dab57c9cadd872977d1f6dd768774c2457ed0 | |
parent | a4e600b22e938e766fefa9bd0ab111e262e639a6 (diff) | |
download | gdb-b3f3b4b0308163d60eaff8ba2727997149fd1d2a.zip gdb-b3f3b4b0308163d60eaff8ba2727997149fd1d2a.tar.gz gdb-b3f3b4b0308163d60eaff8ba2727997149fd1d2a.tar.bz2 |
opcodes: blackfin: simplify decode_CC2stat_0 logic
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>
-rw-r--r-- | opcodes/ChangeLog | 6 | ||||
-rw-r--r-- | opcodes/bfin-dis.c | 46 |
2 files changed, 11 insertions, 41 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 5157099..4598078 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -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. diff --git a/opcodes/bfin-dis.c b/opcodes/bfin-dis.c index e7d6706..ba33152 100644 --- a/opcodes/bfin-dis.c +++ b/opcodes/bfin-dis.c @@ -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; } |