Code duplication (subsequently removed by refactoring) allowed a logic discrepancy to creep in here.
We were being conservative about creating a vector binop -- but not a vector cmp -- in the case where a vector op has the same estimated cost as the scalar op. We want to be more aggressive here because that can allow other combines based on reduced instruction count/uses.
We can reverse the transform in DAGCombiner (potentially with a more accurate cost model) if this causes regressions.
AFAIK, this does not conflict with InstCombine. We have a scalarize transform there, but it relies on finding a constant operand or a matching insertelement, so that means it eliminates an extractelement from the sequence (so we won't have 2 extracts by the time we get here if InstCombine succeeds).