> +/* Given an unsigned 16-bit argument X, return the value corresponding
> +   to rotating the bits N steps to the left.  N must be between 1 to
> +   15 inclusive. */
> +static inline uint16_t
> +rotl16 (uint16_t x, int n)
> +{
> +  return ((x << n) | (x >> (16 - n))) & 0xFFFFFFFF;
> +}

& 0xFFFF;

> +/* Given an unsigned 16-bit argument X, return the value corresponding
> +   to rotating the bits N steps to the right.  N must be in 1 to 15
> +   inclusive. */
> +static inline uint16_t
> +rotr16 (uint16_t x, int n)
> +{
> +  return ((x >> n) | (x << (16 - n))) & 0xFFFFFFFF;
> +}

Likewise.

I'd also double-check at least on i686-pc-linux-gnu that GCC does
generate ro{l,r}{w,l} instructions.

Paolo


Reply via email to