[X86] Declare SSE4.1/AVX2 vector extloads covered by PMOV[SZ]X legal.
authorAhmed Bougacha <ahmed.bougacha@gmail.com>
Wed, 21 Jan 2015 17:07:06 +0000 (17:07 +0000)
committerAhmed Bougacha <ahmed.bougacha@gmail.com>
Wed, 21 Jan 2015 17:07:06 +0000 (17:07 +0000)
commit34288d885e21486b268da716c01134039401e34d
tree7ea937fdbbe7dbb023afb76cb0fcc327261b7e8e
parentb727b13f6141685a6f6203990e8d228e34afc8bc
[X86] Declare SSE4.1/AVX2 vector extloads covered by PMOV[SZ]X legal.

Now that we can fully specify extload legality, we can declare them
legal for the PMOVSX/PMOVZX instructions.  This for instance enables
a DAGCombine to fire on code such as
  (and (<zextload-equivalent> ...), <redundant mask>)
to turn it into:
  (zextload ...)
as seen in the testcase changes.

There is one regression, in widen_load-2.ll: we're no longer able
to do store-to-load forwarding with illegal extload memory types.
This will be addressed separately.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226676 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrSSE.td
test/CodeGen/X86/avx2-pmovx-256-old-shuffle.ll
test/CodeGen/X86/pointer-vector.ll
test/CodeGen/X86/widen_load-2.ll