This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Use "y" in moveml pattern for mcfisa_a


Make sure that moveml on coldfire receives the same DISP->AINDR
optimisation as movel.

Andreas.

2011-09-02  Andreas Schwab  <schwab@linux-m68k.org>

opcodes/
        PR gas/13145
	* m68k-opc.c: Use "y" in moveml pattern for mcfisa_a.

gas/testsuite/
        PR gas/13145
	* gas/m68k/all.exp: Run "mode5" test also with -mcpu=5200.
	* gas/m68k/mode5.s: Add moveml testcases.
	* gas/m68k/mode5.d: Update.

diff --git a/gas/testsuite/gas/m68k/all.exp b/gas/testsuite/gas/m68k/all.exp
index b3db085..bf06d4e 100644
--- a/gas/testsuite/gas/m68k/all.exp
+++ b/gas/testsuite/gas/m68k/all.exp
@@ -51,6 +51,7 @@ if { [istarget m68*-*-*] || [istarget fido*-*-*] } then {
     run_dump_test mcf-mov3q
     run_dump_test mcf-movsr
     run_dump_test mode5
+    run_dump_test mode5 "{name {cf}} {as {-mcpu=5200}}"
     run_dump_test mcf-mac
     run_dump_test mcf-emac
     run_dump_test mcf-coproc
diff --git a/gas/testsuite/gas/m68k/mode5.d b/gas/testsuite/gas/m68k/mode5.d
index b51346b..2de2c6a 100644
--- a/gas/testsuite/gas/m68k/mode5.d
+++ b/gas/testsuite/gas/m68k/mode5.d
@@ -10,4 +10,6 @@ Disassembly of section .text:
    0:	2213           	movel %a3@,%d1
    2:	2882           	movel %d2,%a4@
    4:	2295           	movel %a5@,%a1@
+   6:	4cd6 00ff      	moveml %fp@,%d0-%d7
+   a:	48d6 00ff      	moveml %d0-%d7,%fp@
 	...
diff --git a/gas/testsuite/gas/m68k/mode5.s b/gas/testsuite/gas/m68k/mode5.s
index 27c95d9..6a08f1b 100644
--- a/gas/testsuite/gas/m68k/mode5.s
+++ b/gas/testsuite/gas/m68k/mode5.s
@@ -4,4 +4,6 @@
 	move.l 0(%a3),%d1
 	move.l %d2,0(%a4)
 	move.l 0(%a5),0(%a1)
+	movem.l 0(%a6),%d0-%d7
+	movem.l %d0-%d7,0(%a6)
 	.p2align 4
diff --git a/opcodes/m68k-opc.c b/opcodes/m68k-opc.c
index 0f6852f..9463668 100644
--- a/opcodes/m68k-opc.c
+++ b/opcodes/m68k-opc.c
@@ -1,6 +1,6 @@
 /* Opcode table for m680[012346]0/m6888[12]/m68851/mcf5200.
    Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+   2000, 2001, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011
    Free Software Foundation, Inc.
 
    This file is part of the GNU opcodes library.
@@ -1553,15 +1553,10 @@ const struct m68k_opcode m68k_opcodes[] =
 {"moveml", 4,	one(0044300),	one(0177700), "#w>s", m68000up },
 {"moveml", 4,	one(0046300),	one(0177700), "<sLw", m68000up },
 {"moveml", 4,	one(0046300),	one(0177700), "<s#w", m68000up },
-/* FIXME: need specifier for mode 2 and 5 to simplify below insn patterns.  */
-{"moveml", 4,	one(0044320),	one(0177770), "Lwas", mcfisa_a },
-{"moveml", 4,	one(0044320),	one(0177770), "#was", mcfisa_a },
-{"moveml", 4,	one(0044350),	one(0177770), "Lwds", mcfisa_a },
-{"moveml", 4,	one(0044350),	one(0177770), "#wds", mcfisa_a },
-{"moveml", 4,	one(0046320),	one(0177770), "asLw", mcfisa_a },
-{"moveml", 4,	one(0046320),	one(0177770), "as#w", mcfisa_a },
-{"moveml", 4,	one(0046350),	one(0177770), "dsLw", mcfisa_a },
-{"moveml", 4,	one(0046350),	one(0177770), "ds#w", mcfisa_a },
+{"moveml", 4,	one(0044320),	one(0177770), "Lwys", mcfisa_a },
+{"moveml", 4,	one(0044320),	one(0177770), "#wys", mcfisa_a },
+{"moveml", 4,	one(0046320),	one(0177770), "ysLw", mcfisa_a },
+{"moveml", 4,	one(0046320),	one(0177770), "ys#w", mcfisa_a },
 
 {"movepw", 2,	one(0000410),	one(0170770), "dsDd", m68000up },
 {"movepw", 2,	one(0000610),	one(0170770), "Ddds", m68000up },
-- 
1.7.6.1


-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]