This is intended to make the backend on par with functionality that was added to the IR version of SimplifyDemandedVectorElts in:
rL343727
...and the original motivation is that we need to improve demanded-vector-elements in several ways to avoid problems that would be exposed in D51553.
There's an SSE1 regression related to movhpd that I'd prefer to defer because everything else looks like a win or neutral to me.
Should this also handle the unary and ternary ops?