diff options
author | Nick Clifton <nickc@redhat.com> | 2004-05-28 07:55:21 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2004-05-28 07:55:21 +0000 |
commit | 580b9172d22e2bb4fb7900000bc9897e04b295e0 (patch) | |
tree | 411fb804b5cd618d41d682c4160a9c8f402d86f6 /gas | |
parent | 164e712d71c3e73cf048b45615b8f3f2f1fc4b84 (diff) | |
download | gdb-580b9172d22e2bb4fb7900000bc9897e04b295e0.zip gdb-580b9172d22e2bb4fb7900000bc9897e04b295e0.tar.gz gdb-580b9172d22e2bb4fb7900000bc9897e04b295e0.tar.bz2 |
Convert mode 5 addressing with zero offset into mode 2 addressing to save a
word.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-m68k.c | 13 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gas/testsuite/gas/m68k/all.exp | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/m68k/mode5.d | 12 | ||||
-rw-r--r-- | gas/testsuite/gas/m68k/mode5.s | 6 |
6 files changed, 44 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 66f396a..2e5f6f2 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2004-05-28 Peter Barada <peter@the-baradas.com> + + * 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 <hongjiu.lu@intel.com> * 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 2a5b479..69be532 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 c26d461..76c10c9 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2004-05-28 Peter Barada <peter@the-baradas.com> + + * 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 <hongjiu.lu@intel.com> * gas/ia64/regs.d: Updated. diff --git a/gas/testsuite/gas/m68k/all.exp b/gas/testsuite/gas/m68k/all.exp index c98179c..0eb0fd8 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 0000000..71805a2 --- /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 0000000..6f7cd00 --- /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) |