When an operand is tested for EQ/NE against zero and the operand is sign extended, the truncate instruction is not needed.
E.g. given
if (short_val == 0)
...
It currently generates code for ARM like
movw r1, #65535 tst r0, r1 it eq ...
instead of
cbz r0
Could you just use OpL->ComputeNumSignBits() > ExtensionBits && OpR->ComputeNumSignBits() > ExtensionBits or something like that here?