[X86][LLVM]Expanding Supports lowerInterleavedStore() in X86InterleavedAccess (VF...
authorMichael Zuckerman <Michael.zuckerman@intel.com>
Tue, 26 Sep 2017 18:49:11 +0000 (18:49 +0000)
committerMichael Zuckerman <Michael.zuckerman@intel.com>
Tue, 26 Sep 2017 18:49:11 +0000 (18:49 +0000)
commit645f777e40c367e5a73acfc400677250a4661b32
tree66f254de0aa1a78a79c68202a7bb6197cdbe343b
parent8bf622174d699e9a09bd7de2dc85b2c8fe38f176
[X86][LLVM]Expanding Supports lowerInterleavedStore() in X86InterleavedAccess (VF{8|16|32} stride 3)

This patch expands the support of lowerInterleavedStore to {8|16|32}x8i stride 3.

LLVM creates suboptimal shuffle code-gen for AVX2. In overall, this patch is a specific fix for the pattern (Strid=3 VF={8|16|32}) .
This patch is part two of two patches and it covers the store (interlevaed) side.

The patch goal is to optimize the following sequence:
a0 a1 a2 a3 a4 a5 a6 a7
b0 b1 b2 b3 b4 b5 b6 b7
c0 c1 c2 c3 c4 c5 c6 c7

into
a0 b0 c0 a1 b1 c1 a2 b2
c2 a3 b3 c3 a4 b4 c4 a5
b5 c5 a6 b6 c6 a7 b7 c7

Reviewers:
zvi
guyblank
dorit
Ayal

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

Change-Id: I56ced8bcbea809a37654060771911ade20246ccc
llvm-svn: 314234
llvm/lib/Target/X86/X86InterleavedAccess.cpp
llvm/test/CodeGen/X86/x86-interleaved-access.ll
llvm/test/Transforms/InterleavedAccess/X86/interleavedStore.ll