[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)
commit8f09e9f7c5b356747df93a45a3dc30b18607e86d
tree17e6cb8e73f7d68afa5ccff33f413f9d602a7f7a
parent469e2ee83af2a06ed84341d21521e07bd0a3ce8e
[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

llvm-svn: 226676
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/X86/X86InstrSSE.td
llvm/test/CodeGen/X86/avx2-pmovx-256-old-shuffle.ll
llvm/test/CodeGen/X86/pointer-vector.ll
llvm/test/CodeGen/X86/widen_load-2.ll