This implements the following optimization:
(tbz (shl x, c), b) -> (tbz x, b-c)
Which appears in getTestBitOperand in AArch64ISelLowering.cpp.
If we test bit b of shl x, c, we can fold away the shl by looking c bits to the right of b in x when this fits in the type. So, we can just test the b-cth bit.
I guess the case where b-c is negative isn't hit in real code. If it does come from real world code then the entire condbr can be folded away as always/never taken tbz/tbnz.