This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: [PATCH] - fix optimizations on vector ROTATERT in combine.c
- From: "Igor Shevlyakov" <igor at microunity dot com>
- To: <law at redhat dot com>, "'Aldy Hernandez'" <aldyh at redhat dot com>
- Cc: <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 28 Aug 2002 11:15:57 -0700
- Subject: RE: [PATCH] - fix optimizations on vector ROTATERT in combine.c
- Organization: Microunity
> In message <m3n0r7m5st.fsf@flamingo.sfbay.redhat.com>, Aldy
> Hernandez writes:
> >>>>>> "Igor" == Igor Shevlyakov <igor@microunity.com> writes:
> >
> > > When combine.c (simplify_shift_const) converting
> ROTATERT to ROTATE new
> > > shift count is calculated incorrectly for vector
> operands since each
> > > element is rotated by count not whole vector as
> bit-stream. This patch
> > > fixes it
> >
> >Hmmm, I didn't know we had any ports that used rotate* on SIMD
> >operands. And I don't think we've even defined what a
> rotate on SIMD
> >operands is supposed to do.
> You might check the emotion engine documentation. I believe
> it defines
> SIMD rotates as well.
Even better. If you look at "8.11 Vector operation" chapter of "GCC
internals" you'll find:
... All normal RTL expressions can be used with vector modes; they are
interpreted as operating on each part of the vector independently.
And I don't have a testcase for you since port I'm working on which
supports vector rotates and much more, is not submitted yet.
I'll resubmit the patch with corrections you mentioned.
Thanks
Igor