Add a pass to optimize patterns of vectorized interleaved memory accesses for
authorDavid L Kreitzer <david.l.kreitzer@intel.com>
Fri, 14 Oct 2016 18:20:41 +0000 (18:20 +0000)
committerDavid L Kreitzer <david.l.kreitzer@intel.com>
Fri, 14 Oct 2016 18:20:41 +0000 (18:20 +0000)
commit01a057a0c4752940f4ba32b84bf209e85564e424
treef562792e8de6bf2aed4495d3d7e4c7e5ea4d3f64
parent55633f7682c963fd495486b341a73637082fbb47
Add a pass to optimize patterns of vectorized interleaved memory accesses for
X86. The pass optimizes as a unit the entire wide load + shuffles pattern
produced by interleaved vectorization. This initial patch optimizes one pattern
(64-bit elements interleaved by a factor of 4). Future patches will generalize
to additional patterns.

Patch by Farhana Aleen

Differential revision: http://reviews.llvm.org/D24681

llvm-svn: 284260
llvm/lib/CodeGen/InterleavedAccessPass.cpp
llvm/lib/Target/X86/CMakeLists.txt
llvm/lib/Target/X86/X86ISelLowering.h
llvm/lib/Target/X86/X86InterleavedAccess.cpp [new file with mode: 0644]
llvm/lib/Target/X86/X86TargetMachine.cpp
llvm/test/CodeGen/X86/x86-interleaved-access.ll [new file with mode: 0644]
llvm/test/Transforms/InterleavedAccess/X86/interleaved-accesses-64bits-avx.ll [new file with mode: 0644]
llvm/test/Transforms/InterleavedAccess/X86/lit.local.cfg [new file with mode: 0644]