This is the enhancement suggested in D42536 to fix a shortcoming in regular InstCombine's canEvaluate* functionality.
When we have multiple uses of a value, but they're all in one instruction, we can allow that expression to be narrowed or widened for the same cost as a single-use value.
AFAICT, this can only matter for multiply: sub/and/or/xor/select would be simplified away if the operands are the same value; add becomes shl; shifts with a variable shift amount aren't handled.