[x86] Fix a few more tiny patterns with the new vector shuffle lowering
authorChandler Carruth <chandlerc@gmail.com>
Wed, 1 Oct 2014 11:14:02 +0000 (11:14 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Wed, 1 Oct 2014 11:14:02 +0000 (11:14 +0000)
commit7d64681274c0e8d922729c67dfca01c0f4922672
tree7171eb1fd203c11535aef4f963c7ae6028f26622
parenta1b88ab2c14c1332a864a1fd4c2746bc43d005fe
[x86] Fix a few more tiny patterns with the new vector shuffle lowering
that keep cropping up in the regression test suite.

This also addresses one of the issues raised on the mailing list with
failing to form 'movsd' in as many cases as we realistically should.
There will be corresponding patches forthcoming for v4f32 at least. This
was a lot of fuss for a relatively small gain, but all the fuss was on
my end trying different ways of holding the pieces of the x86 fragment
patterns *just right*. Now that it works, the code is reasonably simple.

In the new test cases I'm adding here, v2i64 sticks out as just plain
horrible. I've not come up with any great ideas here other than that it
would be nice to recognize when we're *going* to take a domain crossing
hit and cross earlier to get the decent instructions. At least with AVX
it is slightly less silly....

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218756 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/vector-shuffle-128-v2.ll