This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PATCH for movX in md.texi (was Re: PATCH bug with synthesized movdi: ...)to parts.
- To: gcc-patches at gcc dot gnu dot org
- Subject: PATCH for movX in md.texi (was Re: PATCH bug with synthesized movdi: ...)to parts.
- From: Hans-Peter Nilsson <hans-peter dot nilsson at axis dot com>
- Date: Tue, 4 Apr 2000 17:43:14 +0200
- CC: hans-peter dot nilsson at axis dot com, law at cygnus dot com, bernds at cygnus dot co dot uk
> Date: Tue, 4 Apr 2000 16:18:54 +0100 (BST)
> From: Bernd Schmidt <bernds@balti.cygnus.co.uk>
> > > It's interesting that there's code in expr.c to synthesize the operation;
> > > this probably works OK for MODE_COMPLEX stuff etc. when there aren't any
> > > patterns that accept operands in those modes (and thus could need reloads).
> >
> > And it works for DImode, modulo these bugs. I don't understand
> > the "probably works OK".
>
> I _think_ that synthesizing moves will work OK if no insn pattern accepts
> operands of that mode. Then you won't need reloads of that mode.
Oh. Now I get it; slowness at this end. That restriction seems
logical and about reasonable. But it should really be
documented, not carried around as hunches and legends.
Does everybody agree to that interpretation?
How about writing it down in the Big Document of Truth as this;
Ok to commit?
Tue Apr 4 17:34:33 2000 Hans-Peter Nilsson <hp@axis.com>
* md.texi (Standard Names): Clarify when movX is needed.
Index: md.texi
===================================================================
RCS file: /cvs/gcc/egcs/gcc/md.texi,v
retrieving revision 1.42
diff -p -c -r1.42 md.texi
*** md.texi 2000/03/16 12:18:18 1.42
--- md.texi 2000/04/04 15:31:01
*************** to store the specified value in the part
*** 1822,1829 ****
to mode @var{m}. The effect on the rest of the register is undefined.
This class of patterns is special in several ways. First of all, each
! of these names @emph{must} be defined, because there is no other way
! to copy a datum from one place to another.
Second, these patterns are not used solely in the RTL generation pass.
Even the reload pass can generate move insns to copy values from stack
--- 1822,1831 ----
to mode @var{m}. The effect on the rest of the register is undefined.
This class of patterns is special in several ways. First of all, each
! of these names up to and including full word size @emph{must} be defined,
! because there is no other way to copy a datum from one place to another.
! If there are patterns accepting operands in larger modes,
! @samp{mov@var{m}} must be defined for integer modes of those sizes.
Second, these patterns are not used solely in the RTL generation pass.
Even the reload pass can generate move insns to copy values from stack
brgds, H-P