OSDN Git Service

[SLP] Vectorize jumbled memory loads.
authorMohammad Shahid <Asghar-ahmad.Shahid@amd.com>
Tue, 3 Oct 2017 15:28:48 +0000 (15:28 +0000)
committerMohammad Shahid <Asghar-ahmad.Shahid@amd.com>
Tue, 3 Oct 2017 15:28:48 +0000 (15:28 +0000)
commit0d5a4eca189b39b872a2debeec13264ba13aa368
treeeb426135127586a4124c87fdc89bf037444e0875
parent24232117ea068910a39350ad14e19a4937a5cbb0
[SLP] Vectorize jumbled memory loads.

Summary:
This patch tries to vectorize loads of consecutive memory accesses, accessed
in non-consecutive or jumbled way. An earlier attempt was made with patch D26905
which was reverted back due to some basic issue with representing the 'use mask' of
jumbled accesses.

This patch fixes the mask representation by recording the 'use mask' in the usertree entry.

Change-Id: I9fe7f5045f065d84c126fa307ef6ebe0787296df

Reviewers: mkuper, loladiro, Ayal, zvi, danielcdh

Reviewed By: Ayal

Subscribers: hans, mzolotukhin

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314806 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/LoopAccessAnalysis.h
lib/Analysis/LoopAccessAnalysis.cpp
lib/Transforms/Vectorize/SLPVectorizer.cpp
test/Transforms/SLPVectorizer/X86/jumbled-load-multiuse.ll
test/Transforms/SLPVectorizer/X86/jumbled-load-shuffle-placement.ll [new file with mode: 0644]
test/Transforms/SLPVectorizer/X86/jumbled-load.ll
test/Transforms/SLPVectorizer/X86/store-jumbled.ll