mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-13 13:07:28 +08:00
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
This commit is contained in:
parent
7099616c53
commit
f5139cc523
@ -1,3 +1,10 @@
|
||||
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\";
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user