[x86] Fix another miscompile found through fuzz testing the new vector
authorChandler Carruth <chandlerc@gmail.com>
Thu, 7 Aug 2014 10:37:35 +0000 (10:37 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Thu, 7 Aug 2014 10:37:35 +0000 (10:37 +0000)
commit4e8fcbd3fd6f64d43dbebc6fa6b29dfa4143eddf
tree3513e6b06665d631fdfa2f5ca11941d81b451a57
parente206385e99c4ca9a70c8da297ff7643e2cfe06d2
[x86] Fix another miscompile found through fuzz testing the new vector
shuffle lowering.

This is closely related to the previous one. Here we failed to use the
source offset when swapping in the other case -- where we end up
swapping the *final* shuffle. The cause of this bug is a bit different:
I simply wasn't thinking about the fact that this mask is actually
a slice of a wide mask and thus has numbers that need SourceOffset
applied. Simple fix. Would be even more simple with an algorithm-y thing
to use here, but correctness first. =]

llvm-svn: 215095
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/vector-shuffle-128-v8.ll