This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: i386.md splits 1
>
>
> In message <19981001232347.B12133@dot.cygnus.com>you write:
> > On Thu, Oct 01, 1998 at 01:47:29PM +0200, Jan Hubicka wrote:
> > > (movdi): split the trivial (non-overlapping) case
> > > (zero_extendsidi2): split it, support extending from other
> > > register and to memory to avoid unnecesary moves of extended value
> > > Use # in pattern and handle completely by splits.
> >
> > IMO, movdi and zero_extendsidi3 should both be deleted. Neither
> > defines any machine-specific instructions; both can be handled
> > better by the middle-end.
> Don't be so hasty.
>
> I've actually run into codegen bugs when ports haven't defined movdi :(
Strange, it ought be fixed or not? :)
>
> I've also generally seen better code when ports define double-word move
> patterns -- even on register poor targets.
According to my experinece with removing zero_extendsidi is, that it generates
seqence of insn starting with clobber target register, two moves and move
DI register to itself.
This is probably only correct way to represent this. Its main drawback is
that clobber generates conflict between source and target register, wich stress
allocator. Note REG_NOCONFLICT don't help, because it is ignored by global.c
Maybe I should spend some time and try to make global.c support for this note
working. Then removing zero_extendsidi3 should be good alternative IMO.
Honza
>
> jeff
--
OK. Lets make a signature file.
+-------------------------------------------------------------------------+
| Jan Hubicka (Jan Hubi\v{c}ka in TeX) hubicka@freesoft.cz |
| Czech free software foundation: http://www.freesoft.cz |
|AA project - the new way for computer graphics - http://www.ta.jcu.cz/aa |
| homepage: http://www.paru.cas.cz/~hubicka/, games koules, Xonix, fast |
| fractal zoomer XaoS, index of Czech GNU/Linux/UN*X documentation etc. |
+-------------------------------------------------------------------------+