Issue 13383 - wrong code with -O with ints, longs and bitwise operations

Converting `(1 << a) & b` to `b btst a` is only valid when the constant fits in a register.  Otherwise, btst will wrap `a` and return the wrong bit.

https://issues.dlang.org/show_bug.cgi?id=13383