diff options
author | Paul Brook <paul@codesourcery.com> | 2007-11-06 22:17:00 +0000 |
---|---|---|
committer | Paul Brook <paul@codesourcery.com> | 2007-11-06 22:17:00 +0000 |
commit | 682b27ad2a2238e7575e7eab1978cbb850135965 (patch) | |
tree | baa39c9abc1e95093e4339e2503c4298eb5a8b78 | |
parent | 8c7504802aa101a9df8e799e1d1943ab7b5ff80b (diff) | |
download | gdb-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.
-rw-r--r-- | gas/ChangeLog | 4 | ||||
-rw-r--r-- | gas/config/tc-arm.c | 10 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/mul-overlap.l | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/mul-overlap.s | 2 |
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 |