[X86] Correct v4f32->v2i64 cvt(t)ps2(u)qq memory isel patterns
authorCraig Topper <craig.topper@intel.com>
Mon, 1 Jul 2019 19:01:37 +0000 (19:01 +0000)
committerCraig Topper <craig.topper@intel.com>
Mon, 1 Jul 2019 19:01:37 +0000 (19:01 +0000)
commit5e7815b695d4a21f021f23ed41750a44e9eb3849
treec51623980e785bd3c68f74b8a8bcfe87cf414486
parentb101c39f587731f0b36f264158e2ad8c7bbf5860
[X86] Correct v4f32->v2i64 cvt(t)ps2(u)qq memory isel patterns

These instructions only read 64-bits of memory so we shouldn't
allow a full vector width load to be pattern matched in case it
is marked volatile.

Instead allow vzload or scalar_to_vector+load.

Also add a DAG combine to turn full vector loads into vzload when
used by one of these instructions if the load isn't volatile.

This fixes another case for PR42079

llvm-svn: 364838
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/X86/X86InstrAVX512.td
llvm/test/CodeGen/X86/avx512dqvl-intrinsics.ll
llvm/test/CodeGen/X86/vec_fp_to_int-widen.ll
llvm/test/CodeGen/X86/vec_fp_to_int.ll