OSDN Git Service

Fix Operandreorder logic in SLPVectorizer to generate longer vectorizable chain.
authorKarthik Bhat <kv.bhat@samsung.com>
Tue, 20 Jan 2015 06:11:00 +0000 (06:11 +0000)
committerKarthik Bhat <kv.bhat@samsung.com>
Tue, 20 Jan 2015 06:11:00 +0000 (06:11 +0000)
commit7e9f1201302cc9985649a597af8fb25be68cf029
treeb539bd58d763a5a0803bc131d416b747071b4e59
parent01b2fd3f9780752e359b631dde4d6e95d8d7ef8a
Fix Operandreorder logic in SLPVectorizer to generate longer vectorizable chain.
This patch fixes 2 issues in reorderInputsAccordingToOpcode
1) AllSameOpcodeLeft and AllSameOpcodeRight was being calculated incorrectly resulting in code not being vectorized in few cases.
2) Adds logic to reorder operands if we get longer chain of consecutive loads enabling vectorization. Handled the same for cases were we have AltOpcode.
Thanks Michael for inputs and review.
Review: http://reviews.llvm.org/D6677

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226547 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Vectorize/SLPVectorizer.cpp
test/Transforms/SLPVectorizer/X86/addsub.ll
test/Transforms/SLPVectorizer/X86/operandorder.ll