* config/rs6000/rs6000.md (movti_string): Use string instructions.
From-SVN: r58781
This commit is contained in:
parent
a5db0683cb
commit
cd1d3445e3
|
@ -1,3 +1,7 @@
|
|||
2002-11-03 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* config/rs6000/rs6000.md (movti_string): Use string instructions.
|
||||
|
||||
2002-11-03 Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR c/7128
|
||||
|
|
|
@ -9248,9 +9248,9 @@
|
|||
(set_attr "length" "4,16,16,4,16")])
|
||||
|
||||
(define_insn "*movti_string"
|
||||
[(set (match_operand:TI 0 "reg_or_mem_operand" "=m,????r,????r")
|
||||
(match_operand:TI 1 "reg_or_mem_operand" "r,r,m"))
|
||||
(clobber (match_scratch:SI 2 "=X,X,X"))]
|
||||
[(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"))]
|
||||
"TARGET_STRING && ! TARGET_POWER && ! TARGET_POWERPC64
|
||||
&& (gpc_reg_operand (operands[0], TImode) || gpc_reg_operand (operands[1], TImode))"
|
||||
"*
|
||||
|
@ -9261,9 +9261,10 @@
|
|||
abort ();
|
||||
|
||||
case 0:
|
||||
return \"{st%U0|stw%U0} %1,%0\;{st|stw} %L1,%L0\;{st|stw} %Y1,%Y0\;{st|stw} %Z1,%Z0\";
|
||||
|
||||
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
|
||||
is the second, third, or fourth register in the input. */
|
||||
|
@ -9272,7 +9273,13 @@
|
|||
return \"mr %Z0,%Z1\;mr %Y0,%Y1\;mr %L0,%L1\;mr %0,%1\";
|
||||
else
|
||||
return \"mr %0,%1\;mr %L0,%L1\;mr %Y0,%Y1\;mr %Z0,%Z1\";
|
||||
case 2:
|
||||
case 3:
|
||||
/* If the address is not used in the output, we can use lsi. Otherwise,
|
||||
fall through to generating four loads. */
|
||||
if (! reg_overlap_mentioned_p (operands[0], operands[1]))
|
||||
return \"{lsi|lswi} %0,%P1,16\";
|
||||
/* ... fall through ... */
|
||||
case 4:
|
||||
/* If the address register is the same as the register for the lowest-
|
||||
addressed word, load it last. Similarly for the next two words.
|
||||
Otherwise load lowest address to highest. */
|
||||
|
@ -9289,8 +9296,8 @@
|
|||
return \"{l%U1|lwz%U1} %0,%1\;{l|lwz} %L0,%L1\;{l|lwz} %Y0,%Y1\;{l|lwz} %Z0,%Z1\";
|
||||
}
|
||||
}"
|
||||
[(set_attr "type" "store,*,load")
|
||||
(set_attr "length" "16,16,16")])
|
||||
[(set_attr "type" "store,store,*,load,load")
|
||||
(set_attr "length" "4,16,16,4,16")])
|
||||
|
||||
(define_insn "*movti_ppc64"
|
||||
[(set (match_operand:TI 0 "nonimmediate_operand" "=r,r,m")
|
||||
|
|
Loading…
Reference in New Issue