[x86] allow 64-bit extracted vector element integer stores on a 32-bit system
authorSanjay Patel <spatel@rotateright.com>
Wed, 22 Apr 2015 00:24:30 +0000 (00:24 +0000)
committerSanjay Patel <spatel@rotateright.com>
Wed, 22 Apr 2015 00:24:30 +0000 (00:24 +0000)
commit2b2b3a87da161395f61ce448813a7df3094da814
tree965942a56ca2f8c802cae24f3910f5799dc3fc9e
parent8992ead662a53c3dcb199b216c91e504b9e91f98
[x86] allow 64-bit extracted vector element integer stores on a 32-bit system

With SSE2, we can generate a 'movq' or other 64-bit store op on a 32-bit system
even though 64-bit integers are not legal types.

So instead of producing this:

  pshufd $229, %xmm0, %xmm1      ## xmm1 = xmm0[1,1,2,3]
  movd %xmm0, (%eax)
  movd %xmm1, 4(%eax)

We can do:

  movq %xmm0, (%eax)

This is a fix for the problem noted in D7296.

Differential Revision: http://reviews.llvm.org/D9134

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235460 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/i64-mem-copy.ll