aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2003-01-16 16:32:25 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2003-01-16 11:32:25 -0500
commit27dc0551a1180e1032b80bc64d066058c3a2ad70 (patch)
tree114d642325b048e0e3ad7617f997760fd5a7ee08
parent73f849244abc4d6b4f601cb8bbea1e794ec74264 (diff)
downloadgcc-27dc0551a1180e1032b80bc64d066058c3a2ad70.zip
gcc-27dc0551a1180e1032b80bc64d066058c3a2ad70.tar.gz
gcc-27dc0551a1180e1032b80bc64d066058c3a2ad70.tar.bz2
rs6000.md (movti_string): Remove clobber.
* config/rs6000/rs6000.md (movti_string): Remove clobber. * config/rs6000/rs6000.c (rs6000_emit_move, TImode): Explicitly generate PARALLEL with clobber for TARGET_POWER. From-SVN: r61398
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c10
-rw-r--r--gcc/config/rs6000/rs6000.md5
3 files changed, 17 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 58a6a01..4a8e4af 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-01-16 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.md (movti_string): Remove clobber.
+ * config/rs6000/rs6000.c (rs6000_emit_move, TImode): Explicitly
+ generate PARALLEL with clobber for TARGET_POWER.
+
2003-01-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* ra-colorize.c (colorize_one_web): Initialize variable.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 03a4b6b..8e7160f 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -2859,6 +2859,16 @@ rs6000_emit_move (dest, source, mode)
operands[1]
= replace_equiv_address (operands[1],
copy_addr_to_reg (XEXP (operands[1], 0)));
+ if (TARGET_POWER)
+ {
+ emit_insn (gen_rtx_PARALLEL (VOIDmode,
+ gen_rtvec (2,
+ gen_rtx_SET (VOIDmode,
+ operands[0], operands[1]),
+ gen_rtx_CLOBBER (VOIDmode,
+ gen_rtx_SCRATCH (SImode)))));
+ return;
+ }
break;
default:
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 267f697..d4621ab 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -9305,10 +9305,8 @@
case 0:
return \"{stsi|stswi} %1,%P0,16\";
-
case 1:
return \"{st%U0|stw%U0} %1,%0\;{st|stw} %L1,%L0\;{st|stw} %Y1,%Y0\;{st|stw} %Z1,%Z0\";
-
case 2:
/* Normally copy registers with lowest numbered register copied first.
But copy in the other order if the first register of the output
@@ -9346,8 +9344,7 @@
(define_insn "*movti_string"
[(set (match_operand:TI 0 "reg_or_mem_operand" "=Q,m,????r,????r,????r")
- (match_operand:TI 1 "reg_or_mem_operand" "r,r,r,Q,m"))
- (clobber (match_scratch:SI 2 "X,X,X,X,X"))]
+ (match_operand:TI 1 "reg_or_mem_operand" "r,r,r,Q,m"))]
"TARGET_STRING && ! TARGET_POWER && ! TARGET_POWERPC64
&& (gpc_reg_operand (operands[0], TImode) || gpc_reg_operand (operands[1], TImode))"
"*