Revert rL355906: [SLP] Remove redundancy of performing operand reordering twice:...
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 12 Mar 2019 11:51:59 +0000 (11:51 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 12 Mar 2019 11:51:59 +0000 (11:51 +0000)
commitd3a8fd8bfb856b5dfbeb2b107d9419f0164ac650
tree7d08a5b9fbab3058ac9fb72d5fe27e748a2f1d88
parent5db95efdbd022d3b06d0c56a0fb3615e51000ca0
Revert rL355906: [SLP] Remove redundancy of performing operand reordering twice: once in buildTree() and later in vectorizeTree().

This is a refactoring patch that removes the redundancy of performing operand reordering twice, once in buildTree() and later in vectorizeTree().
To achieve this we need to keep track of the operands within the TreeEntry struct while building the tree, and later in vectorizeTree() we are just accessing them from the TreeEntry in the right order.

This patch is the first in a series of patches that will allow for better operand reordering across chains of instructions (e.g., a chain of ADDs), as presented here: https://www.youtube.com/watch?v=gIEn34LvyNo

Patch by: @vporpo (Vasileios Porpodas)

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

Reverted due to buildbot failures that I don't have time to track down.

llvm-svn: 355913
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp