Fix vector packing pseudo-instruction.
Fix vector packing pseudo-instruction.

When the first source register is different from the destination
register, but equal to the second source, we need to first narrow
the second source to prevent overwriting data we still need. Similar
when the destination is equal to the first source.

Bug b/37496082

Change-Id: I908a8e125a77ec4bf1eb5eab9e48c6112ee4ca13
Reviewed-on: https://chromium-review.googlesource.com/696032
Reviewed-by: Jim Stichnoth <46a13f57ad465cec7f48cfe1a20c394bb659ab25@chromium.org>
Reviewed-on: https://swiftshader-review.googlesource.com/12949
Reviewed-by: Nicolas Capens <51edc787c30f24c4904e8ffbb5523c3a9f7a451d@google.com>
Tested-by: Nicolas Capens <51edc787c30f24c4904e8ffbb5523c3a9f7a451d@google.com>

google/swiftshader,bkaradzic/SwiftShader,bkaradzic/SwiftShader,bkaradzic/SwiftShader,google/swiftshader,google/swiftshader,bkaradzic/SwiftShader,bkaradzic/SwiftShader