Re: linux/bitops.h

From: H. Peter Anvin
Date: Wed May 04 2016 - 21:28:14 EST

On May 4, 2016 6:20:32 PM PDT, Jeffrey Walton <noloader@xxxxxxxxx> wrote:
>On Wed, May 4, 2016 at 7:06 PM, Andi Kleen <andi@xxxxxxxxxxxxxx> wrote:
>> On Wed, May 04, 2016 at 03:06:04PM -0700, John Denker wrote:
>>> On 05/04/2016 02:56 PM, H. Peter Anvin wrote:
>>> >> Beware that shifting by an amount >= the number of bits in the
>>> >> word remains Undefined Behavior.
>>> > This construct has been supported as a rotate since at least gcc2.
>>> How then should we understand the story told in commit d7e35dfa?
>>> Is the story wrong?
>> I don't think Linux runs on a system where it would make a difference
>> (like a VAX), and also gcc always converts it before it could.
>> Even UBSan should not complain because it runs after the conversion
>> to ROTATE.
>From what I understand, its a limitation in the barrel shifter and the
>way the shift bits are handled.
>Linux runs on a great number of devices, so its conceivable (likely?)
>a low-cost board would have hardware limitations that not found in
>modern desktops and servers or VAX.

This is a compiler feature, though. And if icc or clang don't support the idiom they would never have compiled a working kernel.
Sent from my Android device with K-9 Mail. Please excuse brevity and formatting.