2007-11-06 Paul Brook <paul@codesourcery.com>
authorPaul Brook <paul@codesourcery.com>
Tue, 6 Nov 2007 22:17:00 +0000 (22:17 +0000)
committerPaul Brook <paul@codesourcery.com>
Tue, 6 Nov 2007 22:17:00 +0000 (22:17 +0000)
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.

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/mul-overlap.l
gas/testsuite/gas/arm/mul-overlap.s

index e92fccb..2050971 100644 (file)
@@ -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
index f2f7dcc..a35204c 100644 (file)
@@ -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"));
 }
 
index fdb57bc..44b608f 100644 (file)
@@ -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.
index a895c01..cd0ae67 100644 (file)
@@ -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
index 6932eae..b35fb51 100644 (file)
@@ -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