[PATCH] D115757: [SLP]Generalize cost model.
Alexey Bataev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 14 09:23:27 PDT 2022
ABataev added inline comments.
================
Comment at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:6313
+ ScalarCost = VL.size() *
+ ScalarEltCost(std::distance(VL.begin(), find(VL, VL0)));
+ } else {
----------------
vdmitrie wrote:
> ABataev wrote:
> > RKSimon wrote:
> > > ABataev wrote:
> > > > RKSimon wrote:
> > > > > Is this purely compile time saving?
> > > > Replaced by 0, since it does not matter.
> > > I'm not sure if we need to pull them out into separate methods if they're just being called once. But it would help a little for readability if the lambdas weren't embedded in the GetCostDiff calls themselves.
> > >
> > > So:
> > > ```
> > > auto ScalarEltCost = [](unsigned Idx) {...};
> > > auto VectorCost = [](InstructionCost CommonCost) {...};
> > > return GetCostDiff(ScalarEltCost, VectorCost);
> > > ```
> > I prefer this approach. I don't want to introduce virtual member functions. Without virtual functions the only approach - generic lambda, which increases codesize.
> What problem you see with virtual class here?
> Using named lambdas instead of unnamed ones is definitely better. But essentially it anyway remains a C-style programming, just using C++ syntax. You are also making it very difficult to customize this code downstream. If that is the goal - okay, got it.
It usually increases compile time.
Why it is hard to customize it?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D115757/new/
https://reviews.llvm.org/D115757
More information about the llvm-commits
mailing list