In the current code we only attempt to match against insertps if we have exactly one element from the second input vector, irrespective of how much of the shuffle result is zeroable.
This patch checks to see if there is a single non-zeroable element from either input that requires insertion. It also supports matching of cases where only one of the inputs need to be referenced.
We also split (v)insertps shuffle matching off into a new lowerVectorShuffleAsInsertPS function.
We can use a bool for that and I would also change the name to something like IsV1Used.