aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2007-11-06 22:17:00 +0000
committerPaul Brook <paul@codesourcery.com>2007-11-06 22:17:00 +0000
commit682b27ad2a2238e7575e7eab1978cbb850135965 (patch)
treebaa39c9abc1e95093e4339e2503c4298eb5a8b78 /gas
parent8c7504802aa101a9df8e799e1d1943ab7b5ff80b (diff)
downloadgdb-682b27ad2a2238e7575e7eab1978cbb850135965.zip
gdb-682b27ad2a2238e7575e7eab1978cbb850135965.tar.gz
gdb-682b27ad2a2238e7575e7eab1978cbb850135965.tar.bz2
2007-11-06 Paul Brook <paul@codesourcery.com>
gas/ * config/tc-arm.c (do_mull): Allow overlapping Rm for armv6. gas/testsuite/ * gas/arm/mul-overlap.s: Add umull and smlal. * gas/arm/mul-overlap.l: Update expected results.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog4
-rw-r--r--gas/config/tc-arm.c10
-rw-r--r--gas/testsuite/ChangeLog5
-rw-r--r--gas/testsuite/gas/arm/mul-overlap.l1
-rw-r--r--gas/testsuite/gas/arm/mul-overlap.s2
5 files changed, 19 insertions, 3 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index e92fccb..2050971 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,7 @@
+2007-11-06 Paul Brook <paul@codesourcery.com>
+
+ * config/tc-arm.c (do_mull): Allow overlapping Rm for armv6.
+
2007-11-06 Nick Clifton <nickc@redhat.com>
* ehopt.c (check_eh_frame): If md_allow_eh_opt is defined, invoke
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index f2f7dcc..a35204c 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -7202,10 +7202,14 @@ do_mull (void)
inst.instruction |= inst.operands[2].reg;
inst.instruction |= inst.operands[3].reg << 8;
- /* rdhi, rdlo and rm must all be different. */
- if (inst.operands[0].reg == inst.operands[1].reg
- || inst.operands[0].reg == inst.operands[2].reg
+ /* rdhi and rdlo must be different. */
+ if (inst.operands[0].reg == inst.operands[1].reg)
+ as_tsktsk (_("rdhi and rdlo must be different"));
+
+ /* rdhi, rdlo and rm must all be different before armv6. */
+ if ((inst.operands[0].reg == inst.operands[2].reg
|| inst.operands[1].reg == inst.operands[2].reg)
+ && !ARM_CPU_HAS_FEATURE (selected_cpu, arm_ext_v6))
as_tsktsk (_("rdhi, rdlo and rm must all be different"));
}
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index fdb57bc..44b608f 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-11-06 Paul Brook <paul@codesourcery.com>
+
+ * gas/arm/mul-overlap.s: Add umull and smlal.
+ * gas/arm/mul-overlap.l: Update expected results.
+
2007-11-06 Nick Clifton <nickc@redhat.com>
* gas/elf/elf.exp: Disable ehopt test for mn10300.
diff --git a/gas/testsuite/gas/arm/mul-overlap.l b/gas/testsuite/gas/arm/mul-overlap.l
index a895c01..cd0ae67 100644
--- a/gas/testsuite/gas/arm/mul-overlap.l
+++ b/gas/testsuite/gas/arm/mul-overlap.l
@@ -1,3 +1,4 @@
[^:]*: Assembler messages:
[^:]*:5: Rd and Rm should be different in mul
[^:]*:6: Rd and Rm should be different in mla
+[^:]*:8: rdhi, rdlo and rm must all be different
diff --git a/gas/testsuite/gas/arm/mul-overlap.s b/gas/testsuite/gas/arm/mul-overlap.s
index 6932eae..b35fb51 100644
--- a/gas/testsuite/gas/arm/mul-overlap.s
+++ b/gas/testsuite/gas/arm/mul-overlap.s
@@ -5,4 +5,6 @@ foo:
mul r0, r0, r0
mla r0, r0, r1, r2
mls r0, r0, r1, r2
+ umull r0, r1, r0, r1
+ smlalbb r0, r1, r0, r1
bx lr