[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)
commitfe1365ac50d39e837bbe2172efeff890cf53915b
treea9a6f0cc3912c2d0439171cd4702e58e95c7f376
parentf14787dad831924a4955f8741d2d76e27be6517d
[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

llvm-svn: 235460
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/i64-mem-copy.ll