Documentation for movstrM, clrstrM -- more rambling and patch
Jeffrey A Law
law@cygnus.com
Mon Feb 2 00:17:00 GMT 1998
In message <199801182123.WAA01914@scar.axis.se>you write:
> I guess I used the word "mode" confusingly in my previous mail a week ago.
> I meant the "mode" as in the *name* of the pattern; not really the mode of
> its operands (although the third operand has this mode).
Yes, I think we saw "mode" and obviously thought of two different
things :-)
> > The mode merely indicates the size of the units moved within the hunk.
> No, the mode M in the pattern name does not reflect the size of the *units*
> within the hunk; the *size of the entire "hunk"* must fit in a mode M.
> The only indication of any "unit size" is the alignment, and it's just a
> correlation.
Yes, you're right. I stand corrected :-) The things one forgets
over time. Somehow I had it in my brain that XX movstrXX had
something to do with size of each item and/or alignment. That is
wrong. Those patterns are free to move data in whatever sized hunk
they can handle and the alignment is a separate argument.
The moral, I should have re-read the docs first :-)
> My point is for the documentation to be clear on that "movstrqi"
> should *not* be defined instead of "movstrsi" (or larger), if
> only for the reason that the instruction moves byte-wise, or needs
> no specific block alignment, and that there's normally no use in
> defining several "movstrM" patterns. If people think that's already
> clear, then sorry about the rambling.
There's nothing in md.texi about this, so a little clarification would
probably be a good thing. It's easy to miss the interactions between
the existance of movstrXX patterns if you have more than one.
> Anyway, it seems like no machine descriptions in the distribution is
> affected by any confusion about this, so it's just a documentation issue.
Those are important too :-)
I made a couple minor edits and installed your change into egcs. For
reference here's the text:
Descriptions of multiple @code{movstr@var{m}} patterns can only be
beneficial if the patterns for smaller modes have less restrictions
on their first, second and fourth operands. Note that the mode @var{m}
in @code{movstr@var{m}} does not impose any restriction on the mode of
individually moved data units in the block.
Thanks,
jeff
More information about the Gcc
mailing list