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 e92fccbca968cf4c53a461c77c07396b310fcef9..2050971bf19d203ed488f9e2c7270ee3b24a82c6 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 f2f7dcc85f8ef5ba9a4c99bfe46036bb3cf94a1a..a35204c5e198aca0ce710170150e6d488342aea8 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 fdb57bc0eef0b7ca9093ce4666a0ec1eda04ebdd..44b608fc5bdaeced964c8eca4fef1eec21d924f1 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 a895c0102a3f53df1df7ba79d6d0a5a7c71105ed..cd0ae6744d7b8a9bdbb4cbfc918ceaf17db3f3a4 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 6932eaeb13fe7097a4ac2771283b70051c07cf84..b35fb5121a87b3baf117a2781c654ddfa1a46921 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