This adds combines for sext(X +nsw Y) - sext(X +nsw Z) -> sext(Y) - sext(Z) and zext(X +nuw Y) - zext(X +nuw Z) -> zext(Y) - zext(Z). This is especially useful when Y and Z are constants.
See https://alive2.llvm.org/ce/z/XEazaS and https://alive2.llvm.org/ce/z/kHGPtU.
This assumes the common operand is on the LHS. This will be the case for constants, but may not hold for non-constants. We should handle the commuted case as well.