From: Nick Clifton Date: Fri, 28 May 2004 07:55:21 +0000 (+0000) Subject: Convert mode 5 addressing with zero offset into mode 2 addressing to save a X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=580b9172d22e2bb4fb7900000bc9897e04b295e0;p=binutils-gdb.git Convert mode 5 addressing with zero offset into mode 2 addressing to save a word. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 66f396a66a6..2e5f6f27b5a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2004-05-28 Peter Barada + + * config/gc-m68k.c(m68k_ip): Convert mode 5 addressing + with zero offset into mode 2 addressing to save a word. + 2004-05-27 H.J. Lu * config/tc-ia64.c (ar_is_in_integer_unit): Removed. diff --git a/gas/config/tc-m68k.c b/gas/config/tc-m68k.c index 2a5b47975e2..69be532fd6c 100644 --- a/gas/config/tc-m68k.c +++ b/gas/config/tc-m68k.c @@ -2261,6 +2261,19 @@ m68k_ip (instring) nextword = get_num (&opP->disp, 90); + /* Convert mode 5 addressing with a zero offset into + mode 2 addressing to reduce the instruction size by a + word. */ + if (! isvar (&opP->disp) + && (nextword == 0) + && (opP->disp.size == SIZE_UNSPEC) + && (opP->reg >= ADDR0) + && (opP->reg <= ADDR7)) + { + tmpreg = 0x10 + opP->reg - ADDR; /* 2.areg */ + break; + } + if (opP->reg == PC && ! isvar (&opP->disp) && m68k_abspcadd) diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index c26d461ab6f..76c10c9dd10 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2004-05-28 Peter Barada + + * gas/m68k/mode5.s: New test file. Checks conversion of mode 5 + addressing with zero offset into mode 2 addressing. + * gas/m68k/mode5.d: New file: Expected disassmbly. + * gas/m68k/all.exp: Run new test. + 2004-05-27 H.J. Lu * gas/ia64/regs.d: Updated. diff --git a/gas/testsuite/gas/m68k/all.exp b/gas/testsuite/gas/m68k/all.exp index c98179cbe9f..0eb0fd89c5b 100644 --- a/gas/testsuite/gas/m68k/all.exp +++ b/gas/testsuite/gas/m68k/all.exp @@ -35,6 +35,7 @@ if [istarget m68*-*-*] then { run_dump_test link run_dump_test fmoveml run_dump_test mcf-mov3q + run_dump_test mode5 run_dump_test mcf-mac run_dump_test mcf-emac diff --git a/gas/testsuite/gas/m68k/mode5.d b/gas/testsuite/gas/m68k/mode5.d new file mode 100644 index 00000000000..71805a23076 --- /dev/null +++ b/gas/testsuite/gas/m68k/mode5.d @@ -0,0 +1,12 @@ +#name: mode5 +#objdump: -d +#as: + +.*: file format .* + +Disassembly of section .text: + +00000000 <.text>: + 0: 2213 movel %a3@,%d1 + 2: 2882 movel %d2,%a4@ + 4: 2295 movel %a5@,%a1@ diff --git a/gas/testsuite/gas/m68k/mode5.s b/gas/testsuite/gas/m68k/mode5.s new file mode 100644 index 00000000000..6f7cd006f14 --- /dev/null +++ b/gas/testsuite/gas/m68k/mode5.s @@ -0,0 +1,6 @@ + + | Test conversion of mode 5 addressing with a zero offset into mode 2. + .text + move.l 0(%a3),%d1 + move.l %d2,0(%a4) + move.l 0(%a5),0(%a1)