OSDN Git Service

[SLP] Fixes the bug due to absence of in order uses of scalars which needs to be...
authorMohammad Shahid <Asghar-ahmad.Shahid@amd.com>
Fri, 3 Mar 2017 10:02:47 +0000 (10:02 +0000)
committerMohammad Shahid <Asghar-ahmad.Shahid@amd.com>
Fri, 3 Mar 2017 10:02:47 +0000 (10:02 +0000)
commit48b84df15d5b726ed5ea38cd78aafcd62e5d7fa2
tree4ef042515ae854652580cd4dc1442cb567fafda0
parentf970832c3b9b842dfeed992c8c92a725afa0d376
[SLP] Fixes the bug due to absence of in order uses of scalars which needs to be available
for VectorizeTree() API.This API uses it for proper mask computation to be used in shufflevector IR.
The fix is to compute the mask for out of order memory accesses while building the vectorizable tree
instead of actual vectorization of vectorizable tree.It also needs to recompute the proper Lane for
external use of vectorizable scalars based on shuffle mask.

Reviewers: mkuper

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

Change-Id: Ide8773ce0ad3562f3cf4d1a0ad0f487e2f60ce5d

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296863 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-bug.ll [new file with mode: 0644]
test/Transforms/SLPVectorizer/X86/jumbled-same.ll