Quoting r. Roland Dreier <[EMAIL PROTECTED]>:
> It's odd that you saw the expession end up as 0.  It seems that on every
> system I have, 1ull << 64 is 0, and 0 - 1 == -1 == 0xffffffffffffffff.
> So although it isn't correct C, it should work.

It seems that compiler generates a single instruction for this shift.

And CPU designers apparently have cut a corner by simply using only low 6 bits
in the operand of a shift, so that 1ull<<64 is same as 1ull<<(64&0x37), or 1.

-- 
MST
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to