aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-11-04 19:30:29 -0800
committerRichard Henderson <rth@gcc.gnu.org>1998-11-04 19:30:29 -0800
commit8f5d685581c011dd907c692b63b4e340a6de9b8d (patch)
tree8e7f300ade1a9add45b85d4c56d2b70473f46910
parent4ba687c8587c546282a45d669dcb30653be79b25 (diff)
downloadgcc-8f5d685581c011dd907c692b63b4e340a6de9b8d.zip
gcc-8f5d685581c011dd907c692b63b4e340a6de9b8d.tar.gz
gcc-8f5d685581c011dd907c692b63b4e340a6de9b8d.tar.bz2
alpha.md (addsi3, subsi3): Expand to a DImode temporary so as to expose this midpoint to CSE.
* alpha.md (addsi3, subsi3): Expand to a DImode temporary so as to expose this midpoint to CSE. From-SVN: r23536
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/alpha/alpha.md18
2 files changed, 15 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2939994..f851757 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index bcd0b1e..c88497e 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -426,10 +426,11 @@
(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;
} ")
@@ -712,10 +713,11 @@
(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;
} ")