+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
}
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\";
}