This adds a general combine that can be used to fold:
or(zext(OP(x)), shl(zext(OP(y)),bw/2)) --> OP(or(zext(x), shl(zext(y),bw/2)))
Allowing us to widen 'concat-able' style or+zext patterns - I've just set this up for BSWAP but we could use this for other similar ops (BITREVERSE for instance).
We already do something similar for binop(bswap(x),bswap(y)) --> bswap(binop(x,y))
Fixes PR45715