re PR target/6561 (sparc-sun-solaris2.7 C testsuite failure w/-mcpu=ultrasparc in...
authorJakub Jelinek <jakub@redhat.com>
Sun, 5 May 2002 22:08:54 +0000 (00:08 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sun, 5 May 2002 22:08:54 +0000 (00:08 +0200)
PR target/6561
* config/sparc/sparc.md (muldi3_v8plus): Handle %1 equal to %2.

From-SVN: r53197

gcc/ChangeLog
gcc/config/sparc/sparc.md

index 8dfaae7..a56fd7e 100644 (file)
@@ -1,3 +1,8 @@
+2002-05-05  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/6561
+       * config/sparc/sparc.md (muldi3_v8plus): Handle %1 equal to %2.
+
 2002-05-05  Richard Henderson  <rth@redhat.com>
 
        * config/alpha/alpha.c (alpha_adjust_cost): Remove everything but
index 8f19dc7..cb0c665 100644 (file)
       else
        return \"sllx\\t%H1, 32, %3\\n\\tor\\t%L1, %3, %3\\n\\tmulx\\t%3, %2, %3\\n\\tsrlx\\t%3, 32, %H0\\n\\tmov\\t%3, %L0\";
     }
+  else if (rtx_equal_p (operands[1], operands[2]))
+    {
+      if (which_alternative == 1)
+       return \"or\\t%L1, %H1, %H1\\n\\tmulx\\t%H1, %H1, %L0\;srlx\\t%L0, 32, %H0\";
+      else
+       return \"sllx\\t%H1, 32, %3\\n\\tor\\t%L1, %3, %3\\n\\tmulx\\t%3, %3, %3\\n\\tsrlx\\t%3, 32, %H0\\n\\tmov\\t%3, %L0\";
+    }
   if (sparc_check_64 (operands[2], insn) <= 0)
     output_asm_insn (\"srl\\t%L2, 0, %L2\", operands);
   if (which_alternative == 1)