aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp
diff options
context:
space:
mode:
authorMichael Zuckerman <Michael.zuckerman@intel.com>2017-07-26 08:10:14 +0000
committerMichael Zuckerman <Michael.zuckerman@intel.com>2017-07-26 08:10:14 +0000
commitc1918ad571e0552249eb64d525381b51b79753fe (patch)
tree384cce25c79ab943cdd22b058298ca06099a630a /clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp
parent1b73682243b2a21832169ef1faf88f1b1508255d (diff)
downloadllvm-c1918ad571e0552249eb64d525381b51b79753fe.zip
llvm-c1918ad571e0552249eb64d525381b51b79753fe.tar.gz
llvm-c1918ad571e0552249eb64d525381b51b79753fe.tar.bz2
[X86][LLVM]Expanding Supports lowerInterleavedStore() in X86InterleavedAccess.
This patch expands the support of lowerInterleavedStore to 32x8i stride 4. LLVM creates suboptimal shuffle code-gen for AVX2. In overall, this patch is a specific fix for the pattern (Strid=4 VF=32) and we plan to include more patterns in the future. To reach our goal of "more patterns". We include two mask creators. The first function creates shuffle's mask equivalent to unpacklo/unpackhi instructions. The other creator creates mask equivalent to a concat of two half vectors(high/low). The patch goal is to optimize the following sequence: At the end of the computation, we have ymm2, ymm0, ymm12 and ymm3 holding each 32 chars: c0, c1, , c31 m0, m1, , m31 y0, y1, , y31 k0, k1, ., k31 And these need to be transposed/interleaved and stored like so: c0 m0 y0 k0 c1 m1 y1 k1 c2 m2 y2 k2 c3 m3 y3 k3 .... Reviewers: dorit Farhana RKSimon guyblank DavidKreitzer Differential Revision: https://reviews.llvm.org/D34601 llvm-svn: 309086
Diffstat (limited to 'clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions