InstCombine already performs a fold where X == Y ? f(X) : Z is transformed to X == Y ? f(Y) : Z if f(Y) simplifies. However, if f(X) only has one use, then we can always directly replace the use inside the instruction. To actually be profitable, limit it to the case where Y is a non-expr constant.
This could be further extended to replace uses further up a one-use instruction chain, but for now this only looks one level up.
Among other things, this also subsumes D94860.