[PATCH] D136757: [SLP] Extend reordering data of tree entry to support PHI nodes
Alexey Bataev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 31 05:55:46 PDT 2022
ABataev added inline comments.
================
Comment at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:3826
return TE.ReorderIndices;
+ if (TE.State == TreeEntry::Vectorize && TE.getOpcode() == Instruction::PHI) {
+ auto PHICompare = [](llvm::Value *V1, llvm::Value *V2) {
----------------
I believe this can be used not only for PHIs, but for other instructions too
================
Comment at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:3862-3863
+ };
+ if (!TE.ReorderIndices.empty())
+ return TE.ReorderIndices;
+ DenseMap<Value *, unsigned> PhiToId;
----------------
I believe this can be combined with the buildvector order but we can skip it for now.
================
Comment at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:3871
+ }
+ llvm::sort(Phis, PHICompare);
+ for (unsigned Id = 0, Sz = Phis.size(); Id < Sz; ++Id)
----------------
Better to use stable_sort
================
Comment at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:4029
GathersToOrders.try_emplace(TE.get(), *CurrentOrder);
+ if (TE->State == TreeEntry::Vectorize && isa<PHINode>(TE->getMainOp()))
+ PhisToOrders.try_emplace(TE.get(), *CurrentOrder);
----------------
`&& TE->getOpcode() == Instruction::PHI`, but I think better to implement it for all possible instructions here
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D136757/new/
https://reviews.llvm.org/D136757
More information about the llvm-commits
mailing list