This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [PATCH] - fix optimizations on vector ROTATERT in combine.c


> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]