On 02/21/2014 08:30 AM, Tejas Belagod wrote:
> +      /* If two vectors, we end up with a wierd mixed-endian mode on NEON.  
> */
> +      if (BYTES_BIG_ENDIAN)
> +     {
> +       if (!d->one_vector_p && d->perm[i] & nunits)
> +         {
> +           /* Extract the offset.  */
> +           elt = d->perm[i] & (nunits - 1);
> +           /* Reverse the top half.  */
> +           elt = nunits - 1 - elt;
> +           /* Offset it by the bottom half.  */
> +           elt += nunits;
> +         }
> +       else
> +         elt = nunits - 1 - d->perm[i];
> +     }

Isn't this just

  elt = d->perm[i] ^ (nunits - 1);

all the time?  I.e. invert the index within the word,
but leave the word index (nunits) unchanged.


r~

Reply via email to