OSDN Git Service

[X86][SSE] Add support for 32-bit element vectors to X86ISD::VZEXT_LOAD
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 24 Aug 2016 10:46:40 +0000 (10:46 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 24 Aug 2016 10:46:40 +0000 (10:46 +0000)
commite23f2dea7072a14a7c8dcfa11a46b79e20cb4fac
treead167c696a7e5a34fb57220f60d1023b4b3d197f
parent377af8df2bc490909a4fa678ac314c8220136fa4
[X86][SSE] Add support for 32-bit element vectors to X86ISD::VZEXT_LOAD

Consecutive load matching (EltsFromConsecutiveLoads) currently uses VZEXT_LOAD (load scalar into lowest element and zero uppers) for vXi64 / vXf64 vectors only.

For vXi32 / vXf32 vectors it instead creates a scalar load, SCALAR_TO_VECTOR and finally VZEXT_MOVL (zero upper vector elements), relying on tablegen patterns to match this into an equivalent of VZEXT_LOAD.

This patch adds the VZEXT_LOAD patterns for vXi32 / vXf32 vectors directly and updates EltsFromConsecutiveLoads to use this.

This has proven necessary to allow us to easily make VZEXT_MOVL a full member of the target shuffle set - without this change the call to combineShuffle (which is the main caller of EltsFromConsecutiveLoads) tended to recursively recreate VZEXT_MOVL nodes......

Differential Revision: https://reviews.llvm.org/D23673

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279619 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrAVX512.td
lib/Target/X86/X86InstrSSE.td