On Wed, Apr 04, 2018 at 05:05:25PM -0700, Linus Torvalds wrote: > for some reason the test_bit() case looks like > this: > > #define test_bit(nr, addr) \ > (__builtin_constant_p((nr)) \ > ? constant_test_bit((nr), (addr)) \ > : variable_test_bit((nr), (addr))) > > which is much more straightforward anyway. I'm not quite sure why we > did it that odd way anyway, but I bet it's just "hysterical raisins" > along with the test_bit() not needing inline asm at all for the > constant case.
I always assumed BT was a more expensive instruction than AND with immediate.