OSDN Git Service

[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)
commit3ed535e97783eefb70ff27b2bc214bed425007cd
tree52228e8037ea349b677816e18b2ba7a0d4ae49a5
parentd51fdec4e02bbc8b184044a90c4f2a5f56b31368
[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364838 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrAVX512.td
test/CodeGen/X86/avx512dqvl-intrinsics.ll
test/CodeGen/X86/vec_fp_to_int-widen.ll
test/CodeGen/X86/vec_fp_to_int.ll