Commit f5139cc5 by Kazu Hirata Committed by Kazu Hirata

h8300.c (compute_mov_length): Adjust for the new optimization.

	* config/h8300/h8300.c (compute_mov_length): Adjust for the
	new optimization.
	* config/h8300/h8300.md (*movsi_h8300): Optimize the load of
	an SImode constant whose upper and lower are the same.

From-SVN: r68475
parent 7099616c
2003-06-25 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.c (compute_mov_length): Adjust for the
new optimization.
* config/h8300/h8300.md (*movsi_h8300): Optimize the load of
an SImode constant whose upper and lower are the same.
Wed Jun 25 11:31:59 CEST 2003 Jan Hubicka <jh@suse.cz>
* varasm.c (assemble_name): Mark needed variables even when
......
......@@ -1876,6 +1876,10 @@ compute_mov_length (rtx *operands)
if ((INTVAL (src) & 0xffff) == 0)
return 6;
if ((INTVAL (src) & 0xffff)
== ((INTVAL (src) >> 16) & 0xffff))
return 6;
}
return 8;
}
......
......@@ -396,14 +396,19 @@
}
else
{
/* See if either half is zero. If so, use sub.w to clear
that half. */
if (GET_CODE (operands[1]) == CONST_INT)
{
/* If either half is zero, use sub.w to clear that
half. */
if ((INTVAL (operands[1]) & 0xffff) == 0)
return \"mov.w %e1,%e0\;sub.w %f0,%f0\";
if (((INTVAL (operands[1]) >> 16) & 0xffff) == 0)
return \"sub.w %e0,%e0\;mov.w %f1,%f0\";
/* If the upper half and the lower half are the same,
copy one half to the other. */
if ((INTVAL (operands[1]) & 0xffff)
== ((INTVAL (operands[1]) >> 16) & 0xffff))
return \"mov.w\\t%e1,%e0\;mov.w\\t%e0,%f0\";
}
return \"mov.w %e1,%e0\;mov.w %f1,%f0\";
}
......
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