aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2004-05-28 07:55:21 +0000
committerNick Clifton <nickc@redhat.com>2004-05-28 07:55:21 +0000
commit580b9172d22e2bb4fb7900000bc9897e04b295e0 (patch)
tree411fb804b5cd618d41d682c4160a9c8f402d86f6 /gas
parent164e712d71c3e73cf048b45615b8f3f2f1fc4b84 (diff)
downloadgdb-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/ChangeLog5
-rw-r--r--gas/config/tc-m68k.c13
-rw-r--r--gas/testsuite/ChangeLog7
-rw-r--r--gas/testsuite/gas/m68k/all.exp1
-rw-r--r--gas/testsuite/gas/m68k/mode5.d12
-rw-r--r--gas/testsuite/gas/m68k/mode5.s6
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)