Commit 79005df5 by Jan Hubicka Committed by Jan Hubicka

i386.md (movsf, movdf): Use movaps for reg-reg moves if TARGET_PARTIAL_REG_DEPENDENCY.

	* i386.md (movsf, movdf): Use movaps for reg-reg moves if
	TARGET_PARTIAL_REG_DEPENDENCY.
	(truncdfsf2_1_sse, truncdfsf2_2): Penalize the fpreg->mem case.

From-SVN: r40093
parent 7ada6625
Tue Feb 27 15:51:35 CET 2001 Jan Hubicka <jh@suse.cz>
* i386.md (movsf, movdf): Use movaps for reg-reg moves if
TARGET_PARTIAL_REG_DEPENDENCY.
(truncdfsf2_1_sse, truncdfsf2_2): Penalize the fpreg->mem case.
Tue Feb 27 15:36:48 CET 2001 Jan Hubicka <jh@suse.cz>
* i386.md (mins*, maxs*): New patterns, expanders and splitters.
......
......@@ -2238,6 +2238,10 @@
return \"mov{l}\\t{%1, %0|%0, %1}\";
case 5:
case 6:
if (TARGET_PARTIAL_REG_DEPENDENCY
&& register_operand (operands[0], VOIDmode)
&& register_operand (operands[1], VOIDmode))
return \"movaps\\t{%1, %0|%0, %1}\";
return \"movss\\t{%1, %0|%0, %1}\";
default:
......@@ -2412,6 +2416,10 @@
return \"#\";
case 5:
case 6:
if (TARGET_PARTIAL_REG_DEPENDENCY
&& register_operand (operands[0], VOIDmode)
&& register_operand (operands[1], VOIDmode))
return \"movapd\\t{%1, %0|%0, %1}\";
return \"movsd\\t{%1, %0|%0, %1}\";
default:
......@@ -3626,7 +3634,7 @@
(set_attr "mode" "SF,SF")])
(define_insn "*truncdfsf2_1_sse"
[(set (match_operand:SF 0 "nonimmediate_operand" "=m,?f,Y")
[(set (match_operand:SF 0 "nonimmediate_operand" "=*!m,?f,Y")
(float_truncate:SF
(match_operand:DF 1 "nonimmediate_operand" "f,0,mY")))
(clobber (match_operand:SF 2 "memory_operand" "=X,m,X"))]
......@@ -3652,26 +3660,26 @@
(set_attr "mode" "SF,SF,DF")])
(define_insn "*truncdfsf2_2"
[(set (match_operand:SF 0 "nonimmediate_operand" "=m,Y")
[(set (match_operand:SF 0 "nonimmediate_operand" "=Y,!m")
(float_truncate:SF
(match_operand:DF 1 "nonimmediate_operand" "f,mY")))]
"TARGET_80387 && TARGET_SSE2"
(match_operand:DF 1 "nonimmediate_operand" "mY,f")))]
"TARGET_80387 && TARGET_SSE2
&& (GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)"
"*
{
switch (which_alternative)
{
case 0:
return \"cvtsd2ss\\t{%1, %0|%0, %1}\";
case 1:
if (find_regno_note (insn, REG_DEAD, REGNO (operands[1])))
return \"fstp%z0\\t%y0\";
else
return \"fst%z0\\t%y0\";
case 1:
case 2:
return \"cvtsd2ss\\t{%1, %0|%0, %1}\";
}
}"
[(set_attr "type" "fmov,sse")
(set_attr "mode" "SF,DF")])
[(set_attr "type" "sse,fmov")
(set_attr "mode" "DF,SF")])
(define_insn "truncdfsf2_3"
[(set (match_operand:SF 0 "nonimmediate_operand" "=m")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment