alpha.md (addsi3, subsi3): Expand to a DImode temporary so as to expose this midpoint...
authorRichard Henderson <rth@cygnus.com>
Thu, 5 Nov 1998 03:30:29 +0000 (19:30 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 5 Nov 1998 03:30:29 +0000 (19:30 -0800)
        * alpha.md (addsi3, subsi3): Expand to a DImode temporary so as
        to expose this midpoint to CSE.

From-SVN: r23536

gcc/ChangeLog
gcc/config/alpha/alpha.md

index 29399945fb29d6bda19d04847f335c6a27c3ca1b..f851757cb8b0a87cfbf4a4054d8be8eb7d7f0ab3 100644 (file)
@@ -1,3 +1,8 @@
+Thu Nov  5 03:29:19 1998  Richard Henderson  <rth@cygnus.com>
+
+       * alpha.md (addsi3, subsi3): Expand to a DImode temporary so as
+       to expose this midpoint to CSE.
+
 Thu Nov  5 03:42:54 1998  David S. Miller  <davem@pierdol.cobaltmicro.com>
 
        * config/sparc/sparc.md (movdf_const_intreg_sp64): Enable again.
index bcd0b1e1fa8825c9a3c8517bc10c4e3c8a534d4c..c88497e3b358fefaa583bc6d63dedc2331da2ff5 100644 (file)
                 (match_operand:SI 2 "add_operand" "")))]
   ""
   "
-{ emit_insn (gen_rtx_SET (VOIDmode, gen_lowpart (DImode, operands[0]),
-                         gen_rtx_PLUS (DImode,
-                                       gen_lowpart (DImode, operands[1]),
-                                       gen_lowpart (DImode, operands[2]))));
+{
+  rtx tmp = gen_reg_rtx (DImode);
+  emit_insn (gen_adddi3 (tmp, gen_lowpart (DImode, operands[1]),
+                        gen_lowpart (DImode, operands[2])));
+  emit_move_insn (operands[0], gen_lowpart (SImode, tmp));
   DONE;
 } ")
 
                  (match_operand:SI 2 "reg_or_8bit_operand" "")))]
   ""
   "
-{ emit_insn (gen_rtx_SET (VOIDmode, gen_lowpart (DImode, operands[0]),
-                         gen_rtx_MINUS (DImode,
-                                        gen_lowpart (DImode, operands[1]),
-                                        gen_lowpart (DImode, operands[2]))));
+{
+  rtx tmp = gen_reg_rtx (DImode);
+  emit_insn (gen_subdi3 (tmp, gen_lowpart (DImode, operands[1]),
+                        gen_lowpart (DImode, operands[2])));
+  emit_move_insn (operands[0], gen_lowpart (SImode, tmp));
   DONE;
 } ")