This is an enhancement to D48401 that was discussed in:
https://bugs.llvm.org/show_bug.cgi?id=37806
If we have 2 different variable values, then we shuffle (select) those lanes, shuffle (select) the constants, and then perform the binop. This eliminates a binop.
The new shuffle uses the same shuffle mask as the existing shuffle, so there's no danger of creating a difficult shuffle.
All of the earlier constraints still apply, but we also check for extra uses to avoid creating more instructions than we'll remove.
Explicitly mention that the shuffle mask is safe?