https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83565

James Clarke <jrtc27 at jrtc27 dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jrtc27 at jrtc27 dot com

--- Comment #3 from James Clarke <jrtc27 at jrtc27 dot com> ---
Created attachment 42960
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42960&action=edit
rotate test case

Jason (in Cc) sent me this example, which is similar. What's basically
happening, as far as I understand, is that, since the source for the "extr.u"
is being used for a 32-bit integer, it knows that the high 32 bits of the
register should be 0, and thus it can always increase the length parameter to
32, but the earlier rotate (which is implemented with a mix4.r, i.e. copy lower
32 bits to upper 32 bits, and a shr.u) doesn't clear out the high 32 bits.

Reply via email to