Messages in this thread | | | From | Segher Boessenkool <> | Subject | Re: [PATCH] bitops: add 8-bit and 16-bit rotation functions | Date | Tue, 11 Mar 2008 22:18:27 +0100 |
| |
>>> +/** >>> + * rol16 - rotate a 16-bit value left >>> + * @word: value to rotate >>> + * @shift: bits to roll >>> + */ >>> +static inline __u16 rol16(__u16 word, unsigned int shift) >>> +{ >>> + return (word << shift) | (word >> (16 - shift)); >>> +} >> >> This doesn't work for shift values of 0: you get word >> 16, and >> shifts greater than or equal to the word size aren't valid C. GCC >> will warn about this, too. > > On the other hand, a value narrower than int will always be promoted > first,
Erm, yes of course. It is promoted to _signed_ int though, but that works okay here.
> so this is not a problem in this case.
It still needs documentation for the valid values of "shift".
Segher
| |