[PATCH] Extend LoopVectorizationLegality::isConsecutivePtr to handle multiple level GEPs
Wei Mi
wmi at google.com
Mon Jun 22 11:34:46 PDT 2015
repaste the patch using SCEV in phabricator.
One problem I noticed about using SCEV to check consecutiveness is that it may add a new case that: both pointer operand of gep and one operand of gep are variant. For this case, InnerLoopVectorizer::vectorizeMemoryInstruction may generate incorrect code. Previously, isConsecutive only return true for the case either pointer operand of gep is invariant, or all the other operands of gep are invariant. If we simply check SCEV in isConsecutive, It is like we move the complexity from isConsecutive to vectorizeMemoryInstruction.
REPOSITORY
rL LLVM
http://reviews.llvm.org/D10281
Files:
lib/Transforms/Vectorize/LoopVectorize.cpp
test/Transforms/LoopVectorize/pr23580.ll
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D10281.28132.patch
Type: text/x-patch
Size: 4738 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150622/c897f61e/attachment.bin>
More information about the llvm-commits
mailing list